From 1a48fe9fd061727b1a574e786f0ea40019f1fd99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eray=20=C3=96zkural?= Date: Fri, 26 May 2006 12:29:48 +0000 Subject: [PATCH] * fix: check lzma return value * fix: stderr wants PIPE to connect to process * remove psyclo support, might not be too useful for cli which is usually one shot --- pisi-cli | 6 - pisi.e3p | 459 +----------------------------------------------- pisi/archive.py | 11 +- pisi/util.py | 6 +- 4 files changed, 17 insertions(+), 465 deletions(-) diff --git a/pisi-cli b/pisi-cli index b65e4bc3..502fe0c3 100755 --- a/pisi-cli +++ b/pisi-cli @@ -70,12 +70,6 @@ Please file a bug report. (http://bugs.uludag.org.tr)""")) if __name__ == "__main__": - try: - import psyco - psyco.full() - except ImportError: - pass - sys.excepthook = handle_exception locale.setlocale(locale.LC_ALL, '') diff --git a/pisi.e3p b/pisi.e3p index c535e368..d88b2c8d 100644 --- a/pisi.e3p +++ b/pisi.e3p @@ -1,7 +1,7 @@ - + Python @@ -565,459 +565,6 @@ pccts actions.py - - build - lib - pisi - atomicoperations.py - - - build - lib - pisi - comariface.py - - - build - lib - pisi - specfile.py - - - build - lib - pisi - package.py - - - build - lib - pisi - dbshelve.py - - - build - lib - pisi - __init__.py - - - build - lib - pisi - build.py - - - build - lib - pisi - packagedb.py - - - build - lib - pisi - files.py - - - build - lib - pisi - environment.py - - - build - lib - pisi - config.py - - - build - lib - pisi - index.py - - - build - lib - pisi - api.py - - - build - lib - pisi - repodb.py - - - build - lib - pisi - ui.py - - - build - lib - pisi - util.py - - - build - lib - pisi - oo.py - - - build - lib - pisi - dependency.py - - - build - lib - pisi - metadata.py - - - build - lib - pisi - operations.py - - - build - lib - pisi - pgraph.py - - - build - lib - pisi - lockeddbshelve.py - - - build - lib - pisi - context.py - - - build - lib - pisi - itembyrepodb.py - - - build - lib - pisi - uri.py - - - build - lib - pisi - graph.py - - - build - lib - pisi - component.py - - - build - lib - pisi - sourcearchive.py - - - build - lib - pisi - configfile.py - - - build - lib - pisi - sourcedb.py - - - build - lib - pisi - installdb.py - - - build - lib - pisi - constants.py - - - build - lib - pisi - fetcher.py - - - build - lib - pisi - file.py - - - build - lib - pisi - archive.py - - - build - lib - pisi - version.py - - - build - lib - pisi - cli - pisicli.py - - - build - lib - pisi - cli - __init__.py - - - build - lib - pisi - cli - colors.py - - - build - lib - pisi - cli - commands.py - - - build - lib - pisi - actionsapi - shelltools.py - - - build - lib - pisi - actionsapi - variables.py - - - build - lib - pisi - actionsapi - autotools.py - - - build - lib - pisi - actionsapi - coreutils.py - - - build - lib - pisi - actionsapi - pythonmodules.py - - - build - lib - pisi - actionsapi - perlmodules.py - - - build - lib - pisi - actionsapi - __init__.py - - - build - lib - pisi - actionsapi - get.py - - - build - lib - pisi - actionsapi - pisitoolsfunctions.py - - - build - lib - pisi - actionsapi - kde.py - - - build - lib - pisi - actionsapi - pisitools.py - - - build - lib - pisi - actionsapi - scons.py - - - build - lib - pisi - actionsapi - libtools.py - - - build - lib - pisi - pxml - xmlextpiks.py - - - build - lib - pisi - pxml - autoxml.py - - - build - lib - pisi - pxml - xmlfilemdom.py - - - build - lib - pisi - pxml - xmlextmdom.py - - - build - lib - pisi - pxml - __init__.py - - - build - lib - pisi - pxml - xmlfile.py - - - build - lib - pisi - pxml - xmlext.py - - - build - lib - pisi - pxml - xmlfilecdom.py - - - build - lib - pisi - pxml - xmlextcdom.py - - - build - lib - pisi - pxml - xmlfilepiks.py - - - build - lib - pisi - search - invertedindex.py - - - build - lib - pisi - search - tokenize.py - - - build - lib - pisi - search - __init__.py - - - build - lib - pisi - search - preprocess.py - - - build - scripts-2.4 - repostats.py - - - build - scripts-2.4 - find-lib-deps.py - - - build - scripts-2.4 - update-environ.py - - - build - scripts-2.4 - calc-build-order.py - scripts lspisi @@ -1064,9 +611,9 @@ - - + + diff --git a/pisi/archive.py b/pisi/archive.py index 1f692998..3b9165c0 100644 --- a/pisi/archive.py +++ b/pisi/archive.py @@ -31,6 +31,9 @@ import pisi.context as ctx class ArchiveError(pisi.Error): pass +class LZMAError(pisi.Error): + def __init__(self, err): + pisi.Error.__init__(self, _("An error has occured while running LZMA:\n%s") % err) class ArchiveBase(object): """Base class for Archive classes.""" @@ -88,7 +91,9 @@ class ArchiveTar(ArchiveBase): elif self.type == 'tarlzma': rmode = 'r:' self.file_path = self.file_path.rstrip('.lzma') - util.run_batch("lzma d %s %s" % (self.file_path + '.lzma', self.file_path)) + ret, out, err = util.run_batch("lzma d %s %s" % (self.file_path + '.lzma', self.file_path)) + if ret != 0: + raise LZMAError(err) else: raise ArchiveError(_("Archive type not recognized")) @@ -122,7 +127,9 @@ class ArchiveTar(ArchiveBase): self.tar.close() if self.tar.mode == 'wb' and self.type == 'tarlzma': - util.run_batch("lzma e -a2 -d26 -fb64 %s %s" % (self.file_path, self.file_path + '.lzma')) + ret, out, err = util.run_batch("lzma e -a2 -d26 -fb64 %s %s" % (self.file_path, self.file_path + '.lzma')) + if ret != 0: + raise LZMAError(err) class ArchiveZip(ArchiveBase): """ArchiveZip handles zip archives. diff --git a/pisi/util.py b/pisi/util.py index f8104c8d..13aa53cf 100644 --- a/pisi/util.py +++ b/pisi/util.py @@ -139,6 +139,10 @@ def human_readable_rate(size = 0): # Process Releated Functions # ############################## +#FIXME: the added flags make out and err defunct, they should be +#split to another function if needed, this function runs a command +#noninteractively, then returns return value, standard output and +# error. the return spec must not change. def run_batch(cmd, realtime = False): """run command non-interactively/realtime and report return value and output""" ctx.ui.info(_('Running ') + cmd, verbose=True) @@ -151,7 +155,7 @@ def run_batch(cmd, realtime = False): if ctx.stderr: stderr = ctx.stderr else: - stderr = subprocess.STDOUT + stderr = subprocess.PIPE out = err = "" p = subprocess.Popen(cmd, shell=True, stdout=stdout, stderr=stderr)