diff options
author | Lars Wirzenius <liw@liw.fi> | 2016-03-06 22:31:46 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2016-03-06 22:31:46 +0200 |
commit | ccd2b842db6cc3fbad04202f7af2bb3e1a46f0cd (patch) | |
tree | d2d9ff135ed67530b19524b3c784a8a08f2c72f1 | |
parent | eea74e591fd26c6fc231d6447a8f273a82063276 (diff) | |
download | ick-ccd2b842db6cc3fbad04202f7af2bb3e1a46f0cd.tar.gz |
Move Debian info collection step into a module
-rw-r--r-- | icklib/__init__.py | 1 | ||||
-rw-r--r-- | icklib/project.py | 56 | ||||
-rw-r--r-- | icklib/step_debian_info.py | 73 | ||||
-rw-r--r-- | without-tests | 1 |
4 files changed, 77 insertions, 54 deletions
diff --git a/icklib/__init__.py b/icklib/__init__.py index e954315..499106a 100644 --- a/icklib/__init__.py +++ b/icklib/__init__.py @@ -24,6 +24,7 @@ from .run_state import RunState from .pipeline import BuildPipeline from .os_release import parse_os_release, OsRelease, NoOsReleaseInformation from .step_build_info import CreateBuildInfo, FinishBuildInfo +from .step_debian_info import CollectDebianInfoAboutTargets from .step_find_current_commit import FindCurrentGitCommits from .step_find_new_commit import ( FindNewCommitToBuildForShell, diff --git a/icklib/project.py b/icklib/project.py index 58f25f1..91c1263 100644 --- a/icklib/project.py +++ b/icklib/project.py @@ -223,58 +223,6 @@ class Project(object): remote_git_dir) -class CollectDebianInfoAboutTargets(icklib.BuildStep): - - def build(self): - wanted = ['debian_arch', 'debian_codename', 'debian_release'] - if getattr(self.run_state, 'collect_debian_info', False): - for target in self.targets: - if not all(getattr(target, x, None) for x in wanted): - target.debian_arch = self._get_debian_arch(target) - os_release = self._get_os_release(target) - self._collect_from_os_release(target, os_release) - - def _get_debian_arch(self, target): - logging.info('Finding Debian arch for %s', target.name) - output = target.ssh_runcmd(['dpkg', '--print-architecture']) - return output.strip() - - def _get_os_release(self, target): - logging.info('Finding os-release for %s', target.name) - pbuilder_argv = [ - 'sudo', - 'pbuilder', - '--execute', - '--basetgz', target.pbuilder_ci_tgz, - '--', - '/bin/cat', '/etc/os-release', - ] - output = target.ssh_runcmd(pbuilder_argv) - return icklib.parse_os_release(output) - - def _collect_from_os_release(self, target, os_release): - if os_release.debian_codename: - codename = os_release.debian_codename - elif os_release.pretty_codename: - codename = os_release.pretty_codename - else: - assert False, 'os-release has no useful Debian codename' - - # We treat 'sid' specially. - if codename == 'sid': - codename = 'unstable' - - target.debian_codename = codename - - if codename == 'unstable': - release = 'unstable' - elif os_release.debian_release: - release = 'debian' + os_release.debian_release - else: - assert False, 'os-release has no useful Debian release' - target.debian_release = release - - class CreateCITarball(icklib.BuildStep): def build(self): @@ -854,7 +802,7 @@ def create_projects_from_ick(ick, wanted_names): icklib.FindCurrentGitCommits, icklib.FindNewCommitToBuildForDebianCI, icklib.CreateBuildInfo, - CollectDebianInfoAboutTargets, + icklib.CollectDebianInfoAboutTargets, CreateCITarball, CreateDebianSourcePackagesForCI, CreateCIDebianBinaryPackages, @@ -870,7 +818,7 @@ def create_projects_from_ick(ick, wanted_names): icklib.FindCurrentGitCommits, icklib.FindTagsToBuildForDebianRelease, icklib.CreateBuildInfo, - CollectDebianInfoAboutTargets, + icklib.CollectDebianInfoAboutTargets, CreateReleaseTarballs, CreateDebianSourcePackagesForRelease, CreateDebianBinaryPackagesForRelease, diff --git a/icklib/step_debian_info.py b/icklib/step_debian_info.py new file mode 100644 index 0000000..5ed26d4 --- /dev/null +++ b/icklib/step_debian_info.py @@ -0,0 +1,73 @@ +# Copyright 2016 Lars Wirzenius +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# =*= License: GPL-3+ =*= + + +import logging + +import icklib + + +class CollectDebianInfoAboutTargets(icklib.BuildStep): + + def build(self): + wanted = ['debian_arch', 'debian_codename', 'debian_release'] + if getattr(self.run_state, 'collect_debian_info', False): + for target in self.targets: + if not all(getattr(target, x, None) for x in wanted): + target.debian_arch = self._get_debian_arch(target) + os_release = self._get_os_release(target) + self._collect_from_os_release(target, os_release) + + def _get_debian_arch(self, target): + logging.info('Finding Debian arch for %s', target.name) + output = target.ssh_runcmd(['dpkg', '--print-architecture']) + return output.strip() + + def _get_os_release(self, target): + logging.info('Finding os-release for %s', target.name) + pbuilder_argv = [ + 'sudo', + 'pbuilder', + '--execute', + '--basetgz', target.pbuilder_ci_tgz, + '--', + '/bin/cat', '/etc/os-release', + ] + output = target.ssh_runcmd(pbuilder_argv) + return icklib.parse_os_release(output) + + def _collect_from_os_release(self, target, os_release): + if os_release.debian_codename: + codename = os_release.debian_codename + elif os_release.pretty_codename: + codename = os_release.pretty_codename + else: + assert False, 'os-release has no useful Debian codename' + + # We treat 'sid' specially. + if codename == 'sid': + codename = 'unstable' + + target.debian_codename = codename + + if codename == 'unstable': + release = 'unstable' + elif os_release.debian_release: + release = 'debian' + os_release.debian_release + else: + assert False, 'os-release has no useful Debian release' + target.debian_release = release diff --git a/without-tests b/without-tests index dbd9af4..3bb59b9 100644 --- a/without-tests +++ b/without-tests @@ -5,6 +5,7 @@ icklib/info.py icklib/version.py icklib/progress.py icklib/step_build_info.py +icklib/step_debian_info.py icklib/step_find_current_commit.py icklib/step_find_new_commit.py icklib/step_find_tags_debian_release.py |