From: Ralf Jung Date: Sat, 15 Dec 2012 14:16:39 +0000 (+0100) Subject: pass the rules file to the build system as argument, and pre-fill it with the default... X-Git-Url: https://git.ralfj.de/auto-debuild.git/commitdiff_plain/120b0317e8c68505f553dcdaa4591bcfdb104afe pass the rules file to the build system as argument, and pre-fill it with the default auto_* actions we override --- diff --git a/auto_debuild.py b/auto_debuild.py index b409bd1..441302c 100755 --- a/auto_debuild.py +++ b/auto_debuild.py @@ -119,10 +119,9 @@ class RulesFile: print >>f, "\t"+line # rule-makers -def cmakeRules(config): +def cmakeRules(r, config): buildDir = config.getstr('buildDir', 'build') srcDir = os.getcwd() - r = RulesFile() r.dh += ["--buildsystem=cmake", "--builddirectory="+buildDir] # dh parameters r.rules['auto_configure'] = [ safeCall("mkdir", "-p", buildDir), @@ -130,13 +129,11 @@ def cmakeRules(config): safeCall("cmake", srcDir, "-DCMAKE_INSTALL_PREFIX=/usr", *config.get('cmakeParameters', [])) ] r.rules['auto_clean'] = [safeCall('rm', '-f', os.path.join(buildDir, 'CMakeCache.txt'))] # clean old cmake cache - return r -def automakeRules(config): +def automakeRules(r, config): # "build" is what we are building *on*, and "host" is what we are building *for* (and GNU is weird...) # also, we don't really support cross-building... ;-) (to do, we'd have to write shell code that checks whether BUILD_GNU_TYPE # and HOST_GNU_TYPE are equal, and if they are not, add a --host parameter) - r = RulesFile() r.dh += ["--buildsystem=autoconf"] r.rules['auto_configure'] = [ 'BUILD_TYPE=$$(dpkg-architecture -qDEB_BUILD_GNU_TYPE) && ' + # doing the expansion beforehand ensures that we cancel if it fails @@ -148,22 +145,17 @@ def automakeRules(config): safeCall(*config.get('automakeParameters', [])) ] r.rules['auto_clean'] = ['rm -f config.status'] # do not re-use old configuration (no need for escaping here, obviously) - return r -def pythonRules(config): - r = RulesFile() +def pythonRules(r, config): r.dh += ["--buildsystem=python_distutils"] r.dhWith.add('python2') r.rules['auto_clean'] = [ # clean properly 'dh_auto_clean', 'rm -rf build' ] - return r -def makefileRules(config): - r = RulesFile() - r.dh += ["--buildsystem=makefile"] # makefile does the least possible harm - return r +def makefileRules(r, config): + r.dh += ["--buildsystem=makefile"] def noneRules(config): r = RulesFile() @@ -308,8 +300,12 @@ def createDebianFiles(config): print >>f, 'exit 0' # rules file: build system specific with open('debian/rules', 'w') as f: - # get rule file for build system: may only touch auto_config and auto_clean rules and the dh options - r = buildSystem.ruleMaker(config) + # pre-fill rule file with our global defaults + r = RulesFile() + r.rules['auto_test'] = [] + r.rules['auto_install'] = [safeCall('dh_auto_install', '--destdir=debian/'+binaryName)] # install everything into the binary package + # patch rule file for build system: may only touch auto_* rules and the dh options + buildSystem.ruleMaker(r, config) # global rules r.env["DEB_BUILD_OPTIONS"] = 'parallel='+str(parallelJobs) if not dbgPackage: @@ -321,12 +317,10 @@ def createDebianFiles(config): r.dhWith.add('python2') r.rules['python2'] = ['dh_python2 --no-guessing-versions'] r.rules['builddeb'] = [safeCall('dh_builddeb', "--destdir="+debDir)] # passing this gobally to dh results in weird problems (like stuff being installed there, and not in the package...) - r.rules['auto_test'] = [] # installation rule - r.rules['auto_install'] = [safeCall('dh_auto_install', '--destdir=debian/'+binaryName)] # install everything into the binary package if 'binarySkipFiles' in config: - r.rules['auto_install'].append(safeCall('cd', 'debian/'+binaryName) + " && " + - safeCall('rm', *config.get('binarySkipFiles'))) + if not 'auto_install' in r.rules: r.rules['auto_install'] = ['dh_auto_install'] # make sure there is an override + r.rules['auto_install'].append(safeCall('cd', 'debian/'+binaryName) + " && " + safeCall('rm', *config.get('binarySkipFiles'))) # for debug packages if dbgPackage: r.rules['strip'] = [safeCall('dh_strip', '--dbg-package='+binaryName+"-dbg")] # put debug files in appropriate package