diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-06-22 20:02:48 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-06-22 20:02:48 +0000 |
commit | 4827f2de62ec604fbf3a6dafbcfbe2c180481efe (patch) | |
tree | 918bbd1b90db48effaa3ccd0790e224b66da01a8 /pym/_emerge/PackageUninstall.py | |
parent | bf9282b6782ad433b2ca905a5131bd0c424a2d94 (diff) | |
download | portage-4827f2de62ec604fbf3a6dafbcfbe2c180481efe.tar.gz portage-4827f2de62ec604fbf3a6dafbcfbe2c180481efe.tar.bz2 portage-4827f2de62ec604fbf3a6dafbcfbe2c180481efe.zip |
Bug #275047 - Split _emerge/__init__.py into smaller pieces (part 4).
Thanks to Sebastian Mingramm (few) <s.mingramm@gmx.de> for this patch.
svn path=/main/trunk/; revision=13669
Diffstat (limited to 'pym/_emerge/PackageUninstall.py')
-rw-r--r-- | pym/_emerge/PackageUninstall.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/pym/_emerge/PackageUninstall.py b/pym/_emerge/PackageUninstall.py new file mode 100644 index 000000000..148dba0e7 --- /dev/null +++ b/pym/_emerge/PackageUninstall.py @@ -0,0 +1,51 @@ +import logging +import os + +try: + import portage +except ImportError: + from os import path as osp + import sys + sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym")) + import portage + +from _emerge.AsynchronousTask import AsynchronousTask +from _emerge.unmerge import unmerge +from _emerge.UninstallFailure import UninstallFailure + +class PackageUninstall(AsynchronousTask): + + __slots__ = ("ldpath_mtimes", "opts", "pkg", "scheduler", "settings") + + def _start(self): + try: + unmerge(self.pkg.root_config, self.opts, "unmerge", + [self.pkg.cpv], self.ldpath_mtimes, clean_world=0, + clean_delay=0, raise_on_error=1, scheduler=self.scheduler, + writemsg_level=self._writemsg_level) + except UninstallFailure, e: + self.returncode = e.status + else: + self.returncode = os.EX_OK + self.wait() + + def _writemsg_level(self, msg, level=0, noiselevel=0): + + log_path = self.settings.get("PORTAGE_LOG_FILE") + background = self.background + + if log_path is None: + if not (background and level < logging.WARNING): + portage.util.writemsg_level(msg, + level=level, noiselevel=noiselevel) + else: + if not background: + portage.util.writemsg_level(msg, + level=level, noiselevel=noiselevel) + + f = open(log_path, 'a') + try: + f.write(msg) + finally: + f.close() + |