From 9b57dba1ca2b78cd5043bcab56dc2a778f0b8f71 Mon Sep 17 00:00:00 2001 From: Seth Vidal Date: Fri, 7 Jan 2005 21:39:47 +0000 Subject: [PATCH] single open for all file operations. about a 30% time savings. --- dumpMetadata.py | 16 +++++++++++++--- genpkgmetadata.py | 8 ++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/dumpMetadata.py b/dumpMetadata.py index d2e51bb..5431455 100644 --- a/dumpMetadata.py +++ b/dumpMetadata.py @@ -29,6 +29,13 @@ import re import stat from genpkgmetadata import _gzipOpen +def returnFD(filename): + try: + fdno = os.open(filename, os.O_RDONLY) + except OSError: + raise MDError, "Error opening file" + return fdno + def returnHdr(ts, package): """hand back the rpm header or raise an Error if the pkg is fubar""" try: @@ -181,9 +188,12 @@ class RpmMetaData: self.localurl = url self.relativepath = filename - self.hdr = returnHdr(ts, filename) - self.pkgid = getChecksum(sumtype, filename) - (self.rangestart, self.rangeend) = byteranges(filename) + self.fd = returnFD(filename) + self.hdr = returnHdr(ts, self.fd) + fo = os.fdopen(self.fd) + self.pkgid = getChecksum(sumtype, fo) + fo.seek(0) + (self.rangestart, self.rangeend) = byteranges(fo) # setup our regex objects fileglobs = ['.*bin\/.*', '^\/etc\/.*', '^\/usr\/lib\/sendmail$'] diff --git a/genpkgmetadata.py b/genpkgmetadata.py index 968779e..608ec36 100755 --- a/genpkgmetadata.py +++ b/genpkgmetadata.py @@ -158,6 +158,8 @@ def parseArgs(args): cmds['groupfile'] = None cmds['sumtype'] = 'sha' cmds['pretty'] = 0 + cmds['file-pattern-match'] = ['.*bin\/.*', '^\/etc\/.*', '^\/usr\/lib\/sendmail$'] + cmds['dir-pattern-match'] = ['.*bin\/.*', '^\/etc\/.*'] try: gopts, argsleft = getopt.getopt(args, 'phqVvg:s:x:u:', ['help', 'exclude=', @@ -494,8 +496,10 @@ def main(args): if __name__ == "__main__": if len(sys.argv) > 1: if sys.argv[1] == 'profile': - import profile - profile.run('main(sys.argv[2:])') + import hotshot + p = hotshot.Profile(os.path.expanduser("~/createrepo.prof")) + p.run('main(sys.argv[2:])') + p.close() else: main(sys.argv[1:]) else: -- 2.34.1