PATH="$PORTAGE_BIN_PATH/ebuild-helpers:$PREROOTPATH${PREROOTPATH:+:}${DEFAULT_PATH}:${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
[ -n "$EBUILD_EXIT_STATUS_FILE" ] && > "$EBUILD_EXIT_STATUS_FILE"
# subshell die support
- kill -s SIGTERM ${EBUILD_MASTER_PID}
+ [[ $BASHPID = $EBUILD_MASTER_PID ]] || kill -s SIGTERM $EBUILD_MASTER_PID
exit 1
}
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 \
# Exclude installed here since we only
# want to show available updates.
continue
- if pkg.slot_atom in missed_updates:
- other_pkg, mask_type, parent_atoms = \
- missed_updates[pkg.slot_atom]
+ k = (pkg.root, pkg.slot_atom)
+ if k in missed_updates:
+ other_pkg, mask_type, parent_atoms = missed_updates[k]
if other_pkg > pkg:
continue
for mask_type, parent_atoms in mask_reasons.iteritems():
if not parent_atoms:
continue
- missed_updates[pkg.slot_atom] = (pkg, mask_type, parent_atoms)
+ missed_updates[k] = (pkg, mask_type, parent_atoms)
break
if not missed_updates:
"due to unsatisfied dependencies:\n\n")
write(str(pkg.slot_atom))
+ if pkg.root != '/':
+ write(" for %s" % (pkg.root,))
write("\n")
for parent, root, atom in parent_atoms:
indent = " "
for pkg, parent_atoms in missed_updates:
msg.append(str(pkg.slot_atom))
+ if pkg.root != '/':
+ msg.append(" for %s" % (pkg.root,))
msg.append("\n\n")
for parent, atom in parent_atoms:
"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", "EPREFIX", "EROOT"
]