X-Git-Url: https://git.tld-linux.org/?p=tld-ftp-admin.git;a=blobdiff_plain;f=wwwbin%2Fftp-freshness.py;fp=wwwbin%2Fftp-freshness.py;h=0000000000000000000000000000000000000000;hp=aa27b376e97b7fa7b77f58a4d7131537276cfa4c;hb=f7b22268ab563fa906be0653d037f1805e220e5c;hpb=b7b854ca43601a08077b7c4c4fa1313a198d936a diff --git a/wwwbin/ftp-freshness.py b/wwwbin/ftp-freshness.py deleted file mode 100755 index aa27b37..0000000 --- a/wwwbin/ftp-freshness.py +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/python -# arekm, 2007 - -import os -import re -import struct -import rpm -import subprocess - -# earlier == more important -dirs = [ "/home/ftp/pub/Linux/PLD/dists/th/test/SRPMS/RPMS/", - "/home/ftp/pub/Linux/PLD/dists/th/ready/SRPMS/RPMS/", - "/home/ftp/pub/Linux/PLD/dists/th/PLD/SRPMS/RPMS/" ] -#dirs = [ "/home/pld/admins/th/1" ] -specsdir = "/home/pld/admins/th/SPECS" - -if os.path.isdir(specsdir): - os.chdir(specsdir) - cmd = ['git', 'pull'] -else: - cmd = ['git', 'clone', '--depth=1', 'git://git.pld-linux.org/SPECS', specsdir] - -p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) -(out, err) = p.communicate(None) - - -os.chdir(specsdir) -class Pkgs(object): - def __init__(self): - self.pkg = {} - self.cvs = {} - self.cvs_new_nvr = [] - self.cvs_new_nv = [] - self.re_n = re.compile('^(.*)-([^-]*)-([^-]*)\.src\.rpm$') - - def __get_from_rpm(self, file_name): - m = self.re_n.match(file_name) - if not m: - return False - name = m.group(1).strip() - version = m.group(2).strip() - release = m.group(3).strip() - return (name, version, release) - - def __get_from_cvs(self, name): - f = os.popen('rpm --specfile -q --queryformat "%{name}\n%{version}\n%{release}\n" ' + specsdir + '/' + name + '.spec 2> /dev/null', 'r') - name = f.readline().strip() - version = f.readline().strip() - release = f.readline().strip() - f.close() - return (name, version, release) - - def __update_cvs(self, name): - if not self.cvs.has_key(name): - self.cvs[name] = self.__get_from_cvs(name) - - def __update_new(self, name): - cvs_nvr = self.cvs[name] - pkg_nvr = self.pkg[name] - - cvs_rpm_vr = rpm.labelCompare((cvs_nvr[0], cvs_nvr[1], cvs_nvr[2]), (pkg_nvr[0], pkg_nvr[1], pkg_nvr[2])) - cvs_rpm_v = rpm.labelCompare((cvs_nvr[0], cvs_nvr[1], ""), (pkg_nvr[0], pkg_nvr[1], "")) - rpm_cvs_vr = rpm.labelCompare((pkg_nvr[0], pkg_nvr[1], pkg_nvr[2]), (cvs_nvr[0], cvs_nvr[1], cvs_nvr[2])) - rpm_cvs_v = rpm.labelCompare((pkg_nvr[0], pkg_nvr[1], ""), (cvs_nvr[0], cvs_nvr[1], "")) - - if rpm_cvs_v < 0 and cvs_rpm_v > 0: - self.cvs_new_nv.append(name) - else: - if rpm_cvs_vr < 0 and cvs_rpm_vr > 0 and cvs_nvr[1] == pkg_nvr[1]: - self.cvs_new_nvr.append(name) - - def prepare(self): - self.cvs_new_nvr.sort() - self.cvs_new_nvr = list(set(self.cvs_new_nvr)) - self.cvs_new_nv.sort() - self.cvs_new_nv = list(set(self.cvs_new_nv)) - - pkgs = list(self.pkg) + list(self.cvs) - - for name in list(set(pkgs)): - self.__update_new(name) - - def add_rpm(self, file_name): - nvr = self.__get_from_rpm(file_name) - if not nvr: - return False - name = nvr[0] - if self.pkg.has_key(name): - if rpm.labelCompare(nvr, self.pkg[name]) > 0: - del self.pkg[name] - self.pkg[name] = nvr - else: - self.pkg[name] = nvr - self.__update_cvs(name) - - def print_nvr(self): - print "*** VERSION-RELEASE COMPARE FOR THE SAME VERSIONS ONLY ***" - for name in self.cvs_new_nvr: - self.cvs_new_nvr.sort() - cvs_nvr = self.cvs[name] - pkg_nvr = self.pkg[name] - print "GIT: [%s.spec] %s-%s-%s vs FTP: %s-%s-%s" % (name, cvs_nvr[0], cvs_nvr[1], cvs_nvr[2], pkg_nvr[0], pkg_nvr[1], pkg_nvr[2]) - - def print_nv(self): - print "*** VERSION COMPARE ONLY ***" - self.cvs_new_nv.sort() - for name in self.cvs_new_nv: - cvs_nvr = self.cvs[name] - pkg_nvr = self.pkg[name] - print "GIT: [%s.spec] %s-%s-%s vs FTP: %s-%s-%s" % (name, cvs_nvr[0], cvs_nvr[1], cvs_nvr[2], pkg_nvr[0], pkg_nvr[1], pkg_nvr[2]) - -p = Pkgs() - -for d in dirs: - for rpm_file_name in os.listdir(d): - p.add_rpm(rpm_file_name) - -p.prepare() - -p.print_nv() -print "\n\n" -p.print_nvr()