#!/usr/bin/python # lists current packages in Fedora releases from fedora.client import PackageDB import commands import re import sys if len(sys.argv) > 1: release = sys.argv[1] else: release = 'f18' print release + ':' updates = '' repofrompath = '' if re.match("f", release): repoid = 'fedora' releasever = release.lstrip('f') updates = '--repoid=updates' if release > 'f17': updates = ' ' if release == 'f19': # repoid = 'koji' releasever = 'rawhide' elif re.match("el", release): repoid = 'epel' releasever = release.lstrip('el') # repofrompath = '--repofrompath=epel,http://download.fedoraproject.org/pub/epel/' + releasever + '/x86_64' else: print 'Unknown release: ' + release exit(1) do_hackage = (release == 'f18') pkgdb = PackageDB() p = pkgdb.user_packages('haskell-sig') # skip ghc-ghc: internal to ghc # random is still in ghc70 but not ghc74 ghc_pkgs = ['ghc-Cabal', 'ghc-array', 'ghc-base', 'ghc-bytestring', 'ghc-containers', 'ghc-directory', 'ghc-extensible-exceptions', 'ghc-filepath', 'ghc-haskell2010', 'ghc-haskell98', 'ghc-hpc', 'ghc-old-locale', 'ghc-old-time', 'ghc-pretty', 'ghc-process', 'ghc-random', 'ghc-template-haskell', 'ghc-time', 'ghc-unix'] # condition to avoid duplicate of random packages = [pkg['name'] for pkg in p.pkgs if pkg['name'] not in ghc_pkgs] + ['hedgewars-server'] pkgvers = [] pkgs = [] if do_hackage: hackages = [] repoquery = 'repoquery --quiet --repoid=' + repoid + ' ' + updates + repofrompath + ' --releasever=' + releasever + ' --qf "%{name}-%{version}" ' for pkg in packages + ghc_pkgs: latest = commands.getoutput(repoquery + pkg + '.x86_64 | head -1') if latest: print latest pkgvers.append(latest) (pkgname, dash, pkgver) = latest.rpartition('-') pkgs.append(pkgname) # exclude non-hackage packages if do_hackage and pkgname not in ['cabal2spec','emacs-haskell-mode','ghc', 'ghc-rpm-macros','hedgewars-server','hugs98']: name = pkgname.replace('ghc-','',1) if pkgname in ghc_pkgs: pkgname = 'ghc' if pkgname == 'Agda': name = 'Agda-executable' result = "(\"%s\",\"%s\",Just \"https://admin.fedoraproject.org/community/?package=%s#package_maintenance\")" % (name,pkgver,pkgname) hackages.append(result) f = open(release, 'w') for l in sorted(pkgvers): f.write(l+'\n') p = open(release + '-pkgs', 'w') for l in sorted(pkgs): p.write(l+'\n') if do_hackage: h = open('Hackage', 'w') for l in sorted(hackages): h.write(l+'\n')