Example #1
0
 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
Example #2
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"
         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
Example #3
0
	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
Example #4
0
 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
Example #5
0
File: apt.py Project: lmotyka/pybit
 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
Example #6
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"]:
         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
Example #7
0
	def _overall_success(self, message, conn_data):
		error = 1
		#If we have a message set we send back the message and failure
		if message :
			pybitclient.send_message (conn_data, message)
		else:
			pybitclient.send_message (conn_data, "success")
			error = 0
		return error
Example #8
0
 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
Example #9
0
	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)
Example #10
0
	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
Example #11
0
	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"
Example #12
0
 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
Example #13
0
File: apt.py Project: lmotyka/pybit
 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
Example #14
0
	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
Example #15
0
	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
Example #16
0
	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)
Example #17
0
	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
Example #18
0
 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"
     if not retval:
         retval = "success"
     pybitclient.send_message(conn_data, retval)
     if retval == "success":
         return 0
     else:
         return 1