import ftpio
try:
- opts, args = getopt.getopt(sys.argv[1:], None, ["nopoldek", "noyum", "norpmrepo", "poldek", "yum", "rpmrepo"])
+ opts, args = getopt.getopt(sys.argv[1:], 'q',
+ [
+ "quiet", "index=",
+ "nopoldek", "noyum", "norpmrepo",
+ "poldek", "yum", "rpmrepo"
+ ]
+ )
except getopt.GetoptError:
print >>sys.stderr, "ERR: not enough parameters given"
- print >>sys.stderr, "gen-indexes.py [--[no]poldek] [--[no]yum] [--[no]rpmrepo] tree [tree2...]"
+ print >>sys.stderr, "gen-indexes.py [--quiet] [--[no]poldek] [--[no]yum] [--[no]rpmrepo] tree [tree2...]"
sys.exit(1)
do_poldek = True
-do_yum = True
+do_yum = False
do_rpmrepo = False
+quiet = False
+# update only if changed (applicable to yum)
+freshen = True
for o, a in opts:
if o == "--nopoldek":
if o == "--rpmrepo":
do_rpmrepo = True
+ if o == "-q" or o == "--quiet":
+ quiet = True
+
+ if o == "--index":
+ do_poldek = do_yum = do_rpmrepo = False
+ for v in a.split(','):
+ if v == 'poldek':
+ do_poldek = True
+ if v == 'yum':
+ do_yum = True
+ if v == 'rpmrepo':
+ do_rpmrepo = True
+
+if not quiet:
+ print "poldek: %s; yum: %s; rpmrepo: %s" % (do_poldek, do_yum, do_rpmrepo)
+
if not do_poldek and not do_yum and not do_rpmrepo:
print >>sys.stderr, "ERR: speciy at least one action"
sys.exit(1)
if ftpio.lock(tree, True):
locked.append(tree)
else:
- print >>sys.stderr, "ERR: %s tree already locked" % tree
+ if not quiet:
+ print >>sys.stderr, "ERR: %s tree already locked" % tree
for i in locked:
ftpio.unlock(i)
sys.exit(1)
poldek = '%s.stat/bin/poldek-new --cachedir=%s/tmp/poldek --conf %s.stat/etc/poldek.conf --mkidxz' % (ftp_dir, home, ftp_dir)
for tree in trees:
- print '-------------------------- %s --------------------------' % tree
+ print '\n-------------------------- %s --------------------------' % tree
for arch in all_ftp_archs:
- print 'generate poldek index for %s' % arch
- if config.poldek_indexes != "old":
- os.system('%s -s %s%s/%s/RPMS/ --mkidxz --mkidx-type pndir' % (poldek, ftp_dir, tree, arch))
- if config.poldek_indexes != "new":
- os.system('%s -s %s%s/%s/RPMS/ --mkidxz --mkidx-type pdir' % (poldek, ftp_dir, tree, arch))
+ print '\ngenerate poldek index for %s' % arch
+ print '%s -s %s%s/%s/RPMS/ --mkidxz --mkidx-type pndir' % (poldek, ftp_dir, tree, arch)
+ os.system('%s -s %s%s/%s/RPMS/ --mkidxz --mkidx-type pndir' % (poldek, ftp_dir, tree, arch))
+ if arch != 'noarch' and config.separate_debuginfo:
+ os.system('%s -s %s%s/%s/debuginfo/ --mkidxz --mkidx-type pndir' % (poldek, ftp_dir, tree, arch))
if do_yum:
- os.system('set -x; cd %s.stat/repodata && cvs up comps.xml' % ftp_dir)
- yum = '%s.stat/bin/createrepo -d -g %s.stat/repodata/comps.xml' % (ftp_dir, ftp_dir)
+ os.system('%s cd %s.stat/repodata && cvs %s up comps.xml' % ("" if quiet else "set -x;", ftp_dir, "" if quiet else "-Q"))
+ yum = '%s.stat/bin/createrepo -d -v --update --checkts --skip-stat --workers=12 -g %s.stat/repodata/comps.xml' % (ftp_dir, ftp_dir)
+ comps_file = '%s.stat/repodata/comps.xml' % ftp_dir
for tree in trees:
- print '-------------------------- %s --------------------------' % tree
+ print '\n-------------------------- %s --------------------------' % tree
cachedir = '%s/tmp/createrepo/%s' % (home, tree)
+ treedir = "%s%s" % (ftp_dir, tree)
for arch in all_ftp_archs:
- print 'generate repodata for %s using createrepo' % arch
- # Creating indexes for yum and other supporting xml repodata.
- os.system('time %s --cache %s-%s %s%s/%s/RPMS' % (yum, cachedir, arch, ftp_dir, tree, arch))
+ print '\ngenerate repodata for %s using createrepo' % arch
+ archdir = "%s/%s" % (treedir, arch)
+ poldek_idx = "%s/RPMS/packages.ndir.md" % archdir
+ repodata_idx = "%s/RPMS/repodata/repomd.xml" % archdir
+ if freshen and os.path.exists(poldek_idx) and os.path.exists(repodata_idx) \
+ and not os.path.getmtime(comps_file) > os.path.getmtime(repodata_idx) \
+ and not os.path.getmtime(poldek_idx) > os.path.getmtime(repodata_idx):
+ print "repodata indexes already fresh"
+ continue
+ print ('%s %s --cache %s-%s %s/RPMS' % ("" if quiet else "time", yum, cachedir, arch, archdir))
+ os.system('%s %s --cache %s-%s %s/RPMS' % ("" if quiet else "time", yum, cachedir, arch, archdir))
+ if arch != 'noarch' and config.separate_debuginfo:
+ os.system('%s %s --cache %s-%s %s/debuginfo' % ("" if quiet else "time", yum, cachedir, arch, archdir))
if do_rpmrepo:
- os.system('set -x; cd %s.stat/repodata && cvs up comps.xml' % ftp_dir)
+ os.system('%s cd %s.stat/repodata && cvs %s up comps.xml' % ("" if quiet else "set -x;", ftp_dir, "" if quiet else "-Q"))
for tree in trees:
- print '-------------------------- %s --------------------------' % tree
+ print '\n-------------------------- %s --------------------------' % tree
for arch in all_ftp_archs:
dir = '%s/%s/%s/RPMS' % (ftp_dir, tree, arch)
- print 'generate repodata for %s using rpmrepo (in %s)' % (arch, dir)
- os.system('time rpmrepo %s -o %s' % (dir, dir))
- print 'copy comps.xml'
+ if not quiet:
+ print '\ngenerate repodata for %s using rpmrepo (in %s)' % (arch, dir)
+ os.system('%s rpmrepo %s -o %s' % ("" if quiet else "set -x;", dir, dir))
+ if not quiet:
+ print 'copy comps.xml'
comps = '%s.stat/repodata/comps.xml' % ftp_dir
- os.system('set -x; cp -p %s %s/repodata' % (comps, dir))
+ os.system('%s cp -p %s %s/repodata' % ("" if quiet else "set -x;", comps, dir))
for tree in trees:
ftpio.unlock(tree)