In suse there are many programs replaced by the busybox
alternative and also preferred by the package manager.
However there are also packages like the kernel in suse
which wants gawk and not busybox-gawk. In kiwi to build
images there are two installation phases, the bootstrap
phase which installs mandatory packages to allow chroot
operations and the image phase which installs the rest
of the requested packages as chroot operation. In this
two pass step the package manager is called twice to
resolve dependencies and that causes the issue with the
preferred busybox packages which gets pulled in in the
first phase. To prevent this there are only two options:
1. Explicitly list the non busybox packages in the
bootstrap phase
2. Prevent the image phase and put all packages to
the bootstrap phase such there is only one package
manager call for dependency resolution
This commit implementes option 1. because having all
packages in the bootstrap phase means that the host
packagemanager resolves and if the host packagemanager
is somehow not compatible with the image target this
leads to other weird issues which are not obvious and
hard to debug.
kiwi is called with --debug in obs which triggers the scripts
to be called through screen. However the obs caller is not
associated with a terminal thus it fails. This commit creates
an exception for debug mode when running in obs
This patch fixes#1911 and makes secure boot images to work again in Ubuntu 20.04
Co-authored-by: Luis Ladislao Gonzalez Fernandez <luislgf@inditex.com>
When creating a custom script it usually takes some iterations of
try and testing until a final stable state is reached. To support
developers with this task kiwi calls scripts associated with a
screen session. The connection to screen is only done if kiwi
is called with the --debug option.
From the compact form of the schema the RNG schema
is created. The latest changes to support the target_dir
attribute in the <archive> section were added wrong
to the compact form of the schema
Due to changes in the distribution the tests needs some
adaptions. The kernel as provided now by TW uses symlinks
from boot to /usr/lib/modules/... to point to the kernel
binary. Of course this breaks for any system that uses
/boot on another partition. Those image tests which were
testing this aspect needs fixing.
Make sure all test data is included into the source tarball not only
a recursive inclusion of a portion of it. This is needed to run
tests at build time from the pypi provided source tarball
The above package managers supports uninstall instructions
like 'iwl*'. In kiwi there was code checking via rpm if
the packages given to uninstall actually exists. That code
does not work if the given package to uninstall is an
instruction that matches a pattern. Therefore if we use
the uninstall section in the kiwi image description, just
pass the provided information to the package manager and
don't try to be clever in kiwi itself.
The given result bundle dir must only be wiped if the
request to turn the result files into an rpm was given.
Only in this case the given bundle dir must start empty
With the new option --package-as-rpm it is possible to
call the kiwi result bundler such that the image build
results gets packaged into an rpm. I think this is a
handy feature to transport image builds via repositories
The grub config parameter GRUB_DISABLE_LINUX_UUID must only
be set if the device persistence setting is not UUID. However,
in kiwi UUID device names are the default and doesn't have to
be expressed explicitly. Therefore the condition to check
for different than 'by-uuid' is wrong for the default case were
no device persistence setting exists. This results in a wrong
grub option to be set. This commit fixes it in a way to disable
UUID device names in grub if the only other device persistency
setting in kiwi named: 'by-label' is explicitly configured.
This Fixes#1842
A speciality of the rsync tool is that it behaves differently
if the given source_dir ends with a '/' or not. If it ends
with a slash the data structure below will be synced to the
target_dir. If it does not end with a slash the source_dir
and its contents are synced to the target_dir. For example:
source
└── some_data
1. $ rsync -a source target
target
└── source
└── some_data
2. $ rsync -a source/ target
target
└── some_data
The parameter force_trailing_slash in the DataSync::sync_data
method can be used to make sure rsync behaves like shown in
the second case. This Fixes#1786
Moving the linter and unit tests to github workflows and
out of the gitlab CI system has the advantage that pull
request from forked repos will run the tests. In the long
run I think we should move away completely from gitlab CI
and use github actions as this will reduce the number of
external services used in the kiwi project. This commit
starts with the most simple parts: unit and type tests,
doc rendering and code style
Merging #1850 exposed the missing bootloader tests.
This reminds me to move the gitlab driven unit tests
to github actions because for forked repos the gitlab
tests does not run but github actions tests would run