]> git.pld-linux.org Git - projects/pld-ftp-admin.git/blob - bin/pfa-genindex
- add rpmrepo support, summertic --rpmrepo, etc options
[projects/pld-ftp-admin.git] / bin / pfa-genindex
1 #!/usr/bin/env python
2 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
3
4 import getopt
5 import sys, os
6 sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
7 from common import checkdir
8 from config import ftp_dir,all_ftp_archs
9 import config
10 import ftpio
11
12 try:
13     opts, args = getopt.getopt(sys.argv[1:], None, ["nopoldek", "noyum", "norpmrepo", "poldek", "yum", "rpmrepo"])
14 except getopt.GetoptError:
15     print "ERR: not enough parameters given"
16     print "gen-indexes.py [--[no]poldek] [--[no]yum] [--[no]rpmrepo] tree [tree2...]"
17     sys.exit(1)
18
19 do_poldek = True
20 do_yum = True
21 do_rpmrepo = False
22
23 for o, a in opts:
24     if o == "--nopoldek":
25         do_poldek = False
26     if o == "--noyum":
27         do_yum = False
28     if o == "--norpmrepo":
29         do_rpmrepo = False
30
31     if o == "--poldek":
32         do_poldek = True
33     if o == "--yum":
34         do_yum = True
35     if o == "--rpmrepo":
36         do_rpmrepo = True
37
38 if not do_poldek and not do_yum and not do_rpmrepo:
39     print "ERR: speciy at least one action"
40     sys.exit(1)
41
42 trees=args
43
44 for tree in trees:
45     checkdir(tree)
46
47 ftpio.connect('gen-indexes')
48
49 locked=[]
50
51 for tree in trees:
52     if ftpio.lock(tree, True):
53         locked.append(tree)
54     else:
55         print "ERR: %s tree already locked" % tree
56         for i in locked:
57             ftpio.unlock(i)
58         sys.exit(1)
59
60 home=os.environ['HOME']
61
62 os.umask(022)
63 os.nice(19)
64
65 if do_poldek:
66     for tree in trees:
67         print '-------------------------- %s --------------------------' % tree
68         for arch in all_ftp_archs:
69             print 'generate poldek index for %s' % arch
70             if config.old_poldek:
71                 os.system('%s.stat/bin/poldek --cachedir=%s/tmp/poldek -c %s.stat/etc/poldek.conf -s %s%s/%s/RPMS/ --mkidxz' %
72                     (ftp_dir,home,ftp_dir,ftp_dir,tree,arch))
73             else:
74                 if config.poldek_indexes != "old":
75                     os.system('%s.stat/bin/poldek-new --cachedir=%s/tmp/poldek --conf %s.stat/etc/poldek.conf -s %s%s/%s/RPMS/ --mkidxz --mkidx-type pndir' %
76                             (ftp_dir,home,ftp_dir,ftp_dir,tree,arch))
77                 if config.poldek_indexes != "new":
78                     os.system('%s.stat/bin/poldek-new --cachedir=%s/tmp/poldek --conf %s.stat/etc/poldek.conf -s %s%s/%s/RPMS/ --mkidxz --mkidx-type pdir' %
79                             (ftp_dir,home,ftp_dir,ftp_dir,tree,arch))
80
81 if do_yum:
82     os.system('set -x; cd %s.stat/repodata && cvs up comps.xml' % ftp_dir)
83     for tree in trees:
84         print '-------------------------- %s --------------------------' % tree
85         for arch in all_ftp_archs:
86             print 'generate repodata for %s using createrepo' % arch
87             # Creating indexes for yum and other supporting xml repodata.
88             os.system('time %s.stat/bin/createrepo -d -g %s.stat/repodata/comps.xml --cache %s/tmp/createrepo/%s-%s %s%s/%s/RPMS' %
89                     (ftp_dir,ftp_dir,home,tree,arch,ftp_dir,tree,arch))
90
91 if do_rpmrepo:
92     os.system('set -x; cd %s.stat/repodata && cvs up comps.xml' % ftp_dir)
93     for tree in trees:
94         print '-------------------------- %s --------------------------' % tree
95         for arch in all_ftp_archs:
96             dir = '%s/%s/%s/RPMS' % (ftp_dir, tree, arch)
97             print 'generate repodata for %s using rpmrepo (in %s)' % (arch, dir)
98             os.system('time rpmrepo %s -o %s' % (dir, dir))
99
100 for tree in trees:
101     ftpio.unlock(tree)
This page took 0.034045 seconds and 4 git commands to generate.