diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-10-12 23:17:56 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-10-12 23:17:56 +0000 |
commit | b31b012a6804e1aa809c47af83fc1d82b6e4852d (patch) | |
tree | 8ae5a2fe17249a86c6fc05e0226ae1b7bdbd7120 /pym/_emerge | |
parent | 3308efd69be3bcbfde53f65def1a0575ed498449 (diff) | |
download | portage-b31b012a6804e1aa809c47af83fc1d82b6e4852d.tar.gz portage-b31b012a6804e1aa809c47af83fc1d82b6e4852d.tar.bz2 portage-b31b012a6804e1aa809c47af83fc1d82b6e4852d.zip |
Bug #241118 - Re-enable pkg_nofetch for emerge --pretend --fetch, but direct
output to stderr. This requires PORTAGE_BUILDDIR locking for bug #239560 and
also for elog message storage.
svn path=/main/trunk/; revision=11685
Diffstat (limited to 'pym/_emerge')
-rw-r--r-- | pym/_emerge/__init__.py | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index adcd71509..49e94dbea 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -1588,6 +1588,13 @@ class EbuildFetchPretend(SlotObject): __slots__ = ("fetch_all", "pkg", "settings") def execute(self): + # To spawn pkg_nofetch requires PORTAGE_BUILDDIR for + # ensuring sane $PWD (bug #239560) and storing elog + # messages. + build_dir = EbuildBuildDir(pkg=self.pkg, settings=self.settings) + build_dir.lock() + build_dir.clean() + portage.prepare_build_dirs(self.pkg.root, self.settings, 0) portdb = self.pkg.root_config.trees["porttree"].dbapi ebuild_path = portdb.findname(self.pkg.cpv) debug = self.settings.get("PORTAGE_DEBUG") == "1" @@ -1596,6 +1603,10 @@ class EbuildFetchPretend(SlotObject): self.settings["ROOT"], self.settings, debug=debug, listonly=1, fetchonly=1, fetchall=self.fetch_all, mydbapi=portdb, tree="porttree") + + portage.elog.elog_process(self.pkg.cpv, self.settings) + build_dir.clean() + build_dir.unlock() return retval class AsynchronousTask(SlotObject): @@ -2248,7 +2259,7 @@ class EbuildFetcher(SpawnProcess): settings = self.config_pool.allocate() self._build_dir = EbuildBuildDir(pkg=self.pkg, settings=settings) self._build_dir.lock() - self._clean_builddir() + self._build_dir.clean() portage.prepare_build_dirs(self.pkg.root, self._build_dir.settings, 0) if self.logfile is None: self.logfile = settings.get("PORTAGE_LOG_FILE") @@ -2291,18 +2302,6 @@ class EbuildFetcher(SpawnProcess): portage._create_pty_or_pipe(copy_term_size=stdout_pipe) return (master_fd, slave_fd) - def _clean_builddir(self): - """Uses shutil.rmtree() rather than spawning a 'clean' phase. Disabled - by keepwork or keeptemp in FEATURES.""" - features = self._build_dir.settings.features - if not ("keepwork" in features or "keeptemp" in features): - try: - shutil.rmtree(self._build_dir.settings["PORTAGE_BUILDDIR"]) - except EnvironmentError, e: - if e.errno != errno.ENOENT: - raise - del e - def _set_returncode(self, wait_retval): SpawnProcess._set_returncode(self, wait_retval) # Collect elog messages that might have been @@ -2322,7 +2321,7 @@ class EbuildFetcher(SpawnProcess): portage.elog.elog_process(self.pkg.cpv, self._build_dir.settings) features = self._build_dir.settings.features if self.fetchonly or self.returncode == os.EX_OK: - self._clean_builddir() + self._build_dir.clean() self._build_dir.unlock() self.config_pool.deallocate(self._build_dir.settings) self._build_dir = None @@ -2377,6 +2376,19 @@ class EbuildBuildDir(SlotObject): if catdir_lock is not None: portage.locks.unlockdir(catdir_lock) + def clean(self): + """Uses shutil.rmtree() rather than spawning a 'clean' phase. Disabled + by keepwork or keeptemp in FEATURES.""" + settings = self.settings + features = settings.features + if not ("keepwork" in features or "keeptemp" in features): + try: + shutil.rmtree(settings["PORTAGE_BUILDDIR"]) + except EnvironmentError, e: + if e.errno != errno.ENOENT: + raise + del e + def unlock(self): if self._lock_obj is None: return |