def clean_source(self, buildreq, conn_data): retval = None if buildreq.transport.method != "apt": retval = "wrong_method" if not retval: src_dir = os.path.join(self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method) src_changes = "%s/%s_%s.dsc" % (src_dir, buildreq.get_package(), buildreq.get_version()) command = "dcmd rm -f %s" % src_changes if not os.path.exists(src_changes): retval = "success" elif pybitclient.run_cmd(command, self.settings["dry_run"], None): retval = "source-clean-fail" if not retval: self.cleandir = os.path.join(self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method, buildreq.get_package()) command = "rm -rf %s/" % self.cleandir if pybitclient.run_cmd(command, self.settings["dry_run"], None): retval = "failed_clean" if not retval: retval = "success" pybitclient.send_message(conn_data, retval) if retval == "success": return 0 else: return 1
def build_slave (self, buildreq, conn_data): retval = None srcdir = os.path.join (self.options["buildroot"], buildreq.get_suite(), buildreq.transport.method) package_dir = "%s/%s" % (srcdir, buildreq.get_package()) if os.path.isdir(package_dir) : command = "(cd %s ; dpkg-buildpackage -S -d -uc -us)" % package_dir if not pybitclient.run_cmd (command, self.options["dry_run"]): retval = "build_dsc" if not retval : command = "sbuild --apt-update -d %s %s/%s_%s.dsc" % ( buildreq.get_suite(), srcdir, buildreq.get_package(), buildreq.get_version()) if not pybitclient.run_cmd (command, self.options["dry_run"]): retval = "build_binary" if not retval : changes = "%s/%s_%s_%s.changes" % (srcdir, buildreq.get_package(), buildreq.get_version(), buildreq.get_arch()) if not os.path.isfile (changes) : print "Failed to find %s file." % (changes) retval = "build_changes" if not retval : retval = "success" pybitclient.send_message (conn_data, retval) if retval == "success": return 0 else : return 1
def build_master(self, buildreq, conn_data): retval = None logfile = self.get_buildlog(self.settings["buildroot"], buildreq) if not isinstance(buildreq, BuildRequest): logging.debug("E: not able to identify package name.") retval = "misconfigured" pybitclient.send_message(conn_data, retval) return srcdir = os.path.join(self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method) package_dir = "%s/%s" % (srcdir, buildreq.get_package()) command = "(cd %s ; dpkg-buildpackage -S -d -uc -us)" % package_dir if pybitclient.run_cmd(command, self.settings["dry_run"], logfile): retval = "build-dep-wait" if not retval: command = "sbuild -n --debbuildopt=\"-a%s\" --setup-hook=\"/usr/bin/sbuild-cross.sh\" --arch=%s -A -s -d %s %s/%s_%s.dsc" % ( buildreq.get_arch(), buildreq.get_arch(), buildreq.get_suite(), srcdir, buildreq.get_package(), buildreq.get_version()) if pybitclient.run_cmd(command, self.settings["dry_run"], logfile): retval = "build_binary" if not retval: changes = "%s/%s_%s_%s.changes" % (self.settings["buildroot"], buildreq.get_package(), buildreq.get_version(), buildreq.get_arch()) if not self.settings["dry_run"] and not os.path.isfile(changes): logging.debug("build_master: Failed to find %s file." % changes) retval = "build_changes" if not retval: retval = "success" pybitclient.send_message(conn_data, retval) if retval == "success": return 0 else: return 1
def build_slave(self, buildreq, conn_data): retval = None logfile = self.get_buildlog(self.settings["buildroot"], buildreq) srcdir = os.path.join(self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method) package_dir = "%s/%s" % (srcdir, buildreq.get_package()) if os.path.isdir(package_dir) or self.settings["dry_run"]: command = "(cd %s ; dpkg-buildpackage -S -d -uc -us)" % package_dir if pybitclient.run_cmd(command, self.settings["dry_run"], logfile): retval = "build_dsc" if not retval: command = "sbuild -n --apt-update -d %s %s/%s_%s.dsc" % ( buildreq.get_suite(), srcdir, buildreq.get_package(), buildreq.get_version()) if pybitclient.run_cmd(command, self.settings["dry_run"], logfile): retval = "build_binary" if not retval: changes = "%s/%s_%s_%s.changes" % (self.settings["buildroot"], buildreq.get_package(), buildreq.get_version(), buildreq.get_arch()) if not self.settings["dry_run"] and not os.path.isfile(changes): logging.debug("build_slave: Failed to find %s file." % changes) retval = "build_changes" else: retval = "Can't find build dir." if not retval: retval = "success" pybitclient.send_message(conn_data, retval) if retval == "success": return 0 else: return 1
def fetch_source(self, buildreq, conn_data): retval = None if buildreq.transport.method != self.method: retval = "wrong_method" if not retval: self.workdir = os.path.join( self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method, buildreq.get_package() ) if buildreq.transport.vcs_id is not None: command = "svn export %s@%s %s" % (buildreq.transport.uri, buildreq.transport.vcs_id, self.workdir) elif buildreq.transport.uri is not None: command = "svn export %s %s" % (buildreq.transport.uri, self.workdir) else: logging.warn("E: Could not fetch source, no method URI found") retval = "unrecognised uri" if not retval: if pybitclient.run_cmd(command, self.settings["dry_run"], None): retval = "fetch_source" if not retval: retval = "success" pybitclient.send_message(conn_data, retval) if retval == "success": return 0 else: return 1
def build_command_handler (self, buildreq, conn_data) : retval = None logfile = self.get_buildlog (self.settings["buildroot"], buildreq) # expect fakeroot debian/rules rules-target package_dir = os.path.join (self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method, buildreq.get_package()) parts = buildreq.commands.split(' ') if len(parts) != 3 : retval = "failed-custom-command-len" if retval : return retval # only allow debian/rules targets, specified in full if parts[0] != "fakeroot" or parts[1] != "debian/rules" or parts[2] is None : retval = "failed-custom-command-parts" if retval : return retval # debian/rules targets must be run in the package_dir and # a command passed to schroot needs to be accessible inside the # chroot and therefore copied to ${HOME} so that schroot copies it again, # into the chroot itself. orig_sh = "/usr/share/pybitclient/sbuild-orig.sh" command = "(cp %s %s/sbuild-orig.sh ; schroot -n -u root -c %s -- %s/sbuild-orig.sh %s %s ; rm %s/sbuild-orig.sh)" % (orig_sh, self.settings["buildroot"], buildreq.get_suite(), self.settings["buildroot"], package_dir, parts[2], self.settings["buildroot"]) if pybitclient.run_cmd (command, self.settings["dry_run"], logfile): retval = "custom-command-error" return retval
def fetch_source(self, buildreq, conn_data): retval = None # try: if buildreq.transport.method != "svn": retval = "wrong_method" if not retval: self.workdir = os.path.join( self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method, buildreq.get_package() ) if buildreq.transport.vcs_id is not None: command = "svn export %s@%s %s" % (buildreq.transport.uri, buildreq.transport.vcs_id, self.workdir) elif buildreq.transport.uri is not None: command = "svn export %s %s" % (buildreq.transport.uri, self.workdir) else: print "Could not fetch source, no method URI found" retval = "unrecognised uri" if not retval: if not pybitclient.run_cmd(command, self.settings["dry_run"]): retval = "fetch_source" # except Exception as e: # retval = str(e) if not retval: retval = "success" pybitclient.send_message(conn_data, retval) if retval == "success": return 0 else: return 1
def build_slave (self, buildreq, conn_data): retval = None logfile = self.get_buildlog (self.settings["buildroot"], buildreq) srcdir = os.path.join (self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method) package_dir = "%s/%s" % (srcdir, buildreq.get_package()) if os.path.isdir(package_dir) or self.settings["dry_run"]: # need an extra uscan stage to deal with non-native packages # this requires the upstream release to be accessible to the client. # i.e. unreleased versions of non-native packages cannot be built this way. # See #18 for the unreleased build support issue. if hasattr (buildreq, 'commands') and buildreq.commands : retval = self.build_command_handler (buildreq, conn_data) else : retval = self.orig_source_handler (buildreq, conn_data) command = "(cd %s ; dpkg-buildpackage -nc -S -d -uc -us)" % (package_dir) if pybitclient.run_cmd (command, self.settings["dry_run"], logfile): retval = "build_dsc" chroot_name = buildreq.get_suite() if (buildreq.get_buildenv() is not None): chroot_name = "%s-%s" % (buildreq.get_buildenv(), buildreq.get_suite()) if not retval : command = "sbuild -n --apt-update -d %s %s/%s_%s.dsc" % (chroot_name, srcdir, buildreq.get_package(), buildreq.get_version()) ret = pybitclient.run_cmd (command, self.settings["dry_run"], logfile) if (ret == 3 or ret == 768): retval = "build-dep-wait" elif (ret): retval = "build_binary" if not retval : changes = "%s/%s_%s_%s.changes" % (self.settings["buildroot"], buildreq.get_package(), buildreq.get_version(), buildreq.get_arch()) if not self.settings["dry_run"] and not os.path.isfile (changes) : logging.warn ("E: build_slave: Failed to find %s file." % (changes)) retval = "build_changes" if not retval and checkValue ('debsignkey', self.settings) : command = "debsign -k%s %s" % (self.settings['debsignkey'], changes) if pybitclient.run_cmd (command, self.settings["dry_run"], logfile): retval = "build_sign" else: retval = "Can't find build dir." #If we have a message set we send back the message and failure return self._overall_success(retval, conn_data)
def build_master (self, buildreq, conn_data): retval = None if (not isinstance(buildreq, BuildRequest)): print "E: not able to identify package name." retval = "misconfigured" pybitclient.send_message (conn_data, retval) return srcdir = os.path.join (self.options["buildroot"], buildreq.get_suite(), buildreq.transport.method) package_dir = "%s/%s" % (srcdir, buildreq.get_package()) command = "(cd %s ; dpkg-buildpackage -S -d -uc -us)" % (package_dir) if not pybitclient.run_cmd (command, self.options["dry_run"]): retval = "build-dep-wait" if not retval : command = "sbuild --debbuildopt=\"-a%s\" --setup-hook=\"/usr/bin/sbuild-cross.sh\" --arch=%s -A -s -d %s %s/%s_%s.dsc" % (pkg.architecture, pkg.architecture, pkg.suite, srcdir, pkg.source, pkg.version) if not pybitclient.run_cmd (command, self.options["dry_run"]): retval = "build_binary"
def clean_source(self, buildreq, conn_data): retval = None if buildreq.transport.method != self.method: retval = "wrong_method" if not retval: # look for a _source.changes file generated when we made the .dsc src_chgs = os.path.join( self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method, ("%s_%s_source.changes" % (buildreq.get_package(), buildreq.get_version())), ) if os.path.exists(src_chgs): command = "dcmd rm -f %s" % (src_chgs) if pybitclient.run_cmd(command, self.settings["dry_run"], None): retval = "source-clean-fail" else: # check for just the .dsc src_chgs = os.path.join( self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method, ("%s_%s.dsc" % (buildreq.get_package(), buildreq.get_version())), ) if os.path.exists(src_chgs): command = "dcmd rm -f %s" % (src_chgs) if pybitclient.run_cmd(command, self.settings["dry_run"], None): retval = "source-clean-fail" if not retval: self.cleandir = os.path.join( self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method, buildreq.get_package() ) command = "rm -rf %s" % (self.cleandir) if pybitclient.run_cmd(command, self.settings["dry_run"], None): retval = "failed_clean" if not retval: retval = "success" pybitclient.send_message(conn_data, retval) # return the exit value of the process - exit (0) for success. if retval == "success": return 0 else: return 1
def upload (self, buildreq, conn_data): retval = None logfile = self.get_buildlog (self.settings["buildroot"], buildreq) changes = "%s/%s_%s_%s.changes" % (self.settings["buildroot"], buildreq.get_package(), buildreq.get_version(), buildreq.get_arch()) if not os.path.isfile (changes) and not self.settings["dry_run"]: logging.debug("upload: Failed to find %s file." % (changes)) retval = "upload_changes" if not retval : command = "dput -c %s %s %s %s" % (self.dput_cfg, self.settings["dput"], self.settings["dput_dest"], changes) if pybitclient.run_cmd (command, self.settings["dry_run"], logfile): retval = "upload_fail" if not retval : command = "dcmd rm %s" % (changes) if pybitclient.run_cmd (command, self.settings["dry_run"], logfile): retval = "post-upload-clean-fail" return self._overall_success(retval, conn_data)
def update_environment(self, name, pkg, conn_data): retval = "success" command = "schroot -u root -c %s -- apt-get update > /dev/null 2>&1" % name if pybitclient.run_cmd(command, self.settings["dry_run"], None): retval = "build_update" pybitclient.send_message(conn_data, retval) if retval == "success": return 0 else: return 1
def fetch_source(self, buildreq, conn_data): retval = None command = None if buildreq.transport.method != "apt": retval = "wrong_method" if not retval: self.workdir = os.path.join(self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method, buildreq.get_package()) if not os.path.isdir(self.workdir): pybitclient.mkdir_p(self.workdir) apt_path = os.path.join(self.workdir, "lists", "partial") pybitclient.mkdir_p(apt_path) apt_path = os.path.join(self.workdir, "archives", "partial") pybitclient.mkdir_p(apt_path) apt_path = os.path.join(self.workdir, "etc", "apt", "preferences.d") pybitclient.mkdir_p(apt_path) apt_path = os.path.join(self.workdir, "sources.list") src_list = os.open(apt_path, os.O_CREAT | os.O_WRONLY) url = "deb-src http://cdn.debian.net/debian %s main " % buildreq.get_suite() os.write(src_list, url) cfg_str = "-o Apt::Get::AllowUnauthenticated=true -o Dir=%s -o Dir::State=%s -o Dir::Etc::SourceList=%s/sources.list -o Dir::Cache=%s" % \ (self.workdir, self.workdir, self.workdir, self.workdir) command = "(cd %s && apt-get %s update 2>/dev/null || true)" % (self.workdir, cfg_str) if not retval: if pybitclient.run_cmd(command, self.settings["dry_run"], None): retval = "update_apt" if buildreq.get_version() is not None: command = "(cd %s/.. && apt-get %s -d source %s=%s )" % (self.workdir, cfg_str, buildreq.get_package(), buildreq.get_version()) else: command = "(cd %s && apt-get %s -d source %s )" % (self.workdir, cfg_str, buildreq.get_package()) if not retval: if pybitclient.run_cmd(command, self.settings["dry_run"], None): retval = "fetch_source" if not retval: retval = "success" pybitclient.send_message(conn_data, retval) # return the exit value of the process - exit (0) for success. if retval == "success": return 0 else: return 1
def clean_source (self, buildreq, conn_data) : retval = None if buildreq.transport.method != "git": retval = "wrong_method" if not retval : self.cleandir = os.path.join (self.options["buildroot"], buildreq.get_suite()) command = "rm -rf %s/*" % (self.cleandir) if not pybitclient.run_cmd (command, self.options["dry_run"]) : retval = "failed_clean" retval = "success" pybitclient.send_message (conn_data, retval)
def build_master (self, buildreq, conn_data): print "build_master" retval = None if (not isinstance(buildreq, BuildRequest)): print "E: not able to identify package name." retval = "misconfigured" pybitclient.send_message (conn_data, retval) return srcdir = os.path.join (self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method) package_dir = "%s/%s" % (srcdir, buildreq.get_package()) # FIXME: doesn't make sense to run dpkg-checkbuilddeps outside the chroot! if os.path.isdir(package_dir) : control = os.path.join (package_dir, 'debian', 'control') dep_check = "/usr/lib/pbuilder/pbuilder-satisfydepends-classic --control" command = "schroot -u root -c %s -- %s %s" % (buildreq.get_suite(), dep_check, os.path.realpath(control)) if not pybitclient.run_cmd (command, self.settings["dry_run"]): retval = "build-dep-wait" if not retval : command = "(cd %s ; dpkg-buildpackage -S -d -uc -us)" % (package_dir) if not pybitclient.run_cmd (command, self.settings["dry_run"]): retval = "build_dsc" if not retval : command = "sbuild -A -s -d %s %s/%s_%s.dsc" % (buildreq.get_suite(), srcdir, buildreq.get_package(), buildreq.get_version()) if not pybitclient.run_cmd (command, self.settings["dry_run"]): retval = "build_binary" if not retval : changes = "%s/%s_%s_%s.changes" % (os.getcwd(), buildreq.get_package(), buildreq.get_version(), buildreq.get_arch()) if not self.settings["dry_run"] and not os.path.isfile (changes) : print "build_master: Failed to find %s file." % (changes) retval = "build_changes" if not retval : retval = "success" pybitclient.send_message (conn_data, retval) if retval == "success": return 0 else : return 1
def orig_source_handler (self, buildreq, conn_data) : retval = None logfile = self.get_buildlog (self.settings["buildroot"], buildreq) srcdir = os.path.join (self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method) version = buildreq.get_version() if '-' not in version : # native package, nothing to do for the orig source. return retval if self.settings["dry_run"] : logging.debug("I: %s (%s) is not a native package - need original source" % (buildreq.get_package(), version)) offset = version.find('-') # strip the debian packaging part of the version string origversion = version[0:offset] origtar = os.path.join (srcdir, "%s_%s.orig.tar.gz" % (buildreq.get_package(), origversion)) if os.path.isfile (origtar) : # have .gz return retval # check for .tar.bz2 origtar = os.path.join (srcdir, "%s_%s.orig.tar.bz2" % (buildreq.get_package(), origversion)) if os.path.isfile (origtar) : # have .bz2 return retval # use a debian/watch file and uscan package_dir = "%s/%s" % (srcdir, buildreq.get_package()) watch = os.path.join (srcdir, package_dir, "debian", "watch") logging.debug ("I: Looking for '%s' as watch file." % watch) if os.path.isfile (watch) or self.settings["dry_run"] : logging.debug ("I: Using '%s' as watch file." % watch) command = "(cd %s ; uscan --destdir ../ --repack --force-download --download-version %s)" % (os.path.join(srcdir, buildreq.get_package()), origversion) if pybitclient.run_cmd (command, self.settings["dry_run"], logfile): retval = "watch-failed" return retval # fall back to apt-get source else : command = "(cd ../ ; apt-get -d source %s/%s)" % (buildreq.get_package(), buildreq.get_suite()) if pybitclient.run_cmd (command, self.settings["dry_run"], logfile): logging.debug("I: apt-get source failed, proceeding anyway incase its an update of a debian package.") return retval
def clean_source (self, buildreq, conn_data) : retval = None if buildreq.transport.method != "apt": retval = "wrong_method" if not retval : self.cleandir = os.path.join (self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method, buildreq.get_package()) command = "rm -rf %s" % (self.cleandir) if pybitclient.run_cmd (command, self.settings["dry_run"], None) : retval = "failed_clean" if not retval : retval = "success" pybitclient.send_message (conn_data, retval) if retval == "success": return 0 else : return 1
def upload (self, buildreq, conn_data): retval = None srcdir = os.path.join (self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method) changes = "%s/%s_%s_%s.changes" % (os.getcwd(), buildreq.get_package(), buildreq.get_version(), buildreq.get_arch()) if not os.path.isfile (changes) and not self.settings["dry_run"]: print "upload: Failed to find %s file." % (changes) retval = "upload_changes" if not retval : command = "dput -c %s %s %s %s" % (self.dput_cfg, self.settings["dput"], self.settings["dput_dest"], changes) if not pybitclient.run_cmd (command, self.settings["dry_run"]): retval = "upload_fail" if not retval : retval = "success" pybitclient.send_message (conn_data, retval) if retval == "success": return 0 else : return 1
def fetch_source(self, buildreq, conn_data): retval = None #try: if buildreq.transport.method != "git": retval = "wrong_method" if not retval : self.workdir = os.path.join (self.options["buildroot"], buildreq.get_suite(), buildreq.transport.method) # vcs_id for git is a branch identifier if (buildreq.transport.vcs_id is not None): command = "git clone -b %s %s %s" % (buildreq.transport.vcs_id, buildreq.transport.uri, self.workdir) elif (buildreq.transport.uri is not None): command = "git clone %s %s" % (buildreq.transport.uri, self.workdir) else: print "Could not fetch source, no method URI found" retval = "unrecognised uri" if not retval : if not pybitclient.run_cmd (command, self.options["dry_run"]) : retval = "fetch_source" if not retval : retval = "success" pybitclient.send_message (conn_data, retval)
def fetch_source(self, buildreq, conn_data): retval = None if buildreq.transport.method != "apt": retval = "wrong_method" if not retval : self.workdir = os.path.join (self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method) if (buildreq.get_version() is not None): command = "(cd %s && apt-get -d source %s=%s && dpkg-source -x %s_%s.dsc)" % (self.workdir, buildreq.get_package(), buildreq.get_version(), buildreq.get_package(), buildreq.get_version() ) else : command = "(cd %s && apt-get -d source %s && dpkg-source -x %s_%s.dsc)" % (self.workdir, buildreq.get_package(), buildreq.get_package(), buildreq.get_version() ) if not retval : if pybitclient.run_cmd (command, self.settings["dry_run"], None) : retval = "fetch_source" if not retval : retval = "success" pybitclient.send_message (conn_data, retval) if retval == "success": return 0 else : return 1
def update_environment(self,name,pkg, conn_data): retval = None command = "schroot -u root -c %s -- apt-get update > /dev/null 2>&1" % (name) if pybitclient.run_cmd (command, self.settings["dry_run"], None) : retval = "build_update" return retval
def build_master (self, buildreq, conn_data): retval = None logfile = self.get_buildlog (self.settings["buildroot"], buildreq) if (not isinstance(buildreq, BuildRequest)): logging.debug ("E: not able to identify package name.") retval = "misconfigured" return self._overall_success(retval, conn_data) srcdir = os.path.join (self.settings["buildroot"], buildreq.get_suite(), buildreq.transport.method) package_dir = "%s/%s" % (srcdir, buildreq.get_package()) # To check the build-dependencies in advance, we need to ensure the # chroot has an update apt-cache, so can't use apt-update option of # sbuild. The alternative is to update the apt-cache twice per build, # once for the dep check and once before the build. The choice depends # on whether two network trips are more efficient than rewriting the # lvm snapshot before even trying to do any build. if self.settings["use_lvm"] : update_name = "%s-source" % buildreq.get_suite() else : update_name = buildreq.get_suite() retval = self.update_environment (update_name, buildreq, conn_data) # need an extra uscan stage to deal with non-native packages # this requires the upstream release to be accessible to the client. # i.e. unreleased versions of non-native packages cannot be built this way. # See #18 for the unreleased build support issue. if not retval: if hasattr (buildreq, 'commands') and buildreq.commands : retval = self.build_command_handler (buildreq, conn_data) else : #61 - avoid dependency check if not using lvm if self.settings["use_lvm"] and (os.path.isdir(package_dir) or self.settings["dry_run"]) : control = os.path.join (package_dir, 'debian', 'control') dep_check = "/usr/lib/pbuilder/pbuilder-satisfydepends-classic --control" command = "schroot -u root -c %s -- %s %s" % (buildreq.get_suite(), dep_check, os.path.realpath(control)) if pybitclient.run_cmd (command, self.settings["dry_run"], logfile): retval = "build-dep-wait" if not retval : retval = self.orig_source_handler (buildreq, conn_data) if not retval : dsc_file = "%s/%s_%s.dsc" % (srcdir, buildreq.get_package(), buildreq.get_version()) if not os.path.exists (dsc_file) : command = "(cd %s && dpkg-buildpackage -nc -S -d -uc -us)" % (package_dir) if pybitclient.run_cmd (command, self.settings["dry_run"], logfile): retval = "build_dsc" if not retval : command = "sbuild -A -n -s -d %s %s/%s_%s.dsc" % (buildreq.get_suite(), srcdir, buildreq.get_package(), buildreq.get_version()) ret = pybitclient.run_cmd (command, self.settings["dry_run"], logfile) if (ret == 3 or ret == 1): retval = "build-dep-wait" elif (ret): retval = "build_binary" if not retval : changes = "%s/%s_%s_%s.changes" % (self.settings["buildroot"], buildreq.get_package(), buildreq.get_version(), buildreq.get_arch()) if not self.settings["dry_run"] and not os.path.isfile (changes) : logging.debug("build_master: Failed to find %s file." % (changes)) retval = "build_changes" if not retval and checkValue ('debsignkey', self.settings) : command = "debsign -k%s %s" % (self.settings['debsignkey'], changes) if pybitclient.run_cmd (command, self.settings["dry_run"], logfile): retval = "build_sign" return self._overall_success(retval, conn_data)