OLD | NEW |
1 # Copyright 1999-2011 Gentoo Foundation | 1 # Copyright 1999-2011 Gentoo Foundation |
2 # Distributed under the terms of the GNU General Public License v2 | 2 # Distributed under the terms of the GNU General Public License v2 |
3 | 3 |
4 from _emerge.EbuildPhase import EbuildPhase | 4 from _emerge.EbuildPhase import EbuildPhase |
5 from _emerge.BinpkgFetcher import BinpkgFetcher | 5 from _emerge.BinpkgFetcher import BinpkgFetcher |
6 from _emerge.BinpkgEnvExtractor import BinpkgEnvExtractor | 6 from _emerge.BinpkgEnvExtractor import BinpkgEnvExtractor |
7 from _emerge.BinpkgExtractorAsync import BinpkgExtractorAsync | 7 from _emerge.BinpkgExtractorAsync import BinpkgExtractorAsync |
8 from _emerge.CompositeTask import CompositeTask | 8 from _emerge.CompositeTask import CompositeTask |
9 from _emerge.BinpkgVerifier import BinpkgVerifier | 9 from _emerge.BinpkgVerifier import BinpkgVerifier |
10 from _emerge.EbuildMerge import EbuildMerge | 10 from _emerge.EbuildMerge import EbuildMerge |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 self._writemsg_level("!!! Error Extracting '%s'\n" % \ | 300 self._writemsg_level("!!! Error Extracting '%s'\n" % \ |
301 self._pkg_path, noiselevel=-1, level=logging.ERR
OR) | 301 self._pkg_path, noiselevel=-1, level=logging.ERR
OR) |
302 self.wait() | 302 self.wait() |
303 | 303 |
304 def _unlock_builddir(self): | 304 def _unlock_builddir(self): |
305 if self.opts.pretend or self.opts.fetchonly: | 305 if self.opts.pretend or self.opts.fetchonly: |
306 return | 306 return |
307 portage.elog.elog_process(self.pkg.cpv, self.settings) | 307 portage.elog.elog_process(self.pkg.cpv, self.settings) |
308 self._build_dir.unlock() | 308 self._build_dir.unlock() |
309 | 309 |
310 » def install(self): | 310 » def install(self, handler): |
311 | 311 |
312 # This gives bashrc users an opportunity to do various things | 312 # This gives bashrc users an opportunity to do various things |
313 # such as remove binary packages after they're installed. | 313 # such as remove binary packages after they're installed. |
314 settings = self.settings | 314 settings = self.settings |
315 settings["PORTAGE_BINPKG_FILE"] = self._pkg_path | 315 settings["PORTAGE_BINPKG_FILE"] = self._pkg_path |
316 settings.backup_changes("PORTAGE_BINPKG_FILE") | 316 settings.backup_changes("PORTAGE_BINPKG_FILE") |
317 | 317 |
318 merge = EbuildMerge(find_blockers=self.find_blockers, | 318 merge = EbuildMerge(find_blockers=self.find_blockers, |
319 ldpath_mtimes=self.ldpath_mtimes, logger=self.logger, | 319 ldpath_mtimes=self.ldpath_mtimes, logger=self.logger, |
320 pkg=self.pkg, pkg_count=self.pkg_count, | 320 pkg=self.pkg, pkg_count=self.pkg_count, |
321 pkg_path=self._pkg_path, scheduler=self.scheduler, | 321 pkg_path=self._pkg_path, scheduler=self.scheduler, |
322 settings=settings, tree=self._tree, world_atom=self.worl
d_atom) | 322 settings=settings, tree=self._tree, world_atom=self.worl
d_atom) |
| 323 task = merge.create_task() |
| 324 task.addExitListener(self._install_exit) |
| 325 self._start_task(task, handler) |
323 | 326 |
324 » » try: | 327 » def _install_exit(self, task): |
325 » » » retval = merge.execute() | 328 » » self.settings.pop("PORTAGE_BINPKG_FILE", None) |
326 » » finally: | 329 » » self._unlock_builddir() |
327 » » » settings.pop("PORTAGE_BINPKG_FILE", None) | |
328 » » » self._unlock_builddir() | |
329 | 330 |
330 » » if retval == os.EX_OK and \ | 331 » » if self._default_final_exit(task) != os.EX_OK: |
331 » » » 'binpkg-logs' not in self.settings.features and \ | 332 » » » return |
| 333 |
| 334 » » if 'binpkg-logs' not in self.settings.features and \ |
332 self.settings.get("PORTAGE_LOG_FILE"): | 335 self.settings.get("PORTAGE_LOG_FILE"): |
333 try: | 336 try: |
334 os.unlink(self.settings["PORTAGE_LOG_FILE"]) | 337 os.unlink(self.settings["PORTAGE_LOG_FILE"]) |
335 except OSError: | 338 except OSError: |
336 pass | 339 pass |
337 return retval | |
338 | |
OLD | NEW |