diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-08-31 11:45:28 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-08-31 11:45:28 -0700 |
commit | 75dab994c4a3e7c38ea29cc633706c435991da05 (patch) | |
tree | ed60a2e5ef4ffa3f93f4cb82104b1ee93923bf95 | |
parent | cd08c946dce4f9f5466597e92ce9df3b0ff197bd (diff) | |
download | portage-75dab994c4a3e7c38ea29cc633706c435991da05.tar.gz portage-75dab994c4a3e7c38ea29cc633706c435991da05.tar.bz2 portage-75dab994c4a3e7c38ea29cc633706c435991da05.zip |
When portage updates itself and the new version either inherits
git.eclass or has 9999 in its version, trigger the 'use copy of current
sources for install, then restart portage' routine. This is required
since with the live git portage-9999 ebuild we can't use the version
to detect incompatible changes to ebuild.sh. This issue was noticed
due to recent versions of ebuild.sh expecting PORTAGE_BZIP2_COMMAND to
be set, causing incompatibility with installed portage-9999 instances.
-rw-r--r-- | pym/_emerge/Scheduler.py | 9 | ||||
-rw-r--r-- | pym/_emerge/depgraph.py | 4 | ||||
-rw-r--r-- | pym/portage/dbapi/vartree.py | 4 |
3 files changed, 12 insertions, 5 deletions
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py index ee5b8a3d5..b78be89f9 100644 --- a/pym/_emerge/Scheduler.py +++ b/pym/_emerge/Scheduler.py @@ -828,9 +828,12 @@ class Scheduler(PollScheduler): if pkg.root == self._running_root.root and \ portage.match_from_list( portage.const.PORTAGE_PACKAGE_ATOM, [pkg]): - if self._running_portage: - return pkg.cpv != self._running_portage.cpv - return True + if self._running_portage is None: + return True + elif pkg.cpv != self._running_portage.cpv or \ + '9999' in pkg.cpv or \ + 'git' in pkg.inherited: + return True return False def _restart_if_necessary(self, pkg): diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 25429601e..3be0a196b 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -4897,8 +4897,10 @@ class depgraph(object): pkg.root == self._frozen_config._running_root.root and \ portage.match_from_list( portage.const.PORTAGE_PACKAGE_ATOM, [pkg]) and \ - not vardb.cpv_exists(pkg.cpv) and \ "--quiet" not in self._frozen_config.myopts: + if not vardb.cpv_exists(pkg.cpv) or \ + '9999' in pkg.cpv or \ + 'git' in pkg.inherited: if mylist_index < len(mylist) - 1: p.append(colorize("WARN", "*** Portage will stop merging at this point and reload itself,")) p.append(colorize("WARN", " then resume the merge.")) diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 9c4355143..52f8d833c 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -3768,7 +3768,9 @@ class dblink(object): self.vartree.dbapi._categories = None if self.myroot == "/" and \ match_from_list(PORTAGE_PACKAGE_ATOM, [self.mycpv]) and \ - not self.vartree.dbapi.cpv_exists(self.mycpv): + (not self.vartree.dbapi.cpv_exists(self.mycpv) or \ + '9999' in self.mycpv or \ + 'git' in self.settings.get('INHERITED', '').split()): # Load lazily referenced portage submodules into memory, # so imports won't fail during portage upgrade/downgrade. portage.proxy.lazyimport._preload_portage_submodules() |