aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfuzzyray <fuzzyray@gentoo.org>2010-03-12 21:44:29 +0000
committerfuzzyray <fuzzyray@gentoo.org>2010-03-12 21:44:29 +0000
commit1ddc073811b7b69aab22cd65990bbca8e7104bef (patch)
tree5ca2ef92478538f44b6abc9a96a8110b559fa867 /pym/gentoolkit/eclean/pkgindex.py
parentRemove stray analyse script (diff)
downloadgentoolkit-1ddc073811b7b69aab22cd65990bbca8e7104bef.tar.gz
gentoolkit-1ddc073811b7b69aab22cd65990bbca8e7104bef.tar.bz2
gentoolkit-1ddc073811b7b69aab22cd65990bbca8e7104bef.zip
Update to genscripts rev 382. This has more fixes for py3k and the modular rewrite of eclean.
svn path=/trunk/gentoolkit/; revision=755
Diffstat (limited to 'pym/gentoolkit/eclean/pkgindex.py')
-rw-r--r--pym/gentoolkit/eclean/pkgindex.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/pym/gentoolkit/eclean/pkgindex.py b/pym/gentoolkit/eclean/pkgindex.py
new file mode 100644
index 0000000..f9d9f3c
--- /dev/null
+++ b/pym/gentoolkit/eclean/pkgindex.py
@@ -0,0 +1,89 @@
+#!/usr/bin/python
+
+# Copyright 2003-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+from __future__ import print_function
+
+
+import subprocess
+import sys
+
+import gentoolkit.pprinter as pp
+
+import portage
+from portage import os
+
+
+class PkgIndex(object):
+ """Handle the cleaning of the binpkg Package
+ Index file
+
+ @type output: class
+ @param output: optional output class for printing
+ """
+
+ def __init__(self, controller=None):
+ self.controller = controller
+
+
+ def _get_emaint_binhost(self):
+ """Obtain a reference to the binhost module class
+
+ @sets: self.binhost to BinhostHandler class
+ @rtype: boolean
+ """
+ try:
+ self.emaint_control = Modules()
+ self.binhost = self.emaint_control._get_class('binhost')
+ except InvalidModuleName as er:
+ print( pp.error("Error importing emaint binhost module"), file=sys.stderr)
+ print( pp.error("Original error: " + er), file=sys.stderr)
+ except:
+ return False
+ return True
+
+
+ def _load_modules(self):
+ """Import the emaint modules and report the success/fail of them
+ """
+ try:
+ from emaint.module import Modules
+ from emaint.main import TaskHandler
+ except ImportError as e:
+ return False
+ return True
+
+
+ def clean_pkgs_index(self,):
+ """This will clean the binpkgs packages index file"""
+ go = self._load_modules()
+ if go:
+ if self.get_emaint_binhost():
+ self.taskmaster = TaskHandler(show_progress_bar=True)
+ tasks = [self.binhost]
+ self.taskmaster.run_tasks(tasks)
+
+
+ def call_emaint(self):
+ """Run the stand alone emaint script from
+ a subprocess call.
+
+ @rtype: integer
+ @return: the difference in file size
+ """
+ file_ = os.path.join(portage.settings['PKGDIR'], 'Packages')
+ statinfo = os.stat(file_)
+ size1 = statinfo.st_size
+ command = "emaint --fix binhost"
+ try:
+ retcode = subprocess.call(command, shell=True)
+ if retcode < 0:
+ print( pp.error("Child was terminated by signal" + str(-retcode)), file=sys.stderr)
+ except OSError as e:
+ print( pp.error("Execution failed:" + e), file=sys.stderr)
+ print()
+ statinfo = os.stat(file_)
+ clean_size = size1 - statinfo.st_size
+ self.controller(clean_size, "Packages Index", file_, "Index")
+ return clean_size