From a9360035610dc73c851e9c9b6dfa9b5d42059d8d Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 14 Jul 2010 01:10:02 -0700 Subject: * Add support for PORTAGE_USERNAME and PORTAGE_GRPNAME environment variables, for use within the chromium-os build environment. * Add PORTAGE_USERNAME and PORTAGE_GRPNAME to the environment whitelist and filter them from the saved environment. Note: In order to support PORTAGE_USERNAME and PORTAGE_GRPNAME settings in make.conf, the associated portage.data attributes may be relocated to the config class in the future. --- bin/isolated-functions.sh | 4 ++-- pym/portage/data.py | 10 +++++++--- pym/portage/package/ebuild/config.py | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh index 6bead30b2..fb6ad64ff 100644 --- a/bin/isolated-functions.sh +++ b/bin/isolated-functions.sh @@ -557,11 +557,11 @@ save_ebuild_env() { PORTAGE_BINPKG_TAR_OPTS PORTAGE_BINPKG_TMPFILE PORTAGE_BUILDDIR \ PORTAGE_COLORMAP PORTAGE_CONFIGROOT PORTAGE_DEBUG \ PORTAGE_DEPCACHEDIR PORTAGE_GID \ - PORTAGE_INST_GID \ + PORTAGE_GRPNAME PORTAGE_INST_GID \ PORTAGE_INST_UID PORTAGE_LOG_FILE PORTAGE_MASTER_PID \ PORTAGE_NONFATAL PORTAGE_QUIET \ PORTAGE_REPO_NAME PORTAGE_RESTRICT PORTAGE_UPDATE_ENV \ - PORTAGE_VERBOSE PORTAGE_WORKDIR_MODE PORTDIR \ + PORTAGE_USERNAME PORTAGE_VERBOSE PORTAGE_WORKDIR_MODE PORTDIR \ PORTDIR_OVERLAY ${!PORTAGE_SANDBOX_*} PREROOTPATH \ PROFILE_PATHS PWORKDIR QA_INTERCEPTORS \ RC_DEFAULT_INDENT RC_DOT_PATTERN RC_ENDCOL \ diff --git a/pym/portage/data.py b/pym/portage/data.py index debf419dd..a9ac62ddc 100644 --- a/pym/portage/data.py +++ b/pym/portage/data.py @@ -74,10 +74,14 @@ try: except KeyError: pass +# Allow the overriding of the user used for 'userpriv' and 'userfetch' +_portage_uname = os.environ.get('PORTAGE_USERNAME', 'portage') +_portage_grpname = os.environ.get('PORTAGE_GRPNAME', 'portage') + #Discover the uid and gid of the portage user/group try: - portage_uid=pwd.getpwnam("portage")[2] - portage_gid=grp.getgrnam("portage")[2] + portage_uid = pwd.getpwnam(_portage_uname)[2] + portage_gid = grp.getgrnam(_portage_grpname)[2] if secpass < 1 and portage_gid in os.getgroups(): secpass=1 except KeyError: @@ -108,7 +112,7 @@ else: # grp.getgrall() since it is known to trigger spurious # SIGPIPE problems with nss_ldap. mystatus, myoutput = \ - portage.subprocess_getstatusoutput("id -G %s" % 'portage') + portage.subprocess_getstatusoutput("id -G %s" % _portage_uname) if mystatus == os.EX_OK: for x in myoutput.split(): try: diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py index b0fecae8f..4e735e35d 100644 --- a/pym/portage/package/ebuild/config.py +++ b/pym/portage/package/ebuild/config.py @@ -179,13 +179,13 @@ class config(object): "PORTAGE_BIN_PATH", "PORTAGE_BUILDDIR", "PORTAGE_COLORMAP", "PORTAGE_CONFIGROOT", "PORTAGE_DEBUG", "PORTAGE_DEPCACHEDIR", - "PORTAGE_GID", + "PORTAGE_GID", "PORTAGE_GRPNAME", "PORTAGE_INST_GID", "PORTAGE_INST_UID", "PORTAGE_IUSE", "PORTAGE_LOG_FILE", "PORTAGE_MASTER_PID", "PORTAGE_PYM_PATH", "PORTAGE_QUIET", "PORTAGE_REPO_NAME", "PORTAGE_RESTRICT", - "PORTAGE_TMPDIR", "PORTAGE_UPDATE_ENV", + "PORTAGE_TMPDIR", "PORTAGE_UPDATE_ENV", "PORTAGE_USERNAME", "PORTAGE_VERBOSE", "PORTAGE_WORKDIR_MODE", "PORTDIR", "PORTDIR_OVERLAY", "PREROOTPATH", "PROFILE_PATHS", "REPLACING_VERSIONS", "REPLACED_BY_VERSION", -- cgit v1.2.3-1-g7c22