From: Fabian Groffen Date: Wed, 15 Aug 2007 16:58:26 +0000 (-0000) Subject: Merged from trunk 7601:7609 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=b5329dd0fc2af23dcc8441e3ee98a08a7ed1152f;p=portage.git Merged from trunk 7601:7609 | 7602 | Make sure to skip info dir files with the .old extension. | | zmedico | | | 7604 | For bug #188782, dependencies on packages specified as | | zmedico | arguments are given higher priority since the currently | | | installed version has been rendered useless by ABI breakage. | | | It's okay to increase the priority here even if the caller | | | is not revdep-rebuild. | | 7606 | For bug #188449, since python floats have limited range, we | | zmedico | multiply both floating point representations by a constant | | | so that they are transformed into whole numbers. This allows | | | the practically infinite range of a python int to be | | | exploited. The multiplication is done by padding both | | | literal strings with zeros as necessary to ensure equal | | | length. | | 7609 | For bug #188807, add nocreate and delaycompress options for | | zmedico | logrotate. | svn path=/main/branches/prefix/; revision=7611 --- diff --git a/cnf/logrotate.d/elog-save-summary b/cnf/logrotate.d/elog-save-summary index 282956fc2..bdc4972e5 100644 --- a/cnf/logrotate.d/elog-save-summary +++ b/cnf/logrotate.d/elog-save-summary @@ -5,4 +5,6 @@ /var/log/portage/elog/summary.log { missingok + nocreate + delaycompress } diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py index 3c7e532c7..b0c1bbfb0 100644 --- a/pym/emerge/__init__.py +++ b/pym/emerge/__init__.py @@ -697,11 +697,11 @@ class DepPriority(object): SOFT The upper boundary for soft dependencies. MIN The lower boundary for soft dependencies. """ - __slots__ = ("__weakref__", "satisfied", "buildtime", "runtime", "runtime_post") + __slots__ = ("__weakref__", "satisfied", "buildtime", "runtime", "runtime_post", "rebuild") MEDIUM = -1 MEDIUM_SOFT = -2 SOFT = -3 - MIN = -5 + MIN = -6 def __init__(self, **kwargs): for myattr in self.__slots__: if myattr == "__weakref__": @@ -716,13 +716,15 @@ class DepPriority(object): return -1 if self.runtime_post: return -2 - if self.buildtime: + if self.rebuild: return -3 - if self.runtime: + if self.buildtime: return -4 - if self.runtime_post: + if self.runtime: return -5 - return -5 + if self.runtime_post: + return -6 + return -6 def __lt__(self, other): return self.__int__() < other def __le__(self, other): @@ -1163,24 +1165,7 @@ class depgraph(object): #"no downgrade" emerge """ mytype, myroot, mykey = mybigkey - existing_node = None - if addme: - existing_node = self.pkg_node_map[myroot].get(mykey) - if existing_node: - self._parent_child_digraph.add(existing_node, myparent) - if existing_node != myparent: - # Refuse to make a node depend on itself so that the we don't - # don't create a bogus circular dependency in self.altlist(). - if rev_dep and myparent: - self.digraph.addnode(myparent, existing_node, - priority=priority) - else: - self.digraph.addnode(existing_node, myparent, - priority=priority) - return 1 - - if "--nodeps" not in self.myopts: - self.spinner.update() + if mytype == "blocks": if myparent and \ "--buildpkgonly" not in self.myopts and \ @@ -1222,6 +1207,36 @@ class depgraph(object): return 0 del e + # normal arg, not system or world + if arg and len(self._sets) == 1 and \ + "selective" not in self.myparams: + # For revdep-rebuild, dependencies on packages specified as + # arguments are given higher priority since the currently + # installed version has been rendered useless by ABI breakage. + # It's okay to increase the priority here even if the caller + # is not revdep-rebuild. + if priority.satisfied: + priority.rebuild = True + + existing_node = None + if addme: + existing_node = self.pkg_node_map[myroot].get(mykey) + if existing_node: + self._parent_child_digraph.add(existing_node, myparent) + if existing_node != myparent: + # Refuse to make a node depend on itself so that the we don't + # don't create a bogus circular dependency in self.altlist(). + if rev_dep and myparent: + self.digraph.addnode(myparent, existing_node, + priority=priority) + else: + self.digraph.addnode(existing_node, myparent, + priority=priority) + return 1 + + if "--nodeps" not in self.myopts: + self.spinner.update() + reinstall_for_flags = None merging=1 if mytype == "installed": @@ -4253,7 +4268,8 @@ def chk_updated_info_files(root, infodirs, prev_mtimes, retval): if x.startswith("dir"): skip = False for ext in dir_extensions: - if x == "dir" + ext: + if x == "dir" + ext or \ + x == "dir" + ext + ".old": skip = True break if skip: diff --git a/pym/portage/versions.py b/pym/portage/versions.py index 9b0608430..49804311f 100644 --- a/pym/portage/versions.py +++ b/pym/portage/versions.py @@ -99,8 +99,17 @@ def vercmp(ver1, ver2, silent=1): list2.append(int(vlist2[i])) # now we have to use floats so 1.02 compares correctly against 1.1 else: - list1.append(float("0."+vlist1[i])) - list2.append(float("0."+vlist2[i])) + # list1.append(float("0."+vlist1[i])) + # list2.append(float("0."+vlist2[i])) + # Since python floats have limited range, we multiply both + # floating point representations by a constant so that they are + # transformed into whole numbers. This allows the practically + # infinite range of a python int to be exploited. The + # multiplication is done by padding both literal strings with + # zeros as necessary to ensure equal length. + max_len = max(len(vlist1[i]), len(vlist2[i])) + list1.append(int(vlist1[i].ljust(max_len, "0"))) + list2.append(int(vlist2[i].ljust(max_len, "0"))) # and now the final letter if len(match1.group(5)):