summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/PackageUninstall.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-06-22 20:02:48 +0000
committerZac Medico <zmedico@gentoo.org>2009-06-22 20:02:48 +0000
commit4827f2de62ec604fbf3a6dafbcfbe2c180481efe (patch)
tree918bbd1b90db48effaa3ccd0790e224b66da01a8 /pym/_emerge/PackageUninstall.py
parentbf9282b6782ad433b2ca905a5131bd0c424a2d94 (diff)
downloadportage-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.py51
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()
+