SVN: people/arekm: . ftp_admin ftp_admin/ac-th-diff.py ftp_admin/clean-dups.py ftp_admin/clean-test....

arekm arekm at pld-linux.org
Fri Jun 27 11:04:44 CEST 2008


Author: arekm
Date: Fri Jun 27 11:04:44 2008
New Revision: 9826

Added:
   people/arekm/
   people/arekm/ftp_admin/
   people/arekm/ftp_admin/ac-th-diff.py   (contents, props changed)
   people/arekm/ftp_admin/clean-dups.py   (contents, props changed)
   people/arekm/ftp_admin/clean-test.sh   (contents, props changed)
   people/arekm/ftp_admin/consistency-check.sh   (contents, props changed)
   people/arekm/ftp_admin/freshness.sh   (contents, props changed)
   people/arekm/ftp_admin/ftp-freshness.py   (contents, props changed)
Log:
Various scripts used on ftp th.


Added: people/arekm/ftp_admin/ac-th-diff.py
==============================================================================
--- (empty file)
+++ people/arekm/ftp_admin/ac-th-diff.py	Fri Jun 27 11:04:44 2008
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+
+import os
+import re
+import struct
+
+acdir = "/home/ftp/pub/Linux/PLD/dists/ac/PLD/SRPMS/SRPMS"
+thdir = "/home/ftp/pub/Linux/PLD/dists/th/PLD/SRPMS/RPMS/"
+
+thpkg = []
+acpkg = []
+
+ign = '^(xorg-.*|X11-.*|XcursorTheme-.*)$'
+re_c = re.compile(ign)
+
+re_n = re.compile('^(.*)-([^-]*)-([^-]*)$')
+
+def getname(file):
+	#f = os.popen('rpm --nomd5 --nodigest --nosignature -qp --queryformat "%{NAME}" ' + file, "r")
+	#name = f.read()
+	#f.close()
+	#f = open(file, 'rb')
+	#rpmlead = f.read(96)
+	#f.close()
+	#data = struct.unpack("6B2h66s2h16s", rpmlead)
+	#name = data[8].strip()
+	#print name
+	m = re_n.match(file)
+	name =  m.group(1).strip()
+	return name
+
+for rpm in os.listdir(acdir):
+	if re_c.match(rpm):
+		continue
+	acpkg.append(getname(rpm))
+
+for rpm in os.listdir(thdir):
+	if re_c.match(rpm):
+		continue
+	thpkg.append(getname(rpm))
+
+thpkg.sort()
+acpkg.sort()
+
+print "*****************************************************"
+print "Packages in AC repo that are not in TH repo:"
+for pkg in acpkg:
+	if pkg not in thpkg:
+		print pkg
+
+print
+print
+print "*****************************************************"
+print "Packages in TH repo that are not in AC repo:"
+for pkg in thpkg:
+	if pkg not in acpkg:
+		print pkg

Added: people/arekm/ftp_admin/clean-dups.py
==============================================================================
--- (empty file)
+++ people/arekm/ftp_admin/clean-dups.py	Fri Jun 27 11:04:44 2008
@@ -0,0 +1,69 @@
+#!/usr/bin/python
+# arekm, 2008
+# remove 
+
+import os
+import re
+import time
+import rpm
+import sys
+
+re_info = re.compile(r'.*\.info$')
+re_nvr = re.compile('^(.*)-([^-]*)-([^-]*)\.info$')
+dir = '/home/pld/admins/th/ftp/test/SRPMS/.metadata'
+
+def compare(f1, f2):
+	m1 = re_nvr.match(f1)
+	n1 = m1.group(1)
+	v1 = m1.group(2)
+	r1 = m1.group(3)
+
+	m2 = re_nvr.match(f2)
+	n2 = m2.group(1)
+	v2 = m2.group(2)
+	r2 = m2.group(3)
+
+	l1 = rpm.labelCompare((n1, v1, r1), (n2, v2, r2))
+	l2 = rpm.labelCompare((n2, v2, r2), (n1, v1, r1))
+
+	if l1 > 0 and l2 > 0:
+		return 0
+
+	return -l1
+
+
+def find_old(files):
+	return sorted(files, compare)
+
+files = {}
+dupes = {}
+
+for file in os.listdir(dir):
+	if not re_info.match(file):
+		continue
+
+	m = re_nvr.match(file)
+	if not m:
+		print "problem with: %s" % file
+		sys.exit(1)
+
+	p = os.path.join(dir, file)
+	mtime = os.stat(p).st_mtime
+	if mtime > time.time() - 3*86400:
+		continue
+
+	name = m.group(1)
+
+	if files.has_key(name):
+		if not name in dupes:
+			if dupes.has_key(name):
+				dupes[name].append(file)
+			else:
+				dupes[name] = [ files[name] ]
+				dupes[name].append(file)
+	else:
+		files[name] = file
+
+for i in dupes.iterkeys():
+	for old in find_old(dupes[i])[1:]:
+		os.system("/home/pld/admins/th/pld-ftp-admin/scripts/remove.py test %s" % old)

