#! /usr/bin/python -tt import os from os.path import basename import sys import glob from subprocess import call apply_delta = "/usr/bin/applydeltarpm" if len(sys.argv) < 3: print >>sys.stderr, "\ Usage: delta-rpm-dir ..." sys.exit(1) # print "Doing delta checks for:", sys.argv[1:] for delta_path_fname in glob.glob(sys.argv[1] + '/*.drpm'): # drpms are of the form: -_..drpm # rpms are of the form: -..rpm fname = basename(delta_path_fname) fname = fname[:-len('.drpm')] fname, arch = fname.rsplit('.', 1) name, old_v, fname, new_r = fname.rsplit('-', 3) # _ doesn't seem to be used in versions/releases, but if it is it just means # we won't be able to delta that pkg. old_r, new_v = fname.split('_', 1) old_fname = "%s-%s-%s.%s.rpm" % (name, old_v, old_r, arch) new_fname = "%s-%s-%s.%s.rpm" % (name, new_v, new_r, arch) new_path_fname = sys.argv[2] + '/' + new_fname if os.path.exists(new_path_fname): continue for dname in sys.argv[2:]: old_path_fname = dname + '/' + old_fname if not os.path.exists(old_path_fname): continue print "Applying Delta:", basename(old_path_fname), "=>" print " ", basename(new_path_fname) call([apply_delta, '-a', arch, '-r', old_path_fname, delta_path_fname, new_path_fname]) break