Auto-generate PORTAGE_GRP/USERNAME for prefix.
authorZac Medico <zmedico@gentoo.org>
Fri, 9 Dec 2011 23:16:08 +0000 (15:16 -0800)
committerZac Medico <zmedico@gentoo.org>
Fri, 9 Dec 2011 23:16:08 +0000 (15:16 -0800)
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.

pym/portage/package/ebuild/config.py

index bf33978e2f5b37cde90dc18e8c7a07afbf845c3f..128888137e356a921a4eebf9c4df42c0c9ffff88 100644 (file)
@@ -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)))