Added: people/arekm/ftp_admin/clean-test.sh
==============================================================================
--- (empty file)
+++ people/arekm/ftp_admin/clean-test.sh	Fri Jun 27 11:04:44 2008
@@ -0,0 +1,6 @@
+#!/bin/sh
+cd /home/pld/admins/th/ftp/test/SRPMS/.metadata || exit 1
+for file in `find . -name '*.info' -mtime +5 -print`; do
+	~/pld-ftp-admin/scripts/test-move.py test ready "$file" | grep "has only src.rpm built" && ~/pld-ftp-admin/scripts/remove.py rmpkg test "$file"
+done
+

Added: people/arekm/ftp_admin/consistency-check.sh
==============================================================================
--- (empty file)
+++ people/arekm/ftp_admin/consistency-check.sh	Fri Jun 27 11:04:44 2008
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+LC_ALL=C; export LC_ALL
+
+gen_list()
+{
+	/usr/bin/poldek -O "auto directory dependencies = yes" \
+	--ignore "*-debuginfo-*" --ignore "db4.6*" \
+	--ignore "boost*1.34*" \
+	--verify=deps -Q $2 | \
+	egrep -v "(FileDigestParameterized|unsatisfied dependencies found|-multilib-|zsh/latest/functions|VirtualBox.*libc\.so\.6|obextool.*libc\.so\.6)" | \
+	grep -v "uname(release)" >> $1
+}
+
+gen_list_uniq()
+{
+	/usr/bin/poldek -O "unique package names = yes" \
+	-O "auto directory dependencies = yes" \
+	--ignore "*-debuginfo-*" --ignore "db4.6*" \
+	--ignore "boost*1.34*" \
+	--verify=deps -Q $2 | \
+	egrep -v "(FileDigestParameterized|unsatisfied dependencies found|-multilib-|zsh/latest/functions|VirtualBox.*libc\.so\.6|obextool.*libc\.so\.6)" | \
+	grep -v "uname(release)" >> $1
+}
+
+date > $HOME/www/main.txt
+gen_list "$HOME/www/main.txt" "-s $HOME/ftp/PLD/i686/RPMS/ -s $HOME/ftp/PLD/noarch/RPMS/"
+
+date > $HOME/www/main-ready.txt
+gen_list_uniq "$HOME/www/main-ready.txt" "-s $HOME/ftp/PLD/i686/RPMS/ -s $HOME/ftp/PLD/noarch/RPMS/ -s $HOME/ftp/ready/i686/RPMS/ -s $HOME/ftp/ready/noarch/RPMS/"
+
+date > $HOME/www/main-ready-test.txt
+gen_list_uniq "$HOME/www/main-ready-test.txt" "-s $HOME/ftp/PLD/i686/RPMS/ -s $HOME/ftp/PLD/noarch/RPMS/ -s $HOME/ftp/ready/i686/RPMS/ -s $HOME/ftp/ready/noarch/RPMS/ -s $HOME/ftp/test/i686/RPMS/ -s $HOME/ftp/test/noarch/RPMS/"
+
+date > $HOME/www/ac-th-diff.txt
+$HOME/bin/ac-th-diff.py >> $HOME/www/ac-th-diff.txt
+
+chmod 644 $HOME/www/*.txt
+

Added: people/arekm/ftp_admin/freshness.sh
==============================================================================
--- (empty file)
+++ people/arekm/ftp_admin/freshness.sh	Fri Jun 27 11:04:44 2008
@@ -0,0 +1,6 @@
+#!/bin/sh
+date > $HOME/www/freshness.txt.new
+$HOME/bin/ftp-freshness.py >> $HOME/www/freshness.txt.new 2>&1
+chmod 644 $HOME/www/freshness.txt.new
+mv $HOME/www/freshness.txt.new $HOME/www/freshness.txt
+

Added: people/arekm/ftp_admin/ftp-freshness.py
==============================================================================
--- (empty file)
+++ people/arekm/ftp_admin/ftp-freshness.py	Fri Jun 27 11:04:44 2008
@@ -0,0 +1,110 @@
+#!/usr/bin/python
+# arekm, 2007
+
+import os
+import re
+import struct
+import rpm
+
+# 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" ]
+cvsdir = "/home/pld/admins/th/SPECS"
+
+os.system("cd %s/ && cvs -q -z3 up -Pd -A > /dev/null" % cvsdir)
+
+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" ' + cvsdir + '/' + 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:
+			cvs_nvr = self.cvs[name]
+			pkg_nvr = self.pkg[name]
+			print "CVS: %s-%s-%s vs FTP: %s-%s-%s" % (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 ***"
+		for name in self.cvs_new_nv:
+			cvs_nvr = self.cvs[name]
+			pkg_nvr = self.pkg[name]
+			print "CVS: %s-%s-%s vs FTP: %s-%s-%s" % (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()


More information about the pld-cvs-commit mailing list