From: Paul Nasrat Date: Tue, 21 Feb 2006 20:10:08 +0000 (+0000) Subject: Enable seperate outputdir (dgregor) X-Git-Tag: upstream/0.9.9~251 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cc65564e0e70b10bdb0f56c93eb4de7abfb696b4;p=tools%2Fcreaterepo.git Enable seperate outputdir (dgregor) --- diff --git a/dumpMetadata.py b/dumpMetadata.py index 188f734..0d5db57 100644 --- a/dumpMetadata.py +++ b/dumpMetadata.py @@ -741,11 +741,11 @@ def repoXML(node, cmds): for (file, ftype) in workfiles: - zfo = _gzipOpen(os.path.join(cmds['basedir'], cmds['tempdir'], file)) + zfo = _gzipOpen(os.path.join(cmds['outputdir'], cmds['tempdir'], file)) uncsum = getChecksum(sumtype, zfo) zfo.close() - csum = getChecksum(sumtype, os.path.join(cmds['basedir'], cmds['tempdir'], file)) - timestamp = os.stat(os.path.join(cmds['basedir'], cmds['tempdir'], file))[8] + csum = getChecksum(sumtype, os.path.join(cmds['outputdir'], cmds['tempdir'], file)) + timestamp = os.stat(os.path.join(cmds['outputdir'], cmds['tempdir'], file))[8] data = node.newChild(None, 'data', None) data.newProp('type', ftype) location = data.newChild(None, 'location', None) @@ -764,7 +764,7 @@ def repoXML(node, cmds): timestamp = os.stat(grpfile)[8] sfile = os.path.basename(grpfile) fo = open(grpfile, 'r') - output = open(os.path.join(cmds['basedir'], cmds['tempdir'], sfile), 'w') + output = open(os.path.join(cmds['outputdir'], cmds['tempdir'], sfile), 'w') output.write(fo.read()) output.close() fo.seek(0) diff --git a/genpkgmetadata.py b/genpkgmetadata.py index 714cc9d..8c46c8b 100755 --- a/genpkgmetadata.py +++ b/genpkgmetadata.py @@ -131,7 +131,7 @@ class MetaDataGenerator: basens = self.baseroot.newNs('http://linux.duke.edu/metadata/common', None) self.formatns = self.baseroot.newNs('http://linux.duke.edu/metadata/rpm', 'rpm') self.baseroot.setNs(basens) - basefilepath = os.path.join(self.cmds['basedir'], self.cmds['tempdir'], self.cmds['primaryfile']) + basefilepath = os.path.join(self.cmds['outputdir'], self.cmds['tempdir'], self.cmds['primaryfile']) self.basefile = _gzipOpen(basefilepath, 'w') self.basefile.write('\n') self.basefile.write('\n' % @@ -143,7 +143,7 @@ class MetaDataGenerator: self.filesroot = self.filesdoc.newChild(None, "filelists", None) filesns = self.filesroot.newNs('http://linux.duke.edu/metadata/filelists', None) self.filesroot.setNs(filesns) - filelistpath = os.path.join(self.cmds['basedir'], self.cmds['tempdir'], self.cmds['filelistsfile']) + filelistpath = os.path.join(self.cmds['outputdir'], self.cmds['tempdir'], self.cmds['filelistsfile']) self.flfile = _gzipOpen(filelistpath, 'w') self.flfile.write('\n') self.flfile.write('\n' % @@ -155,7 +155,7 @@ class MetaDataGenerator: self.otherroot = self.otherdoc.newChild(None, "otherdata", None) otherns = self.otherroot.newNs('http://linux.duke.edu/metadata/other', None) self.otherroot.setNs(otherns) - otherfilepath = os.path.join(self.cmds['basedir'], self.cmds['tempdir'], self.cmds['otherfile']) + otherfilepath = os.path.join(self.cmds['outputdir'], self.cmds['tempdir'], self.cmds['otherfile']) self.otherfile = _gzipOpen(otherfilepath, 'w') self.otherfile.write('\n') self.otherfile.write('\n' % @@ -270,7 +270,7 @@ class MetaDataGenerator: reporoot = repodoc.newChild(None, "repomd", None) repons = reporoot.newNs('http://linux.duke.edu/metadata/repo', None) reporoot.setNs(repons) - repofilepath = os.path.join(self.cmds['basedir'], self.cmds['tempdir'], self.cmds['repomdfile']) + repofilepath = os.path.join(self.cmds['outputdir'], self.cmds['tempdir'], self.cmds['repomdfile']) try: dumpMetadata.repoXML(reporoot, self.cmds) @@ -369,6 +369,7 @@ def parseArgs(args): cmds['basedir'] = os.getcwd() cmds['cache'] = False cmds['split'] = False + cmds['outputdir'] = "" cmds['file-pattern-match'] = ['.*bin\/.*', '^\/etc\/.*', '^\/usr\/lib\/sendmail$'] cmds['dir-pattern-match'] = ['.*bin\/.*', '^\/etc\/.*'] @@ -376,7 +377,7 @@ def parseArgs(args): gopts, argsleft = getopt.getopt(args, 'phqVvg:s:x:u:c:U:', ['help', 'exclude=', 'quiet', 'verbose', 'cachedir=', 'basedir=', 'baseurl=', 'groupfile=', 'checksum=', - 'version', 'pretty', 'split', + 'version', 'pretty', 'split', 'outputdir=', 'update-info-location=']) except getopt.error, e: errorprint(_('Options Error: %s.') % e) @@ -439,25 +440,13 @@ def parseArgs(args): cmds['update-info-location'] = a elif arg == '--basedir': cmds['basedir'] = a + elif arg == '--outputdir': + cmds['outputdir'] = a except ValueError, e: errorprint(_('Options Error: %s') % e) usage() - #setup some defaults - cmds['primaryfile'] = 'primary.xml.gz' - cmds['filelistsfile'] = 'filelists.xml.gz' - cmds['otherfile'] = 'other.xml.gz' - cmds['repomdfile'] = 'repomd.xml' - cmds['tempdir'] = '.repodata' - cmds['finaldir'] = 'repodata' - cmds['olddir'] = '.olddata' - cmds['update-info-dir'] = 'update-info' - - return cmds, directories - -def main(args): - cmds, directories = parseArgs(args) directory = directories[0] # Fix paths directory = os.path.normpath(directory) @@ -469,6 +458,8 @@ def main(args): else: cmds['basedir'] = os.path.realpath(os.path.join(cmds['basedir'], directory)) directory = '.' + if not cmds['outputdir']: + cmds['outputdir'] = cmds['basedir'] if cmds['groupfile']: a = cmds['groupfile'] if cmds['split']: @@ -488,6 +479,21 @@ def main(args): usage() cmds['cachedir'] = a + #setup some defaults + cmds['primaryfile'] = 'primary.xml.gz' + cmds['filelistsfile'] = 'filelists.xml.gz' + cmds['otherfile'] = 'other.xml.gz' + cmds['repomdfile'] = 'repomd.xml' + cmds['tempdir'] = '.repodata' + cmds['finaldir'] = 'repodata' + cmds['olddir'] = '.olddata' + cmds['update-info-dir'] = 'update-info' + + return cmds, directories + +def main(args): + cmds, directories = parseArgs(args) + directory = directories[0] # start the sanity/stupidity checks if not os.path.exists(os.path.join(cmds['basedir'], directory)): errorprint(_('Directory must exist')) @@ -497,20 +503,20 @@ def main(args): errorprint(_('Directory of packages must be a directory.')) sys.exit(1) - if not os.access(cmds['basedir'], os.W_OK): + if not os.access(cmds['outputdir'], os.W_OK): errorprint(_('Directory must be writable.')) sys.exit(1) if cmds['split']: oldbase = cmds['basedir'] cmds['basedir'] = os.path.join(cmds['basedir'], directory) - if not checkAndMakeDir(os.path.join(cmds['basedir'], cmds['tempdir'])): + if not checkAndMakeDir(os.path.join(cmds['outputdir'], cmds['tempdir'])): sys.exit(1) - if not checkAndMakeDir(os.path.join(cmds['basedir'], cmds['finaldir'])): + if not checkAndMakeDir(os.path.join(cmds['outputdir'], cmds['finaldir'])): sys.exit(1) - if os.path.exists(os.path.join(cmds['basedir'], cmds['olddir'])): + if os.path.exists(os.path.join(cmds['outputdir'], cmds['olddir'])): errorprint(_('Old data directory exists, please remove: %s') % cmds['olddir']) sys.exit(1) @@ -523,7 +529,7 @@ def main(args): # make sure we can write to where we want to write to: for direc in ['tempdir', 'finaldir']: for file in ['primaryfile', 'filelistsfile', 'otherfile', 'repomdfile']: - filepath = os.path.join(cmds['basedir'], cmds[direc], cmds[file]) + filepath = os.path.join(cmds['outputdir'], cmds[direc], cmds[file]) if os.path.exists(filepath): if not os.access(filepath, os.W_OK): errorprint(_('error in must be able to write to metadata files:\n -> %s') % filepath) @@ -538,23 +544,23 @@ def main(args): mdgen.doPkgMetadata(directory) mdgen.doRepoMetadata() - if os.path.exists(os.path.join(cmds['basedir'], cmds['finaldir'])): + if os.path.exists(os.path.join(cmds['outputdir'], cmds['finaldir'])): try: - os.rename(os.path.join(cmds['basedir'], cmds['finaldir']), - os.path.join(cmds['basedir'], cmds['olddir'])) + os.rename(os.path.join(cmds['outputdir'], cmds['finaldir']), + os.path.join(cmds['outputdir'], cmds['olddir'])) except: - errorprint(_('Error moving final %s to old dir %s' % (os.path.join(cmds['basedir'], cmds['finaldir']), - os.path.join(cmds['basedir'], cmds['olddir'])))) + errorprint(_('Error moving final %s to old dir %s' % (os.path.join(cmds['outputdir'], cmds['finaldir']), + os.path.join(cmds['outputdir'], cmds['olddir'])))) sys.exit(1) try: - os.rename(os.path.join(cmds['basedir'], cmds['tempdir']), - os.path.join(cmds['basedir'], cmds['finaldir'])) + os.rename(os.path.join(cmds['outputdir'], cmds['tempdir']), + os.path.join(cmds['outputdir'], cmds['finaldir'])) except: errorprint(_('Error moving final metadata into place')) # put the old stuff back - os.rename(os.path.join(cmds['basedir'], cmds['olddir']), - os.path.join(cmds['basedir'], cmds['finaldir'])) + os.rename(os.path.join(cmds['outputdir'], cmds['olddir']), + os.path.join(cmds['outputdir'], cmds['finaldir'])) sys.exit(1) for file in ['primaryfile', 'filelistsfile', 'otherfile', 'repomdfile', 'groupfile']: @@ -562,7 +568,7 @@ def main(args): fn = os.path.basename(cmds[file]) else: continue - oldfile = os.path.join(cmds['basedir'], cmds['olddir'], fn) + oldfile = os.path.join(cmds['outputdir'], cmds['olddir'], fn) if os.path.exists(oldfile): try: os.remove(oldfile) @@ -581,7 +587,7 @@ def main(args): #XXX: fix to remove tree as we mung basedir try: - os.rmdir(os.path.join(cmds['basedir'], cmds['olddir'])) + os.rmdir(os.path.join(cmds['outputdir'], cmds['olddir'])) except OSError, e: errorprint(_('Could not remove old metadata dir: %s') % cmds['olddir']) errorprint(_('Error was %s') % e)