7 from optparse import OptionParser
10 usage="%prog [rpmbuild-options] specfile pkg-name"
11 parser=OptionParser(usage=usage)
12 parser.add_option('-t','--target',action='store',dest='target',default=None,
13 help='specify target arch')
14 parser.add_option('-w','--whitelist-rpms',action='store',dest='whitelist',default='',
15 help='comma separated list of rpms to expose in makefile')
16 (options,args) = parser.parse_args()
19 [specfile,package_name]=args
24 ts=rpm.TransactionSet()
25 specobj = ts.parseSpec(specfile)
26 for (fullsource,_,__) in specobj.sources:
27 #print '###fullsource=',fullsource
28 print "%s.tarballs += SOURCES/%s" %(package_name,os.path.basename(fullsource))
29 for suffix in [".tar.gz", ".tgz", ".tar.bz2", ] :
30 #print "# trying %s"%suffix
31 if fullsource.endswith(suffix):
32 sourcename=fullsource.replace(suffix,"")
33 print "%s.source := SOURCES/%s" %(package_name,os.path.basename(sourcename))
36 # Get SRPM name from name of first package
37 package=specobj.packages[0]
38 header0=package.header
39 name=header0.format('%{name}')
40 version=header0.format('%{version}')
41 release=header0.format('%{release}')
42 print "%s.srpm := SRPMS/%s-%s-%s.src.rpm"%(package_name, name, version, release)
44 target = options.target
45 whitelist=options.whitelist.split(',')
46 # Print non-empty packages
47 for package in specobj.packages:
49 name=header.format('%{name}')
50 version=header.format('%{version}')
51 release=header.format('%{release}')
52 arch=target or header.format('%{arch}')
55 if not (name and version and release and arch) : continue
57 whitelisted = name in whitelist
59 if header.fullFilelist or whitelisted:
60 # attach (add) rpm path to package
61 print "%s.rpms += RPMS/%s/%s-%s-%s.%s.rpm"%\
62 (package_name, arch, name, version, release, arch)
64 print "%s.rpmnames += %s"%\
66 # attach path to rpm name
67 print "%s.rpm-path := RPMS/%s/%s-%s-%s.%s.rpm"%\
68 (name,arch, name, version, release, arch)
69 # attach package to rpm name for backward resolution - should be unique
70 print "%s.package := %s"%\
73 for macro in ["release" , "name" , "version" , "taglevel" , ] :
75 try: print "%s.rpm-%s := %s"%(package_name,macro,header0.format(format))
76 except : print "# %s.rpm-%s undefined"%(package_name,macro)
79 print "%s.rpm-arch := %s"%(package_name,target)
81 if __name__ == '__main__':