X-Git-Url: http://git.onelab.eu/?p=build.git;a=blobdiff_plain;f=spec2make.py;h=2f59af58d2bc1981a84d5af14c5d4fb95b07e1ad;hp=a2bc7bff018ca8506c5516f7910a297b42b80ec1;hb=48518c14cc5d98166f0b084286b82f2431c4fdb3;hpb=140ec07b8ce5a7f3994f1c0f14a22c8a04940691 diff --git a/spec2make.py b/spec2make.py index a2bc7bff..2f59af58 100755 --- a/spec2make.py +++ b/spec2make.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python3 import sys import os.path @@ -6,94 +6,111 @@ import rpm from optparse import OptionParser -def main (): - usage="%prog [rpmbuild-options] specfile pkg-name" - parser=OptionParser(usage=usage) - parser.add_option('-t','--target',action='store',dest='target',default=None, - help='specify target arch') - parser.add_option('-w','--whitelist-rpms',action='store',dest='whitelist',default='', - help='comma separated list of rpms to expose in makefile') - parser.add_option('-1','--with',action='store',dest='with',default='', - help='accept but ignore --with option') - parser.add_option('-0','--without',action='store',dest='without',default='', - help='accept but ignore --without option') - parser.add_option('-d','--define',action='store',dest='define',default='', - help='accept but ignore --define option') - (options,args) = parser.parse_args() + +def main(): + usage = "%prog [rpmbuild-options] specfile pkg-name" + parser = OptionParser(usage=usage) + parser.add_option( + '-t', '--target', action='store', dest='target', default=None, + help='specify target arch') + parser.add_option( + '-w', '--whitelist-rpms', action='store', dest='whitelist', default='', + help='comma separated list of rpms to expose in makefile') + parser.add_option( + '-1', '--with', action='store', dest='with', default='', + help='accept but ignore --with option') + parser.add_option( + '-0', '--without', action='store', dest='without', default='', + help='accept but ignore --without option') + parser.add_option( + '-d', '--define', action='store', dest='define', default='', + help='accept but ignore --define option') + (options, args) = parser.parse_args() try: - [specfile,package_name]=args + specfile, package_name = args except: parser.print_help() sys.exit(1) - ts=rpm.TransactionSet() - specobj = ts.parseSpec(specfile) - for (fullsource,_,__) in specobj.sources: - #print '###fullsource=',fullsource - print "%s.tarballs += SOURCES/%s" %(package_name,os.path.basename(fullsource)) - for suffix in [".tar.gz", ".tgz", ".tar.bz2", ".tar.xz" ] : - #print "# trying %s"%suffix + transaction_set = rpm.TransactionSet() + specobj = transaction_set.parseSpec(specfile) + for (fullsource, _, _) in specobj.sources: + # print '###fullsource=',fullsource + print("%s.tarballs += SOURCES/%s" % + (package_name, os.path.basename(fullsource))) + for suffix in [".tar.gz", ".tgz", ".tar.bz2", ".tar.xz"]: + # print "# trying %s"%suffix if fullsource.endswith(suffix): - sourcename=fullsource.replace(suffix,"") - print "%s.source := SOURCES/%s" %(package_name,os.path.basename(sourcename)) + sourcename = fullsource.replace(suffix, "") + print("%s.source := SOURCES/%s" % + (package_name, os.path.basename(sourcename))) break # Get SRPM name from name of first package - package=specobj.packages[0] - header0=package.header - name=header0.format('%{name}') - version=header0.format('%{version}') - release=header0.format('%{release}') - print "%s.srpm := SRPMS/%s-%s-%s.src.rpm"%(package_name, name, version, release) + package = specobj.packages[0] + header0 = package.header + name = header0.format('%{name}') + version = header0.format('%{version}') + release = header0.format('%{release}') + print("%s.srpm := SRPMS/%s-%s-%s.src.rpm" % + (package_name, name, version, release)) target = options.target - whitelist=[ x for x in options.whitelist.split(',') if x] + whitelist = [x for x in options.whitelist.split(',') if x] # Print non-empty packages - counter=0 + counter = 0 for package in specobj.packages: counter += 1 - header=package.header - name=header.format('%{name}') - version=header.format('%{version}') - release=header.format('%{release}') - arch=target or header.format('%{arch}') - + header = package.header + name = header.format('%{name}') + version = header.format('%{version}') + release = header.format('%{release}') + arch = target or header.format('%{arch}') + # skip dummy entries - if not (name and version and release and arch) : continue + if not (name and version and release and arch): + continue # select relevant packages # could not find the magic recipe to do this properly yet # so ugly temporary hack : # when whitelisted, we expose the first package plus the white-listed ones # otherwise we expose everything - relevant=False - if not whitelist: relevant=True + relevant = False + if not whitelist: + relevant = True else: - if counter==1: relevant=True - else: relevant=name in whitelist + if counter == 1: + relevant = True + else: + relevant = name in whitelist if relevant: # attach (add) rpm path to package - print "%s.rpms += RPMS/%s/%s-%s-%s.%s.rpm"%\ - (package_name, arch, name, version, release, arch) + print("%s.rpms += RPMS/%s/%s-%s-%s.%s.rpm" % + (package_name, arch, name, version, release, arch)) # convenience - print "%s.rpmnames += %s"%\ - (package_name, name); + print("%s.rpmnames += %s" % + (package_name, name)) # attach path to rpm name - print "%s.rpm-path := RPMS/%s/%s-%s-%s.%s.rpm"%\ - (name,arch, name, version, release, arch) + print("%s.rpm-path := RPMS/%s/%s-%s-%s.%s.rpm" % + (name, arch, name, version, release, arch)) # attach package to rpm name for backward resolution - should be unique - print "%s.package := %s"%\ - (name,package_name) - - for macro in ["release" , "name" , "version" , "taglevel" , ] : - format="%%{%s}"%macro - try: print "%s.rpm-%s := %s"%(package_name,macro,header0.format(format)) - except : print "# %s.rpm-%s undefined"%(package_name,macro) + print("%s.package := %s" % + (name, package_name)) + + for macro in ["release", "name", "version", "taglevel", ]: + format = "%%{%s}" % macro + try: + print("%s.rpm-%s := %s" % + (package_name, macro, header0.format(format))) + except: + print("# %s.rpm-%s undefined" % (package_name, macro)) # export arch - print "%s.rpm-arch := %s"%(package_name,target) + print("%s.rpm-arch := %s" % (package_name, target)) + if __name__ == '__main__': main()