diff --git a/Makefile-ostbuild.am b/Makefile-ostbuild.am index 1ee71503..7a0f52be 100644 --- a/Makefile-ostbuild.am +++ b/Makefile-ostbuild.am @@ -23,7 +23,6 @@ EXTRA_DIST += src/ostbuild/ostbuild.in pyostbuilddir=$(libdir)/ostbuild/pyostbuild pyostbuild_PYTHON = \ src/ostbuild/pyostbuild/buildutil.py \ - src/ostbuild/pyostbuild/builtin_bin_to_src.py \ src/ostbuild/pyostbuild/builtin_branch_prefix.py \ src/ostbuild/pyostbuild/builtin_build_components.py \ src/ostbuild/pyostbuild/builtin_checkout.py \ @@ -38,7 +37,7 @@ pyostbuild_PYTHON = \ src/ostbuild/pyostbuild/builtin_prefix.py \ src/ostbuild/pyostbuild/builtin_resolve.py \ src/ostbuild/pyostbuild/builtin_modify_snapshot.py \ - src/ostbuild/pyostbuild/builtin_tree_to_bin.py \ + src/ostbuild/pyostbuild/builtin_tree_to_src.py \ src/ostbuild/pyostbuild/builtin_init.py \ src/ostbuild/pyostbuild/builtin_status.py \ src/ostbuild/pyostbuild/builtins.py \ diff --git a/src/ostbuild/pyostbuild/builtin_bin_to_src.py b/src/ostbuild/pyostbuild/builtin_bin_to_src.py deleted file mode 100755 index d50e9113..00000000 --- a/src/ostbuild/pyostbuild/builtin_bin_to_src.py +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright (C) 2011,2012 Colin Walters -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library 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 -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# ostbuild-compile-one-make wraps systems that implement the GNOME build API: -# http://people.gnome.org/~walters/docs/build-api.txt - -import os,sys,stat,subprocess,tempfile,re,shutil -import argparse -from StringIO import StringIO -import json - -from . import builtins -from .ostbuildlog import log, fatal -from .subprocess_helpers import run_sync, run_sync_get_output -from . import buildutil - -class OstbuildBinToSrc(builtins.Builtin): - name = "bin-to-src" - short_description = "Turn a binary snapshot into a source snapshot" - - def __init__(self): - builtins.Builtin.__init__(self) - - def bin_snapshot_to_src(self, bin_snapshot): - del bin_snapshot['00ostree-bin-snapshot-version'] - - src_snapshot = dict(bin_snapshot) - src_snapshot['00ostree-src-snapshot-version'] = 0 - - all_architectures = src_snapshot['architecture-buildroots'].keys() - # Arbitrarily take first architecture - first_arch = all_architectures[0] - - bin_components = src_snapshot['components'] - src_components = {} - src_snapshot['components'] = src_components - for archname,rev in bin_components.iteritems(): - (name, arch) = archname.rsplit('/', 1) - if arch != first_arch: - continue - meta = dict(self.get_component_meta_from_revision(rev)) - del meta['name'] - src_components[name] = meta - - for target in src_snapshot['targets']: - for content_item in target['contents']: - name = content_item['name'] - rev = bin_components[name] - content_item['ostree-revision'] = rev - - return src_snapshot - - def execute(self, argv): - parser = argparse.ArgumentParser(description=self.short_description) - parser.add_argument('--prefix') - parser.add_argument('--bin-snapshot') - - args = parser.parse_args(argv) - self.parse_config() - self.parse_bin_snapshot(args.prefix, args.bin_snapshot) - - snapshot = self.bin_snapshot_to_src(self.bin_snapshot) - db = self.get_src_snapshot_db() - path = db.store(snapshot) - log("Source snapshot: %s" % (path, )) - -builtins.register(OstbuildBinToSrc) diff --git a/src/ostbuild/pyostbuild/builtin_build_components.py b/src/ostbuild/pyostbuild/builtin_build_components.py index 010f4984..126fe3ea 100755 --- a/src/ostbuild/pyostbuild/builtin_build_components.py +++ b/src/ostbuild/pyostbuild/builtin_build_components.py @@ -178,7 +178,7 @@ class OstbuildBuildComponents(builtins.Builtin): bin_snapshot = dict(self.snapshot) del bin_snapshot['00ostree-src-snapshot-version'] - bin_snapshot['00ostree-bin-snapshot-version'] = 0 + bin_snapshot['00ostree-bin-snapshot-version'] = 1 for target in bin_snapshot['targets']: base = target['base'] @@ -199,14 +199,14 @@ class OstbuildBuildComponents(builtins.Builtin): for architecture in component_architectures[name]: component_refs.append('components/%s/%s' % (name, architecture)) - new_components = {} + component_revisions = {} resolved_refs = self._resolve_refs(component_refs) for name,rev in zip(components.iterkeys(), resolved_refs): for architecture in component_architectures[name]: archname = '%s/%s' % (name, architecture) - new_components[archname] = rev + component_revisions[archname] = rev - bin_snapshot['components'] = new_components + bin_snapshot['component-revisions'] = component_revisions path = self.get_bin_snapshot_db().store(bin_snapshot) log("Binary snapshot: %s" % (path, )) @@ -218,6 +218,7 @@ class OstbuildBuildComponents(builtins.Builtin): parser.add_argument('--prefix') parser.add_argument('--src-snapshot') parser.add_argument('--compose', action='store_true') + parser.add_argument('--compose-only', action='store_true') parser.add_argument('--start-at') parser.add_argument('--shell-on-failure', action='store_true') parser.add_argument('--debug-shell', action='store_true') @@ -276,11 +277,12 @@ class OstbuildBuildComponents(builtins.Builtin): else: start_at_index = 0 - for component_name in build_component_order[start_at_index:]: - component = required_components[component_name] - architectures = component_architectures[component_name] - for architecture in architectures: - self._build_one_component(component_name, component, architecture) + if not args.compose_only: + for component_name in build_component_order[start_at_index:]: + component = required_components[component_name] + architectures = component_architectures[component_name] + for architecture in architectures: + self._build_one_component(component_name, component, architecture) self._save_bin_snapshot(required_components, component_architectures) diff --git a/src/ostbuild/pyostbuild/builtin_compose.py b/src/ostbuild/pyostbuild/builtin_compose.py index dabb516b..acc1ef7d 100755 --- a/src/ostbuild/pyostbuild/builtin_compose.py +++ b/src/ostbuild/pyostbuild/builtin_compose.py @@ -41,7 +41,7 @@ class OstbuildCompose(builtins.Builtin): builtins.Builtin.__init__(self) def _compose_one_target(self, bin_snapshot, target): - components = bin_snapshot['components'] + components = bin_snapshot['component-revisions'] base = target['base'] base_name = 'bases/%s' % (base['name'], ) base_revision = target['base']['ostree-revision'] diff --git a/src/ostbuild/pyostbuild/builtin_tree_to_bin.py b/src/ostbuild/pyostbuild/builtin_tree_to_src.py similarity index 74% rename from src/ostbuild/pyostbuild/builtin_tree_to_bin.py rename to src/ostbuild/pyostbuild/builtin_tree_to_src.py index f25f2e36..b2df3b1a 100755 --- a/src/ostbuild/pyostbuild/builtin_tree_to_bin.py +++ b/src/ostbuild/pyostbuild/builtin_tree_to_src.py @@ -28,13 +28,21 @@ from .ostbuildlog import log, fatal from .subprocess_helpers import run_sync, run_sync_get_output from . import buildutil -class OstbuildTreeToBin(builtins.Builtin): - name = "tree-to-bin" - short_description = "Turn a tree into a binary snapshot" +class OstbuildTreeToSrc(builtins.Builtin): + name = "tree-to-src" + short_description = "Turn a tree into a source snapshot" def __init__(self): builtins.Builtin.__init__(self) + def bin_snapshot_to_src(self, bin_snapshot): + del bin_snapshot['00ostree-bin-snapshot-version'] + + src_snapshot = dict(bin_snapshot) + src_snapshot['00ostree-src-snapshot-version'] = 0 + + return src_snapshot + def execute(self, argv): parser = argparse.ArgumentParser(description=self.short_description) parser.add_argument('--prefix') @@ -50,8 +58,9 @@ class OstbuildTreeToBin(builtins.Builtin): else: self.load_bin_snapshot_from_current() - db = self.get_bin_snapshot_db() - path = db.store(self.bin_snapshot) - log("Binary snapshot: %s" % (path, )) + snapshot = self.bin_snapshot_to_src(self.bin_snapshot) + db = self.get_src_snapshot_db() + path = db.store(snapshot) + log("Source snapshot: %s" % (path, )) -builtins.register(OstbuildTreeToBin) +builtins.register(OstbuildTreeToSrc) diff --git a/src/ostbuild/pyostbuild/builtins.py b/src/ostbuild/pyostbuild/builtins.py index a167e9b0..109be653 100755 --- a/src/ostbuild/pyostbuild/builtins.py +++ b/src/ostbuild/pyostbuild/builtins.py @@ -93,11 +93,13 @@ class Builtin(object): self.patchdir = os.path.join(self.workdir, 'patches') def load_bin_snapshot_from_path(self, path): - self.bin_snapshot_path = os.path.join(path, 'contents.json') + self.bin_snapshot_path = os.path.join(path, 'ostree-meta', 'contents.json') + if not os.path.exists(self.bin_snapshot_path): + self.bin_snapshot_path = os.path.join(path, 'contents.json') self.bin_snapshot = json.load(open(self.bin_snapshot_path)) bin_ver = self.bin_snapshot['00ostree-bin-snapshot-version'] - if bin_ver != 0: - fatal("Unhandled 00ostree-bin-snapshot-version \"%d\", expected 0", bin_ver) + if bin_ver != 1: + fatal("Unhandled 00ostree-bin-snapshot-version %r, expected 1" % (bin_ver, )) def load_bin_snapshot_from_current(self): if self.ostree_dir is None: @@ -211,8 +213,8 @@ class Builtin(object): self.bin_snapshot_path = path self.bin_snapshot = json.load(open(self.bin_snapshot_path)) bin_ver = self.bin_snapshot['00ostree-bin-snapshot-version'] - if bin_ver != 0: - fatal("Unhandled 00ostree-bin-snapshot-version \"%d\", expected 0" % (bin_ver, )) + if bin_ver != 1: + fatal("Unhandled 00ostree-bin-snapshot-version %r, expected 1" % (bin_ver, )) def execute(self, args): raise NotImplementedError() diff --git a/src/ostbuild/pyostbuild/main.py b/src/ostbuild/pyostbuild/main.py index 7f91e385..1c01bbc8 100755 --- a/src/ostbuild/pyostbuild/main.py +++ b/src/ostbuild/pyostbuild/main.py @@ -22,7 +22,6 @@ import sys import argparse from . import builtins -from . import builtin_bin_to_src from . import builtin_build_components from . import builtin_branch_prefix from . import builtin_checkout @@ -37,7 +36,7 @@ from . import builtin_privhelper_deploy_qemu from . import builtin_prefix from . import builtin_resolve from . import builtin_modify_snapshot -from . import builtin_tree_to_bin +from . import builtin_tree_to_src from . import builtin_init from . import builtin_status