The Container/Dockerfile and Kickstart equivalents of the fedora-toolbox OCI images installed all locale definitions, translations, and weak dependencies (barring exceptions) [1,2]. In fact, the Containerfile tried very hard to restore any content that was stripped out by the fedora base image. Hence, the KIWI descriptions should do the same. Sometimes, like in the case of the gawk and gawk-all-langpacks RPMs, skipping weak dependencies also strips out translations. The Kickstart files did this by decoupling fedora-container-common.ks from fedora-container-common.ks [3], and this is the KIWI equivalent of the same change. The separate 'packages' elements of types 'bootstrap' and 'image' [4] are no longer needed and have been fused into one. This avoids the need to specify the 'ignore' child elements separately. This change has two workarounds that deserve mention. First, enabling weak dependencies for the packages that used to come from the ContainerCore profile pulls in systemd, and config.xml specifies a keytable for all the KIWI descriptions. These two combined makes KIWI try to set the keymap/keytable using systemd-firstboot(1), and it fails the build with: [ INFO ]: Setting up keytable: [ DEBUG ]: EXEC: [chroot /path/to/image-root systemd-firstboot --help] [ DEBUG ]: EXEC: [chroot /path/to/image-root systemd-firstboot --keymap=us] [ DEBUG ]: EXEC: Failed with stderr: Keymap us is not installed. , stdout: (no output on stdout) [ ERROR ]: KiwiCommandError: chroot: stderr: Keymap us is not installed. , stdout: (no output on stdout) This has been worked around by making the keymaps available during the image build through the kbd-misc RPM, which is later uninstalled. Second, KIWI isn't passing the 'ignore' child elements to DNF [5], and hence they currently have no effect. This has been worked around by uninstalling the RPMs later. Some noteworthy changes in the list of RPMs in the fedora-toolbox image after this change: ... +gawk-all-langpacks-5.3.0-3.fc40.x86_64 ... -glibc-2.39.9000-5.fc41.i686 -glibc-gconv-extra-2.39.9000-5.fc41.i686 -glibc-minimal-langpack-2.39.9000-5.fc41.x86_64 ... -libgcc-14.0.1-0.8.fc41.i686 ... +python-unversioned-command-3.12.2-2.fc41.noarch They are all in line with the latest Kickstart equivalent of the image. [1] https://src.fedoraproject.org/container/fedora-toolbox https://github.com/containers/toolbox/tree/main/images/fedora [2] https://pagure.io/fedora-kickstarts/blob/main/f/fedora-container-toolbox.ks [3] fedora-kickstarts commit 30f76d387d9e7f5c https://pagure.io/fedora-kickstarts/c/30f76d387d9e7f5c https://pagure.io/fedora-kickstarts/pull-request/1002 [4] https://osinside.github.io/kiwi/concept_and_workflow/packages.html [5] https://github.com/OSInside/kiwi/issues/2499 https://pagure.io/fedora-kiwi-descriptions/pull-request/21
fedora-kiwi-descriptions
This project is used to manage the Fedora KIWI image descriptions used in composing Fedora release images.
The rawhide branch is used for Fedora Rawhide images and each release branch is used by that release.
All changes should be made via the PR workflow.
Image variants
Please look at VARIANTS for details on the available
configurations that can be built.
Image build quickstart
Set up your development environment and run the image build (substitute <image_type> and <image_profile> for the appropriate settings):
# Install kiwi
[]$ sudo dnf --assumeyes install kiwi
# Run the image build
[]$ sudo ./kiwi-build --image-type=<image_type> --image-profile=<image_profile> --output-dir ./outdir
CI information
This project is tested using the Software Factory Zuul CI instance using the Test Management Tool.
Licensing
This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, under version 3 of the License, or (at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.