From: Fabian Groffen Date: Thu, 26 Mar 2009 20:35:11 +0000 (-0000) Subject: Merged from trunk -r13133:13139 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=b1e4f025f9691cf120a992cedff5dfe320f2f598;p=portage.git Merged from trunk -r13133:13139 | 13134 | Make config.features a set instead of a list. | | zmedico | | | 13135 | Add docstrings for the fd_pipes and returnpid parameters of | | zmedico | doebuild(). | | 13136 | Make sure mysettings.setcpv() always gets called when | | zmedico | necessary inside doebuild_environment(). | | 13137 | Fix try/except indentation so that 2to3 will recognize it. | | zmedico | | | 13138 | Fix try/except indentation so that 2to3 will recognize it. | | zmedico | | | 13139 | Normalize try/except indentation for compatibility with | | zmedico | 2to3. | svn path=/main/branches/prefix/; revision=13190 --- diff --git a/bin/ebuild b/bin/ebuild index ca639e475..2b47de7ff 100755 --- a/bin/ebuild +++ b/bin/ebuild @@ -189,9 +189,8 @@ if "test" in pargs: tmpsettings["EBUILD_FORCE_TEST"] = "1" tmpsettings.backup_changes("EBUILD_FORCE_TEST") if "test" not in tmpsettings.features: - tmpsettings.features.append("test") - tmpsettings.features.sort() - tmpsettings["FEATURES"] = " ".join(tmpsettings.features) + tmpsettings.features.add("test") + tmpsettings["FEATURES"] = " ".join(sorted(tmpsettings.features)) tmpsettings.backup_changes("FEATURES") if opts.skip_manifest: diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 314cec8c7..04da57442 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -13305,8 +13305,10 @@ def action_metadata(settings, portdb, myopts): self.call_update_mine = 0 def update(self, *arg): - try: self.pstr = int(self.pstr) + 1 - except ValueError: self.pstr = 1 + try: + self.pstr = int(self.pstr) + 1 + except ValueError: + self.pstr = 1 sys.stdout.write("%s%i%%" % \ ("\b" * (len(str(self.pstr))+1), self.pstr)) sys.stdout.flush() diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index bee5d3554..a4f0c39dd 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -1799,8 +1799,7 @@ class config(object): if "usersandbox" in self.features: self.features.remove("usersandbox") - self.features.sort() - self["FEATURES"] = " ".join(self.features) + self["FEATURES"] = " ".join(sorted(self.features)) self.backup_changes("FEATURES") # inject EPREFIX as it's in no single config file (I hope), @@ -2822,8 +2821,8 @@ class config(object): myflags.add(var_lower + "_" + x) if not hasattr(self, "features"): - self.features = sorted(set( - self.configlist[-1].get("FEATURES","").split())) + self.features = set( + self.configlist[-1].get("FEATURES","").split()) self["FEATURES"] = " ".join(self.features) myflags.update(self.useforce) @@ -5090,14 +5089,16 @@ def doebuild_environment(myebuild, mydo, myroot, mysettings, debug, use_cache, m # so that the caller can override it. tmpdir = mysettings["PORTAGE_TMPDIR"] - if mydo != "depend" and mycpv != mysettings.mycpv: - """For performance reasons, setcpv only triggers reset when it - detects a package-specific change in config. For the ebuild - environment, a reset call is forced in order to ensure that the - latest env.d variables are used.""" + if mycpv != mysettings.mycpv: + # Reload env.d variables and reset any previous settings. mysettings.reload() - mysettings.reset(use_cache=use_cache) - mysettings.setcpv(mycpv, use_cache=use_cache, mydb=mydbapi) + mysettings.reset() + if mydo == 'depend': + # Don't pass in mydbapi here since the resulting aux_get + # call would lead to infinite 'depend' phase recursion. + mysettings.setcpv(mycpv) + else: + mysettings.setcpv(mycpv, mydb=mydbapi) # config.reset() might have reverted a change made by the caller, # so restore it to it's original value. @@ -5570,6 +5571,13 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0, @type vartree: vartree instance @param prev_mtimes: A dict of { filename:mtime } keys used by merge() to do config_protection @type prev_mtimes: dictionary + @param fd_pipes: A dict of mapping for pipes, { '0': stdin, '1': stdout } + for example. + @type fd_pipes: Dictionary + @param returnpid: Return a list of process IDs for a successful spawn, or + in integer value if spawn is unsuccessful. NOTE: This requires the + caller clean up all returned PIDs. + @type returnpid: Boolean @rtype: Boolean @returns: 1. 0 for success @@ -6212,7 +6220,7 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0, return 1 # qmerge is a special phase that implies noclean. if "noclean" not in mysettings.features: - mysettings.features.append("noclean") + mysettings.features.add("noclean") #qmerge is specifically not supposed to do a runtime dep check retval = merge( mysettings["CATEGORY"], mysettings["PF"], mysettings["D"], diff --git a/pym/portage/cache/flat_list.py b/pym/portage/cache/flat_list.py index 413d4d33d..8734e79b0 100644 --- a/pym/portage/cache/flat_list.py +++ b/pym/portage/cache/flat_list.py @@ -47,7 +47,8 @@ class database(fs_template.FsBased): def _setitem(self, cpv, values): s = cpv.rfind("/") fp=os.path.join(self._base,cpv[:s],".update.%i.%s" % (os.getpid(), cpv[s+1:])) - try: myf=open(fp, "w") + try: + myf = open(fp, "w") except (OSError, IOError), e: if errno.ENOENT == e.errno: try: @@ -66,7 +67,8 @@ class database(fs_template.FsBased): self._ensure_access(fp, mtime=values["_mtime_"]) #update written. now we move it. new_fp = os.path.join(self._base,cpv) - try: os.rename(fp, new_fp) + try: + os.rename(fp, new_fp) except (OSError, IOError), e: os.remove(fp) raise cache_errors.CacheCorruption(cpv, e) diff --git a/pym/portage/cache/sql_template.py b/pym/portage/cache/sql_template.py index 47bef9124..a002d6c06 100644 --- a/pym/portage/cache/sql_template.py +++ b/pym/portage/cache/sql_template.py @@ -72,7 +72,8 @@ class SQLDatabase(template.database): if self.readonly: raise cache_errors.ReadOnlyRestriction("table %s doesn't exist" % \ self.SCHEMA_PACKAGE_NAME) - try: self.con.execute(self.SCHEMA_PACKAGE_CREATE) + try: + self.con.execute(self.SCHEMA_PACKAGE_CREATE) except self._BaseError, e: raise cache_errors.InitializationError(self.__class__, e) @@ -80,7 +81,8 @@ class SQLDatabase(template.database): if self.readonly: raise cache_errors.ReadOnlyRestriction("table %s doesn't exist" % \ self.SCHEMA_VALUES_NAME) - try: self.con.execute(self.SCHEMA_VALUES_CREATE) + try: + self.con.execute(self.SCHEMA_VALUES_CREATE) except self._BaseError, e: raise cache_errors.InitializationError(self.__class__, e) @@ -97,7 +99,8 @@ class SQLDatabase(template.database): def _getitem(self, cpv): - try: self.con.execute("SELECT key, value FROM %s NATURAL JOIN %s " + try: + self.con.execute("SELECT key, value FROM %s NATURAL JOIN %s " "WHERE label=%s AND cpv=%s" % (self.SCHEMA_PACKAGE_NAME, self.SCHEMA_VALUES_NAME, self.label, self._sfilter(cpv))) except self._BaseError, e: @@ -143,7 +146,8 @@ class SQLDatabase(template.database): try: # insert. - try: pkgid = self._insert_cpv(cpv) + try: + pkgid = self._insert_cpv(cpv) except self._BaseError, e: raise cache_errors.CacheCorruption(cpv, e) @@ -155,7 +159,8 @@ class SQLDatabase(template.database): db_values.append({"key":key, "value":values[key]}) if len(db_values) > 0: - try: self.con.executemany("INSERT INTO %s (pkgid, key, value) VALUES(\"%s\", %%(key)s, %%(value)s)" % \ + try: + self.con.executemany("INSERT INTO %s (pkgid, key, value) VALUES(\"%s\", %%(key)s, %%(value)s)" % \ (self.SCHEMA_VALUES_NAME, str(pkgid)), db_values) except self._BaseError, e: raise cache_errors.CacheCorruption(cpv, e) @@ -164,8 +169,10 @@ class SQLDatabase(template.database): except Exception: if not self.autocommits: - try: self.db.rollback() - except self._BaseError: pass + try: + self.db.rollback() + except self._BaseError: + pass raise @@ -180,8 +187,10 @@ class SQLDatabase(template.database): query_str = self.SCHEMA_INSERT_CPV_INTO_PACKAGE.replace("INSERT","REPLACE",1) else: # just delete it. - try: del self[cpv] - except (cache_errors.CacheCorruption, KeyError): pass + try: + del self[cpv] + except (cache_errors.CacheCorruption, KeyError): + pass query_str = self.SCHEMA_INSERT_CPV_INTO_PACKAGE try: self.con.execute(query_str % (self.label, cpv)) @@ -199,11 +208,13 @@ class SQLDatabase(template.database): def __contains__(self, cpv): if not self.autocommits: - try: self.commit() + try: + self.commit() except self._BaseError, e: raise cache_errors.GeneralCacheCorruption(e) - try: self.con.execute("SELECT cpv FROM %s WHERE label=%s AND cpv=%s" % \ + try: + self.con.execute("SELECT cpv FROM %s WHERE label=%s AND cpv=%s" % \ (self.SCHEMA_PACKAGE_NAME, self.label, self._sfilter(cpv))) except self._BaseError, e: raise cache_errors.GeneralCacheCorruption(e) @@ -212,11 +223,13 @@ class SQLDatabase(template.database): def __iter__(self): if not self.autocommits: - try: self.commit() + try: + self.commit() except self._BaseError, e: raise cache_errors.GeneralCacheCorruption(e) - try: self.con.execute("SELECT cpv FROM %s WHERE label=%s" % + try: + self.con.execute("SELECT cpv FROM %s WHERE label=%s" % (self.SCHEMA_PACKAGE_NAME, self.label)) except self._BaseError, e: raise cache_errors.GeneralCacheCorruption(e) @@ -225,7 +238,8 @@ class SQLDatabase(template.database): yield x[0] def iteritems(self): - try: self.con.execute("SELECT cpv, key, value FROM %s NATURAL JOIN %s " + try: + self.con.execute("SELECT cpv, key, value FROM %s NATURAL JOIN %s " "WHERE label=%s" % (self.SCHEMA_PACKAGE_NAME, self.SCHEMA_VALUES_NAME, self.label)) except self._BaseError, e: @@ -271,7 +285,8 @@ class SQLDatabase(template.database): query = '' print "query = SELECT cpv from package_cache natural join values_cache WHERE label=%s %s" % (self.label, query) - try: self.con.execute("SELECT cpv from package_cache natural join values_cache WHERE label=%s %s" % \ + try: + self.con.execute("SELECT cpv from package_cache natural join values_cache WHERE label=%s %s" % \ (self.label, query)) except self._BaseError, e: raise cache_errors.GeneralCacheCorruption(e) diff --git a/pym/portage/cache/util.py b/pym/portage/cache/util.py index e152f5081..9fcd4b49b 100644 --- a/pym/portage/cache/util.py +++ b/pym/portage/cache/util.py @@ -29,7 +29,8 @@ def mirror_cache(valid_nodes_iterable, src_cache, trg_cache, eclass_cache=None, # print "processing x=",x count+=1 dead_nodes.discard(x) - try: entry = src_cache[x] + try: + entry = src_cache[x] except KeyError, e: noise.missing_entry(x) del e @@ -111,7 +112,8 @@ def mirror_cache(valid_nodes_iterable, src_cache, trg_cache, eclass_cache=None, # by this time, if it reaches here, the eclass has been validated, and the entry has # been updated/translated (if needs be, for metadata/cache mainly) - try: trg_cache[x] = entry + try: + trg_cache[x] = entry except cache_errors.CacheError, ce: noise.exception(x, ce) del ce diff --git a/pym/portage/versions.py b/pym/portage/versions.py index 4b27a213a..a26e550d3 100644 --- a/pym/portage/versions.py +++ b/pym/portage/versions.py @@ -147,10 +147,14 @@ def vercmp(ver1, ver2, silent=1): if s1[1] != s2[1]: # it's possible that the s(1|2)[1] == '' # in such a case, fudge it. - try: r1 = int(s1[1]) - except ValueError: r1 = 0 - try: r2 = int(s2[1]) - except ValueError: r2 = 0 + try: + r1 = int(s1[1]) + except ValueError: + r1 = 0 + try: + r2 = int(s2[1]) + except ValueError: + r2 = 0 if r1 - r2: return r1 - r2