From 407a3151a5f97a4da5f01895bcfe1192edb49f54 Mon Sep 17 00:00:00 2001 From: Lindley Werner Date: Tue, 21 May 2024 10:27:53 -0300 Subject: [PATCH] Build OSTree commit using component When installing Debian packages, apt-ostree can reference packages from an specific component. Each component is related to a patch version (sw_release). Test Plan: PASS Install apt-ostree from git repo. PASS Run "apt-ostree compose create \ --base config/debian/bookworm \ --repo /repo debian/bookworm \ bookworm-test" PASS Run "apt-ostree compose install --repo /repo \ --branch bookworm-test --component docker.io" PASS Check the output of "ostree log --repo /repo bookworm-test" Story: 2010867 Task: 50184 Change-Id: I33cc01d1b2f8a9212b7b96591165334c25f9ceab Signed-off-by: Lindley Werner --- apt_ostree/cmd/compose/install.py | 7 +++++-- apt_ostree/deploy.py | 18 +++++++++++------- apt_ostree/packages.py | 6 +++--- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/apt_ostree/cmd/compose/install.py b/apt_ostree/cmd/compose/install.py index d47dda8..93c45f7 100644 --- a/apt_ostree/cmd/compose/install.py +++ b/apt_ostree/cmd/compose/install.py @@ -1,5 +1,5 @@ """ -Copyright (c) 2023 Wind River Systems, Inc. +Copyright (c) 2023-2024 Wind River Systems, Inc. SPDX-License-Identifier: Apache-2.0 @@ -11,6 +11,7 @@ import sys import click from apt_ostree.cmd.options import branch_option +from apt_ostree.cmd.options import component_option from apt_ostree.cmd.options import gpg_key_option from apt_ostree.cmd.options import packages_option from apt_ostree.cmd.options import repo_option @@ -28,15 +29,17 @@ from apt_ostree.packages import Packages help="Debian package feed", nargs=1) @gpg_key_option +@component_option @packages_option def install(state, branch, repo, feed, gpg_key, + component, packages): try: - Packages(state).install(packages, feed) + Packages(state).install(packages, feed, component) except KeyboardInterrupt: click.secho("\n" + ("Exiting at your request.")) sys.exit(130) diff --git a/apt_ostree/deploy.py b/apt_ostree/deploy.py index d6c5d6b..24f4bdb 100644 --- a/apt_ostree/deploy.py +++ b/apt_ostree/deploy.py @@ -1,5 +1,5 @@ """ -Copyright (c) 2023 Wind River Systems, Inc. +Copyright (c) 2023-2024 Wind River Systems, Inc. SPDX-License-Identifier: Apache-2.0 @@ -32,7 +32,7 @@ class Deploy: self.workdir.mkdir(parents=True, exist_ok=True) self.rootfs = None - def prestaging(self, rootfs, feed=None): + def prestaging(self, rootfs, feed=None, component=None): """Pre stage steps.""" if not rootfs.exists(): self.logging.error("rootfs not found: {rootfs}") @@ -74,11 +74,15 @@ class Deploy: self.logging.info("Configuring temporary package feed.") self.apt_conf = rootfs.joinpath(APT_CONF) feed = feed.replace('"', '') - self.apt_conf.write_text( - textwrap.dedent(f"""\ - deb [trusted=yes] {feed} - """ - )) + + conf_repo_line = f"deb [trusted=yes] {feed}" + if component: + self.logging.info( + f"Configuring temp package component: {component}") + component = component.replace('"', '') + conf_repo_line = f"deb [trusted=yes] {feed} . {component}" + + self.apt_conf.write_text(textwrap.dedent(conf_repo_line)) def poststaging(self, rootfs): """Post staging steps.""" diff --git a/apt_ostree/packages.py b/apt_ostree/packages.py index d026250..e1bbfa8 100644 --- a/apt_ostree/packages.py +++ b/apt_ostree/packages.py @@ -1,5 +1,5 @@ """ -Copyright (c) 2023 Wind River Systems, Inc. +Copyright (c) 2023-2024 Wind River Systems, Inc. SPDX-License-Identifier: Apache-2.0 @@ -24,7 +24,7 @@ class Packages: self.ostree = Ostree(self.state) self.deploy = Deploy(self.state) - def install(self, packages, feed=None): + def install(self, packages, feed=None, component=None): """Use apt to install Debian packages.""" deps = set() predeps = set() @@ -36,7 +36,7 @@ class Packages: sys.exit(1) # Step 0 - Run the prestaging steps. - self.deploy.prestaging(rootfs, feed) + self.deploy.prestaging(rootfs, feed, component) # Step 1 - Update the package cache in the deployment. self.apt.apt_update(rootfs)