def stage_resulting_changes(self, dscfile, arch): source, version = parse_dsc_filename(dscfile) basename = self._changes(dscfile, arch) resultdir = 'result/%s' % arch changes = os.path.join(resultdir, basename) if not os.path.isfile(changes): raise RuntimeError, "%s doesn't exist." % changes return self.stage_changes(source, changes, arch)
def install_to_repos(self, dist, changes): dscfile = self.get_dscfile_from_changes(changes) source, version = parse_dsc_filename(dscfile) if os.path.isfile(changes): self.local_repos.include(dist, changes) self.build_binary_packages(dscfile) here = os.getcwd() os.chdir(source) changes_files = [f for f in os.listdir('.') if f.endswith('.changes')] for changes in changes_files: self.local_repos.include(dist, changes)
def build(self, dscfile, pbuilderrc=None, wait=True): # we only parse the dsc file for # sanitation purposes. The source # and version variables aren't # being used. source, version = parse_dsc_filename(dscfile) address = self.command_prefix(user='******')[1] incoming = '~/%s' % self.buildd_incoming self.makedirs(incoming) # copy files to buildd if self.verbose: print "Copying files to %s" % address cmd = ['dcmd', 'scp', dscfile, '%s:~/%s' % (address, self.buildd_incoming)] subprocess.check_call(cmd) # prepare variables and logs basepath = self.basedir(pbuilderrc=pbuilderrc) buildresult = self.buildresult(pbuilderrc=pbuilderrc) package = os.path.basename(dscfile).split('.dsc')[0] self.current_package = package logname = self.logname('build.%s' % package) self.build_logfile = logname logfile = file(logname, 'a') self.make_prebuild_info(logfile, pbuilderrc) # prepare build command prefix = self.command_prefix(user='******') buildcmd = ['cowbuilder', '--build', '--basepath', basepath, '--buildresult', buildresult] buildcmd += self._update_cowbuild_cmd(pbuilderrc) buildcmd.append(dscfile) # setup command for remote execution shell_cmd = ' '.join(buildcmd) dirspec = self.incomingdir() ssh_cmd = 'cd %s && %s' % (dirspec, shell_cmd) cmd = prefix + [ssh_cmd] if self.verbose: msg = "building source %s with command: %s" print msg % (package, ' '.join(cmd)) # run command self.buildproc = Proc(cmd, stdout=logfile, stderr=logfile) if self.watch_build_process: self.make_tailproc(logname) if wait: while self.poll() is None: time.sleep(10) self.build_finished()
def build_source_package(self, dscfile): source, version = parse_dsc_filename(dscfile) upstream_version = version.split('-')[0] dirname = '%s-%s' % (source, upstream_version) here = os.getcwd() os.chdir(dirname) cmd = ['dpkg-buildpackage'] + self.srcbuild_opts subprocess.check_call(cmd) os.chdir(here) #self.builder.stage_resulting_changes(dscfile, 'source') changes = '%s_%s_source.changes' % (source, version) self.builder.stage_changes(source, changes, 'source', remove=False) return source
def staging_dir(self, dscfile): source, version = parse_dsc_filename(dscfile) return source