]> git.pld-linux.org Git - projects/pld-builder.new.git/blob - PLD_Builder/maintainer.py
4d909dfaba2b6dfcc2ec2b713bc91bc893b5689d
[projects/pld-builder.new.git] / PLD_Builder / maintainer.py
1 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
2
3 import os
4 import sys
5 import time
6 import datetime
7
8 from config import config, init_conf
9 import util
10 import chroot
11 import ftp
12 import path
13
14 def clean_dir(path, max):
15     curtime=time.time()
16     for i in os.listdir(path):
17         if curtime - os.path.getmtime(path+'/'+i) > max:
18             if os.path.isdir(path+'/'+i):
19                 util.clean_tmp(path+'/'+i)
20             else:
21                 os.unlink(path+'/'+i)
22
23 def send_rpmqa():
24     tmp = path.build_dir + '/' + util.uuid() + '/'
25     os.mkdir(tmp)
26     log = tmp + config.rpmqa_filename
27     open(log, 'a').write("Query done at: %s\n" % datetime.datetime.now().isoformat(' '))
28     chroot.run("rpm -qa|sort", logfile=log)
29     os.chmod(log,0o0644)
30     ftp.init(rpmqa=True)
31     ftp.add(log)
32     ftp.flush()
33     os.unlink(log)
34     os.rmdir(tmp)
35
36 def handle_src():
37     send_rpmqa()
38     clean_dir(path.www_dir+'/srpms', 2592000) # a month
39
40 def handle_bin():
41     send_rpmqa()
42     f=chroot.popen("""ls -l --time-style +%s /spools/ready""", "root", encoding = "utf-8")
43     rmpkgs=[]
44     curtime=time.time()
45     for i in f:
46         if i[-4:-1]!='rpm':
47             continue
48         tmp=i.split()
49         mtime=int(tmp[5])
50         pkgname=tmp[6]
51         if curtime - mtime > config.max_keep_time:
52             rmpkgs.append(pkgname)
53
54     i=0
55     while rmpkgs[i:i+1000]:
56         chroot.run("cd /spools/ready; rm -f %s" % ' '.join(rmpkgs[i:i+1000]), 'root')
57         i=i+1000
58     f.close()
59     chroot.run("poldek --mo=nodiff --mkidxz -s /spools/ready")
60
61 if __name__ == '__main__':
62     init_conf()
63     bb=config.binary_builders[:]
64     clean_dir(path.spool_dir+'/builds', 2592000) # a month
65     if config.src_builder:
66         try:
67             init_conf(config.src_builder)
68         except:
69             pass
70         else:
71             handle_src()
72             sys.exit(0)
73     for b in bb:
74         try:
75             init_conf(b)
76         except:
77             continue
78         else:
79             handle_bin()
This page took 0.141347 seconds and 4 git commands to generate.