X-Git-Url: https://git.ralfj.de/auto-debuild.git/blobdiff_plain/b6fc6eb7df538eb1590944760beed6d8d859953a..ec078fb31f8ec2d9fde115a58ab064f7bbabb6b4:/auto_debuild.py diff --git a/auto_debuild.py b/auto_debuild.py index 17edd4e..8441f07 100755 --- a/auto_debuild.py +++ b/auto_debuild.py @@ -101,6 +101,7 @@ def createDebianFiles(config): dbgPackage = config.get('dbgPackage', False) parallelJobs = int(config.get('parallelJobs', 2)) packageArchitecture = config.get('architecture', 'any') + withPython2 = config.get('withPython2', False) # we return the list of files generated, so we need to know the architecture arch = getArchitecture(config) files = [] @@ -108,7 +109,7 @@ def createDebianFiles(config): if os.path.exists('debian'): raise Exception('debian folder already exists?') os.mkdir('debian') os.mkdir('debian/source') - if not os.path.exists(debDir): os.mkdir(debDir) + if not os.path.exists(debDir): os.makedirs(debDir) # source format file with open('debian/source/format', 'w') as f: print >>f, "3.0 (native)" @@ -140,6 +141,7 @@ def createDebianFiles(config): writeDependency(f, "Depends", ["${shlibs:Depends}", "${misc:Depends}"] + config.get('binaryDepends', [])) writeDependency(f, "Recommends", config.get('binaryRecommends', [])) writeDependency(f, "Provides", config.get('binaryProvides', [sourceName])) + writeDependency(f, "Conflicts", config.get('binaryConflicts', [])) print >>f, "Description:",sourceName,"(auto-debuild)" print >>f, " Package auto-generated by auto-debuild." files.append(os.path.join(debDir, "%s_%s_%s.deb" % (binaryName, version, arch))) @@ -157,6 +159,31 @@ def createDebianFiles(config): if line.startswith('/'): # a file from within the package, not from the source tree line = 'debian/'+binaryName+line print >>f, line + # maintainer scripts for alternatives + if 'alternatives' in config: + with open('debian/'+binaryName+'.postinst', 'w') as f: + print >>f, "#!/bin/sh" + print >>f, "set -e" + print >>f, 'if [ "$1" = "configure" ]; then' + for alternative in config['alternatives']: + print >>f, safeCall('update-alternatives', '--install', alternative['link'], alternative['name'], alternative['target'], + str(alternative['priority'])) + print >>f, 'fi' + print >>f, '' + print >>f, '#DEBHELPER#' + print >>f, '' + print >>f, 'exit 0' + with open('debian/'+binaryName+'.prerm', 'w') as f: + print >>f, "#!/bin/sh" + print >>f, "set -e" + print >>f, 'if [ "$1" = "remove" ]; then' + for alternative in config['alternatives']: + print >>f, safeCall('update-alternatives', '--remove', alternative['name'], alternative['target']) + print >>f, 'fi' + print >>f, '' + print >>f, '#DEBHELPER#' + print >>f, '' + 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 @@ -173,6 +200,9 @@ def createDebianFiles(config): r.env["DEB_CFLAGS_APPEND"] = '-g0' r.env["DEB_CXXFLAGS_APPEND"] = '-g0' r.dh += ['--parallel'] + if withPython2: + r.dh += ['--with=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