kiwi files using a schema version < 7.4 are no longer supported
by kiwi >= v10.x.x. Thus this commit provides the required
XSL stylesheets to upgrade older schemas to v74 such that they
can be consumed by the latest kiwi version. The needed xsltproc
instruction is placed on the main page of the documentation.
To ensure our trick to switch between docopt and docopt-ng works,
we need to have a higher minimum version for docopt-ng where
compatibility with the original docopt was restored.
Actually the real issue to this defect seems to live in the
anymarkup source code. It seems that the import of xmltodict
at the beginning of the core module is optional, but later on
when handling XML xmltodict seems to be mandatory, see here:
https://github.com/bkabrda/anymarkup-core/blob/08896a8215819edcc413e3f2588518046
9a4c2ed/anymarkup_core/__init__.py#L210-L229. Because this
issue can result in a "ImportError: Can't parse xml: xmltodict not installed"
turning kiwi into a bad exit condition I propose to add
this python requirement to the kiwi spec as a workaround and
try fixing the anymarkup packaging and module setup upstream
in addition. To my knowledge all relevant distributions
provides xmltodict
The kiwi.pdf file as provided in the kiwi-man-pages package
was never really used by our users but comes with a huge
dependency chain to LaTex. We provide the documentation
online as well as converted to DocBook from where all other
formats could be derived. Thus there is no need for us to
produce an extra PDF document which is imho never consulted.
In addition to this change also the contributing chapter has
been reworked. Due to recent changes and drop of obsolete
components from kiwi as well as the effort to move the development
setup to poetry, there is only one non python tool needed
for the development of kiwi. The check for this tool has been
moved into the Makefile and all other checks formerly done
in the helper/install_devel_packages script were deleted.
For building custom initrd images kiwi provided some
optional helper tools. All these C written tools are
old and outdated and either not useful anymore or
replaced by other tools that are part of the distribution
matrix we support. Thus with the move to the next
major release those can go away. This also include the
package kiwi-tools which was used to provide them
SYSLINUX has been abandoned for several years now, and it does not
even work with modern versions of the filesystems supported in kiwi.
This commit drops it and Fixes#2433
We do not actually use xorriso anywhere inside of the dracut module,
nor do we pull in any utilities from the xorriso package into the
generated initramfs anyway.
Fixes: https://github.com/OSInside/kiwi/issues/2404
With dnf5 there is a successor for dnf but there will also
be a transition period where there will be both, the former
dnf and the new dnf5 available. For a clear distinction
between the two we got the recommendation from the RedHat
team to support both in different namespaces. This commit
now implements a backward compatible change for kiwi which
includes the following modifications:
* XSL stylesheet for automatic schema transformation from
<packagemanager>dnf</packagemanager> to
<packagemanager>dnf4</packagemanager>
* Code copy of dnf API interface from
PackageManagerDnf -> PackageManagerDnf4
RepositoryDnf -> RepositoryDnf4
* Deprecation of former Dnf API interface
The code change here will force developers to adapt
their code if they used RepositoryDnf / PackageManagerDnf
classes in their python code. After this change developers
will be dropped into a raise condition which exits kiwi
at the time of the call. Related to Issue #2300
and Issue #2262
dnf5 is the next generation of the dnf package manager.
dnf5 is not a drop in replacement to dnf which is the reason
why this commit adds a new interface class for package and
repository management under a new name: dnf5. Beginning with
Fedora >= 39 dnf5 will be the standard. Thus the requirements
on the packaging level were adapted too.
This Fixes#2300
This Fixes#2262
Make sure the kiwi-systemdeps-containers-wsl meta package
pulls in the required tools for Fedora/RHEL when building
WSL containers. This is a followup to #2286
Do not strictly require fb-util-for-appx. In order to create
WSL containers fb-util-for-appx is a requirement but usually
users create OCI containers and WSL containers are still a
niche case. Thus it's ok to reduce the requirement into a
recommends. This Fixes#2284
This commit ensures parted is only called in dracut-kiwi-lib for s390
arch. It also fixes the spec to only require parted for
s390 builds.
In addition parted requirement has been removed from dracut-kiwi-live
package since parted is not used in any other dracut module beyond
kiwi-lib.
Signed-off-by: David Cassany <dcassany@suse.com>
The spec file was missing the package definition to actually
create the dracut-kiwi-verity package. In addition the fixed
setting to the C standard 17 caused build errors for me on
distributions that uses C standard 11/12.
When building an image with an embedded verity hash via the
embed_verity_metadata="true" type attribute it is required
to setup the device map at boot time accordingly. The dracut
module in this commit provides the needed tooling as a
POSIX C implementation which is able to read the kiwi embedded
verityhash from the offset of the partition. Kudos goes to
Isaac True <isaac.true@canonical.com>
Co-authored-by: Isaac True <isaac.true@canonical.com>
Signed-off-by: Isaac True <isaac.true@canonical.com>
The grub2 package does not exist on all distributions
as a name provider independent of the architecture.
On for example Debian and Ubuntu the packages are
handled differently and grub2 is only provided on
supported architectures. Thus the spec file should
set the grub2 requirement only if the distribution
provides it in any case
There is no version of suse we support that provides
the old xattr module. Thus the requirement can be set
in a clean way to pyxattr and the setup.py trickery
can be deleted
In addition to the serialized Result instance kiwi.result
file this commit also creates a portable version of this
information in kiwi.result.json. Only the information that
can be expressed as json document is part of the portable
version. This is related to Issue #1918
When building raid based images the buildhost needs mdadm.
In addition rework the place to require disk based tools.
Most of them were added to the filesystem systemdeps but
belong to the disk systemdeps
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.
The script kiwi-overlay-root.sh requires lsblk which is provided by
util-linux-systemd. If that package is missing in the final image, then booting
an overlayroot image hangs with:
dracut-pre-mount[480]: //lib/dracut/hooks/pre-mount/30-kiwi-overlay-root.sh: line 46: lsblk: command not found
debootstrap should always come with dpkg because we don't
want to handle the architecture names used on Debian when
dpkg knows them better than we do. since debootstrap itself
considers the possibility of being called without dpkg on
the system we generate the dependency by a spec change
here. This Fixes#1778
In kiwi we use the name of the section as package name to install this
package manager capability. However on Debian based distros there is
no package named apt-get. There is only a package named apt which
provides a tool named apt-get. To avoid inconsistencies like we had it
in Issue #1735 and to bring this setting in line with all other
packagemanager settings the setting was moved to just apt.
This Fixes#1738