X-Git-Url: https://git.ralfj.de/auto-debuild.git/blobdiff_plain/e82d2ebfa5c26c1e60a334c9f048cf9661f019f5..bc80860e910048709d5d405e5148cae6c75a0dc6:/auto_debuild.py diff --git a/auto_debuild.py b/auto_debuild.py index c827a12..c7a7628 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 = [] @@ -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))) @@ -173,6 +175,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 @@ -203,23 +208,33 @@ def buildDebianPackage(config): ################################################################### # if we are called directly as script if __name__ == "__main__": - import imp - # get config - config = imp.load_source('config', 'auto-debuild.conf').__dict__ - os.remove('auto-debuild.confc') - # generate debian files - if os.path.exists('debian'): - if raw_input("A debian folder already exists, to you want to remove it (y/N)? ").lower() != "y": - sys.exit(1) - shutil.rmtree('debian') - files = createDebianFiles(config) - # check if a file is overwritten - for file in files: - if os.path.exists(file): - if raw_input("Do you want to overwrite %s (y/N)? " % file).lower() != "y": + try: + import imp + # get config + config = imp.load_source('config', 'auto-debuild.conf').__dict__ + os.remove('auto-debuild.confc') + # generate debian files + if os.path.exists('debian'): + if raw_input("A debian folder already exists, to you want to remove it (y/N)? ").lower() != "y": sys.exit(1) - # run compilation - buildDebianPackage(config) - # install files - print "Installing created deb files..." - subprocess.check_call(['sudo', 'dpkg', '--install'] + files) + shutil.rmtree('debian') + files = createDebianFiles(config) + # check if a file is overwritten + for file in files: + if os.path.exists(file): + if raw_input("Do you want to overwrite %s (y/N)? " % file).lower() != "y": + sys.exit(1) + # run compilation + buildDebianPackage(config) + # install files + print "Installing created deb files..." + subprocess.check_call(['sudo', 'dpkg', '--install'] + files) + except (subprocess.CalledProcessError, KeyboardInterrupt) as e: # for some exceptions, a stackrace is usually pointless + print >> sys.stderr + print >> sys.stderr + if isinstance(e, KeyboardInterrupt): # str(e) would be the empty string + print >> sys.stderr, "Interruped by user" + else: + print >> sys.stderr, "Error during package creation: %s" % str(e) + print >> sys.stderr + sys.exit(1)