summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2016-03-06 22:31:46 +0200
committerLars Wirzenius <liw@liw.fi>2016-03-06 22:31:46 +0200
commitccd2b842db6cc3fbad04202f7af2bb3e1a46f0cd (patch)
treed2d9ff135ed67530b19524b3c784a8a08f2c72f1
parenteea74e591fd26c6fc231d6447a8f273a82063276 (diff)
downloadick-ccd2b842db6cc3fbad04202f7af2bb3e1a46f0cd.tar.gz
Move Debian info collection step into a module
-rw-r--r--icklib/__init__.py1
-rw-r--r--icklib/project.py56
-rw-r--r--icklib/step_debian_info.py73
-rw-r--r--without-tests1
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