From 93b2295180471308e969640472bdc601d1f10015 Mon Sep 17 00:00:00 2001 From: Jonathan Dieter Date: Tue, 19 Jun 2007 16:59:35 +0300 Subject: Small changes Signed-off-by: Jonathan Dieter --- createprestorepo/gendeltarpms.py | 59 +++++++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 16 deletions(-) (limited to 'createprestorepo/gendeltarpms.py') diff --git a/createprestorepo/gendeltarpms.py b/createprestorepo/gendeltarpms.py index fc4a9ca..26d795b 100755 --- a/createprestorepo/gendeltarpms.py +++ b/createprestorepo/gendeltarpms.py @@ -105,7 +105,7 @@ def getFileList(path, ext, filelist): return filelist -def createPrestoRepo(base_dir, drpm_dir): +def createPrestoRepo(base_dir, drpm_dir, dst_dir=None): ts = rpmUtils.transaction.initReadOnlyTransaction() changed = False @@ -115,11 +115,18 @@ def createPrestoRepo(base_dir, drpm_dir): print 'Using destination dir: %s' % drpm_dir rpm_files = getFileList(base_dir, ".rpm", []) - drpm_files = getFileList(base_dir, ".drpm", []) + if dst_dir != None: + dst_rpm_files = getFileList(dst_dir, ".rpm", []) + drpm_files = getFileList(drpm_dir, ".drpm", []) + if not len(rpm_files): print ' Nothing found.' return changed + if dst_dir != None and not len(dst_rpm_files): + print ' No new rpms found.' + return changed + # Check whether rel_dir exists, and if it doesn't, create it if not os.access(drpm_dir, os.F_OK): os.makedirs(drpm_dir, 0755) @@ -144,6 +151,24 @@ def createPrestoRepo(base_dir, drpm_dir): rpm = RpmItem(nevra, f) rpm_list.addRpm(rpm) + # If we have a new distro, add its rpms with epoch bumped +5 + if dst_dir != None: + for f in dst_rpm_files: + try: + hdr = rpmUtils.miscutils.hdrFromPackage(ts, f) + except: + print "Unable to open %s" % f + else: + nm = hdr['name'] + "." + hdr['arch'] + e = hdr['epoch'] + if e is None: + e = "0" + e = str(int(e) + 5) + + nevra = (hdr['name'], e, hdr['version'], hdr['release'], hdr['arch']) + rpm = RpmItem(nevra, f) + rpm_list.addRpm(rpm) + # Add all deltarpms to PackageList for f in drpm_files: try: @@ -167,23 +192,25 @@ def createPrestoRepo(base_dir, drpm_dir): rpm_list.dump() # Build deltarpms - rpm_list.makeDeltaRpms() - -def main(bin_rpm_path, delta_rpm_path): - assert rpmUtils.miscutils.compareEVR((1,2,3),(1,2,0)) > 0 - assert rpmUtils.miscutils.compareEVR((0,1,2),(0,1,2)) == 0 - assert rpmUtils.miscutils.compareEVR((1,2,3),(4,0,99)) < 0 - - return createPrestoRepo(bin_rpm_path, delta_rpm_path) - + if dst_dir != None: + rpm_list.makeDeltaRpms(DrpmsPerPackage=1, DoFirst=False) + else: + rpm_list.makeDeltaRpms(DrpmsPerPackage=5) if __name__ == '__main__': - if len(sys.argv) < 2: - print 'Usage: %s \n' % os.path.basename(sys.argv[0]) + if len(sys.argv) < 2 or (sys.argv[1] == "-d" and len(sys.argv) < 4): + print 'Usage: %s ' % os.path.basename(sys.argv[0]) + print ' %s -d ' % os.path.basename(sys.argv[0]) sys.exit(errno.EINVAL) - bin_rpm_path = sys.argv[1] - delta_rpm_path = sys.argv[2] + if sys.argv[1] != "-d": + bin_rpm_path = sys.argv[1] + delta_rpm_path = sys.argv[2] + createPrestoRepo(bin_rpm_path, delta_rpm_path) + else: + src_bin_rpm_path = sys.argv[2] + dst_bin_rpm_path = sys.argv[3] + delta_rpm_path = sys.argv[4] + createPrestoRepo(src_bin_rpm_path, delta_rpm_path, dst_bin_rpm_path) - main(bin_rpm_path, delta_rpm_path) sys.exit(0) -- cgit