Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/freebsd/poudriere.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/share
diff options
context:
space:
mode:
authorBryan Drewery <bryan@shatow.net>2022-11-03 23:13:23 +0300
committerBryan Drewery <bryan@shatow.net>2022-11-05 18:45:14 +0300
commite158cb8814fa6a24e9c4c5344a67d67d9d5a418e (patch)
tree5226053defbe811c34f2dc7b6090483996fdb0e6 /src/share
parent22e5f1d16b0e76ae0076764470f44ec9ebc505f1 (diff)
bulk -f with port@all shouldn't skip/fail if a flavor is ignored
Diffstat (limited to 'src/share')
-rwxr-xr-xsrc/share/poudriere/common.sh50
1 files changed, 41 insertions, 9 deletions
diff --git a/src/share/poudriere/common.sh b/src/share/poudriere/common.sh
index 793ab0f5..c551e12d 100755
--- a/src/share/poudriere/common.sh
+++ b/src/share/poudriere/common.sh
@@ -5119,7 +5119,7 @@ clean_pool() {
local pkgname=$1
local originspec=$2
local clean_rdepends="$3"
- local origin skipped_originspec skipped_origin
+ local origin skipped_originspec skipped_origin skipped_flavor
[ -n "${MY_JOBID}" ] && bset ${MY_JOBID} status "clean_pool:"
@@ -5139,13 +5139,28 @@ clean_pool() {
continue
fi
get_originspec_from_pkgname skipped_originspec "${skipped_pkgname}"
- originspec_decode "${skipped_originspec}" skipped_origin '' ''
- badd ports.skipped "${skipped_originspec} ${skipped_pkgname} ${pkgname}"
- COLOR_ARROW="${COLOR_SKIP}" \
- job_msg "${COLOR_SKIP}Skipping ${COLOR_PORT}${skipped_originspec} | ${skipped_pkgname}${COLOR_SKIP}: Dependent port ${COLOR_PORT}${originspec} | ${pkgname}${COLOR_SKIP} ${clean_rdepends}"
- run_hook pkgbuild skipped "${skipped_origin}" \
- "${skipped_pkgname}" "${origin}" \
- >&${OUTPUT_REDIRECTED_STDOUT:-1}
+ originspec_decode "${skipped_originspec}" skipped_origin '' \
+ skipped_flavor
+ # If this package was listed as @all then we do not
+ # mark it as 'skipped' unless it was the default FLAVOR.
+ # This prevents bulk's exit status being a failure when a
+ # secondary FLAVOR must be skipped.
+ # Mark it ignored instead.
+ if [ "${clean_rdepends}" == "ignored" ] &&
+ build_all_flavors "${skipped_originspec}" &&
+ ! pkgname_flavor_is_default "${skipped_pkgname}" \
+ "${skipped_flavor}" &&
+ pkgname_is_listed "${skipped_pkgname}"; then
+ trim_ignored_pkg "${skipped_pkgname}" "${skipped_originspec}" "Dependent port ${originspec} | ${pkgname} ${clean_rdepends}"
+ else
+ # Normal skip handling.
+ badd ports.skipped "${skipped_originspec} ${skipped_pkgname} ${pkgname}"
+ COLOR_ARROW="${COLOR_SKIP}" \
+ job_msg "${COLOR_SKIP}Skipping ${COLOR_PORT}${skipped_originspec} | ${skipped_pkgname}${COLOR_SKIP}: Dependent port ${COLOR_PORT}${originspec} | ${pkgname}${COLOR_SKIP} ${clean_rdepends}"
+ run_hook pkgbuild skipped "${skipped_origin}" \
+ "${skipped_pkgname}" "${origin}" \
+ >&${OUTPUT_REDIRECTED_STDOUT:-1}
+ fi
done
if [ "${clean_rdepends}" != "ignored" ]; then
@@ -5408,7 +5423,7 @@ build_all_flavors() {
[ "${ALL}" -eq 1 ] && return 0
[ "${FLAVOR_DEFAULT_ALL}" = "yes" ] && return 0
originspec_decode "${originspec}" origin '' ''
- shash_remove origin-flavor-all "${origin}" build_all || build_all=0
+ shash_get origin-flavor-all "${origin}" build_all || build_all=0
[ "${build_all}" -eq 1 ] && return 0
# bulk and testport
@@ -6601,6 +6616,22 @@ get_pkgname_from_originspec() {
setvar "${var_return}" "${_pkgname}"
}
+pkgname_flavor_is_default() {
+ [ $# -eq 2 ] || eargs pkgname_flavor_is_default pkgname flavor
+ local pkgname="$1"
+ local flavor="$2"
+ local flavors
+ local -; set -f
+
+ shash_get pkgname-flavors "${pkgname}" flavors || flavors=
+ case "${flavor}" in
+ "${flavors}"|"${flavors} "*)
+ return 0
+ ;;
+ esac
+ return 1
+}
+
set_dep_fatal_error() {
if [ -n "${DEP_FATAL_ERROR}" ]; then
return 0
@@ -8232,6 +8263,7 @@ prepare_ports() {
(
cd "${SHASH_VAR_PATH}"
for shash_bucket in \
+ origin-flavor-all \
origin-moved \
pkgname-ignore \
pkgname-options \