coreos-assembler icon indicating copy to clipboard operation
coreos-assembler copied to clipboard

cosa buildextend-extensions doesn't react to changes to extensions.yaml

Open miabbott opened this issue 4 years ago • 1 comments

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

miabbott avatar Mar 04 '21 20:03 miabbott

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.

jlebon avatar Mar 04 '21 20:03 jlebon

This one is still an issue, but not worth investigating at this point.

c4rt0 avatar Mar 07 '24 15:03 c4rt0