coreos-assembler
coreos-assembler copied to clipboard
cosa buildextend-extensions doesn't react to changes to extensions.yaml
In the example below, I've build an RHCOS ostree commit and then a set of extensions. When I bump src/config to HEAD of master where only extensions.yaml changed, cosa doesn't think it needs to build a new set of extensions.
My assumption was that a change to extensions.yaml would trigger a build of a new set of extensions, regardless if the main RHCOS content had changed or not.
[coreos-assembler]$ cosa buildextend-extensions
Running: rpm-ostree compose extensions --repo=/srv/tmp/repo --touch-if-changed tmp/extensions/changed --cachedir=/srv/cache src/config/manifest.yaml src/config/extensions.yaml --base-rev 5e9105430ddf5ac1c0b576f9adf16559780decdd69e21fc893b767cefc3dc38c --output-dir tmp/extensions/output
Checking out 5e91054... done!
warning: Found bdb Packages database while attempting sqlite backend: using bdb backend.
Enabled rpm-md repositories: rhel-8-server-ose rhel-8-fast-datapath rhel-8-baseos rhel-8-appstream rhel-8-nfv
Updating metadata for 'rhel-8-server-ose'... done
rpm-md repo 'rhel-8-server-ose'; generated: 2021-03-04T19:53:00Z
Updating metadata for 'rhel-8-fast-datapath'... done
rpm-md repo 'rhel-8-fast-datapath'; generated: 2021-02-15T16:31:03Z
Updating metadata for 'rhel-8-baseos'... done
rpm-md repo 'rhel-8-baseos'; generated: 2021-03-04T07:24:48Z
Updating metadata for 'rhel-8-appstream'... done
rpm-md repo 'rhel-8-appstream'; generated: 2021-03-04T15:59:58Z
Updating metadata for 'rhel-8-nfv'... done
rpm-md repo 'rhel-8-nfv'; generated: 2021-02-16T13:51:51Z
⠁ Importing rpm-md 0% [░░░░░░░░░░░░░░░░░░░░] (0s)
⠤ Importing rpm-md 100% [████████████████████] (0s)
Importing rpm-md... done
Resolving dependencies... done
Downloading from 'rhel-8-baseos'... done
+ createrepo_c tmp/extensions/output
Directory walk started
Directory walk done - 15 packages
Temporary output repo path: tmp/extensions/output/.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished
+ tar -cf /srv/tmp/extensions/rhcos-48.83.202103041956-0-extensions.x86_64.tar .
[coreos-assembler]$ jq .extensions < builds/latest/x86_64/meta.json
{
"path": "rhcos-48.83.202103041956-0-extensions.x86_64.tar",
"sha256": "0489fbe21aaa7bd9be38aefe1db65e15eaa6342b11f327c5e84f0c17bc8996d2",
"rpm-ostree-state": "a6921f2f720e1d00644ca32a48eac216cb8b7369e42cc5c0f77a58538564a0537186ab0d17d6815c3cad577bd5385f4044ed00fcbed9101f1cabdf51c70eb4c7",
"manifest": {
"kernel": "4.18.0-240.15.1.el8_3.x86_64",
"kernel-core": "4.18.0-240.15.1.el8_3.x86_64",
"kernel-devel": "4.18.0-240.15.1.el8_3.x86_64",
"kernel-headers": "4.18.0-240.15.1.el8_3.x86_64",
"kernel-modules": "4.18.0-240.15.1.el8_3.x86_64",
"kernel-modules-extra": "4.18.0-240.15.1.el8_3.x86_64",
"kernel-rt-core": "4.18.0-240.15.1.rt7.69.el8_3.x86_64",
"kernel-rt-devel": "4.18.0-240.15.1.rt7.69.el8_3.x86_64",
"kernel-rt-kvm": "4.18.0-240.15.1.rt7.69.el8_3.x86_64",
"kernel-rt-modules": "4.18.0-240.15.1.rt7.69.el8_3.x86_64",
"kernel-rt-modules-extra": "4.18.0-240.15.1.rt7.69.el8_3.x86_64",
"libqb": "1.0.3-12.el8.x86_64",
"protobuf": "3.5.0-13.el8.x86_64",
"usbguard": "0.7.8-7.el8.x86_64",
"usbguard-selinux": "0.7.8-7.el8.noarch"
}
}
[coreos-assembler]$ (cd src/config && git checkout master)
Previous HEAD position was d19631d manifest: use fcc/networking-tools
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
[coreos-assembler]$ (cd src/config && git diff d19631d..HEAD)
diff --git a/extensions.yaml b/extensions.yaml
index 1ca364d..2634512 100644
--- a/extensions.yaml
+++ b/extensions.yaml
@@ -3,6 +3,7 @@
# and https://github.com/coreos/fedora-coreos-tracker/issues/401
repos:
+ - rhel-8-advanced-virt
- rhel-8-nfv
extensions:
@@ -42,3 +43,10 @@ extensions:
- kernel-rt-modules
- kernel-rt-modules-extra
- kernel-rt-devel
+ # https://github.com/openshift/machine-config-operator/pull/2376/
+ # GRPA-3123
+ qemu-kiwi:
+ architectures:
+ - x86_64
+ packages:
+ - qemu-kiwi
[coreos-assembler]$ cosa buildextend-extensions
Extensions already exist: rhcos-48.83.202103041956-0-extensions.x86_64.tar
Use --force to force a rebuild
Yeah, change detection is broken because it's fundamentally linked to cosa build. Technically what you want is a new build where the OSTree is the same but just the extensions are different. But the code for creating new builds is in cosa build. We do handle this case for image.yaml (where we reuse the same OSTree in a new build), so it's about generalizing that bit and making other things leverage it more easily.
This one is still an issue, but not worth investigating at this point.