def connect(self): # for catbells if (checkValue('password',self.settings)): if (checkValue('hostname',self.settings) and checkValue('port',self.settings)): # remote with password print "REMOTE WITH PASSWORD" self.conn = psycopg2.connect(database=self.settings['databasename'], user=self.settings['user'], host=self.settings['hostname'], port=self.settings['port'], password=self.settings['password']) else: # local with password print "LOCAL WITH PASSWORD" self.conn = psycopg2.connect(database=self.settings['databasename'], user=self.settings['user'], password=self.settings['password']) else: if (checkValue('hostname',self.settings) and checkValue('port',self.settings)): # remote without password print "REMOTE WITHOUT PASSWORD" self.conn = psycopg2.connect(database=self.settings['databasename'],user=self.settings['user'], host=self.settings['hostname'],port=self.settings['port']) else: # local without password print "LOCAL WITHOUT PASSWORD" self.conn = psycopg2.connect(database=self.settings['databasename'], user=self.settings['user'])
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 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)