[elbe-devel] [PATCH v2 3/5] pbuilder: allow passing the buildprofile with --profile option
Torben Hohn
torben.hohn at linutronix.de
Sat Feb 2 00:57:17 CET 2019
pdebuild from jessie-backports allows to specify the DEB_BUILD_PROFILES
env var.
Add --profile option to 'elbe pbuilder' command, and pass the value
through to elbe control -> soap -> asyncworker -> elbeproject -> pdebuild
Signed-off-by: Torben Hohn <torben.hohn at linutronix.de>
---
elbepack/asyncworker.py | 5 +++--
elbepack/commands/control.py | 3 +++
elbepack/commands/pbuilder.py | 3 +++
elbepack/daemons/soap/esoap.py | 6 +++---
elbepack/elbeproject.py | 11 ++++++-----
elbepack/pbuilderaction.py | 6 ++++--
elbepack/projectmanager.py | 4 ++--
elbepack/soapclient.py | 2 +-
8 files changed, 25 insertions(+), 15 deletions(-)
diff --git a/elbepack/asyncworker.py b/elbepack/asyncworker.py
index 7f6173ba..7b64a0d5 100644
--- a/elbepack/asyncworker.py
+++ b/elbepack/asyncworker.py
@@ -215,9 +215,10 @@ class BuildJob(AsyncWorkerJob):
class PdebuildJob(AsyncWorkerJob):
- def __init__(self, project, cpuset=-1):
+ def __init__(self, project, cpuset=-1, profile=""):
AsyncWorkerJob.__init__(self, project)
self.cpuset=cpuset
+ self.profile=profile
def enqueue(self, queue, db):
db.set_busy(self.project.builddir,
@@ -229,7 +230,7 @@ class PdebuildJob(AsyncWorkerJob):
def execute(self, db):
try:
self.project.log.printo("Pdebuild started")
- self.project.pdebuild(self.cpuset)
+ self.project.pdebuild(self.cpuset, self.profile)
db.update_project_files(self.project)
self.project.log.printo("Pdeb finished successfully")
db.reset_busy(self.project.builddir, "build_done")
diff --git a/elbepack/commands/control.py b/elbepack/commands/control.py
index 11855a00..cb539b70 100644
--- a/elbepack/commands/control.py
+++ b/elbepack/commands/control.py
@@ -79,6 +79,9 @@ def run_command(argv):
oparser.add_option("--cpuset", default=-1, type="int",
help="Limit cpuset of pbuilder commands (bitmask) (defaults to -1 for all CPUs)")
+ oparser.add_option("--profile", dest="profile", default="",
+ help="Make pbuilder commands build the specified profile")
+
devel = OptionGroup(
oparser,
"options for elbe developers",
diff --git a/elbepack/commands/pbuilder.py b/elbepack/commands/pbuilder.py
index 5b8542d4..2e5f55d9 100644
--- a/elbepack/commands/pbuilder.py
+++ b/elbepack/commands/pbuilder.py
@@ -43,6 +43,9 @@ def run_command(argv):
help="Limit cpuset of pbuilder commands (bitmask) "
"(defaults to -1 for all CPUs)")
+ oparser.add_option("--profile", dest="profile", default="",
+ help="profile that shall be built")
+
PreprocessWrapper.add_options(oparser)
(opt, args) = oparser.parse_args(argv)
diff --git a/elbepack/daemons/soap/esoap.py b/elbepack/daemons/soap/esoap.py
index e29d18a0..09fb45fb 100644
--- a/elbepack/daemons/soap/esoap.py
+++ b/elbepack/daemons/soap/esoap.py
@@ -291,12 +291,12 @@ class ESoap (ServiceBase):
fp.write(binascii.a2b_base64(data))
fp.close()
- @rpc(String, Integer)
+ @rpc(String, Integer, String)
@authenticated_uid
@soap_faults
- def finish_pdebuild(self, uid, builddir, cpuset):
+ def finish_pdebuild(self, uid, builddir, cpuset, profile):
self.app.pm.open_project(uid, builddir)
- self.app.pm.build_current_pdebuild(uid, cpuset)
+ self.app.pm.build_current_pdebuild(uid, cpuset, profile)
@rpc(String, String)
@authenticated_uid
diff --git a/elbepack/elbeproject.py b/elbepack/elbeproject.py
index 709d9cb0..69f93df6 100644
--- a/elbepack/elbeproject.py
+++ b/elbepack/elbeproject.py
@@ -353,7 +353,7 @@ class ElbeProject (object):
self.log.printo("unknown pbuild source vcs: %s" % p.tag)
# pdebuild_build(-1) means use all cpus
- self.pdebuild_build(cpuset=-1)
+ self.pdebuild_build(cpuset=-1, profile="")
def build_cdroms(self, build_bin=True,
build_sources=False, cdrom_size=None):
@@ -602,7 +602,7 @@ class ElbeProject (object):
self.log.do('mkdir -p "%s"' % os.path.join(self.builddir,
"pbuilder", "result"))
- def pdebuild(self, cpuset):
+ def pdebuild(self, cpuset, profile):
self.pdebuild_init()
pbdir = os.path.join(self.builddir, "pdebuilder", "current")
@@ -626,10 +626,10 @@ class ElbeProject (object):
"current_pdebuild.tar.gz"),
pbdir))
- self.pdebuild_build(cpuset)
+ self.pdebuild_build(cpuset, profile)
self.repo.finalize()
- def pdebuild_build(self, cpuset):
+ def pdebuild_build(self, cpuset, profile):
# check whether we have to use taskset to run pdebuild
# this might be useful, when things like java dont
# work with multithreading
@@ -650,7 +650,8 @@ class ElbeProject (object):
cpuset_cmd,
cfg['pbuilder_jobs'],
os.path.join(self.builddir, "pbuilderrc"),
- os.path.join(self.builddir, "pbuilder", "result")))
+ os.path.join(self.builddir, "pbuilder", "result")),
+ env_add={'DEB_BUILD_PROFILES': profile})
self.repo.remove(os.path.join(self.builddir,
"pdebuilder",
diff --git a/elbepack/pbuilderaction.py b/elbepack/pbuilderaction.py
index bd3d3afa..1a567a33 100644
--- a/elbepack/pbuilderaction.py
+++ b/elbepack/pbuilderaction.py
@@ -244,8 +244,10 @@ class BuildAction(PBuilderAction):
print("")
try:
- system('%s control set_pdebuild --cpuset "%d" "%s" "%s"' %
- (elbe_exe, opt.cpuset, prjdir, tmp.fname("pdebuild.tar.gz")))
+ system('%s control set_pdebuild --cpuset "%d" --profile "%s" '
+ '"%s" "%s"' %
+ (elbe_exe, opt.cpuset, opt.profile,
+ prjdir, tmp.fname("pdebuild.tar.gz")))
except CommandError:
print("elbe control set_pdebuild Failed", file=sys.stderr)
print("Giving up", file=sys.stderr)
diff --git a/elbepack/projectmanager.py b/elbepack/projectmanager.py
index e8613bca..7738ee28 100644
--- a/elbepack/projectmanager.py
+++ b/elbepack/projectmanager.py
@@ -314,14 +314,14 @@ class ProjectManager(object):
ep = self._get_current_project(userid, allow_busy=False)
self.worker.enqueue(CreatePbuilderJob(ep))
- def build_current_pdebuild(self, userid, cpuset):
+ def build_current_pdebuild(self, userid, cpuset, profile):
with self.lock:
ep = self._get_current_project(userid, allow_busy=False)
if not path.isdir(path.join(ep.builddir, "pbuilder")):
raise InvalidState('No pbuilder exists: run "elbe pbuilder '
'create --project %s" first' % ep.builddir)
- self.worker.enqueue(PdebuildJob(ep, cpuset))
+ self.worker.enqueue(PdebuildJob(ep, cpuset, profile))
def set_orig_fname(self, userid, fname):
with self.lock:
diff --git a/elbepack/soapclient.py b/elbepack/soapclient.py
index a65af8d0..a5b26500 100644
--- a/elbepack/soapclient.py
+++ b/elbepack/soapclient.py
@@ -745,7 +745,7 @@ class SetPdebuilderAction(ClientAction):
if len(bindata) != size:
break
- client.service.finish_pdebuild(builddir, opt.cpuset)
+ client.service.finish_pdebuild(builddir, opt.cpuset, opt.profile)
ClientAction.register(SetPdebuilderAction)
--
2.11.0
More information about the elbe-devel
mailing list