OSInside / kiwi

KIWI - Appliance Builder Next Generation
https://osinside.github.io/kiwi
GNU General Public License v3.0
289 stars 146 forks source link

possibly missing build dependencies #2585

Closed itoffshore closed 1 month ago

itoffshore commented 1 month ago

Problem description

possibly missing build dependencies

Expected behaviour

images build successfully

Steps to reproduce the behaviour

kiwi-ng --debug --profile Standard system build \
--description /root/kiwi/build-tests/x86/tumbleweed/test-image-MicroOS \
--target-dir $BUILD

OS and Software information


I've been building for ages with the following build dependencies:

kiwi-systemdeps-iso-media kiwi-systemdeps-bootloaders kiwi-systemdeps-disk-images

Yesterday / today I've noticed I needed to also add:

binutils glibc-gconv-modules-extra - the extra gconv modules were needed to fix:

Error converting to codepage 850 Invalid argument
Cannot initialize '::'

before I added glibc-gconv-modules-extra to the build environment - I tried adding kiwi-systemdeps but the depends do not seem to be in there either.


Some build ideas for anyone coming across this - attaching an ext4 formatted zram volume to the build container works very well. MicroOS images build in around 5 mins.

schaefi commented 1 month ago

This seems to be cause for fat32 when kiwi calls mcopy to transfer data into the fat filesystem image for EFI boot. The mtools code defines code page 850 as the default. The implementation to convert text into cp850 is provided by glibc via the iconv interface. On SUSE TW several changes to the packages and the dependencies were made such that the required gconv module for cp850 is no longer installed by default. I don't see how binutils fits into the picture though.

From my perspective we could solve this in one of the kiwi systemdeps package but at the moment I believe it's a mistake in the mtools package requirements and should be properly fixed there.

I'll set this as a discussion topic for the the community meeting

itoffshore commented 1 month ago

binutils is needed as a depends to provide strings:

[ INFO    ]: 23:31:35 | Writing sysconfig bootloader file
[ INFO    ]: 23:31:35 | --> DEFAULT_APPEND:"splash=silent mitigations=auto quiet security=selinux selinux=1 enforcing=1 hardened_usercopy=1 page_alloc.shuffle=1 randomize_kstack_offset=on pti=on slab_nomerge init_on_alloc=1 init_on_free=1 vsyscall=none vdso32=0 module.sig_enforce=1 net.ifnames=0 "
[ INFO    ]: 23:31:35 | --> FAILSAFE_APPEND:"splash=silent mitigations=auto quiet security=selinux selinux=1 enforcing=1 hardened_usercopy=1 page_alloc.shuffle=1 randomize_kstack_offset=on pti=on slab_nomerge init_on_alloc=1 init_on_free=1 vsyscall=none vdso32=0 module.sig_enforce=1 net.ifnames=0  ide=nodma apm=off noresume edd=off nomodeset 3 "
[ INFO    ]: 23:31:35 | --> LOADER_LOCATION:none
[ INFO    ]: 23:31:35 | --> LOADER_TYPE:grub2-efi
[ INFO    ]: 23:31:35 | --> SECURE_BOOT:yes
[ INFO    ]: 23:31:35 | Creating grub2 install config file from template
[ INFO    ]: 23:31:35 | --> Using standard boot install template
[ DEBUG   ]: 23:31:35 | "strings": in paths "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/bin" exists: "False" mode match: not checked
[ ERROR   ]: 23:31:35 | KiwiCommandNotFound: strings command not found on buildhost
schaefi commented 1 month ago

ok thanks, I think we should provide a fix on the systemdeps meta packages because I believe there will be some people stumbling over this