Re: [PATCH] output dir option
Dennis Gregorovic <[email protected]>
| Newsgroups | gmane.linux.rpm.metadata |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 2006-02-21 at 13:08 -0500, Paul Nasrat wrote: > On Tue, 2006-01-31 at 09:37 -0500, Dennis Gregorovic wrote: > > 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. > > Can you rediff against head please. Then I'll apply and move to > release... > > Paul 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)
? outputdir.patch
Index: dumpMetadata.py
===================================================================
RCS file: /cvsroot/metadata/cvs-root/generate/dumpMetadata.py,v
retrieving revision 1.35
diff -u -r1.35 dumpMetadata.py
--- dumpMetadata.py 13 Jan 2006 06:24:50 -0000 1.35
+++ dumpMetadata.py 21 Feb 2006 19:49:22 -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.49
diff -u -r1.49 genpkgmetadata.py
--- genpkgmetadata.py 18 Feb 2006 02:22:00 -0000 1.49
+++ genpkgmetadata.py 21 Feb 2006 19:49:22 -0000
@@ -131,7 +131,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' %
@@ -143,7 +143,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' %
@@ -155,7 +155,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' %
@@ -270,7 +270,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)
@@ -369,6 +369,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\/.*']
@@ -376,7 +377,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
# 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 @@
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 @@
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 @@
#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)