[gentoo-portage-dev] [PATCH 12/13] Add tentative EAPI6 in_iuse() function
Add a function to query IUSE_EFFECTIVE for flags. --- bin/eapi.sh| 4 bin/phase-helpers.sh | 16 pym/portage/eapi.py| 3 +++ pym/portage/package/ebuild/doebuild.py | 2 +- 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/bin/eapi.sh b/bin/eapi.sh index c650a4c..e0ade02 100644 --- a/bin/eapi.sh +++ b/bin/eapi.sh @@ -80,6 +80,10 @@ ___eapi_has_eapply_user() { [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] } +___eapi_has_in_iuse() { + [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] +} + ___eapi_has_master_repositories() { [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] } diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index 60f7a39..2eada2f 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -973,6 +973,22 @@ if ___eapi_has_eapply_user; then } fi +if ___eapi_has_in_iuse; then + in_iuse() { + local use=${1} + + if [[ -z "${use}" ]]; then + echo "!!! in_iuse() called without a parameter." >&2 + echo "!!! in_iuse " >&2 + die "in_iuse() called without a parameter" + fi + + local liuse=( ${IUSE_EFFECTIVE} ) + + has "${use}" "${liuse[@]#[+-]}" + } +fi + if ___eapi_has_master_repositories; then master_repositories() { local output repository=$1 retval diff --git a/pym/portage/eapi.py b/pym/portage/eapi.py index 7217d23..386c81d 100644 --- a/pym/portage/eapi.py +++ b/pym/portage/eapi.py @@ -68,6 +68,9 @@ def eapi_has_required_use_at_most_one_of(eapi): def eapi_has_use_dep_defaults(eapi): return eapi not in ("0", "1", "2", "3") +def eapi_has_in_iuse(eapi): + return eapi not in ("0", "1", "2", "3", "4", "4-python", "4-slot-abi", "5", "5-progress") + def eapi_has_repo_deps(eapi): return eapi in ("4-python", "5-progress") diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py index 01707ae..29fb0df 100644 --- a/pym/portage/package/ebuild/doebuild.py +++ b/pym/portage/package/ebuild/doebuild.py @@ -54,7 +54,7 @@ from portage.dep import Atom, check_required_use, \ from portage.eapi import eapi_exports_KV, eapi_exports_merge_type, \ eapi_exports_replace_vars, eapi_exports_REPOSITORY, \ eapi_has_required_use, eapi_has_src_prepare_and_src_configure, \ - eapi_has_pkg_pretend, _get_eapi_attrs + eapi_has_pkg_pretend, _get_eapi_attrs, eapi_has_in_iuse from portage.elog import elog_process, _preload_elog_modules from portage.elog.messages import eerror, eqawarn from portage.exception import DigestException, FileNotFound, \ -- 2.0.4
[gentoo-portage-dev] [PATCH 13/13] Add tentative EAPI6 phase functions
--- bin/phase-functions.sh | 11 +++ bin/phase-helpers.sh | 18 ++ 2 files changed, 29 insertions(+) diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh index b7fb5d7..f2088bd 100644 --- a/bin/phase-functions.sh +++ b/bin/phase-functions.sh @@ -806,6 +806,17 @@ __ebuild_phase_funcs() { declare -F src_install >/dev/null || \ src_install() { default; } fi + + # defaults starting with EAPI 6 + if ! has ${eapi} 2 3 4 4-python 4-slot-abi 5 5-progress 5-hdepend; then + [[ ${phase_func} == src_prepare ]] && \ + default_src_prepare() { __eapi6_src_prepare; } + [[ ${phase_func} == src_install ]] && \ + default_src_install() { __eapi6_src_install; } + + declare -F src_prepare >/dev/null || \ + src_prepare() { default; } + fi ;; esac } diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index 2eada2f..e64fe8b 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -748,6 +748,24 @@ __eapi4_src_install() { fi } +__eapi6_src_prepare() { + if [[ $(declare -p PATCHES) == "declare -a "* ]]; then + eapply "${PATCHES[@]}" + elif [[ -n ${PATCHES} ]]; then + eapply ${PATCHES} + fi + + eapply_user +} + +__eapi6_src_install() { + if [[ -f Makefile || -f GNUmakefile || -f makefile ]] ; then + emake DESTDIR="${D}" install + fi + + einstalldocs +} + # @FUNCTION: has_version # @USAGE: [--host-root] # @DESCRIPTION: -- 2.0.4
[gentoo-portage-dev] [PATCH 10/13] Add tentative EAPI6 absolute path support to unpack()
Add support for absolute paths in unpack(). Allow subdirectory-level relative paths not to start with './'. --- bin/eapi.sh | 4 bin/phase-helpers.sh | 25 ++--- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/bin/eapi.sh b/bin/eapi.sh index 878f8e7..6716b1c 100644 --- a/bin/eapi.sh +++ b/bin/eapi.sh @@ -162,6 +162,10 @@ ___eapi_unpack_is_case_sensitive() { [[ ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend)$ ]] } +___eapi_unpack_supports_absolute_paths() { + [[ ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend)$ ]] +} + # OTHERS ___eapi_enables_failglob_in_global_scope() { diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index 0be79fd..60f7a39 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -276,14 +276,25 @@ unpack() { y=${y##*.} y_insensitive=$(LC_ALL=C tr "[:upper:]" "[:lower:]" <<< "${y}") - if [[ ${x} == "./"* ]] ; then - srcdir="" - elif [[ ${x} == ${DISTDIR%/}/* ]] ; then - die "Arguments to unpack() cannot begin with \${DISTDIR}." - elif [[ ${x} == "/"* ]] ; then - die "Arguments to unpack() cannot be absolute" + # wrt PMS 11.3.3.13 Misc Commands + if [[ ${x} != */* ]]; then + # filename without path of any kind + srcdir=${DISTDIR}/ + elif [[ ${x} == ./* ]]; then + # relative path starting with './' + srcdir= else - srcdir="${DISTDIR}/" + # non-'./' filename with path of some kind + if ___eapi_unpack_supports_absolute_paths; then + # EAPI 6 allows absolute and deep relative paths + srcdir= + elif [[ ${x} == ${DISTDIR%/}/* ]]; then + die "Arguments to unpack() cannot begin with \${DISTDIR} in EAPI ${EAPI}" + elif [[ ${x} == /* ]] ; then + die "Arguments to unpack() cannot be absolute in EAPI ${EAPI}" + else + die "Relative paths to unpack() must be prefixed with './' in EAPI ${EAPI}" + fi fi [[ ! -s ${srcdir}${x} ]] && die "${x} does not exist" -- 2.0.4
[gentoo-portage-dev] [PATCH 06/13] Add tentative support for EAPI6 eapply_user function
Add support for the user patch applying function. --- bin/eapi.sh | 4 bin/phase-helpers.sh | 22 ++ 2 files changed, 26 insertions(+) diff --git a/bin/eapi.sh b/bin/eapi.sh index 8bb..6e78750 100644 --- a/bin/eapi.sh +++ b/bin/eapi.sh @@ -76,6 +76,10 @@ ___eapi_has_eapply() { [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] } +___eapi_has_eapply_user() { + [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] +} + ___eapi_has_master_repositories() { [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] } diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index 6bd8a12..49b5547 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -927,6 +927,28 @@ if ___eapi_has_eapply; then } fi +if ___eapi_has_eapply_user; then + eapply_user() { + local basedir=${PORTAGE_CONFIGROOT%/}/etc/portage/patches + + local d applied + # possibilities: + # 1. ${CATEGORY}/${P}-${PR} (note: -r0 desired to avoid applying + #${P} twice) + # 2. ${CATEGORY}/${P} + # 3. ${CATEGORY}/${PN} + # all of the above may be optionally followed by a slot + for d in "${basedir}"/${CATEGORY}/{${P}-${PR},${P},${PN}}{,:${SLOT%/*}}; do + if [[ -d ${d} ]]; then + [[ -z ${applied} ]] && einfo "Applying user patches ..." + eapply "${d}" + fi + done + + [[ -n ${applied} ]] && einfo "User patches applied." + } +fi + if ___eapi_has_master_repositories; then master_repositories() { local output repository=$1 retval -- 2.0.4
[gentoo-portage-dev] [PATCH 11/13] Add tentative EAPI6 nonfatal support to die()
Add support for die() to respect 'nonfatal' modifier if '--respect-nonfatal' (or '-n') option is used. This allows eclasses to create custom ebuild helpers that mimic built-in helper behavior. --- bin/eapi.sh | 4 bin/isolated-functions.sh | 7 +++ 2 files changed, 11 insertions(+) diff --git a/bin/eapi.sh b/bin/eapi.sh index 6716b1c..c650a4c 100644 --- a/bin/eapi.sh +++ b/bin/eapi.sh @@ -166,6 +166,10 @@ ___eapi_unpack_supports_absolute_paths() { [[ ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend)$ ]] } +___eapi_die_can_respect_nonfatal() { + [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] +} + # OTHERS ___eapi_enables_failglob_in_global_scope() { diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh index d41f0b3..f9bc90d 100644 --- a/bin/isolated-functions.sh +++ b/bin/isolated-functions.sh @@ -116,6 +116,13 @@ __helpers_die() { die() { local IFS=$' \t\n' + if ___eapi_die_can_respect_nonfatal; then + if [[ ${1} == -n || ${1} == --respect-nonfatal ]]; then + [[ ${PORTAGE_NONFATAL} == 1 ]] && return 1 + shift + fi + fi + set +e if [ -n "${QA_INTERCEPTORS}" ] ; then # die was called from inside inherit. We need to clean up -- 2.0.4
[gentoo-portage-dev] [PATCH 08/13] Enable tentative support for EAPI6 profile-level directories
Enable the support for package.* and use.* directories on profile and repository level. --- pym/portage/eapi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pym/portage/eapi.py b/pym/portage/eapi.py index 4f77910..7217d23 100644 --- a/pym/portage/eapi.py +++ b/pym/portage/eapi.py @@ -81,7 +81,7 @@ def eapi_supports_stable_use_forcing_and_masking(eapi): return eapi not in ("0", "1", "2", "3", "4", "4-python", "4-slot-abi") def eapi_allows_directories_on_profile_level_and_repository_level(eapi): - return eapi in ("4-python", "5-progress") + return eapi not in ("0", "1", "2", "3", "4", "4-slot-abi", "5") def eapi_has_use_aliases(eapi): return eapi in ("4-python", "5-progress") -- 2.0.4
[gentoo-portage-dev] [PATCH 02/13] Add tentative support for EAPI6 --docdir and --htmldir
Pass --docdir and --htmldir to configure scripts that support it. --- bin/eapi.sh | 4 bin/phase-helpers.sh | 12 +++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/bin/eapi.sh b/bin/eapi.sh index 623b89f..5f96c3b 100644 --- a/bin/eapi.sh +++ b/bin/eapi.sh @@ -110,6 +110,10 @@ ___eapi_econf_passes_--disable-silent-rules() { [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]] } +___eapi_econf_passes_--docdir_and_--htmldir() { + [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] +} + ___eapi_use_enable_and_use_with_support_empty_third_argument() { [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] } diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index b96c3f5..c2161f6 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -522,7 +522,7 @@ econf() { fi local conf_args=() - if ___eapi_econf_passes_--disable-dependency-tracking || ___eapi_econf_passes_--disable-silent-rules; then + if ___eapi_econf_passes_--disable-dependency-tracking || ___eapi_econf_passes_--disable-silent-rules || ___eapi_econf_passes_--docdir_and_--htmldir; then local conf_help=$("${ECONF_SOURCE}/configure" --help 2>/dev/null) if ___eapi_econf_passes_--disable-dependency-tracking; then @@ -536,6 +536,16 @@ econf() { conf_args+=( --disable-silent-rules ) fi fi + + if ___eapi_econf_passes_--docdir_and_--htmldir; then + if [[ ${conf_help} == *--docdir* ]]; then + conf_args+=( --docdir="${EPREFIX}"/usr/share/doc/${PF} ) + fi + + if [[ ${conf_help} == *--htmldir* ]]; then + conf_args+=( --htmldir="${EPREFIX}"/usr/share/doc/${PF}/html ) + fi + fi fi # if the profile defines a location to install libs to aside from default, pass it on. -- 2.0.4
[gentoo-portage-dev] [PATCH 05/13] Add tentative support for EAPI6 eapply function
Add the eapply patch applying function. --- bin/eapi.sh | 4 bin/phase-helpers.sh | 52 2 files changed, 56 insertions(+) diff --git a/bin/eapi.sh b/bin/eapi.sh index 978a410..8bb 100644 --- a/bin/eapi.sh +++ b/bin/eapi.sh @@ -72,6 +72,10 @@ ___eapi_has_einstalldocs() { [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] } +___eapi_has_eapply() { + [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] +} + ___eapi_has_master_repositories() { [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] } diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index 6ccf4f4..6bd8a12 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -875,6 +875,58 @@ if ___eapi_has_einstalldocs; then } fi +if ___eapi_has_eapply; then + eapply() { + _eapply_patch() { + started_applying=1 + ebegin "Applying ${1#${top_dir}/}" + # -p1 as a sane default + # -f to avoid interactivity + # -s to silence progress output + patch -p1 -f -s "${patch_options[@]}" < "${1}" + if ! eend ${?}; then + __helpers_die "patch -p1 ${patch_options[*]} failed with ${1}" + failed=1 + fi + } + + local f patch_options=() failed started_applying options_terminated + for f; do + local top_dir=${f%/*} + + if [[ ${f} == -* && -z ${options_terminated} ]]; then + if [[ -n ${started_applying} ]]; then + die "eapply: options need to be specified before files" + fi + if [[ ${f} == -- ]]; then + options_terminated=1 + else + patch_options+=( ${f} ) + fi + elif [[ -d ${f} ]]; then + local prev_shopt=$(shopt -p nullglob) + shopt -s nullglob + local files=( "${f}"/*.{patch,diff} ) + ${prev_shopt} + + [[ -z ${files[@]} ]] && die "No *.{patch,diff} files in directory ${f}" + + local f2 + for f2 in "${files[@]}"; do + _eapply_patch "${f2}" + done + else + _eapply_patch "${f}" + fi + + # in case of nonfatal + [[ -n ${failed} ]] && return 1 + done + + return 0 + } +fi + if ___eapi_has_master_repositories; then master_repositories() { local output repository=$1 retval -- 2.0.4
[gentoo-portage-dev] [PATCH 09/13] Add tentative EAPI6 .txz unpack support
Support unpacking .txz-suffixed archives. --- bin/eapi.sh | 4 bin/phase-helpers.sh | 13 + 2 files changed, 17 insertions(+) diff --git a/bin/eapi.sh b/bin/eapi.sh index fa57999..878f8e7 100644 --- a/bin/eapi.sh +++ b/bin/eapi.sh @@ -118,6 +118,10 @@ ___eapi_unpack_supports_xz() { [[ ! ${1-${EAPI}} =~ ^(0|1|2)$ ]] } +___eapi_unpack_supports_txz() { + [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] +} + ___eapi_econf_passes_--disable-dependency-tracking() { [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] } diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index 49b5547..0be79fd 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -456,6 +456,19 @@ unpack() { __vecho "unpack ${x}: file format not recognized. Ignoring." fi ;; + txz) + if ___eapi_unpack_is_case_sensitive && \ + [[ " txz " != *" ${suffix} "* ]] ; then + eqawarn "QA Notice: unpack called with" \ + "suffix '${suffix}' which is unofficially supported" \ + "with EAPI '${EAPI}'. Instead use 'txz'." + fi + if ___eapi_supports_txz; then + tar xoJf "$srcdir$x" || die "$myfail" + else + __vecho "unpack ${x}: file format not recognized. Ignoring." + fi + ;; *) __vecho "unpack ${x}: file format not recognized. Ignoring." ;; -- 2.0.4
[gentoo-portage-dev] [PATCHES] Initial EAPI6 patch set for review
Here are my patches drafting the first implementations of various parts of EAPI6, based on top of my cleaned up portage base (see the previous patch serie). Unless I've missed something, it includes all Council-approved items except for runtime USE, and additionally --docdir and --htmldir. Please review, comment and possibly test. The easy way: portage_LIVE_REPO=https://github.com/mgorny/portage.git portage_LIVE_BRANCH=eapi6 -- Michał Górny
[gentoo-portage-dev] [PATCH 04/13] Add tentative support for EAPI6 einstalldocs function
Add the einstalldocs function to conveniently install documentation using the default patterns or DOCS and HTML_DOCS variables. --- bin/eapi.sh | 4 bin/phase-helpers.sh | 22 ++ 2 files changed, 26 insertions(+) diff --git a/bin/eapi.sh b/bin/eapi.sh index 6ace20d..978a410 100644 --- a/bin/eapi.sh +++ b/bin/eapi.sh @@ -68,6 +68,10 @@ ___eapi_has_get_libdir() { [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] } +___eapi_has_einstalldocs() { + [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] +} + ___eapi_has_master_repositories() { [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] } diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index 8edbc07..6ccf4f4 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -853,6 +853,28 @@ if ___eapi_has_get_libdir; then } fi +if ___eapi_has_einstalldocs; then + einstalldocs() { + if ! declare -p DOCS &>/dev/null ; then + local d + for d in README* ChangeLog AUTHORS NEWS TODO CHANGES \ + THANKS BUGS FAQ CREDITS CHANGELOG ; do + [[ -s ${d} ]] && dodoc "${d}" + done + elif [[ $(declare -p DOCS) == "declare -a"* ]] ; then + [[ ${DOCS[@]} ]] && dodoc -r "${DOCS[@]}" + else + [[ ${DOCS} ]] && dodoc -r ${DOCS} + fi + + if [[ $(declare -p HTML_DOCS 2>/dev/null) == "declare -a"* ]] ; then + [[ ${HTML_DOCS[@]} ]] && dohtml -r "${HTML_DOCS[@]}" + else + [[ ${HTML_DOCS} ]] && dohtml -r ${HTML_DOCS} + fi + } +fi + if ___eapi_has_master_repositories; then master_repositories() { local output repository=$1 retval -- 2.0.4
[gentoo-portage-dev] [PATCH 07/13] Enable tentative EAPI6 failglob in global scope
Enable failglob in global scope to catch unintended globbing attempts including unescaped special uses of '*'. --- bin/eapi.sh | 4 bin/ebuild.sh | 11 +++ 2 files changed, 15 insertions(+) diff --git a/bin/eapi.sh b/bin/eapi.sh index 6e78750..fa57999 100644 --- a/bin/eapi.sh +++ b/bin/eapi.sh @@ -160,6 +160,10 @@ ___eapi_unpack_is_case_sensitive() { # OTHERS +___eapi_enables_failglob_in_global_scope() { + [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] +} + ___eapi_enables_globstar() { [[ ${1-${EAPI}} =~ ^(4-python|5-progress)$ ]] } diff --git a/bin/ebuild.sh b/bin/ebuild.sh index be044e0..167ea4c 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -533,6 +533,13 @@ if ! has "$EBUILD_PHASE" clean cleanrm ; then # we make a backup copy for QA checks. __INHERITED_QA_CACHE=$INHERITED + # Catch failed globbing attempts in case ebuild writer forgot to + # escape '*' or likes. + # Note: this needs to be done before unsetting EAPI. + if ___eapi_enables_failglob_in_global_scope; then + shopt -s failglob + fi + # *DEPEND and IUSE will be set during the sourcing of the ebuild. # In order to ensure correct interaction between ebuilds and # eclasses, they need to be unset before this process of @@ -549,6 +556,10 @@ if ! has "$EBUILD_PHASE" clean cleanrm ; then set +x fi + if ___eapi_enables_failglob_in_global_scope; then + shopt -u failglob + fi + if [[ "${EBUILD_PHASE}" != "depend" ]] ; then RESTRICT=${PORTAGE_RESTRICT} [[ -e $PORTAGE_BUILDDIR/.ebuild_changed ]] && \ -- 2.0.4
[gentoo-portage-dev] [PATCH 03/13] Add tentative support for EAPI6 get_libdir()
Add get_libdir() function to obtain the basename of libdir using the same algorithm that econf uses. --- bin/eapi.sh | 4 bin/phase-helpers.sh | 11 +++ 2 files changed, 15 insertions(+) diff --git a/bin/eapi.sh b/bin/eapi.sh index 5f96c3b..6ace20d 100644 --- a/bin/eapi.sh +++ b/bin/eapi.sh @@ -64,6 +64,10 @@ ___eapi_has_usex() { [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]] } +___eapi_has_get_libdir() { + [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] +} + ___eapi_has_master_repositories() { [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] } diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index c2161f6..8edbc07 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -842,6 +842,17 @@ best_version() { esac } +if ___eapi_has_get_libdir; then + get_libdir() { + local libdir_var="LIBDIR_${ABI}" + local libdir="lib" + + [[ -n ${ABI} && -n ${!libdir_var} ]] && libdir=${!libdir_var} + + echo "${libdir}" + } +fi + if ___eapi_has_master_repositories; then master_repositories() { local output repository=$1 retval -- 2.0.4
[gentoo-portage-dev] [PATCH 01/13] Support EAPI=6_pre1 for testing EAPI6 features
--- pym/portage/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 66bfeb0..0046161 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -491,7 +491,7 @@ def abssymlink(symlink, target=None): _doebuild_manifest_exempt_depend = 0 -_testing_eapis = frozenset(["4-python", "4-slot-abi", "5-progress", "5-hdepend"]) +_testing_eapis = frozenset(["4-python", "4-slot-abi", "5-progress", "5-hdepend", "6_pre1"]) _deprecated_eapis = frozenset(["4_pre1", "3_pre2", "3_pre1", "5_pre1", "5_pre2"]) _supported_eapis = frozenset([str(x) for x in range(portage.const.EAPI + 1)] + list(_testing_eapis) + list(_deprecated_eapis)) -- 2.0.4
[gentoo-portage-dev] [PATCH 2/6] econf: Add EAPI-conditional arguments via array
Use a dedicated array variable to add EAPI-conditional arguments to the configure script instead of prepending them to the command parameters. --- bin/phase-helpers.sh | 10 +++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index 6a5ce85..b96c3f5 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -521,18 +521,19 @@ econf() { done fi + local conf_args=() if ___eapi_econf_passes_--disable-dependency-tracking || ___eapi_econf_passes_--disable-silent-rules; then local conf_help=$("${ECONF_SOURCE}/configure" --help 2>/dev/null) if ___eapi_econf_passes_--disable-dependency-tracking; then if [[ ${conf_help} == *--disable-dependency-tracking* ]]; then - set -- --disable-dependency-tracking "$@" + conf_args+=( --disable-dependency-tracking ) fi fi if ___eapi_econf_passes_--disable-silent-rules; then if [[ ${conf_help} == *--disable-silent-rules* ]]; then - set -- --disable-silent-rules "$@" + conf_args+=( --disable-silent-rules ) fi fi fi @@ -550,7 +551,9 @@ econf() { CONF_PREFIX=${CONF_PREFIX#*=} [[ ${CONF_PREFIX} != /* ]] && CONF_PREFIX="/${CONF_PREFIX}" [[ ${CONF_LIBDIR} != /* ]] && CONF_LIBDIR="/${CONF_LIBDIR}" - set -- --libdir="$(__strip_duplicate_slashes "${CONF_PREFIX}${CONF_LIBDIR}")" "$@" + conf_args+=( + --libdir="$(__strip_duplicate_slashes "${CONF_PREFIX}${CONF_LIBDIR}")" + ) fi # Handle arguments containing quoted whitespace (see bug #457136). @@ -566,6 +569,7 @@ econf() { --datadir="${EPREFIX}"/usr/share \ --sysconfdir="${EPREFIX}"/etc \ --localstatedir="${EPREFIX}"/var/lib \ + "${conf_args[@]}" \ "$@" \ "${EXTRA_ECONF[@]}" __vecho "${ECONF_SOURCE}/configure" "$@" -- 2.0.4
[gentoo-portage-dev] [PATCH 6/6] Rewrite default ebuild phase setting code
Replace the ebuild phase setting code for EAPI 2 and newer with a simpler approach; first set proper default_* functions, and call them within the phase. Disallow calling default_* for other phase functions than the one being run. --- bin/phase-functions.sh | 117 ++--- bin/save-ebuild-env.sh | 2 +- 2 files changed, 53 insertions(+), 66 deletions(-) diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh index f39a024..b7fb5d7 100644 --- a/bin/phase-functions.sh +++ b/bin/phase-functions.sh @@ -734,91 +734,78 @@ __ebuild_phase_funcs() { [ $# -ne 2 ] && die "expected exactly 2 args, got $#: $*" local eapi=$1 local phase_func=$2 - local default_phases="pkg_nofetch src_unpack src_prepare src_configure - src_compile src_install src_test" - local x y default_func="" - - for x in pkg_nofetch src_unpack src_test ; do - declare -F $x >/dev/null || \ - eval "$x() { __eapi0_$x \"\$@\" ; }" + local all_phases="src_compile pkg_config src_configure pkg_info + src_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst + src_prepare pkg_prerm pkg_pretend pkg_setup src_test src_unpack" + local x + + # First, set up the error handlers for default* + for x in ${all_phases} ; do + eval "default_${x}() { + die \"default_${x}() is not supported in EAPI='${eapi}' in phase ${phase_func}\" + }" done + # We can just call the specific handler -- it will either error out + # on invalid phase or run it. + eval "default() { + default_${phase_func} + }" + case "$eapi" in + 0|1) # EAPIs not supporting 'default' - 0|1) + for x in pkg_nofetch src_unpack src_test ; do + declare -F $x >/dev/null || \ + eval "$x() { __eapi0_$x; }" + done if ! declare -F src_compile >/dev/null ; then case "$eapi" in 0) - src_compile() { __eapi0_src_compile "$@" ; } + src_compile() { __eapi0_src_compile; } ;; *) - src_compile() { __eapi1_src_compile "$@" ; } + src_compile() { __eapi1_src_compile; } ;; esac fi - - for x in $default_phases ; do - eval "default_$x() { - die \"default_$x() is not supported with EAPI='$eapi' during phase $phase_func\" - }" - done - - eval "default() { - die \"default() is not supported with EAPI='$eapi' during phase $phase_func\" - }" - ;; - *) - + *) # EAPIs supporting 'default' + + # defaults starting with EAPI 0 + [[ ${phase_func} == pkg_nofetch ]] && \ + default_pkg_nofetch() { __eapi0_pkg_nofetch; } + [[ ${phase_func} == src_unpack ]] && \ + default_src_unpack() { __eapi0_src_unpack; } + [[ ${phase_func} == src_test ]] && \ + default_src_test() { __eapi0_src_test; } + + # defaults starting with EAPI 2 + [[ ${phase_func} == src_configure ]] && \ + default_src_configure() { __eapi2_src_configure; } + [[ ${phase_func} == src_compile ]] && \ + default_src_compile() { __eapi2_src_compile; } + + # bind supported phases to the defaults + declare -F src_unpack >/dev/null || \ + src_unpack() { default; } declare -F src_configure >/dev/null || \ - src_configure() { __eapi2_src_configure "$@" ; } - + src_configure() { default; } declare -F src_compile >/dev/null || \ - src_compile() { __eapi2_src_compile "$@" ; } - - has $eapi 2 3 || declare -F src_install >/dev/null || \ - src_install() { __eapi4_src_install "$@" ; } + src_compile() { default; } + decla
[gentoo-portage-dev] [PATCH 3/6] Fix off-by-one error in supported EAPI list
Fix the off-by-one error in construction of supported EAPI list that resulted in EAPI 5 being considered unsupported. --- pym/portage/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index fdbc4a8..18b2599 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -493,7 +493,7 @@ _doebuild_manifest_exempt_depend = 0 _testing_eapis = frozenset(["4-python", "4-slot-abi", "5-progress", "5-hdepend"]) _deprecated_eapis = frozenset(["4_pre1", "3_pre2", "3_pre1", "5_pre1", "5_pre2"]) -_supported_eapis = frozenset([str(x) for x in range(portage.const.EAPI)] + list(_testing_eapis) + list(_deprecated_eapis)) +_supported_eapis = frozenset([str(x) for x in range(portage.const.EAPI + 1)] + list(_testing_eapis) + list(_deprecated_eapis)) def _eapi_is_deprecated(eapi): return eapi in _deprecated_eapis -- 2.0.4
[gentoo-portage-dev] [PATCH 5/6] Apply 'nonfatal' to helpers only
Make 'nonfatal' modifier affect helpers only rather than disabling 'die' completely. This improves the PMS conformance. --- bin/isolated-functions.sh | 7 +-- 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh index a22af57..d41f0b3 100644 --- a/bin/isolated-functions.sh +++ b/bin/isolated-functions.sh @@ -106,7 +106,7 @@ __bashpid() { } __helpers_die() { - if ___eapi_helpers_can_die; then + if ___eapi_helpers_can_die && [[ ${PORTAGE_NONFATAL} != 1 ]]; then die "$@" else echo -e "$@" >&2 @@ -116,11 +116,6 @@ __helpers_die() { die() { local IFS=$' \t\n' - if [[ $PORTAGE_NONFATAL -eq 1 ]]; then - echo -e " $WARN*$NORMAL ${FUNCNAME[1]}: WARNING: $@" >&2 - return 1 - fi - set +e if [ -n "${QA_INTERCEPTORS}" ] ; then # die was called from inside inherit. We need to clean up -- 2.0.4
[gentoo-portage-dev] [PATCH 1/6] econf: Replace unnecessary 'case' statements with 'if's
Replace the 'case' statements used to match 'configure' output with simpler pattern-matching 'if's. Acked-by: Alexander Berntsen --- bin/phase-helpers.sh | 16 ++-- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index 47bd843..6a5ce85 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -525,19 +525,15 @@ econf() { local conf_help=$("${ECONF_SOURCE}/configure" --help 2>/dev/null) if ___eapi_econf_passes_--disable-dependency-tracking; then - case "${conf_help}" in - *--disable-dependency-tracking*) - set -- --disable-dependency-tracking "$@" - ;; - esac + if [[ ${conf_help} == *--disable-dependency-tracking* ]]; then + set -- --disable-dependency-tracking "$@" + fi fi if ___eapi_econf_passes_--disable-silent-rules; then - case "${conf_help}" in - *--disable-silent-rules*) - set -- --disable-silent-rules "$@" - ;; - esac + if [[ ${conf_help} == *--disable-silent-rules* ]]; then + set -- --disable-silent-rules "$@" + fi fi fi -- 2.0.4
[gentoo-portage-dev] [PATCHES] Random issues and refactoring before EAPI6 series
dol-sen asked me to send all of them in a serie. Those are minor bugfixes and code refactoring done to prepare for EAPI6 code. 1 & 2 cleans up econf. In EAPI6 we will likely be adding --docdir and --htmldir there, so we should add it in nice code rather than copying the bad one. 3-4 aim to clean up EAPI handling a bit. It's far from perfect, but 3 at least fixes the bug that EAPI 5 is considered unsupported. Further changes can be done in the future. 5 fixes PMS incompatibility that causes 'nonfatal' to prevent 'die' from working correctly. I'm pretty sure the bug was mentioned by PMS team already but nobody considered it important enough to report a bug. EAPI 6 'nonfatal die' support will land in place of that conditional. 6 aims to simplify the phase setting function that is hard to understand and the moment, and has a few unnecessary, hard-to-understand side effects like declaring non-existent __eapi2_src_*() phases. The new code is much cleaner and makes adding new phases in future EAPIs trivial. It also prevents from calling default_* function for another phase as forbidden by PMS. -- Michał Górny
[gentoo-portage-dev] [PATCH 4/6] Make eapi_is_supported() reuse _supported_eapis list
Make the eapi_is_supported() function use the generated list of supported EAPIs rather than partial lists and integer comparison. --- pym/portage/__init__.py | 14 +- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 18b2599..66bfeb0 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -505,19 +505,7 @@ def eapi_is_supported(eapi): eapi = str(eapi) eapi = eapi.strip() - if _eapi_is_deprecated(eapi): - return True - - if eapi in _testing_eapis: - return True - - try: - eapi = int(eapi) - except ValueError: - eapi = -1 - if eapi < 0: - return False - return eapi <= portage.const.EAPI + return eapi in _supported_eapis # This pattern is specified by PMS section 7.3.1. _pms_eapi_re = re.compile(r"^[ \t]*EAPI=(['\"]?)([A-Za-z0-9+_.-]*)\1[ \t]*([ \t]#.*)?$") -- 2.0.4
Re: [gentoo-portage-dev] [PATCH] Apply 'nonfatal' to helpers only
Dnia 2014-08-18, o godz. 08:07:12 Brian Dolbec napisał(a): > On Mon, 18 Aug 2014 14:04:32 +0200 > Michał Górny wrote: > > > Dnia 2014-08-18, o godz. 14:00:08 > > Arfrever Frehtes Taifersar Arahesis > > napisał(a): > > > > > 2014-08-18 11:02 Michał Górny napisał(a): > > > > Make 'nonfatal' modifier affect helpers only rather than > > > > disabling 'die' completely. This improves the PMS conformance. > > > > > > It is better to leave current code, until there is replacement > > > functionality. > > > > The replacement functionality is in EAPI 6. > > Then perhaps your commit message should have stated this is an EAPI 6 > involved change. Also, EAPI 6 is no where near started to be supported > in portage. So if this is an EAPI 6 change, it is the first. It's almost complete in my eapi6 branch -- first drafts for all the Council-approved features except runtime USE :). But this is more of preparation for it. Fixing a long-known bug in Portage. -- Best regards, Michał Górny signature.asc Description: PGP signature
Re: [gentoo-portage-dev] [PATCH] Apply 'nonfatal' to helpers only
On Mon, 18 Aug 2014 14:04:32 +0200 Michał Górny wrote: > Dnia 2014-08-18, o godz. 14:00:08 > Arfrever Frehtes Taifersar Arahesis > napisał(a): > > > 2014-08-18 11:02 Michał Górny napisał(a): > > > Make 'nonfatal' modifier affect helpers only rather than > > > disabling 'die' completely. This improves the PMS conformance. > > > > It is better to leave current code, until there is replacement > > functionality. > > The replacement functionality is in EAPI 6. > Then perhaps your commit message should have stated this is an EAPI 6 involved change. Also, EAPI 6 is no where near started to be supported in portage. So if this is an EAPI 6 change, it is the first. -- Brian Dolbec signature.asc Description: PGP signature
[gentoo-portage-dev] [PATCH v2] Rewrite default ebuild phase setting code
Replace the ebuild phase setting code for EAPI 2 and newer with a simpler approach; first set proper default_* functions, and call them within the phase. Disallow calling default_* for other phase functions than the one being run. --- bin/phase-functions.sh | 117 ++--- bin/save-ebuild-env.sh | 2 +- 2 files changed, 53 insertions(+), 66 deletions(-) diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh index f39a024..b7fb5d7 100644 --- a/bin/phase-functions.sh +++ b/bin/phase-functions.sh @@ -734,91 +734,78 @@ __ebuild_phase_funcs() { [ $# -ne 2 ] && die "expected exactly 2 args, got $#: $*" local eapi=$1 local phase_func=$2 - local default_phases="pkg_nofetch src_unpack src_prepare src_configure - src_compile src_install src_test" - local x y default_func="" - - for x in pkg_nofetch src_unpack src_test ; do - declare -F $x >/dev/null || \ - eval "$x() { __eapi0_$x \"\$@\" ; }" + local all_phases="src_compile pkg_config src_configure pkg_info + src_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst + src_prepare pkg_prerm pkg_pretend pkg_setup src_test src_unpack" + local x + + # First, set up the error handlers for default* + for x in ${all_phases} ; do + eval "default_${x}() { + die \"default_${x}() is not supported in EAPI='${eapi}' in phase ${phase_func}\" + }" done + # We can just call the specific handler -- it will either error out + # on invalid phase or run it. + eval "default() { + default_${phase_func} + }" + case "$eapi" in + 0|1) # EAPIs not supporting 'default' - 0|1) + for x in pkg_nofetch src_unpack src_test ; do + declare -F $x >/dev/null || \ + eval "$x() { __eapi0_$x; }" + done if ! declare -F src_compile >/dev/null ; then case "$eapi" in 0) - src_compile() { __eapi0_src_compile "$@" ; } + src_compile() { __eapi0_src_compile; } ;; *) - src_compile() { __eapi1_src_compile "$@" ; } + src_compile() { __eapi1_src_compile; } ;; esac fi - - for x in $default_phases ; do - eval "default_$x() { - die \"default_$x() is not supported with EAPI='$eapi' during phase $phase_func\" - }" - done - - eval "default() { - die \"default() is not supported with EAPI='$eapi' during phase $phase_func\" - }" - ;; - *) - + *) # EAPIs supporting 'default' + + # defaults starting with EAPI 0 + [[ ${phase_func} == pkg_nofetch ]] && \ + default_pkg_nofetch() { __eapi0_pkg_nofetch; } + [[ ${phase_func} == src_unpack ]] && \ + default_src_unpack() { __eapi0_src_unpack; } + [[ ${phase_func} == src_test ]] && \ + default_src_test() { __eapi0_src_test; } + + # defaults starting with EAPI 2 + [[ ${phase_func} == src_configure ]] && \ + default_src_configure() { __eapi2_src_configure; } + [[ ${phase_func} == src_compile ]] && \ + default_src_compile() { __eapi2_src_compile; } + + # bind supported phases to the defaults + declare -F src_unpack >/dev/null || \ + src_unpack() { default; } declare -F src_configure >/dev/null || \ - src_configure() { __eapi2_src_configure "$@" ; } - + src_configure() { default; } declare -F src_compile >/dev/null || \ - src_compile() { __eapi2_src_compile "$@" ; } - - has $eapi 2 3 || declare -F src_install >/dev/null || \ - src_install() { __eapi4_src_install "$@" ; } + src_compile() { default; } + decla
Re: [gentoo-portage-dev] [PATCH] Rewrite default ebuild phase setting code
Dnia 2014-08-18, o godz. 14:10:46 Michał Górny napisał(a): > + src_compile() { default; } > + declare -F src_test >/dev/null || \ > + src_unpack() { default; } Oops, a typo here. -- Best regards, Michał Górny signature.asc Description: PGP signature
[gentoo-portage-dev] [PATCH] Rewrite default ebuild phase setting code
Replace the ebuild phase setting code for EAPI 2 and newer with a simpler approach; first set proper default_* functions, and call them within the phase. Disallow calling default_* for other phase functions than the one being run. --- bin/phase-functions.sh | 117 ++--- bin/save-ebuild-env.sh | 2 +- 2 files changed, 53 insertions(+), 66 deletions(-) diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh index f39a024..954f1a3 100644 --- a/bin/phase-functions.sh +++ b/bin/phase-functions.sh @@ -734,91 +734,78 @@ __ebuild_phase_funcs() { [ $# -ne 2 ] && die "expected exactly 2 args, got $#: $*" local eapi=$1 local phase_func=$2 - local default_phases="pkg_nofetch src_unpack src_prepare src_configure - src_compile src_install src_test" - local x y default_func="" - - for x in pkg_nofetch src_unpack src_test ; do - declare -F $x >/dev/null || \ - eval "$x() { __eapi0_$x \"\$@\" ; }" + local all_phases="src_compile pkg_config src_configure pkg_info + src_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst + src_prepare pkg_prerm pkg_pretend pkg_setup src_test src_unpack" + local x + + # First, set up the error handlers for default* + for x in ${all_phases} ; do + eval "default_${x}() { + die \"default_${x}() is not supported in EAPI='${eapi}' in phase ${phase_func}\" + }" done + # We can just call the specific handler -- it will either error out + # on invalid phase or run it. + eval "default() { + default_${phase_func} + }" + case "$eapi" in + 0|1) # EAPIs not supporting 'default' - 0|1) + for x in pkg_nofetch src_unpack src_test ; do + declare -F $x >/dev/null || \ + eval "$x() { __eapi0_$x; }" + done if ! declare -F src_compile >/dev/null ; then case "$eapi" in 0) - src_compile() { __eapi0_src_compile "$@" ; } + src_compile() { __eapi0_src_compile; } ;; *) - src_compile() { __eapi1_src_compile "$@" ; } + src_compile() { __eapi1_src_compile; } ;; esac fi - - for x in $default_phases ; do - eval "default_$x() { - die \"default_$x() is not supported with EAPI='$eapi' during phase $phase_func\" - }" - done - - eval "default() { - die \"default() is not supported with EAPI='$eapi' during phase $phase_func\" - }" - ;; - *) - + *) # EAPIs supporting 'default' + + # defaults starting with EAPI 0 + [[ ${phase_func} == pkg_nofetch ]] && \ + default_pkg_nofetch() { __eapi0_pkg_nofetch; } + [[ ${phase_func} == src_unpack ]] && \ + default_src_unpack() { __eapi0_src_unpack; } + [[ ${phase_func} == src_test ]] && \ + default_src_test() { __eapi0_src_test; } + + # defaults starting with EAPI 2 + [[ ${phase_func} == src_configure ]] && \ + default_src_configure() { __eapi2_src_configure; } + [[ ${phase_func} == src_compile ]] && \ + default_src_compile() { __eapi2_src_compile; } + + # bind supported phases to the defaults + declare -F src_unpack >/dev/null || \ + src_unpack() { default; } declare -F src_configure >/dev/null || \ - src_configure() { __eapi2_src_configure "$@" ; } - + src_configure() { default; } declare -F src_compile >/dev/null || \ - src_compile() { __eapi2_src_compile "$@" ; } - - has $eapi 2 3 || declare -F src_install >/dev/null || \ - src_install() { __eapi4_src_install "$@" ; } + src_compile() { default; } + decla
Re: [gentoo-portage-dev] [PATCH] Apply 'nonfatal' to helpers only
Dnia 2014-08-18, o godz. 14:00:08 Arfrever Frehtes Taifersar Arahesis napisał(a): > 2014-08-18 11:02 Michał Górny napisał(a): > > Make 'nonfatal' modifier affect helpers only rather than disabling 'die' > > completely. This improves the PMS conformance. > > It is better to leave current code, until there is replacement functionality. The replacement functionality is in EAPI 6. -- Best regards, Michał Górny signature.asc Description: PGP signature
Re: [gentoo-portage-dev] [PATCH] Apply 'nonfatal' to helpers only
2014-08-18 11:02 Michał Górny napisał(a): > Make 'nonfatal' modifier affect helpers only rather than disabling 'die' > completely. This improves the PMS conformance. It is better to leave current code, until there is replacement functionality. -- Arfrever Frehtes Taifersar Arahesis signature.asc Description: This is a digitally signed message part.
[gentoo-portage-dev] [PATCH] Apply 'nonfatal' to helpers only
Make 'nonfatal' modifier affect helpers only rather than disabling 'die' completely. This improves the PMS conformance. --- bin/isolated-functions.sh | 7 +-- 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh index a22af57..d41f0b3 100644 --- a/bin/isolated-functions.sh +++ b/bin/isolated-functions.sh @@ -106,7 +106,7 @@ __bashpid() { } __helpers_die() { - if ___eapi_helpers_can_die; then + if ___eapi_helpers_can_die && [[ ${PORTAGE_NONFATAL} != 1 ]]; then die "$@" else echo -e "$@" >&2 @@ -116,11 +116,6 @@ __helpers_die() { die() { local IFS=$' \t\n' - if [[ $PORTAGE_NONFATAL -eq 1 ]]; then - echo -e " $WARN*$NORMAL ${FUNCNAME[1]}: WARNING: $@" >&2 - return 1 - fi - set +e if [ -n "${QA_INTERCEPTORS}" ] ; then # die was called from inside inherit. We need to clean up -- 2.0.4