]> git.pld-linux.org Git - projects/pld-ftp-admin.git/blobdiff - bin/pfa-genindex
Fix umask values (python3 compat)
[projects/pld-ftp-admin.git] / bin / pfa-genindex
old mode 100644 (file)
new mode 100755 (executable)
index ec62fe1..6fcc13c
 #!/usr/bin/env python
 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
 
+from __future__ import print_function
+
+import getopt
 import sys, os
 sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
 from common import checkdir
-from config import ftp_dir,ftp_archs
+from config import ftp_dir,all_ftp_archs
+import config
 import ftpio
 
-if len(sys.argv) < 2:
-    print "Not enough parameters given"
-    print "gen-indexes.py tree [tree2...]"
+try:
+    opts, args = getopt.getopt(sys.argv[1:], 'q',
+        [
+            "quiet", "index=",
+            "nopoldek", "noyum", "norpmrepo",
+            "poldek", "yum", "rpmrepo"
+        ]
+    )
+except getopt.GetoptError:
+    print("ERR: not enough parameters given", file=sys.stderr)
+    print("gen-indexes.py [--quiet] [--[no]poldek] [--[no]yum] [--[no]rpmrepo] tree [tree2...]", file=sys.stderr)
     sys.exit(1)
 
-trees=sys.argv[1:]
+do_poldek = 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":
+        do_poldek = False
+    if o == "--noyum":
+        do_yum = False
+    if o == "--norpmrepo":
+        do_rpmrepo = False
+
+    if o == "--poldek":
+        do_poldek = True
+    if o == "--yum":
+        do_yum = True
+    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("ERR: speciy at least one action", file=sys.stderr)
+    sys.exit(1)
+
+trees = args
 
 for tree in trees:
     checkdir(tree)
 
 ftpio.connect('gen-indexes')
 
-locked=[]
+locked = []
 
 for tree in trees:
     if ftpio.lock(tree, True):
         locked.append(tree)
     else:
-        print "%s tree already locked" % tree
+        print("ERR: %s tree already locked" % tree, file=sys.stderr)
         for i in locked:
             ftpio.unlock(i)
         sys.exit(1)
 
-home=os.environ['HOME']
+home = os.environ['HOME']
 
-for tree in trees:
-    print '-------------------------- %s --------------------------' % tree
-    for arch in ['noarch'] + ftp_archs:
-        print 'ARCHITECTURE: %s' % arch
-        os.system('%s.stat/bin/poldek --cachedir=%s/tmp/poldek --conf %s.stat/etc/poldek.conf -s %s%s/%s/RPMS/ --mkidxz --mkidx-type pdir' %
-                (ftp_dir,home,ftp_dir,ftp_dir,tree,arch))
+os.umask(0o022)
+os.nice(19)
+
+if do_poldek:
+    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('\n-------------------------- %s --------------------------' % tree)
+        for arch in all_ftp_archs:
+            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('%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('\n-------------------------- %s --------------------------' % tree)
+        cachedir = '%s/tmp/createrepo/%s' % (home, tree)
+        treedir = "%s%s" % (ftp_dir, tree)
+        for arch in all_ftp_archs:
+            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('%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('\n-------------------------- %s --------------------------' % tree)
+        for arch in all_ftp_archs:
+            dir = '%s/%s/%s/RPMS' % (ftp_dir, tree, arch)
+            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('%s cp -p %s %s/repodata' % ("" if quiet else "set -x;", comps, dir))
 
 for tree in trees:
     ftpio.unlock(tree)
-
This page took 0.036785 seconds and 4 git commands to generate.