diff options
author | Lars Wirzenius <liw@liw.fi> | 2016-03-06 22:38:06 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2016-03-06 22:38:06 +0200 |
commit | 010d97a6277403c723726885ba78e181024a5597 (patch) | |
tree | e9660329bb4b2c61383c5f7ad90d4b8b179e3c08 | |
parent | 0c31371582ec428ea3930ca18c58956f8292a976 (diff) | |
download | ick-010d97a6277403c723726885ba78e181024a5597.tar.gz |
Move .deb steps to their own module
-rw-r--r-- | icklib/__init__.py | 4 | ||||
-rw-r--r-- | icklib/project.py | 133 | ||||
-rw-r--r-- | icklib/step_debian_binary.py | 150 | ||||
-rw-r--r-- | without-tests | 1 |
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 |