diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-12-09 15:16:08 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-12-09 15:16:08 -0800 |
commit | 9ba122ee2242369aed344e3756d29c9b153bdbc8 (patch) | |
tree | b24199701e10ea8b5d8f5dc9a9cdc8ad65a731cb | |
parent | 0c217d51685bde5085607a8b54e8507b3624c36e (diff) | |
download | portage-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.py | 20 |
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))) |