+# if auto-debuild is available, provide a wrapper for it
+try:
+ import auto_debuild
+ class AutoDebuild:
+ def __init__(self, sourceFolder, buildFolder, module, vcs, config):
+ self.sourceFolder = os.path.abspath(sourceFolder)
+ self.buildFolder = os.path.abspath(buildFolder)
+ self.jobs = config['jobs']
+ self.debDir = os.path.abspath(config['debDir'])
+ self.debName = config['debName']
+ self.debEMail = config['debEMail']
+ self.waitAfterConfig = config.get('waitAfterConfig', False)
+ self.module = module
+ self.vcs = vcs
+
+ def build(self, reconfigure=False): # reconfigure is ignored (we always do a reconfiguration)
+ # create auto-debuild configuration
+ autoDebuildConfig = {
+ 'sourceName': self.module['name'],
+ 'buildSystem': self.module['buildSystem'],
+ 'debDir': self.debDir,
+ 'buildDir': self.buildFolder,
+ 'name': self.debName,
+ 'email': self.debEMail,
+ 'parallelJobs': self.jobs,
+ 'version': self.vcs.version(),
+ 'waitAfterConfig': self.waitAfterConfig,
+ }
+ if autoDebuildConfig['version'] is None:
+ raise Exception("VCS did not provide us with a proper version number, please fix this")
+ # copy some more optional configuration
+ for option in ('dbgPackage', 'section', 'binarySkipFiles', 'binaryInstallFiles',
+ 'buildDepends', 'binaryDepends', 'binaryRecommends', 'binaryProvides',
+ 'cmakeParameters', 'automakeParameters'):
+ if option in self.module:
+ autoDebuildConfig[option] = self.module[option]
+ # create Debian files
+ os.chdir(self.sourceFolder)
+ if os.path.isdir('debian'): # clean previous build attempts
+ shutil.rmtree('debian')
+ files = auto_debuild.createDebianFiles(autoDebuildConfig)
+ # build package(s)
+ auto_debuild.buildDebianPackage(autoDebuildConfig)
+ # install package(s)
+ subprocess.check_call(['sudo', 'dpkg', '--install'] + files)
+
+except ImportError:
+ #print "auto_debuild not found, disabling auto-debuild system"
+ pass