Index: pym/portage/__init__.py =================================================================== --- pym/portage/__init__.py (revision 13855) +++ pym/portage/__init__.py (revision 13856) @@ -1048,6 +1048,7 @@ "EBUILD_PHASE", "EMERGE_FROM", "HOMEPAGE", "INHERITED", "IUSE", "KEYWORDS", "LICENSE", "PDEPEND", "PF", "PKGUSE", "PORTAGE_CONFIGROOT", "PORTAGE_IUSE", "PORTAGE_REPO_NAME", + "PORTAGE_SETSID", "PORTAGE_USE", "PROPERTIES", "PROVIDE", "RDEPEND", "RESTRICT", "ROOT", "SLOT", "SRC_URI" ] Index: bin/isolated-functions.sh =================================================================== --- bin/isolated-functions.sh (revision 13855) +++ bin/isolated-functions.sh (revision 13856) @@ -536,7 +536,8 @@ PORTAGE_DEPCACHEDIR PORTAGE_GID PORTAGE_INST_GID \ PORTAGE_INST_UID PORTAGE_LOG_FILE PORTAGE_MASTER_PID \ PORTAGE_QUIET \ - PORTAGE_REPO_NAME PORTAGE_RESTRICT PORTAGE_UPDATE_ENV \ + PORTAGE_REPO_NAME PORTAGE_RESTRICT \ + PORTAGE_SETSID PORTAGE_UPDATE_ENV \ PORTAGE_VERBOSE PORTAGE_WORKDIR_MODE PORTDIR \ PORTDIR_OVERLAY ${!PORTAGE_SANDBOX_*} PREROOTPATH \ PROFILE_PATHS PWORKDIR QA_INTERCEPTORS \ Index: bin/ebuild.sh =================================================================== --- bin/ebuild.sh (revision 13855) +++ bin/ebuild.sh (revision 13856) @@ -71,6 +71,17 @@ PATH=$PORTAGE_BIN_PATH/ebuild-helpers:$PREROOTPATH${PREROOTPATH:+:}/usr/local/sbin:/sbin:/usr/sbin:/usr/local/bin:/bin:/usr/bin${ROOTPATH:+:}$ROOTPATH export PATH +if [[ -z $PORTAGE_SETSID && \ + -n $EBUILD_SH_ARGS && $EBUILD_SH_ARGS != depend ]] ; then + if type -P setsid >/dev/null ; then + # Use setsid to create a new login session so that we can use SIGHUP + # to ensure that no orphaned subprocesses are left running. + export PORTAGE_SETSID=1 + exec setsid "$PORTAGE_BIN_PATH/ebuild.sh" $EBUILD_SH_ARGS + fi +fi +trap '[[ $PORTAGE_SETSID = 1 ]] && { trap : SIGHUP ; kill -s SIGHUP 0 ; }' EXIT + source "${PORTAGE_BIN_PATH}/isolated-functions.sh" &>/dev/null # Set IMAGE for minimal backward compatibility with