=== modified file 'jockey/oslib.py' --- jockey/oslib.py 2009-03-07 14:29:18 +0000 +++ jockey/oslib.py 2009-03-18 15:14:40 +0000 @@ -210,6 +210,18 @@ logging.debug('install progress statusChange %s %f' % (pkg, percent)) self.callback('install', int(percent/2+50.5), 100) + def fork(self): + print 'MyInstallProgress.fork()' + self.stdout = tempfile.TemporaryFile() + self.stderr = tempfile.TemporaryFile() + p = os.fork() + if p: + # redirect stdout and stderr to logging + os.dup2(self.stdout.fileno(), sys.stdout.fileno()) + os.dup2(self.stderr.fileno(), sys.stderr.fileno()) + return p + + logging.debug('Installing package: %s', package) if progress_cb: progress_cb('download', 0, 100.0) @@ -225,8 +237,17 @@ except KeyError: logging.debug('Package %s does not exist, aborting', package) return False - c.commit(progress_cb and MyFetchProgress(progress_cb) or None, - progress_cb and MyInstallProgress(progress_cb) or None) + inst_p = progress_cb and MyInstallProgress(progress_cb) or None + c.commit(progress_cb and MyFetchProgress(progress_cb) or None, inst_p) + if inst_p: + inst_p.stdout.seek(0) + out = inst_p.stdout.read() + inst_p.stdout.close() + inst_p.stderr.seek(0) + err = inst_p.stderr.read() + inst_p.stderr.close() + logging.debug(out) + logging.error(err) except apt.cache.FetchCancelledException, e: return False except (apt.cache.LockFailedException, apt.cache.FetchFailedException), e: