From: Fabian Groffen Date: Mon, 26 Jul 2010 15:22:24 +0000 (+0200) Subject: Merge remote branch 'overlays-gentoo-org/master' into prefix X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=5f1ce62c0fbff9cf475ec5d13f26a3cd8bc04eac;p=portage.git Merge remote branch 'overlays-gentoo-org/master' into prefix Conflicts: bin/dispatch-conf --- 5f1ce62c0fbff9cf475ec5d13f26a3cd8bc04eac diff --cc bin/dispatch-conf index 63c898b87,fc9cdd513..54134c1c1 --- a/bin/dispatch-conf +++ b/bin/dispatch-conf @@@ -36,8 -30,8 +36,9 @@@ import portag from portage import os from portage import dispatch_conf from portage import _unicode_decode + from portage.dispatch_conf import diffstatusoutput_len from portage.process import find_binary +from portage.const import EPREFIX FIND_EXTANT_CONFIGS = "find '%s' %s -name '._cfg????_%s' ! -name '.*~' ! -iname '.*.bak' -print" DIFF_CONTENTS = "diff -Nu '%s' '%s'" @@@ -49,7 -43,7 +50,7 @@@ oldmask = os.umask(0o077 SCRATCH_DIR = None while SCRATCH_DIR is None: try: - mydir = EPREFIX+"/var/tmp/dispatch-conf." - mydir = "/tmp/dispatch-conf." ++ mydir = EPREFIX+"/tmp/dispatch-conf." for x in range(0,8): if int(random() * 3) == 0: mydir += chr(int(65+random()*26.0)) diff --cc pym/portage/dispatch_conf.py index 207eccc46,b4cded266..b511807a2 --- a/pym/portage/dispatch_conf.py +++ b/pym/portage/dispatch_conf.py @@@ -10,11 -10,11 +10,11 @@@ from __future__ import print_functio import os, sys, shutil try: - from subprocess import getoutput as subprocess_getoutput + from subprocess import getstatusoutput as subprocess_getstatusoutput except ImportError: - from commands import getoutput as subprocess_getoutput + from commands import getstatusoutput as subprocess_getstatusoutput -import portage +import portage, portage.const from portage.localization import _ RCS_BRANCH = '1.1.1' @@@ -25,12 -25,27 +25,27 @@@ RCS_MERGE = "rcsmerge -p -r" + RCS_BRAN DIFF3_MERGE = "diff3 -mE '%s' '%s' '%s' > '%s'" + def diffstatusoutput_len(cmd): + """ + Execute the string cmd in a shell with getstatusoutput() and return a + 2-tuple (status, output_length). If getstatusoutput() raises + UnicodeDecodeError (known to happen with python3.1), return a + 2-tuple (1, 1). This provides a simple way to check for non-zero + output length of diff commands, while providing simple handling of + UnicodeDecodeError when necessary. + """ + try: + status, output = subprocess_getstatusoutput(cmd) + return (status, len(output)) + except UnicodeDecodeError: + return (1, 1) + def read_config(mandatory_opts): loader = portage.env.loaders.KeyValuePairFileLoader( - '/etc/dispatch-conf.conf', None) + portage.const.EPREFIX+'/etc/dispatch-conf.conf', None) opts, errors = loader.load() if not opts: - print(_('dispatch-conf: Error reading /etc/dispatch-conf.conf; fatal'), file=sys.stderr) + print(_('dispatch-conf: Error reading %s/etc/dispatch-conf.conf; fatal') % (portage.const.EPREFIX,), file=sys.stderr) sys.exit(1) # Handle quote removal here, since KeyValuePairFileLoader doesn't do that. diff --cc pym/portage/package/ebuild/config.py index d0b37906b,a58cd0c3b..a2183f287 --- a/pym/portage/package/ebuild/config.py +++ b/pym/portage/package/ebuild/config.py @@@ -772,17 -764,18 +772,17 @@@ class config(object) self.backup_changes("PORTAGE_CONFIGROOT") self["ROOT"] = target_root self.backup_changes("ROOT") + self["EPREFIX"] = EPREFIX - # Prefix forward compatability, set EPREFIX to the empty string - self["EPREFIX"] = '' self.backup_changes("EPREFIX") - self["EROOT"] = target_root + self["EROOT"] = target_root + EPREFIX_LSTRIP + os.path.sep self.backup_changes("EROOT") - self.pusedict = {} - self.pkeywordsdict = {} - self._plicensedict = {} - self._ppropertiesdict = {} - self.punmaskdict = {} + self.pusedict = portage.dep.ExtendedAtomDict(dict) + self.pkeywordsdict = portage.dep.ExtendedAtomDict(dict) + self._plicensedict = portage.dep.ExtendedAtomDict(dict) + self._ppropertiesdict = portage.dep.ExtendedAtomDict(dict) + self.punmaskdict = portage.dep.ExtendedAtomDict(list) abs_user_config = os.path.join(config_root, USER_CONFIG_PATH) # locations for "categories" and "arch.list" files