#!/usr/bin/python -tt import sys import os from repomd import packageSack from repomd import packageObject from repomd import repoMDObject from repomd import mdUtils from repomd import mdErrors def getSack(basepath,repoid): pkgSack = packageSack.XMLPackageSack(packageObject.RpmXMLPackageObject) repomdxmlfile = os.path.join(basepath, 'repodata/repomd.xml') try: repodata = repoMDObject.RepoMD(repoid, repomdxmlfile) except mdErrors.RepoMDError, e: print >> sys.stderr, e sys.exit(1) (pbase, phref) = repodata.primaryLocation() processlist = [phref] for file in processlist: complete = basepath + '/' + file try: pkgSack.addFile(repoid, complete, None) except mdErrors.PackageSackError, e: print >> sys.stderr, e sys.exit(1) return pkgSack if __name__ == "__main__": if len(sys.argv) < 3: print '%s: /path/to/repo /other/repo' % sys.argv[0] sys.exit(1) sack1 = getSack(sys.argv[1], 'repo1') sack2 = getSack(sys.argv[2], 'repo2') pkgs1 = {} pkgs2 = {} for pkg in sack1.returnPackages(): if pkg.returnSimple('arch') == "src": continue pkgs1[pkg.returnSimple('name')] = pkg for pkg in sack2.returnPackages(): if pkg.returnSimple('arch') == "src": continue pkgs2[pkg.returnSimple('name')] = pkg newpkgs = [] delpkgs = [] for pkg in pkgs1.keys(): if not pkgs2.has_key(pkg): delpkgs.append(pkgs1[pkg]) for pkg in pkgs2.keys(): if not pkgs1.has_key(pkg): newpkgs.append(pkgs2[pkg]) newpkgs.sort() print "\nNew packages:" for p in newpkgs: print p delpkgs.sort() print "\nRemoved packages:" for p in delpkgs: print p