summaryrefslogtreecommitdiff
path: root/icklib
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2016-03-16 18:01:18 +0200
committerLars Wirzenius <liw@liw.fi>2016-03-16 18:48:57 +0200
commit6d0f70767e73b2aec04fa47e4dbbb58ac6fc2026 (patch)
tree7fd6be43590a3e491ae4b0edcf41e5e8341984a3 /icklib
parent76b5789b07a7e951f51c69dba0f3240111e3506a (diff)
downloadick-6d0f70767e73b2aec04fa47e4dbbb58ac6fc2026.tar.gz
Add a separate dput-unstable setting
This allows uploading only a source package to Debian.
Diffstat (limited to 'icklib')
-rw-r--r--icklib/project.py7
-rw-r--r--icklib/step_debian_publish.py28
2 files changed, 31 insertions, 4 deletions
diff --git a/icklib/project.py b/icklib/project.py
index 94f87bd..4484231 100644
--- a/icklib/project.py
+++ b/icklib/project.py
@@ -37,6 +37,7 @@ class Project(object):
self.local_commands = []
self.env = {}
self.dput_targets = []
+ self.dput_unstable = []
self.pipelines = {}
@@ -58,6 +59,9 @@ class Project(object):
def add_dput_target(self, dput_target):
self.dput_targets.append(dput_target)
+ def add_dput_unstable(self, dput_target):
+ self.dput_unstable.append(dput_target)
+
def set_build_pipelines(self, pipelines):
self.pipelines = pipelines
@@ -292,6 +296,9 @@ def create_projects_from_ick(ick, wanted_names):
dput_targets = release.get('dput-targets', [])
for dput_target in dput_targets:
p.add_dput_target(dput_target)
+ dput_unstable = release.get('dput-unstable', [])
+ for dput_target in dput_unstable:
+ p.add_dput_unstable(dput_target)
p.set_build_pipelines(
dict((x, pipelines[x]) for x in project_dict['pipelines']))
p.set_env(project_dict.get('env', {}))
diff --git a/icklib/step_debian_publish.py b/icklib/step_debian_publish.py
index fa58bdf..b761f77 100644
--- a/icklib/step_debian_publish.py
+++ b/icklib/step_debian_publish.py
@@ -27,7 +27,11 @@ import icklib
class PublishDebianPackages(icklib.BuildStep):
def build(self):
- if not self.run_state.changes_files or not self.project.dput_targets:
+ have_changes = self.run_state.changes_files
+ have_targets = self.project.dput_targets
+ have_unstable = self.project.dput_unstable
+ need_to_run = have_changes and (have_targets or have_unstable)
+ if not need_to_run:
return
self.run_state.progress['step'] = (
@@ -38,7 +42,8 @@ class PublishDebianPackages(icklib.BuildStep):
tempdir = self._copy_packages()
self._remove_dbgsym_packages_from_changes_files(tempdir)
self._debsign(tempdir)
- self._dput(tempdir)
+ self._dput_targets(tempdir)
+ self._dput_unstable(tempdir)
shutil.rmtree(tempdir)
def _copy_packages(self):
@@ -68,9 +73,24 @@ class PublishDebianPackages(icklib.BuildStep):
self.project.run_locally(
['debsign'] + files, 'debsign *.changes', tempdir)
- def _dput(self, tempdir):
+ def _dput_targets(self, tempdir):
files = self._changes_files(tempdir)
- for dput_target in self.project.dput_targets:
+ self._dput_some_targets(tempdir, files, self.project.dput_targets)
+
+ def _dput_unstable(self, tempdir):
+ files = self._changes_files(tempdir)
+ unstable = [f for f in files if self._is_source_for_unstable(f)]
+ self._dput_some_targets(tempdir, unstable, self.project.dput_unstable)
+
+ def _is_source_for_unstable(self, filename):
+ with open(filename) as f:
+ text = f.read()
+ is_source = '\nArchitecture: source\n' in text
+ is_for_unstable = '\nDistribution: unstable\n' in text
+ return is_source and is_for_unstable
+
+ def _dput_some_targets(self, tempdir, files, dput_targets):
+ for dput_target in dput_targets:
self.project.run_locally(
['dput', dput_target] + files,
'dput {} *.changes'.format(dput_target),