-
Notifications
You must be signed in to change notification settings - Fork 9
Description
Describe the bug
When building an image using the image-build container and when a YUM repo from a parent image has file:// absolute file path in its URL directive, the image-builder searches the image-build container's root instead of the image container's root.
I believe this is caused by the way dnf is being run. For example, with a parent image that has NVIDIA DOCA drivers installed and has had the doca-kernel-support script has run, the following repo gets added:
[doca-kernel-4.18.0-553.51.1.el8_10.x86_64]
name=DOCA kernel (kernel 4.18.0-553.51.1.el8_10.x86_64)
baseurl=file:///usr/share/doca-host-25.04-0.6.1.0/Modules/4.18.0-553.51.1.el8_10.x86_64
enabled=1
gpgcheck=0
When building a child image, it fails at the package installation step:
INFO - PACKAGES: Installing these packages to compute-zfs-2.2.720250717214608
INFO - zfs
nvme-cli
htop
iftop
ack
tmux
INFO - created by dnf config-manager from http://172.1 85 MB/s | 211 kB 00:00
INFO - created by dnf config-manager from http://172.1 77 MB/s | 89 kB 00:00
INFO - created by dnf config-manager from http://dl.fe 16 MB/s | 14 MB 00:00
INFO - created by dnf config-manager from http://dl.ro 2.7 MB/s | 19 MB 00:07
INFO - created by dnf config-manager from http://dl.ro 40 MB/s | 27 MB 00:00
INFO - created by dnf config-manager from http://dl.ro 7.5 MB/s | 4.5 MB 00:00
INFO - DOCA kernel (kernel 4.18.0-553.51.1.el8_10.x86_ 0.0 B/s | 0 B 00:00
ERROR - Errors during downloading metadata for repository 'doca-kernel-4.18.0-553.51.1.el8_10.x86_64':
ERROR - - Curl error (37): Couldn't read a file:// file for file:///usr/share/doca-host-25.04-0.6.1.0/Modules/4.18.0-553.51.1.el8_10.x86_64/repodata/repomd.xml [Couldn't open file /usr/share/doca-host-25.04-0.6.1.0/Modules/4.18.0-553.51.1.el8_10.x86_64/repodata/repomd.xml
]
ERROR - Error: Failed to download metadata for repo 'doca-kernel-4.18.0-553.51.1.el8_10.x86_64': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
ERROR - Error installing packages: Command '['dnf', '--setopt=reposdir=/home/builder/.local/share/containers/storage/overlay/8b12b97afdedd1db9a4fd2f76b17ec615144d4cb969c2bccab7a0fb1943a478c/merged/etc/yum.repos.d', '--setopt=logdir=/var/tmp/image-build-kzcwfd_x/dnf/log', '-
-setopt=cachedir=/var/tmp/image-build-kzcwfd_x/dnf/cache', 'install', '-y', '--nogpgcheck', '--installroot', '/home/builder/.local/share/containers/storage/overlay/8b12b97afdedd1db9a4fd2f76b17ec615144d4cb969c2bccab7a0fb1943a478c/merged', 'zfs', 'nvme-cli', 'htop', 'iftop',
'ack', 'tmux']' returned non-zero exit status 1.
INFO - 32bf2b0b929e8c9521c76815d2b7de5d01de5c0989f335f16778cf490bfda802
-------------------BUILD LAYER--------------------
Exiting now ...
/usr/share/doca-host-25.04-0.6.1.0/Modules/4.18.0-553.51.1.el8_10.x86_64/repodata/repomd.xml exists in the image, but not in the image-build container.
To Reproduce
Steps to reproduce the behavior:
- Run image-build container:
podman run -it --rm --device /dev/fuse ghcr.io/openchami/image-build:v0.1.0 bash - Create dummy repo:
mkdir -p testrepo/repodata touch testrepo/repodata/repomd.xml - Create config:
cat <<EOF > config.yaml options: layer_type: 'base' name: 'test' publish_tags: - 'rocky8.10' pkg_manager: 'dnf' parent: 'scratch' registry_opts_pull: - '--tls-verify=false' repos: - alias: test url: 'file:///home/builder/testrepo' packages: - fortune EOF - Build using config:
image-build --config ./config.yaml
The output emitted is:
WARNING:root:No publish options passed, not storing image anywhere!
WARNING:root:Use one or more of --publish-local, --publish-s3, or --publish-registry
WARNING:root:to store in one or more of those locations.
-------------------BUILD LAYER--------------------
WARNING:root:PACKAGE MODULES: no modules passed to install
WARNING:root:PACKAGE GROUPS: no package groups passed to install
ERROR:root:Unable to detect release version (use '--releasever' to specify release version)
ERROR:root:Error: Failed to download metadata for repo 'home_builder_testrepo': repomd.xml parser error: Parse error at line: 1 (Extra content at the end of the document
ERROR:root:)
ERROR:layer:Error installing packages: Command '['dnf', '--setopt=reposdir=/home/builder/.local/share/containers/storage/overlay/7260f115e6d18f9786a5800d4c9d326f9df1b7dfcca069c256634c9594e71c65/merged/etc/yum.repos.d', '--setopt=logdir=/var/tmp/image-build-6o41_xxm/dnf/log', '--setopt=cachedir=/var/tmp/image-build-6o41_xxm/dnf/cache', 'install', '-y', '--nogpgcheck', '--installroot', '/home/builder/.local/share/containers/storage/overlay/7260f115e6d18f9786a5800d4c9d326f9df1b7dfcca069c256634c9594e71c65/merged', 'fortune']' returned non-zero exit status 1.
Exiting now ...
The error is:
ERROR:root:Error: Failed to download metadata for repo 'home_builder_testrepo': repomd.xml parser error: Parse error at line: 1 (Extra content at the end of the document
ERROR:root:)
This indicates that the file on the image-build tool container is being read instead of trying to read it from the container of the image being built.
Expected behavior
file:// should look in image container.
Desktop (please complete the following information):
- OS: Rocky 9.5, building Rocky 8.10 image
Additional context
image-build v0.1.0