summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2016-03-06 22:38:06 +0200
committerLars Wirzenius <liw@liw.fi>2016-03-06 22:38:06 +0200
commit010d97a6277403c723726885ba78e181024a5597 (patch)
treee9660329bb4b2c61383c5f7ad90d4b8b179e3c08
parent0c31371582ec428ea3930ca18c58956f8292a976 (diff)
downloadick-010d97a6277403c723726885ba78e181024a5597.tar.gz
Move .deb steps to their own module
-rw-r--r--icklib/__init__.py4
-rw-r--r--icklib/project.py133
-rw-r--r--icklib/step_debian_binary.py150
-rw-r--r--without-tests1
4 files changed, 157 insertions, 131 deletions
diff --git a/icklib/__init__.py b/icklib/__init__.py
index 2156d33..a54cccc 100644
--- a/icklib/__init__.py
+++ b/icklib/__init__.py
@@ -25,6 +25,10 @@ from .pipeline import BuildPipeline
from .os_release import parse_os_release, OsRelease, NoOsReleaseInformation
from .step_build_info import CreateBuildInfo, FinishBuildInfo
from .step_create_tarball import CreateCITarball, CreateReleaseTarballs
+from .step_debian_binary import (
+ CreateCIDebianBinaryPackages,
+ CreateDebianBinaryPackagesForRelease,
+)
from .step_debian_info import CollectDebianInfoAboutTargets
from .step_debian_source import (
CreateDebianSourcePackagesForCI,
diff --git a/icklib/project.py b/icklib/project.py
index 446c23a..9e5ccf0 100644
--- a/icklib/project.py
+++ b/icklib/project.py
@@ -223,135 +223,6 @@ class Project(object):
remote_git_dir)
-class CreateCIDebianBinaryPackages(icklib.BuildStep):
-
- def build(self):
- if not self.run_state.build_using_debian_ci:
- return
-
- self.run_state.progress['step'] = 'Creating debs'
- self.run_state.logger.important('Creating debs')
- with self.run_state.logger:
- archs = self._get_architectures_from_source(
- self.run_state.clones[0])
-
- arch_all_built = set()
- for target in self.targets:
- remote_tmp = target.mkdtemp()
- remote_git_dir = target.sync_to_target(
- self.run_state.clones[0].dirname, remote_tmp, 'git')
- remote_artifacts_dir = target.sync_to_target(
- self.run_state.build_info.create_artifacts_directory(),
- remote_tmp, 'artifacts')
-
- cleanly_path = self.project.copy_cleanly_to_target(
- target, remote_tmp)
- cleanly_options = [
- '--results', remote_artifacts_dir,
- '--pbuilder-tgz', target.pbuilder_ci_tgz,
- '--ci',
- '--buildno', str(self.run_state.build_info.build_number),
- '--debian-release', target.debian_release,
- '--debian-codename', target.debian_codename,
- ]
-
- build_it = True
- if 'all' in archs:
- if target.debian_codename not in arch_all_built:
- cleanly_options += ['--build-arch-all-also']
- arch_all_built.add(target.debian_codename)
- elif archs == ['all']:
- build_it = False
-
- if build_it:
- self.project.run_cleanly(
- target, remote_git_dir, cleanly_path,
- cleanly_options + ['deb'])
-
- target.sync_from_target(
- remote_artifacts_dir,
- self.run_state.build_info.create_artifacts_directory())
-
- target.remove_all([remote_tmp])
-
- def _get_architectures_from_source(self, clone):
- archs = set()
- control = os.path.join(clone.dirname, 'debian', 'control')
- with open(control) as f:
- for line in f:
- if line.startswith('Architecture: '):
- for arch in line.split()[1:]:
- archs.add(arch)
- return list(archs)
-
-
-class CreateDebianBinaryPackagesForRelease(icklib.BuildStep):
-
- def build(self):
- for tag in self.run_state.build_tags_using_debian_release:
- self.run_state.progress['what'] = (
- 'Building debs for release {}'.format(tag))
- self.run_state.logger.important(
- 'Building debs for release {tag}',
- tag=tag)
- with self.run_state.logger:
- self.run_state.clones[0].checkout(tag)
-
- archs = self._get_architectures_from_source(
- self.run_state.clones[0])
-
- arch_all_built = set()
- for target in self.targets:
- remote_tmp = target.mkdtemp()
- remote_git_dir = target.sync_to_target(
- self.run_state.clones[0].dirname, remote_tmp, 'git')
- remote_artifacts_dir = target.sync_to_target(
- self.run_state.build_info.create_artifacts_directory(),
- remote_tmp, 'artifacts')
-
- cleanly_path = self.project.copy_cleanly_to_target(
- target, remote_tmp)
- cleanly_options = [
- '--results', remote_artifacts_dir,
- '--pbuilder-tgz', target.pbuilder_ci_tgz,
- '--release',
- '--buildno',
- str(self.run_state.build_info.build_number),
- '--debian-release', target.debian_release,
- '--debian-codename', target.debian_codename,
- ]
-
- build_it = True
- if 'all' in archs:
- if target.debian_codename not in arch_all_built:
- cleanly_options += ['--build-arch-all-also']
- arch_all_built.add(target.debian_codename)
- elif archs == ['all']:
- build_it = False
-
- if build_it:
- self.project.run_cleanly(
- target, remote_git_dir, cleanly_path,
- cleanly_options + ['deb'])
-
- build_info = self.run_state.build_info
- target.sync_from_target(
- remote_artifacts_dir,
- build_info.create_artifacts_directory())
-
- target.remove_all([remote_tmp])
-
- def _get_architectures_from_source(self, clone):
- archs = set()
- control = os.path.join(clone.dirname, 'debian', 'control')
- with open(control) as f:
- for line in f:
- if line.startswith('Architecture: '):
- for arch in line.split()[1:]:
- archs.add(arch)
- return list(archs)
-
-
class FindDebianChangesFiles(icklib.BuildStep):
def build(self):
@@ -634,7 +505,7 @@ def create_projects_from_ick(ick, wanted_names):
icklib.CollectDebianInfoAboutTargets,
icklib.CreateCITarball,
icklib.CreateDebianSourcePackagesForCI,
- CreateCIDebianBinaryPackages,
+ icklib.CreateCIDebianBinaryPackages,
FindDebianChangesFiles,
SetupAPTRepository,
UploadDebianPackagesToCIRepo,
@@ -650,7 +521,7 @@ def create_projects_from_ick(ick, wanted_names):
icklib.CollectDebianInfoAboutTargets,
icklib.CreateReleaseTarballs,
icklib.CreateDebianSourcePackagesForRelease,
- CreateDebianBinaryPackagesForRelease,
+ icklib.CreateDebianBinaryPackagesForRelease,
FindDebianChangesFiles,
SetupAPTRepository,
UploadDebianPackagesToCIRepo,
diff --git a/icklib/step_debian_binary.py b/icklib/step_debian_binary.py
new file mode 100644
index 0000000..b8f5c6c
--- /dev/null
+++ b/icklib/step_debian_binary.py
@@ -0,0 +1,150 @@
+# 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 os
+
+import icklib
+
+
+class CreateCIDebianBinaryPackages(icklib.BuildStep):
+
+ def build(self):
+ if not self.run_state.build_using_debian_ci:
+ return
+
+ self.run_state.progress['step'] = 'Creating debs'
+ self.run_state.logger.important('Creating debs')
+ with self.run_state.logger:
+ archs = self._get_architectures_from_source(
+ self.run_state.clones[0])
+
+ arch_all_built = set()
+ for target in self.targets:
+ remote_tmp = target.mkdtemp()
+ remote_git_dir = target.sync_to_target(
+ self.run_state.clones[0].dirname, remote_tmp, 'git')
+ remote_artifacts_dir = target.sync_to_target(
+ self.run_state.build_info.create_artifacts_directory(),
+ remote_tmp, 'artifacts')
+
+ cleanly_path = self.project.copy_cleanly_to_target(
+ target, remote_tmp)
+ cleanly_options = [
+ '--results', remote_artifacts_dir,
+ '--pbuilder-tgz', target.pbuilder_ci_tgz,
+ '--ci',
+ '--buildno', str(self.run_state.build_info.build_number),
+ '--debian-release', target.debian_release,
+ '--debian-codename', target.debian_codename,
+ ]
+
+ build_it = True
+ if 'all' in archs:
+ if target.debian_codename not in arch_all_built:
+ cleanly_options += ['--build-arch-all-also']
+ arch_all_built.add(target.debian_codename)
+ elif archs == ['all']:
+ build_it = False
+
+ if build_it:
+ self.project.run_cleanly(
+ target, remote_git_dir, cleanly_path,
+ cleanly_options + ['deb'])
+
+ target.sync_from_target(
+ remote_artifacts_dir,
+ self.run_state.build_info.create_artifacts_directory())
+
+ target.remove_all([remote_tmp])
+
+ def _get_architectures_from_source(self, clone):
+ archs = set()
+ control = os.path.join(clone.dirname, 'debian', 'control')
+ with open(control) as f:
+ for line in f:
+ if line.startswith('Architecture: '):
+ for arch in line.split()[1:]:
+ archs.add(arch)
+ return list(archs)
+
+
+class CreateDebianBinaryPackagesForRelease(icklib.BuildStep):
+
+ def build(self):
+ for tag in self.run_state.build_tags_using_debian_release:
+ self.run_state.progress['what'] = (
+ 'Building debs for release {}'.format(tag))
+ self.run_state.logger.important(
+ 'Building debs for release {tag}',
+ tag=tag)
+ with self.run_state.logger:
+ self.run_state.clones[0].checkout(tag)
+
+ archs = self._get_architectures_from_source(
+ self.run_state.clones[0])
+
+ arch_all_built = set()
+ for target in self.targets:
+ remote_tmp = target.mkdtemp()
+ remote_git_dir = target.sync_to_target(
+ self.run_state.clones[0].dirname, remote_tmp, 'git')
+ remote_artifacts_dir = target.sync_to_target(
+ self.run_state.build_info.create_artifacts_directory(),
+ remote_tmp, 'artifacts')
+
+ cleanly_path = self.project.copy_cleanly_to_target(
+ target, remote_tmp)
+ cleanly_options = [
+ '--results', remote_artifacts_dir,
+ '--pbuilder-tgz', target.pbuilder_ci_tgz,
+ '--release',
+ '--buildno',
+ str(self.run_state.build_info.build_number),
+ '--debian-release', target.debian_release,
+ '--debian-codename', target.debian_codename,
+ ]
+
+ build_it = True
+ if 'all' in archs:
+ if target.debian_codename not in arch_all_built:
+ cleanly_options += ['--build-arch-all-also']
+ arch_all_built.add(target.debian_codename)
+ elif archs == ['all']:
+ build_it = False
+
+ if build_it:
+ self.project.run_cleanly(
+ target, remote_git_dir, cleanly_path,
+ cleanly_options + ['deb'])
+
+ build_info = self.run_state.build_info
+ target.sync_from_target(
+ remote_artifacts_dir,
+ build_info.create_artifacts_directory())
+
+ target.remove_all([remote_tmp])
+
+ def _get_architectures_from_source(self, clone):
+ archs = set()
+ control = os.path.join(clone.dirname, 'debian', 'control')
+ with open(control) as f:
+ for line in f:
+ if line.startswith('Architecture: '):
+ for arch in line.split()[1:]:
+ archs.add(arch)
+ return list(archs)
diff --git a/without-tests b/without-tests
index e002f19..5a33c0f 100644
--- a/without-tests
+++ b/without-tests
@@ -6,6 +6,7 @@ icklib/version.py
icklib/progress.py
icklib/step_build_info.py
icklib/step_create_tarball.py
+icklib/step_debian_binary.py
icklib/step_debian_info.py
icklib/step_debian_source.py
icklib/step_find_current_commit.py