Files
rpmbuild/make_rpm_extfw.py
2026-07-18 13:06:31 +02:00

160 lines
5.2 KiB
Python
Executable File

#!/usr/bin/python
# -*- coding: utf-8 -*-
import platform
import getopt
import os
import sys
loc = os.path.dirname( sys.argv[0] )
loc = os.path.abspath( loc )
execfile(os.path.join( loc, 'helpers.py') )
def copy_spec( src_filepath, dest_path, version_str, version_rev, project ):
f = open( src_filepath, 'r' )
content = f.read()
f.close()
jenkins_build_tag = os.getenv( "BUILD_TAG" )
if jenkins_build_tag == None or len(jenkins_build_tag) == 0:
jenkins_build_tag = 'Not build with jenkins job'
content = content.replace( "@OS_SYSTEM@", getOS_Name() )
content = content.replace( "@PACKAGER@", getpass.getuser() )
content = content.replace( "@VERSION@", version_str )
content = content.replace( "@RELEASE@", version_rev )
content = content.replace( "@PROJECT@", project )
content = content.replace( "@JENKINS_BUILD_TAG@", jenkins_build_tag )
f = open( os.path.join( dest_path, os.path.split( src_filepath )[1] ), 'w' )
f.write( content )
f.close()
def usage():
print >> sys.stdout, "Usage: %s [-e <extfw_src_dir(s)> ] -s <spec_file_loc> -o rpm_output_directory" % sys.argv[0]
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "e:f:o:p:r:s:v:",
["extfw=", "filelist=", "output_dir=", "project_name=", "repository=", "spec=", "version="])
except getopt.GetoptError, err:
print >> sys.stderr, err
usage()
sys.exit(2)
project_name = 'ctc'
repository = 'TDS'
output_dir = None
rpm_filelist = None
extfw_src_dirs = ('/opt/EXTFW').split()
spec_file = None
version_maj = 1
version_min = 0
version_rev = 0
for o, a in opts:
if o in ("-e", "--extfw"):
extfw_src_dirs = a.split()
if o in ("-f", "--filelist"):
rpm_filelist = a
if o in ("-o", "--output_dir"):
output_dir = a
if o in ("-p", "--project_name"):
project_name = a
if o in ("-rp", "--repository"):
repository = a
if o in ("-s", "--spec"):
spec_file = a
if o in ("-v", "--version"):
version = a.split('.')
try:
version_maj = version[0]
version_min = version[1]
except:
die( "Invalid version format (maj.min): %s" % a )
if not spec_file or not os.path.isfile( spec_file ):
usage()
die("Spec file location not defined or spec file not found (%s)" % spec_file)
for src_path in extfw_src_dirs:
if not os.path.exists(src_path):
usage()
die("Source location %s not accessible" % src_path)
if output_dir == None:
usage()
die("Output directory not given" )
rpmbase_dir = "/usr/src/packages/"
try:
ver=platform.dist()[1].split('.')[0]
if int(ver) >= 12:
rpmbase_dir = os.path.join( os.getenv( "HOME" ), 'rpmbuild' )
except:
print "Could not determine platform - assuming /usr/src/packages as rpmbuild base dir"
sys.exit(1)
print "Using rpmbuild base dir %s" % rpmbase_dir
spec_file = os.path.abspath( spec_file )
extfw_path = os.path.join( os.path.dirname( os.path.dirname( spec_file ) ), 'EXTFW' )
if not os.path.exists(extfw_path):
die("EXTFW svn path %s does not exist" % extfw_path )
extfw_builddir_base = os.path.join( '/tmp', 'TDS-rpmbuild' )
removeDirectory( extfw_builddir_base )
for src_path in extfw_src_dirs:
while src_path[-1] == '/':
src_path = src_path[:-1]
tail = src_path.split('/')[-1]
extfw_builddir_extfw = os.path.join( extfw_builddir_base, 'opt', tail )
os.makedirs( extfw_builddir_extfw )
copySrcDirToDestDir( src_path, extfw_builddir_extfw, 0644, True )
try:
os.remove( os.path.join(extfw_builddir_extfw, 'lib64') )
except:
debug( 'Could not remove lib64 symlink' )
specdir = os.path.join(rpmbase_dir, "SPECS")
version_str = "%s.%s" % ( version_maj, version_min )
version_rev = getSvn_Release( extfw_path )
version_date = getSvn_Date( extfw_path )
full_version = "%s.%s-%s" % ( version_maj, version_min, version_rev )
print "Spec-File: %s" % ( spec_file )
print "Version: %s" % ( full_version )
print "Date: %s" % ( version_date )
copy_spec( spec_file, specdir, version_str, version_rev, project_name )
exec_rpmbuild( specdir, os.path.split( spec_file )[1], extfw_builddir_base )
removeDirectory( extfw_builddir_base )
dstdir = os.path.join( output_dir, "%s-%s-%s" % ( project_name, repository, full_version ) )
filter = re.compile( "^.*%s\..*\.rpm$" % full_version )
moved_files = moveFilesToDir( rpmbase_dir,
dstdir,
filter,
True )
if rpm_filelist != None:
try:
f = open( rpm_filelist, 'w' )
for m in moved_files:
f.write( '%s\n' % m )
f.close()
except:
die( 'Error creating fileslist %s' % rpm_filelist )
if __name__ == "__main__":
main()