From 6ef895bfa388fcd327d205d51fd9af22ec3a8354 Mon Sep 17 00:00:00 2001 From: Torsten Wierschin Date: Sat, 18 Jul 2026 17:20:58 +0200 Subject: [PATCH] Reformates with black --- helpers.py | 344 +++++++++++++++-------------- make_rpm.py | 467 +++++++++++++++++++++------------------- make_rpm15.1.py | 534 ++++++++++++++++++++++++---------------------- make_rpm15.2.py | 532 +++++++++++++++++++++++---------------------- make_rpm7.py | 470 +++++++++++++++++++++------------------- make_rpmSVOnly.py | 502 ++++++++++++++++++++++--------------------- 6 files changed, 1491 insertions(+), 1358 deletions(-) diff --git a/helpers.py b/helpers.py index 6c0b302..e66684f 100755 --- a/helpers.py +++ b/helpers.py @@ -1,11 +1,6 @@ #!/usr/bin/python # -*- coding: utf-8 -*- - - - - - - + import getpass import os @@ -15,192 +10,209 @@ import stat import subprocess import sys - + def verbose(): - verb = os.getenv( "EMERGE_VERBOSE" ) - if ( not verb == None and verb.isdigit() and int(verb) > 0 ): - return int( verb ) + verb = os.getenv("EMERGE_VERBOSE") + if not verb == None and verb.isdigit() and int(verb) > 0: + return int(verb) else: return 0 -def debug( message ): + +def debug(message): if verbose() >= 0: print("debug: %s" % message) return True -def info( message ): + +def info(message): if verbose() >= 0: print("info: %s" % message) return True -def warning( message ): + +def warning(message): print("warning: %s" % message) return True -def error( message ): - die( message ) -def die( message ): +def error(message): + die(message) + + +def die(message): print >> sys.stderr, "emerge fatal error: %s" % message - sys.exit( 1 ) + sys.exit(1) + + +def system(cmdstring, file=None): + debug("Executing '%s'" % cmdstring) + out = subprocess.PIPE + if file != None: + out = file + p = subprocess.Popen(cmdstring, shell=True, stdout=out, stderr=sys.stderr) + ret = p.wait() + if ret != 0: + die("Error executing %s (%s)" % (cmdstring, ret)) + ret = "" + if file == None: + ret = p.stdout.read().strip() + return ret -def system( cmdstring, file = None ): - debug( "Executing '%s'" % cmdstring ) - out = subprocess.PIPE - if file != None: - out = file - p = subprocess.Popen( cmdstring, shell=True, stdout=out, stderr=sys.stderr ) - ret = p.wait() - if ( ret != 0 ): - die( "Error executing %s (%s)" % (cmdstring, ret) ) - ret = "" - if file == None: - ret = p.stdout.read().strip() - return ret def getOS_Name(): - if os.path.exists('/etc/SuSE-release'): - f = open('/etc/SuSE-release', 'r') - rx = re.compile('^VERSION = (.*)$') - for line in f.readlines(): - m = rx.match(line) - if not m: - line = re.sub('\s', '', line) - line = re.sub('\([xX]86[-_]64\)', '', line) - line = line.replace('SUSE', '') - line = line.replace('LinuxEnterpriseServer', 'SLE') - line = line.replace('LinuxEnterpriseDesktop', 'SLE') - return line.strip() - return "unknown" - else: - f = open('/etc/os-release', 'r') - rx = re.compile('^PRETTY_NAME="(.*)"$') - for line in f.readlines(): - m = rx.match(line) - if m: - return m.group(1).replace(' ','_') - return "unknown" - -def removeDirectory( dest_dir ): - info( "--------------------------------" ) - info( "Removing %s" % ( dest_dir ) ) - info( "--------------------------------" ) - if ( os.path.exists( dest_dir ) and os.path.isdir( dest_dir ) ): - for root, dirs, files in os.walk( dest_dir, topdown=False): - for name in files: - try: - os.remove( os.path.join(root, name) ) - except: - die( "couldn't delete file %s\n ( %s )" % ( name, os.path.join( root, name ) ) ) - for name in dirs: - try: - if ( os.path.islink(os.path.join(root, name)) ): - os.remove( os.path.join(root, name) ) - else: - os.rmdir( os.path.join(root, name) ) - except: - die( "couldn't delete directory %s\n( %s )" % ( name, os.path.join( root, name ) ) ) - os.rmdir( dest_dir ) + if os.path.exists("/etc/SuSE-release"): + f = open("/etc/SuSE-release", "r") + rx = re.compile("^VERSION = (.*)$") + for line in f.readlines(): + m = rx.match(line) + if not m: + line = re.sub("\s", "", line) + line = re.sub("\([xX]86[-_]64\)", "", line) + line = line.replace("SUSE", "") + line = line.replace("LinuxEnterpriseServer", "SLE") + line = line.replace("LinuxEnterpriseDesktop", "SLE") + return line.strip() + return "unknown" + else: + f = open("/etc/os-release", "r") + rx = re.compile('^PRETTY_NAME="(.*)"$') + for line in f.readlines(): + m = rx.match(line) + if m: + return m.group(1).replace(" ", "_") + return "unknown" -def copySrcDirToDestDir( srcdir, dstdir, perm = None, with_subdirs = True ): - info( "--------------------------------" ) - info( "Copying %s to %s" % ( srcdir, dstdir ) ) - info( "--------------------------------" ) +def removeDirectory(dest_dir): + info("--------------------------------") + info("Removing %s" % (dest_dir)) + info("--------------------------------") + if os.path.exists(dest_dir) and os.path.isdir(dest_dir): + for root, dirs, files in os.walk(dest_dir, topdown=False): + for name in files: + try: + os.remove(os.path.join(root, name)) + except: + die( + "couldn't delete file %s\n ( %s )" + % (name, os.path.join(root, name)) + ) + for name in dirs: + try: + if os.path.islink(os.path.join(root, name)): + os.remove(os.path.join(root, name)) + else: + os.rmdir(os.path.join(root, name)) + except: + die( + "couldn't delete directory %s\n( %s )" + % (name, os.path.join(root, name)) + ) + os.rmdir(dest_dir) - while srcdir[-1] == '/': - srcdir = srcdir[:-1] - if with_subdirs: - for root, dirs, files in os.walk( srcdir ): - tmpdir = root.replace( srcdir, dstdir ) - debug( "dstdir = '%s'" % tmpdir ) - if ( not os.path.exists( tmpdir ) ): - debug( "Creating dir '%s'" % tmpdir ) - os.makedirs( tmpdir ) - if perm: - os.chmod( tmpdir, perm | stat.S_IREAD | stat.S_IRGRP | stat.S_IROTH ) - for file in files: - if os.path.isfile( tmpdir ) and os.path.exists( tmpdir ): - os.remove( tmpdir ) - shutil.copy( os.path.join( root, file ), tmpdir ) - if perm: - f = os.path.join( tmpdir, file ) - add_perm = 0 - if os.path.isdir( f ): - add_perm = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH - else: - mode = os.stat( f ).st_mode - if (stat.S_IXUSR & mode) == stat.S_IXUSR: - add_perm = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH - os.chmod( f, perm | add_perm ) - else: - for f in os.listdir( srcdir ): - if os.path.isdir( f ): - continue - shutil.copy( os.path.join( srcdir, f ), - os.path.join( dstdir, f ) ) -def moveFilesToDir( srcdir, dstdir, rx_filter = None, with_subdirs = True ): - info( "--------------------------------" ) - info( "Moving files from %s to %s" % ( srcdir, dstdir ) ) - info( "--------------------------------" ) +def copySrcDirToDestDir(srcdir, dstdir, perm=None, with_subdirs=True): + info("--------------------------------") + info("Copying %s to %s" % (srcdir, dstdir)) + info("--------------------------------") - moved_files = [] - if not os.path.exists( dstdir ): - os.makedirs( dstdir ) - if with_subdirs: - for root, dirs, files in os.walk( srcdir ): - for file in files: - if rx_filter and not rx_filter.match( file ): - continue - src = os.path.join( root, file ) - dst = os.path.join( dstdir, file ) - debug( "Move %s to %s" % ( src, dst ) ) - if os.path.exists( dst ): - os.remove( dst ) - moved_files.append( dst ) - shutil.move( src, dstdir ) - else: - for f in os.listdir( srcdir ): - if os.path.isdir( f ): - continue - if rx_filter and not rx_filter.match( f ): - continue - src = os.path.join( srcdir, file ) - dst = os.path.join( dstdir, file ) - debug( "Move %s to %s" % ( src, dst ) ) - moved_files.append( dst ) - shutil.move( src, dstdir ) - return moved_files + while srcdir[-1] == "/": + srcdir = srcdir[:-1] + if with_subdirs: + for root, dirs, files in os.walk(srcdir): + tmpdir = root.replace(srcdir, dstdir) + debug("dstdir = '%s'" % tmpdir) + if not os.path.exists(tmpdir): + debug("Creating dir '%s'" % tmpdir) + os.makedirs(tmpdir) + if perm: + os.chmod(tmpdir, perm | stat.S_IREAD | stat.S_IRGRP | stat.S_IROTH) + for file in files: + if os.path.isfile(tmpdir) and os.path.exists(tmpdir): + os.remove(tmpdir) + shutil.copy(os.path.join(root, file), tmpdir) + if perm: + f = os.path.join(tmpdir, file) + add_perm = 0 + if os.path.isdir(f): + add_perm = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH + else: + mode = os.stat(f).st_mode + if (stat.S_IXUSR & mode) == stat.S_IXUSR: + add_perm = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH + os.chmod(f, perm | add_perm) + else: + for f in os.listdir(srcdir): + if os.path.isdir(f): + continue + shutil.copy(os.path.join(srcdir, f), os.path.join(dstdir, f)) -def adjustPermissions( srcdir ): - info( "--------------------------------" ) - info( "Adjusting permissions in %s" % srcdir ) - info( "--------------------------------" ) - stat_file = stat.S_IREAD | stat.S_IWRITE | stat.S_IRUSR | stat.S_IROTH - stat_executable = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH - stat_dir = stat_file | stat_executable - while srcdir[-1] == '/': - srcdir = srcdir[:-1] - for root, dirs, files in os.walk( srcdir ): - os.chmod( root, ) - for file in files: - f = os.path.join( root, file ) - perm = 0 - if os.path.isdir( f ): - perm = stat_dir - else: - perm = stat_file - mode = os.stat( f ).st_mode - if (stat.S_IXUSR & mode) == stat.S_IXUSR: - perm |= stat_executable - os.chmod( f, perm ) +def moveFilesToDir(srcdir, dstdir, rx_filter=None, with_subdirs=True): + info("--------------------------------") + info("Moving files from %s to %s" % (srcdir, dstdir)) + info("--------------------------------") -def exec_rpmbuild( spec_dir, spec_filename, buildroot = None ): - spec = os.path.join( spec_dir, spec_filename ) - cmd = "rpmbuild -ba %s" % spec - if buildroot: - cmd += " --buildroot=%s" % buildroot - system( cmd, sys.stdout ) and die( "during rpmbuild. cmd: %s" % command ) + moved_files = [] + if not os.path.exists(dstdir): + os.makedirs(dstdir) + if with_subdirs: + for root, dirs, files in os.walk(srcdir): + for file in files: + if rx_filter and not rx_filter.match(file): + continue + src = os.path.join(root, file) + dst = os.path.join(dstdir, file) + debug("Move %s to %s" % (src, dst)) + if os.path.exists(dst): + os.remove(dst) + moved_files.append(dst) + shutil.move(src, dstdir) + else: + for f in os.listdir(srcdir): + if os.path.isdir(f): + continue + if rx_filter and not rx_filter.match(f): + continue + src = os.path.join(srcdir, file) + dst = os.path.join(dstdir, file) + debug("Move %s to %s" % (src, dst)) + moved_files.append(dst) + shutil.move(src, dstdir) + return moved_files + +def adjustPermissions(srcdir): + info("--------------------------------") + info("Adjusting permissions in %s" % srcdir) + info("--------------------------------") + + stat_file = stat.S_IREAD | stat.S_IWRITE | stat.S_IRUSR | stat.S_IROTH + stat_executable = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH + stat_dir = stat_file | stat_executable + while srcdir[-1] == "/": + srcdir = srcdir[:-1] + for root, dirs, files in os.walk(srcdir): + os.chmod( + root, + ) + for file in files: + f = os.path.join(root, file) + perm = 0 + if os.path.isdir(f): + perm = stat_dir + else: + perm = stat_file + mode = os.stat(f).st_mode + if (stat.S_IXUSR & mode) == stat.S_IXUSR: + perm |= stat_executable + os.chmod(f, perm) + + +def exec_rpmbuild(spec_dir, spec_filename, buildroot=None): + spec = os.path.join(spec_dir, spec_filename) + cmd = "rpmbuild -ba %s" % spec + if buildroot: + cmd += " --buildroot=%s" % buildroot + system(cmd, sys.stdout) and die("during rpmbuild. cmd: %s" % command) diff --git a/make_rpm.py b/make_rpm.py index 0d5d37c..9797ca1 100755 --- a/make_rpm.py +++ b/make_rpm.py @@ -11,259 +11,286 @@ import time import ConfigParser import fnmatch - -loc = os.path.dirname( sys.argv[0] ) -loc = os.path.abspath( loc ) -exec(compile(open('helpers.py').read(), 'helpers.py', 'exec')) + +loc = os.path.dirname(sys.argv[0]) +loc = os.path.abspath(loc) +exec(compile(open("helpers.py").read(), "helpers.py", "exec")) + class build(object): - def __init__( self ): - self.project_name = 'ctc' - self.base_dir = os.getcwd() - self.cmake_build_flags = None - self.output_dir = "/shd/CTC/TOOLS/TDS-rpmbuild/" - self.version_maj = 1 - self.version_min = 1 - self.version_rev = os.getenv( "BUILD_NUMBER" ) - self.cmake_version_prefix = "TDS" - self.source_dir_rel = "legatus" + def __init__(self): + self.project_name = "ctc" + self.base_dir = os.getcwd() + self.cmake_build_flags = None + self.output_dir = "/shd/CTC/TOOLS/TDS-rpmbuild/" + self.version_maj = 1 + self.version_min = 1 + self.version_rev = os.getenv("BUILD_NUMBER") + self.cmake_version_prefix = "TDS" + self.source_dir_rel = "legatus" - self.buildtype = os.getenv( "CMAKE_BUILD_TYPE" ) - if self.buildtype == None or self.buildtype == "": - self.buildtype = 'RelWithDebInfo' + self.buildtype = os.getenv("CMAKE_BUILD_TYPE") + if self.buildtype == None or self.buildtype == "": + self.buildtype = "RelWithDebInfo" - self.cmake_generator = 'Unix Makefiles' + self.cmake_generator = "Unix Makefiles" - def init( self ): - self.extfw_dir = "%s/EXTFW-inst/opt/EXTFW" % self.base_dir - if not os.path.exists( self.extfw_dir ): - self.extfw_dir = '/opt/EXTFW' - os.environ["EXTFW"] = self.extfw_dir - os.environ["CMAKE_PREFIX_PATH"] = self.extfw_dir + def init(self): + self.extfw_dir = "%s/EXTFW-inst/opt/EXTFW" % self.base_dir + if not os.path.exists(self.extfw_dir): + self.extfw_dir = "/opt/EXTFW" + os.environ["EXTFW"] = self.extfw_dir + os.environ["CMAKE_PREFIX_PATH"] = self.extfw_dir - def printOptions( self ): - print("Config options") - print("**************") - print(" Using base dir: %s" % self.base_dir) - print(" Using extfw dir: %s" % self.extfw_dir) - print(" Using buildtype: %s" % self.buildtype) - print(" Project name: %s" % self.project_name) - print(" Version: %s.%s-%s" % ( self.version_maj, self.version_min, self.version_rev )) - print(" GitLab-CI build number: %s" % os.getenv( "BUILD_NUMBER" )) - print(" Date: %s" % self.version_date) - print("") - time.sleep(2) + def printOptions(self): + print("Config options") + print("**************") + print(" Using base dir: %s" % self.base_dir) + print(" Using extfw dir: %s" % self.extfw_dir) + print(" Using buildtype: %s" % self.buildtype) + print(" Project name: %s" % self.project_name) + print( + " Version: %s.%s-%s" + % (self.version_maj, self.version_min, self.version_rev) + ) + print(" GitLab-CI build number: %s" % os.getenv("BUILD_NUMBER")) + print(" Date: %s" % self.version_date) + print("") + time.sleep(2) - def version_str( self ): - return "%s.%s" % ( self.version_maj, self.version_min ) + def version_str(self): + return "%s.%s" % (self.version_maj, self.version_min) - def xzfilename( self ): - return self.project_name + '_' + self.repository + '_' + getOS_Name() + '-' + self.version_str() + '.tar.xz' + def xzfilename(self): + return ( + self.project_name + + "_" + + self.repository + + "_" + + getOS_Name() + + "-" + + self.version_str() + + ".tar.xz" + ) - def specname( self, specdir ): - specname = 'ctc_%s_%s.spec' % ( self.repository, self.project_name ) - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'ctc_%s.spec' % ( self.repository ) - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'lts.spec' - specname = 'lts' + str(os.getenv( "BUILD_VERSION" )) + '.spec' - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'ctc.spec' - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = '%s.spec' % self.project_name - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - die( 'Unable to find a valid spec file in %s' % specdir ) + def specname(self, specdir): + specname = "ctc_%s_%s.spec" % (self.repository, self.project_name) + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "ctc_%s.spec" % (self.repository) + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "lts.spec" + specname = "lts" + str(os.getenv("BUILD_VERSION")) + ".spec" + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "ctc.spec" + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "%s.spec" % self.project_name + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + die("Unable to find a valid spec file in %s" % specdir) - def copy_spec( self, dest_dir, spec_fullpath ): - - f = open( spec_fullpath, 'r' ) - content = f.read() - f.close() + def copy_spec(self, dest_dir, spec_fullpath): - - 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' + f = open(spec_fullpath, "r") + content = f.read() + f.close() - - cmake_flags = "" - cmake_flags += '-D%s_VERSION_MAJOR:STRING="%s" ' % (self.cmake_version_prefix, self.version_maj) - cmake_flags += '-D%s_VERSION_MINOR:STRING="%s" ' % (self.cmake_version_prefix, self.version_min) - cmake_flags += '-D%s_VERSION_REV:STRING="%s" ' % (self.cmake_version_prefix, self.version_rev) - cmake_flags += '-D%s_VERSION_PATCH:STRING="%s" ' % (self.cmake_version_prefix, self.version_rev) - cmake_flags += '-D%s_VERSION_DATE:STRING="%s" ' % (self.cmake_version_prefix, self.version_date) - cmake_flags += '-D_pname:STRING="%s" ' % (self.project_name) + 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" + cmake_flags = "" + cmake_flags += '-D%s_VERSION_MAJOR:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_maj, + ) + cmake_flags += '-D%s_VERSION_MINOR:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_min, + ) + cmake_flags += '-D%s_VERSION_REV:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_rev, + ) + cmake_flags += '-D%s_VERSION_PATCH:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_rev, + ) + cmake_flags += '-D%s_VERSION_DATE:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_date, + ) + cmake_flags += '-D_pname:STRING="%s" ' % (self.project_name) - jenkins_build_number = os.getenv( "BUILD_NUMBER" ) - if jenkins_build_number != None: - cmake_flags += '-DJENKINS_BUILD_NUMBER:STRING="%s" '% (jenkins_build_number) - - if self.cmake_build_flags: - cmake_flags += ' %s ' % self.cmake_build_flags + jenkins_build_number = os.getenv("BUILD_NUMBER") + if jenkins_build_number != None: + cmake_flags += '-DJENKINS_BUILD_NUMBER:STRING="%s" ' % ( + jenkins_build_number + ) - - cmake_flags += '-DCMAKE_BUILD_TYPE="%s" ' % self.buildtype + if self.cmake_build_flags: + cmake_flags += " %s " % self.cmake_build_flags - filename = 'project.%s.cfg' % self.project_name - cmake_flags += '-DTDS_PROJECT_CONFIG_FILE=%s ' % filename - - content = content.replace( "@PROJECT@", self.project_name ) - content = content.replace( "@OS_SYSTEM@", getOS_Name() ) - content = content.replace( "@PACKAGER@", getpass.getuser() ) - content = content.replace( "@VERSION@", self.version_str() ) - content = content.replace( "@RELEASE@", str(self.version_rev) ) - content = content.replace( "@SOURCE_DIR_REL@", self.source_dir_rel ) - content = content.replace( "@SOURCES@", self.xzfilename() ) - content = content.replace( "@APPLICATION@", self.repository ) - content = content.replace( "@CMAKE_FLAGS@ ", cmake_flags ) - content = content.replace( "@JENKINS_BUILD_TAG@", jenkins_build_tag ) - if not os.path.exists( dest_dir ): - os.makedirs( dest_dir ) - f = open( os.path.join( dest_dir, os.path.split( spec_fullpath )[1] ), 'w' ) + cmake_flags += '-DCMAKE_BUILD_TYPE="%s" ' % self.buildtype - f.write( content ) - f.close() + filename = "project.%s.cfg" % self.project_name + cmake_flags += "-DTDS_PROJECT_CONFIG_FILE=%s " % filename - def clean_lts_cc_conf(self, folder): - config_files = [] - for root, dirs, files in os.walk(folder): - for name in files: - if fnmatch.fnmatch(name, 'lts-cc*conf'): - config_files.append(os.path.join(root, name)) + content = content.replace("@PROJECT@", self.project_name) + content = content.replace("@OS_SYSTEM@", getOS_Name()) + content = content.replace("@PACKAGER@", getpass.getuser()) + content = content.replace("@VERSION@", self.version_str()) + content = content.replace("@RELEASE@", str(self.version_rev)) + content = content.replace("@SOURCE_DIR_REL@", self.source_dir_rel) + content = content.replace("@SOURCES@", self.xzfilename()) + content = content.replace("@APPLICATION@", self.repository) + content = content.replace("@CMAKE_FLAGS@ ", cmake_flags) + content = content.replace("@JENKINS_BUILD_TAG@", jenkins_build_tag) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) + f = open(os.path.join(dest_dir, os.path.split(spec_fullpath)[1]), "w") - for config_file in config_files: - config = ConfigParser.RawConfigParser() - config.optionxform = str - config.read(config_file) + f.write(content) + f.close() - for section in config.sections(): - if len(config.items(section)) == 0: - config.remove_section(section) - - with open(config_file, 'w') as file: - config.write(file) + def clean_lts_cc_conf(self, folder): + config_files = [] + for root, dirs, files in os.walk(folder): + for name in files: + if fnmatch.fnmatch(name, "lts-cc*conf"): + config_files.append(os.path.join(root, name)) - def pack_sources( self, src_dir, dest_dir ): - xzfilename = self.xzfilename() - xzfilename = os.path.join( dest_dir, xzfilename ) + for config_file in config_files: + config = ConfigParser.RawConfigParser() + config.optionxform = str + config.read(config_file) - info( "--------------------------------" ) - info( "Packing sources in %s to %s" % ( src_dir, xzfilename ) ) - info( "Packing chdir %s" % ( os.path.split( src_dir )[0] ) ) - info( "Packing pack %s" % ( os.path.split( src_dir )[1]) ) - info( "--------------------------------" ) + for section in config.sections(): + if len(config.items(section)) == 0: + config.remove_section(section) - removeDirectory( xzfilename ) - if os.path.exists( xzfilename ): - os.remove( xzfilename ) - if not os.path.exists( dest_dir ): - os.makedirs( dest_dir ) + with open(config_file, "w") as file: + config.write(file) - os.chdir( os.path.split( src_dir )[0] ) - cmd = "tar cJf %s %s" % ( xzfilename, os.path.split( src_dir )[1] ) - system( cmd, sys.stdout ) and die( "while packing. cmd: %s" % command ) + def pack_sources(self, src_dir, dest_dir): + xzfilename = self.xzfilename() + xzfilename = os.path.join(dest_dir, xzfilename) - + info("--------------------------------") + info("Packing sources in %s to %s" % (src_dir, xzfilename)) + info("Packing chdir %s" % (os.path.split(src_dir)[0])) + info("Packing pack %s" % (os.path.split(src_dir)[1])) + info("--------------------------------") - - - - - - + removeDirectory(xzfilename) + if os.path.exists(xzfilename): + os.remove(xzfilename) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) - + os.chdir(os.path.split(src_dir)[0]) + cmd = "tar cJf %s %s" % (xzfilename, os.path.split(src_dir)[1]) + system(cmd, sys.stdout) and die("while packing. cmd: %s" % command) def usage(): - print >> sys.stdout, "Usage: %s [-b ] -f -o -r -v -s " % sys.argv[0] + print >> sys.stdout, "Usage: %s [-b ] -f -o -r -v -s " % sys.argv[ + 0 + ] + def main(): - b = build() + b = build() - try: - opts, args = getopt.getopt(sys.argv[1:], "b:c:f:o:p:r:v:", - ["base_dir=", "cmake_build_flags=", "cmake_version_prefix=", "filelist=", "output_dir=", "project_name=", "repository=", "version="]) - except getopt.GetoptError as err: - print >> sys.stderr, err - usage() - sys.exit(2) - - rpm_filelist = None - b.repository = "TDS" - for o, a in opts: - if o == "--cmake_build_flags": - b.cmake_build_flags = a - print("build flags: ", b.cmake_build_flags) - if o in ("-b", "--base_dir"): - b.base_dir = a - if o in ("-f", "--filelist"): - rpm_filelist = a - if o in ("-o", "--output_dir"): - b.output_dir = a - if o in ("-c", "--cmake_version_prefix"): - b.cmake_version_prefix = a - if o in ("-p", "--project_name"): - b.project_name = a - if o in ("-r", "--repository"): - b.repository = a - if o in ("-v", "--version"): - version = a.split('.') - try: - b.version_maj = version[0] - b.version_min = version[1] - except: - die( "Invalid version format (maj.min): %s" % a ) - - - - b.version_date = os.getenv( "VERSION_DATE" ) - b.init() - b.printOptions() - - rpmbase_dir = '/shd/CTC/TOOLS/rpmbuild' - - project_base_dir = os.getenv( "PROJECT_BASE_DIR" ) - specdir = os.path.join( rpmbase_dir, "SPECS" ) - if not os.path.exists(specdir): - os.makedirs(specdir) - b.clean_lts_cc_conf(os.path.join(project_base_dir, 'Lts', 'Projects')) - specname = b.specname(os.path.join(project_base_dir, 'specs')) - b.copy_spec( specdir, os.path.join(project_base_dir, "specs", specname )) - - full_version = "%s.%s-%s" % ( b.version_maj, b.version_min, b.version_rev ) - b.printOptions() - - b.pack_sources( project_base_dir, os.path.join( rpmbase_dir, "SOURCES" ) ) - exec_rpmbuild( specdir, specname ) - - dstdir = os.path.join( b.output_dir, "%s-%s-%s" % ( b.project_name, b.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 ) + opts, args = getopt.getopt( + sys.argv[1:], + "b:c:f:o:p:r:v:", + [ + "base_dir=", + "cmake_build_flags=", + "cmake_version_prefix=", + "filelist=", + "output_dir=", + "project_name=", + "repository=", + "version=", + ], + ) + except getopt.GetoptError as err: + print >> sys.stderr, err + usage() + sys.exit(2) + + rpm_filelist = None + b.repository = "TDS" + for o, a in opts: + if o == "--cmake_build_flags": + b.cmake_build_flags = a + print("build flags: ", b.cmake_build_flags) + if o in ("-b", "--base_dir"): + b.base_dir = a + if o in ("-f", "--filelist"): + rpm_filelist = a + if o in ("-o", "--output_dir"): + b.output_dir = a + if o in ("-c", "--cmake_version_prefix"): + b.cmake_version_prefix = a + if o in ("-p", "--project_name"): + b.project_name = a + if o in ("-r", "--repository"): + b.repository = a + if o in ("-v", "--version"): + version = a.split(".") + try: + b.version_maj = version[0] + b.version_min = version[1] + except: + die("Invalid version format (maj.min): %s" % a) + + b.version_date = os.getenv("VERSION_DATE") + b.init() + b.printOptions() + + rpmbase_dir = "/shd/CTC/TOOLS/rpmbuild" + + project_base_dir = os.getenv("PROJECT_BASE_DIR") + specdir = os.path.join(rpmbase_dir, "SPECS") + if not os.path.exists(specdir): + os.makedirs(specdir) + b.clean_lts_cc_conf(os.path.join(project_base_dir, "Lts", "Projects")) + specname = b.specname(os.path.join(project_base_dir, "specs")) + b.copy_spec(specdir, os.path.join(project_base_dir, "specs", specname)) + + full_version = "%s.%s-%s" % (b.version_maj, b.version_min, b.version_rev) + b.printOptions() + + b.pack_sources(project_base_dir, os.path.join(rpmbase_dir, "SOURCES")) + exec_rpmbuild(specdir, specname) + + dstdir = os.path.join( + b.output_dir, "%s-%s-%s" % (b.project_name, b.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() + main() diff --git a/make_rpm15.1.py b/make_rpm15.1.py index 0c2f4c6..cc983d5 100755 --- a/make_rpm15.1.py +++ b/make_rpm15.1.py @@ -1,11 +1,6 @@ #!/usr/bin/python # -*- coding: utf-8 -*- - - - - - - + import datetime import getopt @@ -17,291 +12,318 @@ import time import ConfigParser import fnmatch - -loc = os.path.dirname( sys.argv[0] ) -loc = os.path.abspath( loc ) -exec(compile(open('helpers.py').read(), 'helpers.py', 'exec')) + +loc = os.path.dirname(sys.argv[0]) +loc = os.path.abspath(loc) +exec(compile(open("helpers.py").read(), "helpers.py", "exec")) + class build(object): - def __init__( self ): - self.project_name = 'ctc' - self.base_dir = os.getcwd() - self.cmake_build_flags = None - self.output_dir = "/shd/CTC/TOOLS/TDS-rpmbuild/" - self.version_maj = 1 - self.version_min = 1 - self.version_rev = 0 - self.cmake_version_prefix = "TDS" - self.source_dir_rel = "TDS-Source" - self.svn_fullpath = None + def __init__(self): + self.project_name = "ctc" + self.base_dir = os.getcwd() + self.cmake_build_flags = None + self.output_dir = "/shd/CTC/TOOLS/TDS-rpmbuild/" + self.version_maj = 1 + self.version_min = 1 + self.version_rev = 0 + self.cmake_version_prefix = "TDS" + self.source_dir_rel = "TDS-Source" + self.svn_fullpath = None - self.buildtype = os.getenv( "CMAKE_BUILD_TYPE" ) - if self.buildtype == None or self.buildtype == "": - self.buildtype = 'RelWithDebInfo' + self.buildtype = os.getenv("CMAKE_BUILD_TYPE") + if self.buildtype == None or self.buildtype == "": + self.buildtype = "RelWithDebInfo" - self.cmake_generator = 'Unix Makefiles' + self.cmake_generator = "Unix Makefiles" - def init( self ): - self.extfw_dir = "%s/EXTFW-inst/opt/EXTFW" % self.base_dir - if not os.path.exists( self.extfw_dir ): - self.extfw_dir = '/opt/EXTFW' - os.environ["EXTFW"] = self.extfw_dir - os.environ["CMAKE_PREFIX_PATH"] = self.extfw_dir + def init(self): + self.extfw_dir = "%s/EXTFW-inst/opt/EXTFW" % self.base_dir + if not os.path.exists(self.extfw_dir): + self.extfw_dir = "/opt/EXTFW" + os.environ["EXTFW"] = self.extfw_dir + os.environ["CMAKE_PREFIX_PATH"] = self.extfw_dir - def printOptions( self ): - print("Config options") - print("**************") - print(" Using base dir: %s" % self.base_dir) - print(" Using extfw dir: %s" % self.extfw_dir) - print(" Using buildtype: %s" % self.buildtype) - print(" Project name: %s" % self.project_name) - print(" SVN Path: %s" % self.svn_fullpath) - print(" Version: %s.%s-%s" % ( self.version_maj, self.version_min, self.version_rev )) - print(" Jenkins build number: %s" % os.getenv( "BUILD_NUMBER" )) - print(" Date: %s" % self.version_date) - print("") - time.sleep(2) + def printOptions(self): + print("Config options") + print("**************") + print(" Using base dir: %s" % self.base_dir) + print(" Using extfw dir: %s" % self.extfw_dir) + print(" Using buildtype: %s" % self.buildtype) + print(" Project name: %s" % self.project_name) + print(" SVN Path: %s" % self.svn_fullpath) + print( + " Version: %s.%s-%s" + % (self.version_maj, self.version_min, self.version_rev) + ) + print(" Jenkins build number: %s" % os.getenv("BUILD_NUMBER")) + print(" Date: %s" % self.version_date) + print("") + time.sleep(2) - - def svn_export( self, svn_path, dest_dir, svn_revision = "HEAD", svn_user = None, svn_passwd = None ): + def svn_export( + self, svn_path, dest_dir, svn_revision="HEAD", svn_user=None, svn_passwd=None + ): - removeDirectory( dest_dir ) + removeDirectory(dest_dir) - info( "--------------------------------" ) - info( "Exporting %s to %s" % ( svn_path, dest_dir ) ) - info( "--------------------------------" ) + info("--------------------------------") + info("Exporting %s to %s" % (svn_path, dest_dir)) + info("--------------------------------") - command = "svn export -r %s %s %s" % ( svn_revision, svn_path, dest_dir ) - if svn_user: - command += "--username %s " % svn_user - if svn_passwd: - command += "--password %s " % svn_passwd - os.system( command ) and die( "while svn export. cmd: %s" % command ) + command = "svn export -r %s %s %s" % (svn_revision, svn_path, dest_dir) + if svn_user: + command += "--username %s " % svn_user + if svn_passwd: + command += "--password %s " % svn_passwd + os.system(command) and die("while svn export. cmd: %s" % command) - def version_str( self ): - return "%s.%s" % ( self.version_maj, self.version_min ) + def version_str(self): + return "%s.%s" % (self.version_maj, self.version_min) - def xzfilename( self ): - return self.project_name + '_' + self.repository + '_' + getOS_Name() + '-' + self.version_str() + '.tar.xz' + def xzfilename(self): + return ( + self.project_name + + "_" + + self.repository + + "_" + + getOS_Name() + + "-" + + self.version_str() + + ".tar.xz" + ) - def specname( self, specdir ): - specname = 'ctc_%s_%s.spec' % ( self.repository, self.project_name ) - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'ctc_%s.spec' % ( self.repository ) - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'lts.spec' - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'ctc.spec' - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = '%s.spec' % self.project_name - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - die( 'Unable to find a valid spec file in %s' % specdir ) + def specname(self, specdir): + specname = "ctc_%s_%s.spec" % (self.repository, self.project_name) + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "ctc_%s.spec" % (self.repository) + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "lts.spec" + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "ctc.spec" + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "%s.spec" % self.project_name + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + die("Unable to find a valid spec file in %s" % specdir) - def copy_spec( self, svn_fullpath, dest_dir, spec_fullpath ): - - f = open( spec_fullpath, 'r' ) - content = f.read() - f.close() + def copy_spec(self, svn_fullpath, dest_dir, spec_fullpath): - - 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' + f = open(spec_fullpath, "r") + content = f.read() + f.close() - - cmake_flags = "" - cmake_flags += '-D%s_VERSION_MAJOR:STRING="%s" ' % (self.cmake_version_prefix, self.version_maj) - cmake_flags += '-D%s_VERSION_MINOR:STRING="%s" ' % (self.cmake_version_prefix, self.version_min) - cmake_flags += '-D%s_VERSION_REV:STRING="%s" ' % (self.cmake_version_prefix, self.version_rev) - cmake_flags += '-D%s_VERSION_PATCH:STRING="%s" ' % (self.cmake_version_prefix, self.version_rev) - cmake_flags += '-D%s_VERSION_DATE:STRING="%s" ' % (self.cmake_version_prefix, self.version_date) - cmake_flags += '-D_pname:STRING="%s" ' % (self.project_name) + 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" - jenkins_build_number = os.getenv( "BUILD_NUMBER" ) - if jenkins_build_number != None: - cmake_flags += '-DJENKINS_BUILD_NUMBER:STRING="%s" '% (jenkins_build_number) - - if self.cmake_build_flags: - cmake_flags += ' %s ' % self.cmake_build_flags + cmake_flags = "" + cmake_flags += '-D%s_VERSION_MAJOR:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_maj, + ) + cmake_flags += '-D%s_VERSION_MINOR:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_min, + ) + cmake_flags += '-D%s_VERSION_REV:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_rev, + ) + cmake_flags += '-D%s_VERSION_PATCH:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_rev, + ) + cmake_flags += '-D%s_VERSION_DATE:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_date, + ) + cmake_flags += '-D_pname:STRING="%s" ' % (self.project_name) - - cmake_flags += '-DCMAKE_BUILD_TYPE="%s" ' % self.buildtype + jenkins_build_number = os.getenv("BUILD_NUMBER") + if jenkins_build_number != None: + cmake_flags += '-DJENKINS_BUILD_NUMBER:STRING="%s" ' % ( + jenkins_build_number + ) - filename = 'project.%s.cfg' % self.project_name - cmake_flags += '-DTDS_PROJECT_CONFIG_FILE=%s ' % filename - - content = content.replace( "@PROJECT@", self.project_name ) - content = content.replace( "@OS_SYSTEM@", getOS_Name() ) - content = content.replace( "@PACKAGER@", getpass.getuser() ) - content = content.replace( "@VERSION@", self.version_str() ) - content = content.replace( "@RELEASE@", self.version_rev ) - content = content.replace( "@SOURCE_DIR_REL@", self.source_dir_rel ) - content = content.replace( "@SOURCES@", self.xzfilename() ) - content = content.replace( "@APPLICATION@", self.repository ) - content = content.replace( "@CMAKE_FLAGS@ ", cmake_flags ) - content = content.replace( "@JENKINS_BUILD_TAG@", jenkins_build_tag ) - if not os.path.exists( dest_dir ): - os.makedirs( dest_dir ) - f = open( os.path.join( dest_dir, os.path.split( spec_fullpath )[1] ), 'w' ) - f.write( content ) - f.close() + if self.cmake_build_flags: + cmake_flags += " %s " % self.cmake_build_flags - def clean_lts_cc_conf(self, folder): - config_files = [] - for root, dirs, files in os.walk(folder): - for name in files: - if fnmatch.fnmatch(name, 'lts-cc*conf'): - config_files.append(os.path.join(root, name)) + cmake_flags += '-DCMAKE_BUILD_TYPE="%s" ' % self.buildtype - for config_file in config_files: - config = ConfigParser.RawConfigParser() - config.optionxform = str - config.read(config_file) + filename = "project.%s.cfg" % self.project_name + cmake_flags += "-DTDS_PROJECT_CONFIG_FILE=%s " % filename - for section in config.sections(): - if len(config.items(section)) == 0: - config.remove_section(section) - - with open(config_file, 'w') as file: - config.write(file) + content = content.replace("@PROJECT@", self.project_name) + content = content.replace("@OS_SYSTEM@", getOS_Name()) + content = content.replace("@PACKAGER@", getpass.getuser()) + content = content.replace("@VERSION@", self.version_str()) + content = content.replace("@RELEASE@", self.version_rev) + content = content.replace("@SOURCE_DIR_REL@", self.source_dir_rel) + content = content.replace("@SOURCES@", self.xzfilename()) + content = content.replace("@APPLICATION@", self.repository) + content = content.replace("@CMAKE_FLAGS@ ", cmake_flags) + content = content.replace("@JENKINS_BUILD_TAG@", jenkins_build_tag) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) + f = open(os.path.join(dest_dir, os.path.split(spec_fullpath)[1]), "w") + f.write(content) + f.close() - def pack_sources( self, src_dir, dest_dir ): - xzfilename = self.xzfilename() - xzfilename = os.path.join( dest_dir, xzfilename ) + def clean_lts_cc_conf(self, folder): + config_files = [] + for root, dirs, files in os.walk(folder): + for name in files: + if fnmatch.fnmatch(name, "lts-cc*conf"): + config_files.append(os.path.join(root, name)) - info( "--------------------------------" ) - info( "Packing sources in %s to %s" % ( src_dir, xzfilename ) ) - info( "--------------------------------" ) + for config_file in config_files: + config = ConfigParser.RawConfigParser() + config.optionxform = str + config.read(config_file) - removeDirectory( xzfilename ) - if os.path.exists( xzfilename ): - os.remove( xzfilename ) - if not os.path.exists( dest_dir ): - os.makedirs( dest_dir ) + for section in config.sections(): + if len(config.items(section)) == 0: + config.remove_section(section) - os.chdir( os.path.split( src_dir )[0] ) - cmd = "tar cJf %s %s" % ( xzfilename, os.path.split( src_dir )[1] ) - system( cmd, sys.stdout ) and die( "while packing. cmd: %s" % command ) + with open(config_file, "w") as file: + config.write(file) - + def pack_sources(self, src_dir, dest_dir): + xzfilename = self.xzfilename() + xzfilename = os.path.join(dest_dir, xzfilename) - - - - - - + info("--------------------------------") + info("Packing sources in %s to %s" % (src_dir, xzfilename)) + info("--------------------------------") - + removeDirectory(xzfilename) + if os.path.exists(xzfilename): + os.remove(xzfilename) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) + + os.chdir(os.path.split(src_dir)[0]) + cmd = "tar cJf %s %s" % (xzfilename, os.path.split(src_dir)[1]) + system(cmd, sys.stdout) and die("while packing. cmd: %s" % command) def usage(): - print >> sys.stdout, "Usage: %s [-b ] -f -o -r -v -s " % sys.argv[0] + print >> sys.stdout, "Usage: %s [-b ] -f -o -r -v -s " % sys.argv[ + 0 + ] + def main(): - b = build() + b = build() - try: - opts, args = getopt.getopt(sys.argv[1:], "b:c:f:o:p:r:v:s:", - ["base_dir=", "cmake_build_flags=", "cmake_version_prefix=", "filelist=", "output_dir=", "project_name=", "repository", "version=", "svn_path="]) - except getopt.GetoptError as err: - print >> sys.stderr, err - usage() - sys.exit(2) - - rpm_filelist = None - svn_path = "trunk" - b.repository = "TDS" - for o, a in opts: - if o == "--cmake_build_flags": - b.cmake_build_flags = a - print("build flags: ", b.cmake_build_flags) - if o in ("-b", "--base_dir"): - b.base_dir = a - if o in ("-f", "--filelist"): - rpm_filelist = a - if o in ("-o", "--output_dir"): - b.output_dir = a - if o in ("-c", "--cmake_version_prefix"): - b.cmake_version_prefix = a - if o in ("-p", "--project_name"): - b.project_name = a - if o in ("-r", "--repository"): - b.repository = a - if o in ("-v", "--version"): - version = a.split('.') - try: - b.version_maj = version[0] - b.version_min = version[1] - except: - die( "Invalid version format (maj.min): %s" % a ) - if o in ("-s", "--svn_path"): - svn_path = a - - b.source_dir_rel = b.repository + "-source" - - svn_destdir = os.path.join( "/tmp", b.source_dir_rel ) - - svn_server = "slssvn" - if svn_path.startswith('svn://'): - b.svn_fullpath = svn_path - else: - b.svn_fullpath = "svn://%s/%s/%s/" % ( svn_server, b.repository, svn_path ) - - - - b.version_rev = getSvn_Release( b.svn_fullpath ) - b.version_date = getSvn_Date( b.svn_fullpath ) - b.init() - b.printOptions() - - rpmbase_dir = os.path.join( os.getenv( "HOME" ), 'rpmbuild' ) - - specdir = os.path.join( rpmbase_dir, "SPECS" ) - if not os.path.exists(specdir): - os.makedirs(specdir) - - b.svn_export( b.svn_fullpath, svn_destdir ) - b.clean_lts_cc_conf(svn_destdir + '/Lts/Projects') - specname = b.specname( os.path.join( svn_destdir, "specs" ) ) - b.copy_spec( b.svn_fullpath, - specdir, - os.path.join( svn_destdir, "specs", specname ) ) - - full_version = "%s.%s-%s" % ( b.version_maj, b.version_min, b.version_rev ) - b.printOptions() - - b.pack_sources( svn_destdir, os.path.join( rpmbase_dir, "SOURCES" ) ) - removeDirectory( svn_destdir ) - exec_rpmbuild( specdir, specname ) - - - dstdir = os.path.join( b.output_dir, "%s-%s-%s" % ( b.project_name, b.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 ) + opts, args = getopt.getopt( + sys.argv[1:], + "b:c:f:o:p:r:v:s:", + [ + "base_dir=", + "cmake_build_flags=", + "cmake_version_prefix=", + "filelist=", + "output_dir=", + "project_name=", + "repository", + "version=", + "svn_path=", + ], + ) + except getopt.GetoptError as err: + print >> sys.stderr, err + usage() + sys.exit(2) + + rpm_filelist = None + svn_path = "trunk" + b.repository = "TDS" + for o, a in opts: + if o == "--cmake_build_flags": + b.cmake_build_flags = a + print("build flags: ", b.cmake_build_flags) + if o in ("-b", "--base_dir"): + b.base_dir = a + if o in ("-f", "--filelist"): + rpm_filelist = a + if o in ("-o", "--output_dir"): + b.output_dir = a + if o in ("-c", "--cmake_version_prefix"): + b.cmake_version_prefix = a + if o in ("-p", "--project_name"): + b.project_name = a + if o in ("-r", "--repository"): + b.repository = a + if o in ("-v", "--version"): + version = a.split(".") + try: + b.version_maj = version[0] + b.version_min = version[1] + except: + die("Invalid version format (maj.min): %s" % a) + if o in ("-s", "--svn_path"): + svn_path = a + + b.source_dir_rel = b.repository + "-source" + + svn_destdir = os.path.join("/tmp", b.source_dir_rel) + + svn_server = "slssvn" + if svn_path.startswith("svn://"): + b.svn_fullpath = svn_path + else: + b.svn_fullpath = "svn://%s/%s/%s/" % (svn_server, b.repository, svn_path) + + b.version_rev = getSvn_Release(b.svn_fullpath) + b.version_date = getSvn_Date(b.svn_fullpath) + b.init() + b.printOptions() + + rpmbase_dir = os.path.join(os.getenv("HOME"), "rpmbuild") + + specdir = os.path.join(rpmbase_dir, "SPECS") + if not os.path.exists(specdir): + os.makedirs(specdir) + + b.svn_export(b.svn_fullpath, svn_destdir) + b.clean_lts_cc_conf(svn_destdir + "/Lts/Projects") + specname = b.specname(os.path.join(svn_destdir, "specs")) + b.copy_spec(b.svn_fullpath, specdir, os.path.join(svn_destdir, "specs", specname)) + + full_version = "%s.%s-%s" % (b.version_maj, b.version_min, b.version_rev) + b.printOptions() + + b.pack_sources(svn_destdir, os.path.join(rpmbase_dir, "SOURCES")) + removeDirectory(svn_destdir) + exec_rpmbuild(specdir, specname) + + dstdir = os.path.join( + b.output_dir, "%s-%s-%s" % (b.project_name, b.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() + main() diff --git a/make_rpm15.2.py b/make_rpm15.2.py index 94da38c..81e7e9f 100755 --- a/make_rpm15.2.py +++ b/make_rpm15.2.py @@ -1,11 +1,6 @@ #!/usr/bin/python # -*- coding: utf-8 -*- - - - - - - + import datetime import getopt @@ -17,289 +12,316 @@ import time import ConfigParser import fnmatch - -loc = os.path.dirname( sys.argv[0] ) -loc = os.path.abspath( loc ) -exec(compile(open('helpers.py').read(), 'helpers.py', 'exec')) + +loc = os.path.dirname(sys.argv[0]) +loc = os.path.abspath(loc) +exec(compile(open("helpers.py").read(), "helpers.py", "exec")) + class build(object): - def __init__( self ): - self.project_name = 'ctc' - self.base_dir = os.getcwd() - self.cmake_build_flags = None - self.output_dir = "/shd/CTC/TOOLS/TDS-rpmbuild/" - self.version_maj = 1 - self.version_min = 1 - self.version_rev = 0 - self.cmake_version_prefix = "TDS" - self.source_dir_rel = "TDS-Source" - self.svn_fullpath = None + def __init__(self): + self.project_name = "ctc" + self.base_dir = os.getcwd() + self.cmake_build_flags = None + self.output_dir = "/shd/CTC/TOOLS/TDS-rpmbuild/" + self.version_maj = 1 + self.version_min = 1 + self.version_rev = 0 + self.cmake_version_prefix = "TDS" + self.source_dir_rel = "TDS-Source" + self.svn_fullpath = None - self.buildtype = os.getenv( "CMAKE_BUILD_TYPE" ) - if self.buildtype == None or self.buildtype == "": - self.buildtype = 'RelWithDebInfo' + self.buildtype = os.getenv("CMAKE_BUILD_TYPE") + if self.buildtype == None or self.buildtype == "": + self.buildtype = "RelWithDebInfo" - self.cmake_generator = 'Unix Makefiles' + self.cmake_generator = "Unix Makefiles" - def init( self ): - self.extfw_dir = "%s/EXTFW-inst/opt/EXTFW" % self.base_dir - if not os.path.exists( self.extfw_dir ): - self.extfw_dir = '/opt/EXTFW' - os.environ["EXTFW"] = self.extfw_dir - os.environ["CMAKE_PREFIX_PATH"] = self.extfw_dir + def init(self): + self.extfw_dir = "%s/EXTFW-inst/opt/EXTFW" % self.base_dir + if not os.path.exists(self.extfw_dir): + self.extfw_dir = "/opt/EXTFW" + os.environ["EXTFW"] = self.extfw_dir + os.environ["CMAKE_PREFIX_PATH"] = self.extfw_dir - def printOptions( self ): - print("Config options") - print("**************") - print(" Using base dir: %s" % self.base_dir) - print(" Using extfw dir: %s" % self.extfw_dir) - print(" Using buildtype: %s" % self.buildtype) - print(" Project name: %s" % self.project_name) - print(" SVN Path: %s" % self.svn_fullpath) - print(" Version: %s.%s-%s" % ( self.version_maj, self.version_min, self.version_rev )) - print(" Jenkins build number: %s" % os.getenv( "BUILD_NUMBER" )) - print(" Date: %s" % self.version_date) - print("") - time.sleep(2) + def printOptions(self): + print("Config options") + print("**************") + print(" Using base dir: %s" % self.base_dir) + print(" Using extfw dir: %s" % self.extfw_dir) + print(" Using buildtype: %s" % self.buildtype) + print(" Project name: %s" % self.project_name) + print(" SVN Path: %s" % self.svn_fullpath) + print( + " Version: %s.%s-%s" + % (self.version_maj, self.version_min, self.version_rev) + ) + print(" Jenkins build number: %s" % os.getenv("BUILD_NUMBER")) + print(" Date: %s" % self.version_date) + print("") + time.sleep(2) - - def svn_export( self, svn_path, dest_dir, svn_revision = "HEAD", svn_user = None, svn_passwd = None ): + def svn_export( + self, svn_path, dest_dir, svn_revision="HEAD", svn_user=None, svn_passwd=None + ): - removeDirectory( dest_dir ) + removeDirectory(dest_dir) - info( "--------------------------------" ) - info( "Exporting %s to %s" % ( svn_path, dest_dir ) ) - info( "--------------------------------" ) + info("--------------------------------") + info("Exporting %s to %s" % (svn_path, dest_dir)) + info("--------------------------------") - command = "svn export -r %s %s %s" % ( svn_revision, svn_path, dest_dir ) - if svn_user: - command += "--username %s " % svn_user - if svn_passwd: - command += "--password %s " % svn_passwd - os.system( command ) and die( "while svn export. cmd: %s" % command ) + command = "svn export -r %s %s %s" % (svn_revision, svn_path, dest_dir) + if svn_user: + command += "--username %s " % svn_user + if svn_passwd: + command += "--password %s " % svn_passwd + os.system(command) and die("while svn export. cmd: %s" % command) - def version_str( self ): - return "%s.%s" % ( self.version_maj, self.version_min ) + def version_str(self): + return "%s.%s" % (self.version_maj, self.version_min) - def xzfilename( self ): - return self.project_name + '_' + self.repository + '_' + getOS_Name() + '-' + self.version_str() + '.tar.xz' + def xzfilename(self): + return ( + self.project_name + + "_" + + self.repository + + "_" + + getOS_Name() + + "-" + + self.version_str() + + ".tar.xz" + ) - def specname( self, specdir ): - specname = 'ctc_%s_%s.spec' % ( self.repository, self.project_name ) - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'ctc_%s.spec' % ( self.repository ) - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'lts15.2.spec' - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'ctc.spec' - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = '%s.spec' % self.project_name - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - die( 'Unable to find a valid spec file in %s' % specdir ) + def specname(self, specdir): + specname = "ctc_%s_%s.spec" % (self.repository, self.project_name) + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "ctc_%s.spec" % (self.repository) + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "lts15.2.spec" + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "ctc.spec" + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "%s.spec" % self.project_name + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + die("Unable to find a valid spec file in %s" % specdir) - def copy_spec( self, svn_fullpath, dest_dir, spec_fullpath ): - - f = open( spec_fullpath, 'r' ) - content = f.read() - f.close() + def copy_spec(self, svn_fullpath, dest_dir, spec_fullpath): - - 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' + f = open(spec_fullpath, "r") + content = f.read() + f.close() - - cmake_flags = "" - cmake_flags += '-D%s_VERSION_MAJOR:STRING="%s" ' % (self.cmake_version_prefix, self.version_maj) - cmake_flags += '-D%s_VERSION_MINOR:STRING="%s" ' % (self.cmake_version_prefix, self.version_min) - cmake_flags += '-D%s_VERSION_REV:STRING="%s" ' % (self.cmake_version_prefix, self.version_rev) - cmake_flags += '-D%s_VERSION_PATCH:STRING="%s" ' % (self.cmake_version_prefix, self.version_rev) - cmake_flags += '-D%s_VERSION_DATE:STRING="%s" ' % (self.cmake_version_prefix, self.version_date) - jenkins_build_number = os.getenv( "BUILD_NUMBER" ) - if jenkins_build_number != None: - cmake_flags += '-DJENKINS_BUILD_NUMBER:STRING="%s" '% (jenkins_build_number) - - if self.cmake_build_flags: - cmake_flags += ' %s ' % self.cmake_build_flags + 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" - - cmake_flags += '-DCMAKE_BUILD_TYPE="%s" ' % self.buildtype + cmake_flags = "" + cmake_flags += '-D%s_VERSION_MAJOR:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_maj, + ) + cmake_flags += '-D%s_VERSION_MINOR:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_min, + ) + cmake_flags += '-D%s_VERSION_REV:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_rev, + ) + cmake_flags += '-D%s_VERSION_PATCH:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_rev, + ) + cmake_flags += '-D%s_VERSION_DATE:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_date, + ) + jenkins_build_number = os.getenv("BUILD_NUMBER") + if jenkins_build_number != None: + cmake_flags += '-DJENKINS_BUILD_NUMBER:STRING="%s" ' % ( + jenkins_build_number + ) - filename = 'project.%s.cfg' % self.project_name - cmake_flags += '-DTDS_PROJECT_CONFIG_FILE=%s ' % filename - - content = content.replace( "@PROJECT@", self.project_name ) - content = content.replace( "@OS_SYSTEM@", getOS_Name() ) - content = content.replace( "@PACKAGER@", getpass.getuser() ) - content = content.replace( "@VERSION@", self.version_str() ) - content = content.replace( "@RELEASE@", self.version_rev ) - content = content.replace( "@SOURCE_DIR_REL@", self.source_dir_rel ) - content = content.replace( "@SOURCES@", self.xzfilename() ) - content = content.replace( "@APPLICATION@", self.repository ) - content = content.replace( "@CMAKE_FLAGS@ ", cmake_flags ) - content = content.replace( "@JENKINS_BUILD_TAG@", jenkins_build_tag ) - if not os.path.exists( dest_dir ): - os.makedirs( dest_dir ) - f = open( os.path.join( dest_dir, os.path.split( spec_fullpath )[1] ), 'w' ) - f.write( content ) - f.close() + if self.cmake_build_flags: + cmake_flags += " %s " % self.cmake_build_flags - def clean_lts_cc_conf(self, folder): - config_files = [] - for root, dirs, files in os.walk(folder): - for name in files: - if fnmatch.fnmatch(name, 'lts-cc*conf'): - config_files.append(os.path.join(root, name)) + cmake_flags += '-DCMAKE_BUILD_TYPE="%s" ' % self.buildtype - for config_file in config_files: - config = ConfigParser.RawConfigParser() - config.optionxform = str - config.read(config_file) + filename = "project.%s.cfg" % self.project_name + cmake_flags += "-DTDS_PROJECT_CONFIG_FILE=%s " % filename - for section in config.sections(): - if len(config.items(section)) == 0: - config.remove_section(section) - - with open(config_file, 'w') as file: - config.write(file) + content = content.replace("@PROJECT@", self.project_name) + content = content.replace("@OS_SYSTEM@", getOS_Name()) + content = content.replace("@PACKAGER@", getpass.getuser()) + content = content.replace("@VERSION@", self.version_str()) + content = content.replace("@RELEASE@", self.version_rev) + content = content.replace("@SOURCE_DIR_REL@", self.source_dir_rel) + content = content.replace("@SOURCES@", self.xzfilename()) + content = content.replace("@APPLICATION@", self.repository) + content = content.replace("@CMAKE_FLAGS@ ", cmake_flags) + content = content.replace("@JENKINS_BUILD_TAG@", jenkins_build_tag) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) + f = open(os.path.join(dest_dir, os.path.split(spec_fullpath)[1]), "w") + f.write(content) + f.close() - def pack_sources( self, src_dir, dest_dir ): - xzfilename = self.xzfilename() - xzfilename = os.path.join( dest_dir, xzfilename ) + def clean_lts_cc_conf(self, folder): + config_files = [] + for root, dirs, files in os.walk(folder): + for name in files: + if fnmatch.fnmatch(name, "lts-cc*conf"): + config_files.append(os.path.join(root, name)) - info( "--------------------------------" ) - info( "Packing sources in %s to %s" % ( src_dir, xzfilename ) ) - info( "--------------------------------" ) + for config_file in config_files: + config = ConfigParser.RawConfigParser() + config.optionxform = str + config.read(config_file) - removeDirectory( xzfilename ) - if os.path.exists( xzfilename ): - os.remove( xzfilename ) - if not os.path.exists( dest_dir ): - os.makedirs( dest_dir ) + for section in config.sections(): + if len(config.items(section)) == 0: + config.remove_section(section) - os.chdir( os.path.split( src_dir )[0] ) - cmd = "tar cJf %s %s" % ( xzfilename, os.path.split( src_dir )[1] ) - system( cmd, sys.stdout ) and die( "while packing. cmd: %s" % command ) + with open(config_file, "w") as file: + config.write(file) - + def pack_sources(self, src_dir, dest_dir): + xzfilename = self.xzfilename() + xzfilename = os.path.join(dest_dir, xzfilename) - - - - - - + info("--------------------------------") + info("Packing sources in %s to %s" % (src_dir, xzfilename)) + info("--------------------------------") - + removeDirectory(xzfilename) + if os.path.exists(xzfilename): + os.remove(xzfilename) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) + + os.chdir(os.path.split(src_dir)[0]) + cmd = "tar cJf %s %s" % (xzfilename, os.path.split(src_dir)[1]) + system(cmd, sys.stdout) and die("while packing. cmd: %s" % command) def usage(): - print >> sys.stdout, "Usage: %s [-b ] -f -o -r -v -s " % sys.argv[0] + print >> sys.stdout, "Usage: %s [-b ] -f -o -r -v -s " % sys.argv[ + 0 + ] + def main(): - b = build() + b = build() - try: - opts, args = getopt.getopt(sys.argv[1:], "b:c:f:o:p:r:v:s:", - ["base_dir=", "cmake_build_flags=", "cmake_version_prefix=", "filelist=", "output_dir=", "project_name=", "repository", "version=", "svn_path="]) - except getopt.GetoptError as err: - print >> sys.stderr, err - usage() - sys.exit(2) - - rpm_filelist = None - svn_path = "trunk" - b.repository = "TDS" - for o, a in opts: - if o == "--cmake_build_flags": - b.cmake_build_flags = a - print("build flags: ", b.cmake_build_flags) - if o in ("-b", "--base_dir"): - b.base_dir = a - if o in ("-f", "--filelist"): - rpm_filelist = a - if o in ("-o", "--output_dir"): - b.output_dir = a - if o in ("-c", "--cmake_version_prefix"): - b.cmake_version_prefix = a - if o in ("-p", "--project_name"): - b.project_name = a - if o in ("-r", "--repository"): - b.repository = a - if o in ("-v", "--version"): - version = a.split('.') - try: - b.version_maj = version[0] - b.version_min = version[1] - except: - die( "Invalid version format (maj.min): %s" % a ) - if o in ("-s", "--svn_path"): - svn_path = a - - b.source_dir_rel = b.repository + "-source" - - svn_destdir = os.path.join( "/tmp", b.source_dir_rel ) - - svn_server = "slssvn" - if svn_path.startswith('svn://'): - b.svn_fullpath = svn_path - else: - b.svn_fullpath = "svn://%s/%s/%s/" % ( svn_server, b.repository, svn_path ) - - - - b.version_rev = getSvn_Release( b.svn_fullpath ) - b.version_date = getSvn_Date( b.svn_fullpath ) - b.init() - b.printOptions() - - rpmbase_dir = os.path.join( os.getenv( "HOME" ), 'rpmbuild' ) - - specdir = os.path.join( rpmbase_dir, "SPECS" ) - if not os.path.exists(specdir): - os.makedirs(specdir) - - b.svn_export( b.svn_fullpath, svn_destdir ) - b.clean_lts_cc_conf(svn_destdir + '/Lts/Projects') - specname = b.specname( os.path.join( svn_destdir, "specs" ) ) - b.copy_spec( b.svn_fullpath, - specdir, - os.path.join( svn_destdir, "specs", specname ) ) - - full_version = "%s.%s-%s" % ( b.version_maj, b.version_min, b.version_rev ) - b.printOptions() - - b.pack_sources( svn_destdir, os.path.join( rpmbase_dir, "SOURCES" ) ) - removeDirectory( svn_destdir ) - exec_rpmbuild( specdir, specname ) - - - dstdir = os.path.join( b.output_dir, "%s-%s-%s" % ( b.project_name, b.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 ) + opts, args = getopt.getopt( + sys.argv[1:], + "b:c:f:o:p:r:v:s:", + [ + "base_dir=", + "cmake_build_flags=", + "cmake_version_prefix=", + "filelist=", + "output_dir=", + "project_name=", + "repository", + "version=", + "svn_path=", + ], + ) + except getopt.GetoptError as err: + print >> sys.stderr, err + usage() + sys.exit(2) + + rpm_filelist = None + svn_path = "trunk" + b.repository = "TDS" + for o, a in opts: + if o == "--cmake_build_flags": + b.cmake_build_flags = a + print("build flags: ", b.cmake_build_flags) + if o in ("-b", "--base_dir"): + b.base_dir = a + if o in ("-f", "--filelist"): + rpm_filelist = a + if o in ("-o", "--output_dir"): + b.output_dir = a + if o in ("-c", "--cmake_version_prefix"): + b.cmake_version_prefix = a + if o in ("-p", "--project_name"): + b.project_name = a + if o in ("-r", "--repository"): + b.repository = a + if o in ("-v", "--version"): + version = a.split(".") + try: + b.version_maj = version[0] + b.version_min = version[1] + except: + die("Invalid version format (maj.min): %s" % a) + if o in ("-s", "--svn_path"): + svn_path = a + + b.source_dir_rel = b.repository + "-source" + + svn_destdir = os.path.join("/tmp", b.source_dir_rel) + + svn_server = "slssvn" + if svn_path.startswith("svn://"): + b.svn_fullpath = svn_path + else: + b.svn_fullpath = "svn://%s/%s/%s/" % (svn_server, b.repository, svn_path) + + b.version_rev = getSvn_Release(b.svn_fullpath) + b.version_date = getSvn_Date(b.svn_fullpath) + b.init() + b.printOptions() + + rpmbase_dir = os.path.join(os.getenv("HOME"), "rpmbuild") + + specdir = os.path.join(rpmbase_dir, "SPECS") + if not os.path.exists(specdir): + os.makedirs(specdir) + + b.svn_export(b.svn_fullpath, svn_destdir) + b.clean_lts_cc_conf(svn_destdir + "/Lts/Projects") + specname = b.specname(os.path.join(svn_destdir, "specs")) + b.copy_spec(b.svn_fullpath, specdir, os.path.join(svn_destdir, "specs", specname)) + + full_version = "%s.%s-%s" % (b.version_maj, b.version_min, b.version_rev) + b.printOptions() + + b.pack_sources(svn_destdir, os.path.join(rpmbase_dir, "SOURCES")) + removeDirectory(svn_destdir) + exec_rpmbuild(specdir, specname) + + dstdir = os.path.join( + b.output_dir, "%s-%s-%s" % (b.project_name, b.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() + main() diff --git a/make_rpm7.py b/make_rpm7.py index 38bc087..aeb2b2f 100755 --- a/make_rpm7.py +++ b/make_rpm7.py @@ -11,260 +11,288 @@ import time import ConfigParser import fnmatch - -loc = os.path.dirname( sys.argv[0] ) -loc = os.path.abspath( loc ) -exec(compile(open('helpers.py').read(), 'helpers.py', 'exec')) + +loc = os.path.dirname(sys.argv[0]) +loc = os.path.abspath(loc) +exec(compile(open("helpers.py").read(), "helpers.py", "exec")) + class build(object): - def __init__( self ): - self.project_name = 'ctc' - self.base_dir = os.getcwd() - self.cmake_build_flags = None - self.output_dir = "/shd/CTC/TOOLS/TDS-rpmbuild/" - self.version_maj = 1 - self.version_min = 1 - self.version_rev = os.getenv( "BUILD_NUMBER" ) - self.cmake_version_prefix = "TDS" - self.source_dir_rel = "legatus" + def __init__(self): + self.project_name = "ctc" + self.base_dir = os.getcwd() + self.cmake_build_flags = None + self.output_dir = "/shd/CTC/TOOLS/TDS-rpmbuild/" + self.version_maj = 1 + self.version_min = 1 + self.version_rev = os.getenv("BUILD_NUMBER") + self.cmake_version_prefix = "TDS" + self.source_dir_rel = "legatus" - self.buildtype = os.getenv( "CMAKE_BUILD_TYPE" ) - if self.buildtype == None or self.buildtype == "": - self.buildtype = 'RelWithDebInfo' + self.buildtype = os.getenv("CMAKE_BUILD_TYPE") + if self.buildtype == None or self.buildtype == "": + self.buildtype = "RelWithDebInfo" - self.cmake_generator = 'Unix Makefiles' + self.cmake_generator = "Unix Makefiles" - def init( self ): - self.extfw_dir = "%s/EXTFW-inst/opt/EXTFW" % self.base_dir - if not os.path.exists( self.extfw_dir ): - self.extfw_dir = '/opt/EXTFW' - os.environ["EXTFW"] = self.extfw_dir - os.environ["CMAKE_PREFIX_PATH"] = self.extfw_dir + def init(self): + self.extfw_dir = "%s/EXTFW-inst/opt/EXTFW" % self.base_dir + if not os.path.exists(self.extfw_dir): + self.extfw_dir = "/opt/EXTFW" + os.environ["EXTFW"] = self.extfw_dir + os.environ["CMAKE_PREFIX_PATH"] = self.extfw_dir - def printOptions( self ): - print("Config options") - print("**************") - print(" Using base dir: %s" % self.base_dir) - print(" Using extfw dir: %s" % self.extfw_dir) - print(" Using buildtype: %s" % self.buildtype) - print(" Project name: %s" % self.project_name) - print(" Version: %s.%s-%s" % ( self.version_maj, self.version_min, self.version_rev )) - print(" GitLab-CI build number: %s" % os.getenv( "BUILD_NUMBER" )) - print(" Date: %s" % self.version_date) - print("") - time.sleep(2) + def printOptions(self): + print("Config options") + print("**************") + print(" Using base dir: %s" % self.base_dir) + print(" Using extfw dir: %s" % self.extfw_dir) + print(" Using buildtype: %s" % self.buildtype) + print(" Project name: %s" % self.project_name) + print( + " Version: %s.%s-%s" + % (self.version_maj, self.version_min, self.version_rev) + ) + print(" GitLab-CI build number: %s" % os.getenv("BUILD_NUMBER")) + print(" Date: %s" % self.version_date) + print("") + time.sleep(2) - def version_str( self ): - return "%s.%s" % ( self.version_maj, self.version_min ) + def version_str(self): + return "%s.%s" % (self.version_maj, self.version_min) - def xzfilename( self ): - return self.project_name + '_' + self.repository + '_' + getOS_Name() + '-' + self.version_str() + '.tar.xz' + def xzfilename(self): + return ( + self.project_name + + "_" + + self.repository + + "_" + + getOS_Name() + + "-" + + self.version_str() + + ".tar.xz" + ) - def specname( self, specdir ): - specname = 'ctc_%s_%s.spec' % ( self.repository, self.project_name ) - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'ctc_%s.spec' % ( self.repository ) - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'lts.spec' - specname = 'lts' + str(os.getenv( "OS_VERSION" )) + '.spec' - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'ctc.spec' - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = '%s.spec' % self.project_name - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - die( 'Unable to find a valid spec file in %s' % specdir ) + def specname(self, specdir): + specname = "ctc_%s_%s.spec" % (self.repository, self.project_name) + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "ctc_%s.spec" % (self.repository) + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "lts.spec" + specname = "lts" + str(os.getenv("OS_VERSION")) + ".spec" + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "ctc.spec" + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "%s.spec" % self.project_name + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + die("Unable to find a valid spec file in %s" % specdir) - def copy_spec( self, dest_dir, spec_fullpath ): - - f = open( spec_fullpath, 'r' ) - content = f.read() - f.close() + def copy_spec(self, dest_dir, spec_fullpath): - - 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' + f = open(spec_fullpath, "r") + content = f.read() + f.close() - - cmake_flags = "" - cmake_flags += '-D%s_VERSION_MAJOR:STRING="%s" ' % (self.cmake_version_prefix, self.version_maj) - cmake_flags += '-D%s_VERSION_MINOR:STRING="%s" ' % (self.cmake_version_prefix, self.version_min) - cmake_flags += '-D%s_VERSION_REV:STRING="%s" ' % (self.cmake_version_prefix, self.version_rev) - cmake_flags += '-D%s_VERSION_PATCH:STRING="%s" ' % (self.cmake_version_prefix, self.version_rev) - cmake_flags += '-D%s_VERSION_DATE:STRING="%s" ' % (self.cmake_version_prefix, self.version_date) - cmake_flags += '-D_pname:STRING="%s" ' % (self.project_name) + 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" + cmake_flags = "" + cmake_flags += '-D%s_VERSION_MAJOR:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_maj, + ) + cmake_flags += '-D%s_VERSION_MINOR:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_min, + ) + cmake_flags += '-D%s_VERSION_REV:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_rev, + ) + cmake_flags += '-D%s_VERSION_PATCH:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_rev, + ) + cmake_flags += '-D%s_VERSION_DATE:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_date, + ) + cmake_flags += '-D_pname:STRING="%s" ' % (self.project_name) - jenkins_build_number = os.getenv( "BUILD_NUMBER" ) - if jenkins_build_number != None: - cmake_flags += '-DJENKINS_BUILD_NUMBER:STRING="%s" '% (jenkins_build_number) - - if self.cmake_build_flags: - cmake_flags += ' %s ' % self.cmake_build_flags + jenkins_build_number = os.getenv("BUILD_NUMBER") + if jenkins_build_number != None: + cmake_flags += '-DJENKINS_BUILD_NUMBER:STRING="%s" ' % ( + jenkins_build_number + ) - - cmake_flags += '-DCMAKE_BUILD_TYPE="%s" ' % self.buildtype + if self.cmake_build_flags: + cmake_flags += " %s " % self.cmake_build_flags - filename = 'project.%s.cfg' % self.project_name - cmake_flags += '-DTDS_PROJECT_CONFIG_FILE=%s ' % filename - - content = content.replace( "@PROJECT@", self.project_name ) - content = content.replace( "@OS_SYSTEM@", getOS_Name() ) - content = content.replace( "@PACKAGER@", getpass.getuser() ) - content = content.replace( "@VERSION@", self.version_str() ) - content = content.replace( "@RELEASE@", str(self.version_rev) ) - content = content.replace( "@SOURCE_DIR_REL@", self.source_dir_rel ) - content = content.replace( "@SOURCES@", self.xzfilename() ) - content = content.replace( "@APPLICATION@", self.repository ) - content = content.replace( "@CMAKE_FLAGS@ ", cmake_flags ) - content = content.replace( "@JENKINS_BUILD_TAG@", jenkins_build_tag ) - if not os.path.exists( dest_dir ): - os.makedirs( dest_dir ) - f = open( os.path.join( dest_dir, os.path.split( spec_fullpath )[1] ), 'w' ) + cmake_flags += '-DCMAKE_BUILD_TYPE="%s" ' % self.buildtype - f.write( content ) - f.close() + filename = "project.%s.cfg" % self.project_name + cmake_flags += "-DTDS_PROJECT_CONFIG_FILE=%s " % filename - def clean_lts_cc_conf(self, folder): - config_files = [] - for root, dirs, files in os.walk(folder): - for name in files: - if fnmatch.fnmatch(name, 'lts-cc*conf'): - config_files.append(os.path.join(root, name)) + content = content.replace("@PROJECT@", self.project_name) + content = content.replace("@OS_SYSTEM@", getOS_Name()) + content = content.replace("@PACKAGER@", getpass.getuser()) + content = content.replace("@VERSION@", self.version_str()) + content = content.replace("@RELEASE@", str(self.version_rev)) + content = content.replace("@SOURCE_DIR_REL@", self.source_dir_rel) + content = content.replace("@SOURCES@", self.xzfilename()) + content = content.replace("@APPLICATION@", self.repository) + content = content.replace("@CMAKE_FLAGS@ ", cmake_flags) + content = content.replace("@JENKINS_BUILD_TAG@", jenkins_build_tag) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) + f = open(os.path.join(dest_dir, os.path.split(spec_fullpath)[1]), "w") - for config_file in config_files: - config = ConfigParser.RawConfigParser() - config.optionxform = str - config.read(config_file) + f.write(content) + f.close() - for section in config.sections(): - if len(config.items(section)) == 0: - config.remove_section(section) - - with open(config_file, 'w') as file: - config.write(file) + def clean_lts_cc_conf(self, folder): + config_files = [] + for root, dirs, files in os.walk(folder): + for name in files: + if fnmatch.fnmatch(name, "lts-cc*conf"): + config_files.append(os.path.join(root, name)) - def pack_sources( self, src_dir, dest_dir ): - xzfilename = self.xzfilename() - xzfilename = os.path.join( dest_dir, xzfilename ) + for config_file in config_files: + config = ConfigParser.RawConfigParser() + config.optionxform = str + config.read(config_file) - info( "--------------------------------" ) - info( "Packing sources in %s to %s" % ( src_dir, xzfilename ) ) - info( "Packing chdir %s" % ( os.path.split( src_dir )[0] ) ) - info( "Packing pack %s" % ( os.path.split( src_dir )[1]) ) - info( "--------------------------------" ) + for section in config.sections(): + if len(config.items(section)) == 0: + config.remove_section(section) - removeDirectory( xzfilename ) - if os.path.exists( xzfilename ): - os.remove( xzfilename ) - if not os.path.exists( dest_dir ): - os.makedirs( dest_dir ) + with open(config_file, "w") as file: + config.write(file) - os.chdir( os.path.split( src_dir )[0] ) - cmd = "tar cJf %s %s" % ( xzfilename, os.path.split( src_dir )[1] ) - system( cmd, sys.stdout ) and die( "while packing. cmd: %s" % command ) + def pack_sources(self, src_dir, dest_dir): + xzfilename = self.xzfilename() + xzfilename = os.path.join(dest_dir, xzfilename) - + info("--------------------------------") + info("Packing sources in %s to %s" % (src_dir, xzfilename)) + info("Packing chdir %s" % (os.path.split(src_dir)[0])) + info("Packing pack %s" % (os.path.split(src_dir)[1])) + info("--------------------------------") - - - - - - + removeDirectory(xzfilename) + if os.path.exists(xzfilename): + os.remove(xzfilename) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) - + os.chdir(os.path.split(src_dir)[0]) + cmd = "tar cJf %s %s" % (xzfilename, os.path.split(src_dir)[1]) + system(cmd, sys.stdout) and die("while packing. cmd: %s" % command) def usage(): - print >> sys.stdout, "Usage: %s [-b ] -f -o -r -v -s " % sys.argv[0] + print >> sys.stdout, "Usage: %s [-b ] -f -o -r -v -s " % sys.argv[ + 0 + ] + def main(): - b = build() + b = build() - try: - opts, args = getopt.getopt(sys.argv[1:], "b:c:f:o:p:r:v:", - ["base_dir=", "cmake_build_flags=", "cmake_version_prefix=", "filelist=", "output_dir=", "project_name=", "repository=", "version="]) - except getopt.GetoptError as err: - print >> sys.stderr, err - usage() - sys.exit(2) - - rpm_filelist = None - b.repository = "TDS" - for o, a in opts: - if o == "--cmake_build_flags": - b.cmake_build_flags = a - print("build flags: ", b.cmake_build_flags) - if o in ("-b", "--base_dir"): - b.base_dir = a - if o in ("-f", "--filelist"): - rpm_filelist = a - if o in ("-o", "--output_dir"): - b.output_dir = a - if o in ("-c", "--cmake_version_prefix"): - b.cmake_version_prefix = a - if o in ("-p", "--project_name"): - b.project_name = a - if o in ("-r", "--repository"): - b.repository = a - if o in ("-v", "--version"): - version = a.split('.') - try: - b.version_maj = version[0] - b.version_min = version[1] - except: - die( "Invalid version format (maj.min): %s" % a ) - - - - b.version_date = os.getenv( "VERSION_DATE" ) - b.init() - b.printOptions() - - rpmbase_dir = '/shd/CTC/TOOLS/rpmbuild' - - project_base_dir = os.getenv( "WORKSPACE" ) - specdir = os.path.join( rpmbase_dir, "SPECS" ) - if not os.path.exists(specdir): - os.makedirs(specdir) - b.clean_lts_cc_conf(os.path.join(project_base_dir, 'legatus', 'Lts', 'Projects')) - specname = b.specname(os.path.join(project_base_dir,'legatus', 'specs')) - b.copy_spec( specdir, os.path.join(project_base_dir, 'legatus', "specs", specname )) - - full_version = "%s.%s-%s" % ( b.version_maj, b.version_min, b.version_rev ) - b.printOptions() - - b.pack_sources( os.path.join(project_base_dir, 'legatus'), os.path.join( rpmbase_dir, "SOURCES" ) ) - exec_rpmbuild( specdir, specname ) - - dstdir = os.path.join( b.output_dir, "%s-%s-%s" % ( b.project_name, b.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 ) + opts, args = getopt.getopt( + sys.argv[1:], + "b:c:f:o:p:r:v:", + [ + "base_dir=", + "cmake_build_flags=", + "cmake_version_prefix=", + "filelist=", + "output_dir=", + "project_name=", + "repository=", + "version=", + ], + ) + except getopt.GetoptError as err: + print >> sys.stderr, err + usage() + sys.exit(2) + + rpm_filelist = None + b.repository = "TDS" + for o, a in opts: + if o == "--cmake_build_flags": + b.cmake_build_flags = a + print("build flags: ", b.cmake_build_flags) + if o in ("-b", "--base_dir"): + b.base_dir = a + if o in ("-f", "--filelist"): + rpm_filelist = a + if o in ("-o", "--output_dir"): + b.output_dir = a + if o in ("-c", "--cmake_version_prefix"): + b.cmake_version_prefix = a + if o in ("-p", "--project_name"): + b.project_name = a + if o in ("-r", "--repository"): + b.repository = a + if o in ("-v", "--version"): + version = a.split(".") + try: + b.version_maj = version[0] + b.version_min = version[1] + except: + die("Invalid version format (maj.min): %s" % a) + + b.version_date = os.getenv("VERSION_DATE") + b.init() + b.printOptions() + + rpmbase_dir = "/shd/CTC/TOOLS/rpmbuild" + + project_base_dir = os.getenv("WORKSPACE") + specdir = os.path.join(rpmbase_dir, "SPECS") + if not os.path.exists(specdir): + os.makedirs(specdir) + b.clean_lts_cc_conf(os.path.join(project_base_dir, "legatus", "Lts", "Projects")) + specname = b.specname(os.path.join(project_base_dir, "legatus", "specs")) + b.copy_spec(specdir, os.path.join(project_base_dir, "legatus", "specs", specname)) + + full_version = "%s.%s-%s" % (b.version_maj, b.version_min, b.version_rev) + b.printOptions() + + b.pack_sources( + os.path.join(project_base_dir, "legatus"), os.path.join(rpmbase_dir, "SOURCES") + ) + exec_rpmbuild(specdir, specname) + + dstdir = os.path.join( + b.output_dir, "%s-%s-%s" % (b.project_name, b.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() - + main() diff --git a/make_rpmSVOnly.py b/make_rpmSVOnly.py index cd3691b..6605087 100755 --- a/make_rpmSVOnly.py +++ b/make_rpmSVOnly.py @@ -1,11 +1,6 @@ #!/usr/bin/python # -*- coding: utf-8 -*- - - - - - - + import datetime import getopt @@ -17,277 +12,304 @@ import time import ConfigParser import fnmatch - -loc = os.path.dirname( sys.argv[0] ) -loc = os.path.abspath( loc ) -exec(compile(open('helpers.py').read(), 'helpers.py', 'exec')) + +loc = os.path.dirname(sys.argv[0]) +loc = os.path.abspath(loc) +exec(compile(open("helpers.py").read(), "helpers.py", "exec")) + class build(object): - def __init__( self ): - self.project_name = 'ctc' - self.base_dir = os.getcwd() - self.cmake_build_flags = None - self.output_dir = "/shd/CTC/TOOLS/TDS-rpmbuild/" - self.version_maj = 1 - self.version_min = 1 - self.version_rev = os.getenv( "BUILD_NUMBER" ) - self.cmake_version_prefix = "TDS" - self.source_dir_rel = "legatus" + def __init__(self): + self.project_name = "ctc" + self.base_dir = os.getcwd() + self.cmake_build_flags = None + self.output_dir = "/shd/CTC/TOOLS/TDS-rpmbuild/" + self.version_maj = 1 + self.version_min = 1 + self.version_rev = os.getenv("BUILD_NUMBER") + self.cmake_version_prefix = "TDS" + self.source_dir_rel = "legatus" - self.buildtype = os.getenv( "CMAKE_BUILD_TYPE" ) - if self.buildtype == None or self.buildtype == "": - self.buildtype = 'RelWithDebInfo' + self.buildtype = os.getenv("CMAKE_BUILD_TYPE") + if self.buildtype == None or self.buildtype == "": + self.buildtype = "RelWithDebInfo" - self.cmake_generator = 'Unix Makefiles' + self.cmake_generator = "Unix Makefiles" - def init( self ): - self.extfw_dir = "%s/EXTFW-inst/opt/EXTFW" % self.base_dir - if not os.path.exists( self.extfw_dir ): - self.extfw_dir = '/opt/EXTFW' - os.environ["EXTFW"] = self.extfw_dir - os.environ["CMAKE_PREFIX_PATH"] = self.extfw_dir + def init(self): + self.extfw_dir = "%s/EXTFW-inst/opt/EXTFW" % self.base_dir + if not os.path.exists(self.extfw_dir): + self.extfw_dir = "/opt/EXTFW" + os.environ["EXTFW"] = self.extfw_dir + os.environ["CMAKE_PREFIX_PATH"] = self.extfw_dir - def printOptions( self ): - print("Config options") - print("**************") - print(" Using base dir: %s" % self.base_dir) - print(" Using extfw dir: %s" % self.extfw_dir) - print(" Using buildtype: %s" % self.buildtype) - print(" Project name: %s" % self.project_name) - print(" Version: %s.%s-%s" % ( self.version_maj, self.version_min, self.version_rev )) - print(" GitLab-CI build number: %s" % os.getenv( "BUILD_NUMBER" )) - print(" Date: %s" % self.version_date) - print("") - time.sleep(2) + def printOptions(self): + print("Config options") + print("**************") + print(" Using base dir: %s" % self.base_dir) + print(" Using extfw dir: %s" % self.extfw_dir) + print(" Using buildtype: %s" % self.buildtype) + print(" Project name: %s" % self.project_name) + print( + " Version: %s.%s-%s" + % (self.version_maj, self.version_min, self.version_rev) + ) + print(" GitLab-CI build number: %s" % os.getenv("BUILD_NUMBER")) + print(" Date: %s" % self.version_date) + print("") + time.sleep(2) - - def svn_export( self, svn_path, dest_dir, svn_revision = "HEAD", svn_user = None, svn_passwd = None ): + def svn_export( + self, svn_path, dest_dir, svn_revision="HEAD", svn_user=None, svn_passwd=None + ): - removeDirectory( dest_dir ) + removeDirectory(dest_dir) - info( "--------------------------------" ) - info( "Exporting %s to %s" % ( svn_path, dest_dir ) ) - info( "--------------------------------" ) + info("--------------------------------") + info("Exporting %s to %s" % (svn_path, dest_dir)) + info("--------------------------------") - command = "svn export -r %s %s %s" % ( svn_revision, svn_path, dest_dir ) - if svn_user: - command += "--username %s " % svn_user - if svn_passwd: - command += "--password %s " % svn_passwd - os.system( command ) and die( "while svn export. cmd: %s" % command ) + command = "svn export -r %s %s %s" % (svn_revision, svn_path, dest_dir) + if svn_user: + command += "--username %s " % svn_user + if svn_passwd: + command += "--password %s " % svn_passwd + os.system(command) and die("while svn export. cmd: %s" % command) - def version_str( self ): - return "%s.%s" % ( self.version_maj, self.version_min ) + def version_str(self): + return "%s.%s" % (self.version_maj, self.version_min) - def xzfilename( self ): - return self.project_name + '_' + self.repository + '_' + getOS_Name() + '-' + self.version_str() + '.tar.xz' + def xzfilename(self): + return ( + self.project_name + + "_" + + self.repository + + "_" + + getOS_Name() + + "-" + + self.version_str() + + ".tar.xz" + ) - def specname( self, specdir ): - specname = 'ctc_%s_%s.spec' % ( self.repository, self.project_name ) - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'ctc_%s.spec' % ( self.repository ) - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'ltsSVOnly.spec' - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = 'ctc.spec' - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - specname = '%s.spec' % self.project_name - debug( "specname: %s" % os.path.join( specdir, specname ) ) - if os.path.exists( os.path.join( specdir, specname ) ): - return specname - die( 'Unable to find a valid spec file in %s' % specdir ) + def specname(self, specdir): + specname = "ctc_%s_%s.spec" % (self.repository, self.project_name) + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "ctc_%s.spec" % (self.repository) + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "ltsSVOnly.spec" + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "ctc.spec" + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + specname = "%s.spec" % self.project_name + debug("specname: %s" % os.path.join(specdir, specname)) + if os.path.exists(os.path.join(specdir, specname)): + return specname + die("Unable to find a valid spec file in %s" % specdir) - def copy_spec( self, dest_dir, spec_fullpath ): - - f = open( spec_fullpath, 'r' ) - content = f.read() - f.close() + def copy_spec(self, dest_dir, spec_fullpath): - - 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' + f = open(spec_fullpath, "r") + content = f.read() + f.close() - - cmake_flags = "" - cmake_flags += '-D%s_VERSION_MAJOR:STRING="%s" ' % (self.cmake_version_prefix, self.version_maj) - cmake_flags += '-D%s_VERSION_MINOR:STRING="%s" ' % (self.cmake_version_prefix, self.version_min) - cmake_flags += '-D%s_VERSION_REV:STRING="%s" ' % (self.cmake_version_prefix, self.version_rev) - cmake_flags += '-D%s_VERSION_PATCH:STRING="%s" ' % (self.cmake_version_prefix, self.version_rev) - cmake_flags += '-D%s_VERSION_DATE:STRING="%s" ' % (self.cmake_version_prefix, self.version_date) - cmake_flags += '-D_pname:STRING="%s" ' % (self.project_name) + 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" + cmake_flags = "" + cmake_flags += '-D%s_VERSION_MAJOR:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_maj, + ) + cmake_flags += '-D%s_VERSION_MINOR:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_min, + ) + cmake_flags += '-D%s_VERSION_REV:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_rev, + ) + cmake_flags += '-D%s_VERSION_PATCH:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_rev, + ) + cmake_flags += '-D%s_VERSION_DATE:STRING="%s" ' % ( + self.cmake_version_prefix, + self.version_date, + ) + cmake_flags += '-D_pname:STRING="%s" ' % (self.project_name) - jenkins_build_number = os.getenv( "BUILD_NUMBER" ) - if jenkins_build_number != None: - cmake_flags += '-DJENKINS_BUILD_NUMBER:STRING="%s" '% (jenkins_build_number) - - if self.cmake_build_flags: - cmake_flags += ' %s ' % self.cmake_build_flags + jenkins_build_number = os.getenv("BUILD_NUMBER") + if jenkins_build_number != None: + cmake_flags += '-DJENKINS_BUILD_NUMBER:STRING="%s" ' % ( + jenkins_build_number + ) - - cmake_flags += '-DCMAKE_BUILD_TYPE="%s" ' % self.buildtype + if self.cmake_build_flags: + cmake_flags += " %s " % self.cmake_build_flags - filename = 'project.%s.cfg' % self.project_name - cmake_flags += '-DTDS_PROJECT_CONFIG_FILE=%s ' % filename - - content = content.replace( "@PROJECT@", self.project_name ) - content = content.replace( "@OS_SYSTEM@", getOS_Name() ) - content = content.replace( "@PACKAGER@", getpass.getuser() ) - content = content.replace( "@VERSION@", self.version_str() ) - content = content.replace( "@RELEASE@", str(self.version_rev) ) - content = content.replace( "@SOURCE_DIR_REL@", self.source_dir_rel ) - content = content.replace( "@SOURCES@", self.xzfilename() ) - content = content.replace( "@APPLICATION@", self.repository ) - content = content.replace( "@CMAKE_FLAGS@ ", cmake_flags ) - content = content.replace( "@JENKINS_BUILD_TAG@", jenkins_build_tag ) - if not os.path.exists( dest_dir ): - os.makedirs( dest_dir ) - f = open( os.path.join( dest_dir, os.path.split( spec_fullpath )[1] ), 'w' ) + cmake_flags += '-DCMAKE_BUILD_TYPE="%s" ' % self.buildtype - f.write( content ) - f.close() + filename = "project.%s.cfg" % self.project_name + cmake_flags += "-DTDS_PROJECT_CONFIG_FILE=%s " % filename - def clean_lts_cc_conf(self, folder): - config_files = [] - for root, dirs, files in os.walk(folder): - for name in files: - if fnmatch.fnmatch(name, 'lts-cc*conf'): - config_files.append(os.path.join(root, name)) + content = content.replace("@PROJECT@", self.project_name) + content = content.replace("@OS_SYSTEM@", getOS_Name()) + content = content.replace("@PACKAGER@", getpass.getuser()) + content = content.replace("@VERSION@", self.version_str()) + content = content.replace("@RELEASE@", str(self.version_rev)) + content = content.replace("@SOURCE_DIR_REL@", self.source_dir_rel) + content = content.replace("@SOURCES@", self.xzfilename()) + content = content.replace("@APPLICATION@", self.repository) + content = content.replace("@CMAKE_FLAGS@ ", cmake_flags) + content = content.replace("@JENKINS_BUILD_TAG@", jenkins_build_tag) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) + f = open(os.path.join(dest_dir, os.path.split(spec_fullpath)[1]), "w") - for config_file in config_files: - config = ConfigParser.RawConfigParser() - config.optionxform = str - config.read(config_file) + f.write(content) + f.close() - for section in config.sections(): - if len(config.items(section)) == 0: - config.remove_section(section) - - with open(config_file, 'w') as file: - config.write(file) + def clean_lts_cc_conf(self, folder): + config_files = [] + for root, dirs, files in os.walk(folder): + for name in files: + if fnmatch.fnmatch(name, "lts-cc*conf"): + config_files.append(os.path.join(root, name)) - def pack_sources( self, src_dir, dest_dir ): - xzfilename = self.xzfilename() - xzfilename = os.path.join( dest_dir, xzfilename ) + for config_file in config_files: + config = ConfigParser.RawConfigParser() + config.optionxform = str + config.read(config_file) - info( "--------------------------------" ) - info( "Packing sources in %s to %s" % ( src_dir, xzfilename ) ) - info( "Packing chdir %s" % ( os.path.split( src_dir )[0] ) ) - info( "Packing pack %s" % ( os.path.split( src_dir )[1]) ) - info( "--------------------------------" ) + for section in config.sections(): + if len(config.items(section)) == 0: + config.remove_section(section) + with open(config_file, "w") as file: + config.write(file) - removeDirectory( xzfilename ) - if os.path.exists( xzfilename ): - os.remove( xzfilename ) - if not os.path.exists( dest_dir ): - os.makedirs( dest_dir ) + def pack_sources(self, src_dir, dest_dir): + xzfilename = self.xzfilename() + xzfilename = os.path.join(dest_dir, xzfilename) - os.chdir( os.path.split( src_dir )[0] ) - cmd = "tar cJf %s %s" % ( xzfilename, os.path.split( src_dir )[1] ) - system( cmd, sys.stdout ) and die( "while packing. cmd: %s" % command ) + info("--------------------------------") + info("Packing sources in %s to %s" % (src_dir, xzfilename)) + info("Packing chdir %s" % (os.path.split(src_dir)[0])) + info("Packing pack %s" % (os.path.split(src_dir)[1])) + info("--------------------------------") + removeDirectory(xzfilename) + if os.path.exists(xzfilename): + os.remove(xzfilename) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) - - - - - - - - - - + os.chdir(os.path.split(src_dir)[0]) + cmd = "tar cJf %s %s" % (xzfilename, os.path.split(src_dir)[1]) + system(cmd, sys.stdout) and die("while packing. cmd: %s" % command) def usage(): - print >> sys.stdout, "Usage: %s [-b ] -f -o -r -v -s " % sys.argv[0] + print >> sys.stdout, "Usage: %s [-b ] -f -o -r -v -s " % sys.argv[ + 0 + ] + def main(): - b = build() + b = build() - try: - opts, args = getopt.getopt(sys.argv[1:], "b:c:f:o:p:r:v:s:", - ["base_dir=", "cmake_build_flags=", "cmake_version_prefix=", "filelist=", "output_dir=", "project_name=", "repository", "version=", "svn_path="]) - except getopt.GetoptError as err: - print >> sys.stderr, err - usage() - sys.exit(2) - - rpm_filelist = None - svn_path = "trunk" - b.repository = "TDS" - for o, a in opts: - if o == "--cmake_build_flags": - b.cmake_build_flags = a - print("build flags: ", b.cmake_build_flags) - if o in ("-b", "--base_dir"): - b.base_dir = a - if o in ("-f", "--filelist"): - rpm_filelist = a - if o in ("-o", "--output_dir"): - b.output_dir = a - if o in ("-c", "--cmake_version_prefix"): - b.cmake_version_prefix = a - if o in ("-p", "--project_name"): - b.project_name = a - if o in ("-r", "--repository"): - b.repository = a - if o in ("-v", "--version"): - version = a.split('.') - try: - b.version_maj = version[0] - b.version_min = version[1] - except: - die( "Invalid version format (maj.min): %s" % a ) - - - b.version_date = os.getenv( "VERSION_DATE" ) - b.init() - b.printOptions() - - rpmbase_dir = '/shd/CTC/TOOLS/rpmbuild' - - project_base_dir = os.getenv( "PROJECT_BASE_DIR" ) - specdir = os.path.join( rpmbase_dir, "SPECS" ) - if not os.path.exists(specdir): - os.makedirs(specdir) - b.clean_lts_cc_conf(os.path.join(project_base_dir, 'Lts', 'Projects')) - specname = b.specname(os.path.join(project_base_dir, 'specs')) - b.copy_spec( specdir, os.path.join(project_base_dir, "specs", specname )) - - full_version = "%s.%s-%s" % ( b.version_maj, b.version_min, b.version_rev ) - b.printOptions() - - b.pack_sources( project_base_dir, os.path.join( rpmbase_dir, "SOURCES" ) ) - exec_rpmbuild( specdir, specname ) - - - dstdir = os.path.join( b.output_dir, "%s-%s-%s" % ( b.project_name, b.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 ) + opts, args = getopt.getopt( + sys.argv[1:], + "b:c:f:o:p:r:v:s:", + [ + "base_dir=", + "cmake_build_flags=", + "cmake_version_prefix=", + "filelist=", + "output_dir=", + "project_name=", + "repository", + "version=", + "svn_path=", + ], + ) + except getopt.GetoptError as err: + print >> sys.stderr, err + usage() + sys.exit(2) + + rpm_filelist = None + svn_path = "trunk" + b.repository = "TDS" + for o, a in opts: + if o == "--cmake_build_flags": + b.cmake_build_flags = a + print("build flags: ", b.cmake_build_flags) + if o in ("-b", "--base_dir"): + b.base_dir = a + if o in ("-f", "--filelist"): + rpm_filelist = a + if o in ("-o", "--output_dir"): + b.output_dir = a + if o in ("-c", "--cmake_version_prefix"): + b.cmake_version_prefix = a + if o in ("-p", "--project_name"): + b.project_name = a + if o in ("-r", "--repository"): + b.repository = a + if o in ("-v", "--version"): + version = a.split(".") + try: + b.version_maj = version[0] + b.version_min = version[1] + except: + die("Invalid version format (maj.min): %s" % a) + + b.version_date = os.getenv("VERSION_DATE") + b.init() + b.printOptions() + + rpmbase_dir = "/shd/CTC/TOOLS/rpmbuild" + + project_base_dir = os.getenv("PROJECT_BASE_DIR") + specdir = os.path.join(rpmbase_dir, "SPECS") + if not os.path.exists(specdir): + os.makedirs(specdir) + b.clean_lts_cc_conf(os.path.join(project_base_dir, "Lts", "Projects")) + specname = b.specname(os.path.join(project_base_dir, "specs")) + b.copy_spec(specdir, os.path.join(project_base_dir, "specs", specname)) + + full_version = "%s.%s-%s" % (b.version_maj, b.version_min, b.version_rev) + b.printOptions() + + b.pack_sources(project_base_dir, os.path.join(rpmbase_dir, "SOURCES")) + exec_rpmbuild(specdir, specname) + + dstdir = os.path.join( + b.output_dir, "%s-%s-%s" % (b.project_name, b.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() + main()