When the fallback from S to WORKDIR was made conditional in EAPI 4, src_test() was originally omitted. This has been fixed retroactively in PMS: https://gitweb.gentoo.org/proj/pms.git/commit/?id=0038f90a942f0856ae2533b26f709002a3ec80ae There should be no issues with backwards compatibility of existing ebuilds. The feature is not used in the Gentoo repository. Plus, the scenario is very unlikely, because in src_test the fallback to WORKDIR could only happen for an ebuild that: - Has no files in A to be unpacked. - Doesn't define any of the unpack, prepare, configure, compile or install phases (otherwise it would die in one of these phases). Signed-off-by: Ulrich Müller --- bin/phase-functions.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh index d8ebf3d3e..4c6420bfa 100644 --- a/bin/phase-functions.sh +++ b/bin/phase-functions.sh @@ -358,7 +358,7 @@ __abort_install() { __has_phase_defined_up_to() { local phase - for phase in unpack prepare configure compile install; do + for phase in unpack prepare configure compile test install; do has ${phase} ${DEFINED_PHASES} && return 0 [[ ${phase} == $1 ]] && return 1 done @@ -497,8 +497,12 @@ __dyn_test() { if [ -d "${S}" ]; then cd "${S}" - else + elif ___eapi_has_S_WORKDIR_fallback; then + cd "${WORKDIR}" + elif [[ -z ${A} ]] && ! __has_phase_defined_up_to test; then cd "${WORKDIR}" + else + die "The source directory '${S}' doesn't exist" fi if has test ${RESTRICT} ; then -- 2.20.1