summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-12-09 15:16:08 -0800
committerZac Medico <zmedico@gentoo.org>2011-12-09 15:16:08 -0800
commit9ba122ee2242369aed344e3756d29c9b153bdbc8 (patch)
treeb24199701e10ea8b5d8f5dc9a9cdc8ad65a731cb
parent0c217d51685bde5085607a8b54e8507b3624c36e (diff)
downloadportage-9ba122ee2242369aed344e3756d29c9b153bdbc8.tar.gz
portage-9ba122ee2242369aed344e3756d29c9b153bdbc8.tar.bz2
portage-9ba122ee2242369aed344e3756d29c9b153bdbc8.zip
Auto-generate PORTAGE_GRP/USERNAME for prefix.
For prefix environments, default to the UID and GID of the top-level EROOT directory. This allows us to avoid using hardcoded defaults. It's still possible to override these variables via make.conf.
-rw-r--r--pym/portage/package/ebuild/config.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
index bf33978e2..128888137 100644
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@ -7,8 +7,10 @@ __all__ = [
import copy
from itertools import chain
+import grp
import logging
import platform
+import pwd
import re
import sys
import warnings
@@ -739,6 +741,24 @@ class config(object):
default_inst_ids["PORTAGE_INST_GID"] = str(eroot_st.st_gid)
default_inst_ids["PORTAGE_INST_UID"] = str(eroot_st.st_uid)
+ if "PORTAGE_USERNAME" not in self:
+ try:
+ pwd_struct = pwd.getpwuid(eroot_st.st_uid)
+ except KeyError:
+ pass
+ else:
+ self["PORTAGE_USERNAME"] = pwd_struct.pw_name
+ self.backup_changes("PORTAGE_USERNAME")
+
+ if "PORTAGE_GRPNAME" not in self:
+ try:
+ grp_struct = grp.getgrgid(eroot_st.st_gid)
+ except KeyError:
+ pass
+ else:
+ self["PORTAGE_GRPNAME"] = grp_struct.gr_name
+ self.backup_changes("PORTAGE_GRPNAME")
+
for var, default_val in default_inst_ids.items():
try:
self[var] = str(int(self.get(var, default_val)))