Re: [PATCH] output dir option
Dennis Gregorovic <[email protected]>
| Newsgroups | gmane.linux.rpm.metadata |
|---|---|
| Message-ID | <[email protected]> |
On Mon, 2006-01-30 at 20:49 -0500, Paul Nasrat wrote: > On Mon, 2006-01-30 at 20:25 -0500, Dennis Gregorovic wrote: > > The attached patch creates a new configuration option "outputdir" which > > specifies the directory where the "repodata" dir will be created. By > > default, the outputdir is the same as the basedir. > > > Thoughts? > > I don't know about Seth, but I certainly prefer patches with diff -u, > could you resend and then I'll try and comment. > > Paul diff -u patch attached. -- Dennis _______________________________________________ Rpm-metadata mailing list [email protected] https://lists.dulug.duke.edu/mailman/listinfo/rpm-metadata
outputdir.patch
(text/x-patch, 11.1 KB)
Index: dumpMetadata.py
===================================================================
RCS file: /cvsroot/metadata/cvs-root/generate/dumpMetadata.py,v
retrieving revision 1.35
diff -u -w -r1.35 dumpMetadata.py
--- dumpMetadata.py 13 Jan 2006 06:24:50 -0000 1.35
+++ dumpMetadata.py 31 Jan 2006 14:35:50 -0000
@@ -741,11 +741,11 @@
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 @@
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)
Index: genpkgmetadata.py
===================================================================
RCS file: /cvsroot/metadata/cvs-root/generate/genpkgmetadata.py,v
retrieving revision 1.48
diff -u -w -r1.48 genpkgmetadata.py
--- genpkgmetadata.py 13 Jan 2006 06:24:50 -0000 1.48
+++ genpkgmetadata.py 31 Jan 2006 14:35:50 -0000
@@ -129,7 +129,7 @@
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('<?xml version="1.0" encoding="UTF-8"?>\n')
self.basefile.write('<metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="%s">\n' %
@@ -141,7 +141,7 @@
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('<?xml version="1.0" encoding="UTF-8"?>\n')
self.flfile.write('<filelists xmlns="http://linux.duke.edu/metadata/filelists" packages="%s">\n' %
@@ -153,7 +153,7 @@
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('<?xml version="1.0" encoding="UTF-8"?>\n')
self.otherfile.write('<otherdata xmlns="http://linux.duke.edu/metadata/other" packages="%s">\n' %
@@ -245,7 +245,7 @@
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)
@@ -344,6 +344,7 @@
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\/.*']
@@ -351,7 +352,7 @@
gopts, argsleft = getopt.getopt(args, 'phqVvg:s:x:u:c:', ['help', 'exclude=',
'quiet', 'verbose', 'cachedir=', 'basedir=',
'baseurl=', 'groupfile=', 'checksum=',
- 'version', 'pretty', 'split'])
+ 'version', 'pretty', 'split', 'outputdir='])
except getopt.error, e:
errorprint(_('Options Error: %s.') % e)
usage()
@@ -411,24 +412,13 @@
cmds['cachedir'] = 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'
-
- return cmds, directories
-
-def main(args):
- cmds, directories = parseArgs(args)
directory = directories[0]
# Fix paths
directory = os.path.normpath(directory)
@@ -440,6 +430,9 @@
else:
cmds['basedir'] = os.path.realpath(os.path.join(cmds['basedir'], directory))
directory = '.'
+ directories[0] = directory
+ if not cmds['outputdir']:
+ cmds['outputdir'] = cmds['basedir']
if cmds['groupfile']:
a = cmds['groupfile']
if cmds['split']:
@@ -459,6 +452,23 @@
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'
+
+ return cmds, directories
+
+def main(args):
+ cmds, directories = parseArgs(args)
+ print cmds
+ print directories
+ directory = directories[0]
+
# start the sanity/stupidity checks
if not os.path.exists(os.path.join(cmds['basedir'], directory)):
errorprint(_('Directory must exist'))
@@ -468,27 +478,27 @@
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)
# 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)
@@ -503,23 +513,23 @@
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']:
@@ -527,7 +537,7 @@
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)
@@ -536,9 +546,9 @@
errorprint(_('Error was %s') % e)
sys.exit(1)
-#XXX: fix to remove tree as we mung basedir
+#XXX: fix to remove tree as we mung outputdir
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)