if not hasattr(__builtins__, "set"):
from sets import Set as set
-try:
- import portage
-except ImportError:
- from os import path as osp
- sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
- import portage
+
+# for an explanation on this logic, see pym/_emerge/__init__.py
+import os
+import sys
+if os.environ.__contains__("PORTAGE_PYTHONPATH"):
+ sys.path.insert(0, os.environ["PORTAGE_PYTHONPATH"])
+else:
+ sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "pym"))
+import portage
+
portage._disable_legacy_globals()
from portage import os
+ from portage import subprocess_getstatusoutput
from portage import _encodings
from portage import _unicode_encode
from portage import StringIO
MAKE_DEFAULTS_FILE = PROFILE_PATH + "/make.defaults" # FIXME: not used
DEPRECATED_PROFILE_FILE = PROFILE_PATH + "/deprecated"
- # variables used with target_root (these need to be absolute, but not
+ # variables used with targetroot (these need to be absolute, but not
# have a leading '/' since they are used directly with os.path.join)
-VDB_PATH = "var/db/pkg"
-CACHE_PATH = "var/cache/edb"
-PRIVATE_PATH = "var/lib/portage"
+VDB_PATH = EPREFIX_LSTRIP + "/" + "var/db/pkg"
+CACHE_PATH = EPREFIX_LSTRIP + "/" + "var/cache/edb"
+PRIVATE_PATH = EPREFIX_LSTRIP + "/" + "var/lib/portage"
WORLD_FILE = PRIVATE_PATH + "/world"
WORLD_SETS_FILE = PRIVATE_PATH + "/world_sets"
CONFIG_MEMORY_FILE = PRIVATE_PATH + "/config"
LOCALE_DATA_PATH = PORTAGE_BASE_PATH + "/locale" # FIXME: not used
EBUILD_SH_BINARY = PORTAGE_BIN_PATH + "/ebuild.sh"
MISC_SH_BINARY = PORTAGE_BIN_PATH + "/misc-functions.sh"
-SANDBOX_BINARY = "/usr/bin/sandbox"
-FAKEROOT_BINARY = "/usr/bin/fakeroot"
-BASH_BINARY = "/bin/bash"
-MOVE_BINARY = "/bin/mv"
+SANDBOX_BINARY = BPREFIX + "/usr/bin/sandbox"
+FAKEROOT_BINARY = BPREFIX + "/usr/bin/fakeroot"
+BASH_BINARY = PORTAGE_BASH
+MOVE_BINARY = PORTAGE_MV
- PRELINK_BINARY = EPREFIX + "/usr/sbin/prelink"
+ PRELINK_BINARY = "/usr/sbin/prelink"
- PORTAGE_GROUPNAME = os.environ.get("PORTAGE_GROUPNAME", portagegroup)
- PORTAGE_USERNAME = os.environ.get("PORTAGE_USERNAME", portageuser)
++PORTAGE_GROUPNAME = portagegroup
++PORTAGE_USERNAME = portageuser
+
INVALID_ENV_FILE = "/etc/spork/is/not/valid/profile.env"
REPO_NAME_FILE = "repo_name"
REPO_NAME_LOC = "profiles" + "/" + REPO_NAME_FILE
# Distributed under the terms of the GNU General Public License v2
import os, sys, pwd, grp, platform
- from portage.const import PORTAGE_GROUPNAME, PORTAGE_USERNAME ,rootuid, EPREFIX
++from portage.const import PORTAGE_GROUPNAME, PORTAGE_USERNAME, rootuid, EPREFIX
import portage
portage.proxy.lazyimport.lazyimport(globals(),
else:
userpriv_groups = [portage_gid]
if secpass >= 2:
- # Get a list of group IDs for the portage user. Do not use
- # grp.getgrall() since it is known to trigger spurious
- # SIGPIPE problems with nss_ldap.
- try:
- from subprocess import getstatusoutput
- except ImportError:
- from commands import getstatusoutput
- mystatus, myoutput = getstatusoutput("id -G %s" % PORTAGE_USERNAME)
- if mystatus == os.EX_OK:
- for x in myoutput.split():
- try:
- userpriv_groups.append(int(x))
- except ValueError:
- pass
- del x
- userpriv_groups = list(set(userpriv_groups))
- del getstatusoutput, mystatus, myoutput
+ class _LazyUserprivGroups(portage.proxy.objectproxy.ObjectProxy):
+ def _get_target(self):
+ global userpriv_groups
+ if userpriv_groups is not self:
+ return userpriv_groups
+ userpriv_groups = _userpriv_groups
+ # Get a list of group IDs for the portage user. Do not use
+ # 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_USERNAME)
+ if mystatus == os.EX_OK:
+ for x in myoutput.split():
+ try:
+ userpriv_groups.append(int(x))
+ except ValueError:
+ pass
+ userpriv_groups[:] = sorted(set(userpriv_groups))
+ return userpriv_groups
+
+ _userpriv_groups = userpriv_groups
+ userpriv_groups = _LazyUserprivGroups()