diff options
Diffstat (limited to 'build_tools/bin/massupdate_linhes.py')
-rw-r--r-- | build_tools/bin/massupdate_linhes.py | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/build_tools/bin/massupdate_linhes.py b/build_tools/bin/massupdate_linhes.py new file mode 100644 index 0000000..3202964 --- /dev/null +++ b/build_tools/bin/massupdate_linhes.py @@ -0,0 +1,170 @@ +# -*- coding: utf-8 -*- +import os +import re +import commands + +def create_pkglist(repodir): + group_list={} + os.chdir(str(repodir)) + dir_list = os.listdir(".") + for dir in dir_list: + if os.path.isdir(dir): + #print "found a dir:%s" %dir + + dir_walk = dir + for root, dirs, files in os.walk(dir_walk): + #print "walking %s,%s" %(root,dirs) + for file in [f for f in files]: + if file == "PKGBUILD" : + topdir="%s/%s" %(repodir, root) + if "linhes_pkgbuild" in topdir: + if ("core" in topdir) or ("extra" in topdir): + pass + else: + print "%s not LINHES" %topdir + print "skipping" + continue + + currentfile = topdir + "/PKGBUILD" + if os.path.isfile(currentfile): + pkgname="unknown" + pkgversion="unknown" + pkgdescription="unknown" + pkggroup=[] + try: + f= open(currentfile,"r") + file_contents= f.readlines() + f.close() + for line in file_contents: + if line.strip().startswith("pkgname"): + pkgname=line.partition("=")[2].strip() + + elif line.strip().startswith("pkgver"): + pkgversion=line.partition("=")[2] + + elif line.strip().startswith("pkgdesc"): + pkgdescription=line.partition("=")[2] + + elif line.strip().startswith("groups"): + l=line.partition("=")[2].strip() + for c in ['(',')',"'"]: + l = l.replace( c, '' ) + pkggroup=l.split() + except: + pass + + #temptuple=(pkgname,topdir) + #group_list.append(temptuple) + group_list[pkgname] = topdir + #print repodir + #print root + #print dirs + #print file + os.chdir("..") + return group_list + +def updatepkg(abslocation,linheslocation): + print "\n\n" + print "%s - > %s " %(abslocation, linheslocation) + print "---------------------------------------------------------------" + cmd = '''rsync -avchp -delete-after --stats --exclude="src" %s/ %s''' %(abslocation, linheslocation) + totalfiles=0 + global updated + global failed + global no_update + rc,output = commands.getstatusoutput(cmd) + # print output + for line in output.split("\n"): + #print line + sline=line.strip() + if line.startswith("Number of files transferred"): + totalfiles=line.split(":")[1].strip() + if rc == 0: + #print totalfiles + totalfiles = int(totalfiles.strip()) + if totalfiles >= 1 : + # print "total files transferred is more then 0" + cmd = "touch %s/.updated" %linheslocation + os.system(cmd) + updated = updated + 1 + else: + cmd = "touch %s/.no_update" %linheslocation + os.system(cmd) + no_update = no_update +1 + else: + cmd = "touch %s/.updated_failed" %linheslocation + os.system(cmd) + failed = failed + 1 + + print " updated: %s " %updated + print "no_update: %s " %no_update + print " failed: %s " %failed + + + + +skip_changelist="/tmp/update_list/changelist" +updatedlist="/tmp/update_list/updatedlist" +not_in_abs="/tmp/update_list/not_in_abs" + +skipfile = open(skip_changelist,"w") +updatefile = open(updatedlist,"w") +not_absfile = open(not_in_abs,"w") + + +abslist = create_pkglist("/var/abs") +linheslist = create_pkglist("/data/linhes_pkgbuild/abs") + +global updated +global failed +global no_update +updated=0 +failed=0 +no_update=0 + +for pkgname, pkglocation in linheslist.iteritems(): + + #print pkgname, pkglocation + if "mv-core" in pkglocation : + continue + if "mythtv" in pkglocation : + continue + if ("core" in pkglocation) or ("extra" in pkglocation): + pass + else: + continue + + + abslocation = '' + try: + abslocation = abslist[pkgname] + except: + # print "pkg is not found in abs %s" %pkgname + outline = "%s : %s \n" %(pkgname, pkglocation) + not_absfile.write(outline) + continue + + + #print "ABSLOCATION %s" %abslocation + #print "LINHES LOCATION %s" %pkglocation + changelog = pkglocation + "/__changelog" + if os.path.isfile(changelog): + # print "%s: pkg has linhes changelog, skipping" %pkgname + outline = "%s : %s \n" %(pkgname, pkglocation) + skipfile.write(outline) + else: + #print "%s: updating from ABS" %pkgname + outline = "%s : %s | %s \n" %(pkgname, pkglocation, abslocation) + updatefile.write(outline) +# updatepkg(abslocation,pkglocation) + + + +skipfile.close() +updatefile.close() +not_absfile.close() + + + + + |