Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r13856 - in main/trunk: bin pym/portage
Date: Thu, 30 Jul 2009 07:29:37
Message-Id: E1MWQ51-0000XV-3L@stork.gentoo.org
1 Author: zmedico
2 Date: 2009-07-30 07:29:34 +0000 (Thu, 30 Jul 2009)
3 New Revision: 13856
4
5 Modified:
6 main/trunk/bin/ebuild.sh
7 main/trunk/bin/isolated-functions.sh
8 main/trunk/pym/portage/__init__.py
9 Log:
10 Bug #278895 - Make ebuild.sh clean up orphaned processes that may have been
11 left behind by ebuild phases. This works by using setsid to create a new
12 login session for the ebuild.sh process, and `kill -s SIGHUP 0` to send
13 a SIGHUP signal to all processes in the session. The setsid is currently
14 not done on the python side since that would cause the sandbox process in
15 the session, and sandbox produces a warning message if it catches a SIGHUP
16 signal.
17
18
19 Modified: main/trunk/bin/ebuild.sh
20 ===================================================================
21 --- main/trunk/bin/ebuild.sh 2009-07-29 22:44:21 UTC (rev 13855)
22 +++ main/trunk/bin/ebuild.sh 2009-07-30 07:29:34 UTC (rev 13856)
23 @@ -71,6 +71,17 @@
24 PATH=$PORTAGE_BIN_PATH/ebuild-helpers:$PREROOTPATH${PREROOTPATH:+:}/usr/local/sbin:/sbin:/usr/sbin:/usr/local/bin:/bin:/usr/bin${ROOTPATH:+:}$ROOTPATH
25 export PATH
26
27 +if [[ -z $PORTAGE_SETSID && \
28 + -n $EBUILD_SH_ARGS && $EBUILD_SH_ARGS != depend ]] ; then
29 + if type -P setsid >/dev/null ; then
30 + # Use setsid to create a new login session so that we can use SIGHUP
31 + # to ensure that no orphaned subprocesses are left running.
32 + export PORTAGE_SETSID=1
33 + exec setsid "$PORTAGE_BIN_PATH/ebuild.sh" $EBUILD_SH_ARGS
34 + fi
35 +fi
36 +trap '[[ $PORTAGE_SETSID = 1 ]] && { trap : SIGHUP ; kill -s SIGHUP 0 ; }' EXIT
37 +
38 source "${PORTAGE_BIN_PATH}/isolated-functions.sh" &>/dev/null
39
40 # Set IMAGE for minimal backward compatibility with
41
42 Modified: main/trunk/bin/isolated-functions.sh
43 ===================================================================
44 --- main/trunk/bin/isolated-functions.sh 2009-07-29 22:44:21 UTC (rev 13855)
45 +++ main/trunk/bin/isolated-functions.sh 2009-07-30 07:29:34 UTC (rev 13856)
46 @@ -536,7 +536,8 @@
47 PORTAGE_DEPCACHEDIR PORTAGE_GID PORTAGE_INST_GID \
48 PORTAGE_INST_UID PORTAGE_LOG_FILE PORTAGE_MASTER_PID \
49 PORTAGE_QUIET \
50 - PORTAGE_REPO_NAME PORTAGE_RESTRICT PORTAGE_UPDATE_ENV \
51 + PORTAGE_REPO_NAME PORTAGE_RESTRICT \
52 + PORTAGE_SETSID PORTAGE_UPDATE_ENV \
53 PORTAGE_VERBOSE PORTAGE_WORKDIR_MODE PORTDIR \
54 PORTDIR_OVERLAY ${!PORTAGE_SANDBOX_*} PREROOTPATH \
55 PROFILE_PATHS PWORKDIR QA_INTERCEPTORS \
56
57 Modified: main/trunk/pym/portage/__init__.py
58 ===================================================================
59 --- main/trunk/pym/portage/__init__.py 2009-07-29 22:44:21 UTC (rev 13855)
60 +++ main/trunk/pym/portage/__init__.py 2009-07-30 07:29:34 UTC (rev 13856)
61 @@ -1048,6 +1048,7 @@
62 "EBUILD_PHASE", "EMERGE_FROM", "HOMEPAGE", "INHERITED", "IUSE",
63 "KEYWORDS", "LICENSE", "PDEPEND", "PF", "PKGUSE",
64 "PORTAGE_CONFIGROOT", "PORTAGE_IUSE", "PORTAGE_REPO_NAME",
65 + "PORTAGE_SETSID",
66 "PORTAGE_USE", "PROPERTIES", "PROVIDE", "RDEPEND", "RESTRICT",
67 "ROOT", "SLOT", "SRC_URI"
68 ]