Пример #1
0
	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'])
Пример #2
0
    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)
Пример #3
0
	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)