]>
Commit | Line | Data |
---|---|---|
df78f748 MM |
1 | #!/usr/bin/env python |
2 | # vi: encoding=utf-8 ts=8 sts=4 sw=4 et | |
3 | ||
fdf5d714 | 4 | import getopt |
df78f748 MM |
5 | import sys, os |
6 | sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules') | |
7 | from common import checkdir | |
796b7867 | 8 | from config import ftp_dir,all_ftp_archs |
0bf1ad60 | 9 | import config |
df78f748 MM |
10 | import ftpio |
11 | ||
fdf5d714 | 12 | try: |
bc8134ee | 13 | opts, args = getopt.getopt(sys.argv[1:], None, ["nopoldek", "noyum", "norpmrepo", "poldek", "yum", "rpmrepo"]) |
fdf5d714 | 14 | except getopt.GetoptError: |
749b120d | 15 | print "ERR: not enough parameters given" |
bc8134ee | 16 | print "gen-indexes.py [--[no]poldek] [--[no]yum] [--[no]rpmrepo] tree [tree2...]" |
df78f748 MM |
17 | sys.exit(1) |
18 | ||
fdf5d714 AM |
19 | do_poldek = True |
20 | do_yum = True | |
bc8134ee | 21 | do_rpmrepo = False |
fdf5d714 AM |
22 | |
23 | for o, a in opts: | |
24 | if o == "--nopoldek": | |
25 | do_poldek = False | |
26 | if o == "--noyum": | |
27 | do_yum = False | |
bc8134ee ER |
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" | |
fdf5d714 AM |
40 | sys.exit(1) |
41 | ||
42 | trees=args | |
df78f748 MM |
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: | |
749b120d | 55 | print "ERR: %s tree already locked" % tree |
df78f748 MM |
56 | for i in locked: |
57 | ftpio.unlock(i) | |
58 | sys.exit(1) | |
59 | ||
60 | home=os.environ['HOME'] | |
61 | ||
65473a80 | 62 | os.umask(022) |
728ca432 | 63 | os.nice(19) |
65473a80 | 64 | |
fdf5d714 AM |
65 | if do_poldek: |
66 | for tree in trees: | |
67 | print '-------------------------- %s --------------------------' % tree | |
68 | for arch in all_ftp_archs: | |
bc8134ee | 69 | print 'generate poldek index for %s' % arch |
fdf5d714 AM |
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: | |
bc8134ee | 82 | os.system('set -x; cd %s.stat/repodata && cvs up comps.xml' % ftp_dir) |
fdf5d714 AM |
83 | for tree in trees: |
84 | print '-------------------------- %s --------------------------' % tree | |
85 | for arch in all_ftp_archs: | |
bc8134ee | 86 | print 'generate repodata for %s using createrepo' % arch |
fdf5d714 | 87 | # Creating indexes for yum and other supporting xml repodata. |
bc8134ee | 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' % |
5458b671 | 89 | (ftp_dir,ftp_dir,home,tree,arch,ftp_dir,tree,arch)) |
df78f748 | 90 | |
bc8134ee ER |
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)) | |
7444a3de ER |
99 | print 'copy comps.xml' |
100 | comps = '%s.stat/repodata/comps.xml' % ftp_dir | |
101 | os.system('set -x; cp -p %s %s/repodata' % (comps, dir)) | |
bc8134ee | 102 | |
df78f748 MM |
103 | for tree in trees: |
104 | ftpio.unlock(tree) |