diff options
author | Lars Wirzenius <liw@liw.fi> | 2016-03-16 18:01:18 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2016-03-16 18:48:57 +0200 |
commit | 6d0f70767e73b2aec04fa47e4dbbb58ac6fc2026 (patch) | |
tree | 7fd6be43590a3e491ae4b0edcf41e5e8341984a3 | |
parent | 76b5789b07a7e951f51c69dba0f3240111e3506a (diff) | |
download | ick-6d0f70767e73b2aec04fa47e4dbbb58ac6fc2026.tar.gz |
Add a separate dput-unstable setting
This allows uploading only a source package to Debian.
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | icklib/project.py | 7 | ||||
-rw-r--r-- | icklib/step_debian_publish.py | 28 |
3 files changed, 33 insertions, 4 deletions
@@ -4,6 +4,8 @@ NEWS for Ick Version 0.14+git, not yet released ---------------------------------- +* Change Debian package publishing so that it knows about Debian + unstable and uploads only the source package there. Version 0.14, released 2016-03-06 ---------------------------------- 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), |