An initiative to formulate industry standards around container
formats and runtime is available at https://www.opencontainers.org
Different tools to implement the specifications had been
created. The purpose of this class and its sub-classes is
to provide a common interface in kiwi to allow using all
tools such that the container support in kiwi covers every
linux distribution no matter what tooling was preferred.
Related to Issue #859
In fate#323743 the decision was made to drop dmraid from
the distribution. Along with the low business case for those
controllers and the support for linux softraid via mdadm
we also drop the support in kiwi for oem-ataraid-scan
The optional label attribute in a volume section allows
to specify a filesystem label for the selected volume.
The label setup will have no effect on filesystems
which implements their own volume management like it's
the case for btrfs. This Fixes#738
Change the ContainerBuilder class to evaluate on the
configuration options to decide if the container archive
should be compressed or not. By default the archive will
be compressed, thus there is no change to the former behavior
but can be setup in ~/.config/kiwi/config.yml as follows:
container:
- compress: none|xz
This Fixes#725
This commit adds a new `uninstall` type for packages. Packages listed
with this type will be removed by the package manager cleaning also any
unneeded dependency. The removal is executed after running `config.sh`.
Also in this commit `delete` type for packages is now executed after
`uninstall` packages, meaing it also happens after `config.sh`.
Fixes#625
With this commit the profile can include other profiles as a dependency.
This way it is possible build an image defined by multiple profiles by just
calling a single composed profile from the command line.
Fixes#658
As the kiwi build dracut initrd is a generic one which
includes all installed dracut modules we missed a way to
exclude modules from beeing incorporated even if we know
it would not be needed. One example is the multipath module
which would only be useful if the oem multipath scan is
configured in the image description
With the move of the boot descriptions in its own package
the kiwi search path needs to be adapted to look for boot
descriptions in /usr/share/kiwi/custom_boot. In addition
a runtime check to exit early if the boot description could
not be found or is not specified will be provided. Related
to Issue #576
The installation of the above mentioned dracut module package
is required for oem images which uses dracut as initrd system
and have the creation of an installation image requested.
This is related to Issue #576
If an image description only contains package requests
from a bootstrap section but no image packages, it's not
required to install a package manager package into the
system
The new rule allows to check for required attributes for a specific
image type and is used for the filesystem attribute which is required
for the image type oem, vmx and pxe. This Fixes#476
Make sure the default initrd_system is set to dracut
for the vmx image type and to kiwi if no initrd_system
is specified. This allows to simplify other code parts
as we can trust there is a value set
Custom disk format options passed in the formatoptions
attribute were not handled. In addition options with a
value passed to qemu were handled in the wrong way.
This commit addresses both problems and Fixes#463
This commit rearranges some method and variable names and includes
a new runtimecheck to ensure the mediacheck attribute is not set
when building non x86 images.
Patch related to bsc#1049304
If an element like displayname or oem-boot-title contains
characters outside of the ascii table this causes trouble
when kiwi writes out the profile file and the code is called
through python2. The reason here is that the default encoding
on write() (and other methods) is set to ascii in python2
and when it receives unicode characters outside of the
ascii spec a UnicodeEncodeError is thrown. Now all of kiwi
is using Unicode which means this does not produce a problem
when calling the code through python3 because the default
encoding is utf-8 there. This patch introduces a method
which allows to change python's default encoding and calls
it at the code point where we write the profile because we
got unicode and we want to write unicode in any case.
This fixes at least one situation for python2-kiwi to
allow the use of non ascii characters in the XML setup.
If other places will be found the same approach should allow
to fix it for python2
Updates all XML descriptions to latest schema version and
also includes adaptions to the test XML descriptions for
testing the new Xen guest and server setup
* Delete kiwi internal ibs: and suse: types
* Delete handling for --obs-repo-internal and provide a
compatibility message to the user
* Buildservice download server url and scope can be configured
via ~/.config/kiwi/config.yml
* Translate obs urls to http in import_repositories_marked_as_imageinclude
* Use new Uri.is_public method in renamed runtime check
check_image_include_repos_publicly_resolvable
This commit fixes#395, with it, using --ignore-repos, does not
delete imageonly repositories from the description file. This way
imageonly is prepared to be used in the buildservice even when using
the 'obsrepositories:/' reference style.
This commit adds support for the rpm-check-signatures flag, which
sets the package manager to verify or not each package signature.
By default KIWI assumes no gpg checks are done.
This commit adds the possibility of clearing asny subcommand or
entrypoint. This is relevant for docker derived images, as they
inherit the configuration and it might lead to some bad behavior.
This commit includes the root import feature. A `derived_from`
attribute has been included with the <type> section to make
reference to the image file to import. The image format to import
is assumed to be the same as the build type to import.
The current format supported is docker
If a kiwi initrd is used, the kernel used to build the kiwi
initrd and the kernel used in the system image must be the
same in order to avoid an inconsistent boot setup. This is
related to (bsc#1027610)
Runtime check to check for required docker tools umoci and
skopeo. As long as tools tools are not available in the
core distro of all distributions we avoid spec file requirements
and check at runtime if they can be found
Instead of creating a simple tarball the tools umoci and skopeo
from the docker tool chain are used to create official docker
images. Along with those tools more information to describe a
container has been added to the schema. A complete container
setup now consists of the following elements
<type image="docker">
<containerconfig name="..." maintainer="..." user="..." workingdir="...">
<entrypoint execute="command">
<argument name="option"/>
...
</entrypoint>
<subcommand execute="command">
<argument name="option"/>
...
</subcommand>
<expose>
<port number="..."/>
...
</expose>
<volumes>
<volume name="..."/>
...
</volumes>
<environment>
<env name="variable" value="value"/>
...
</environment>
<labels>
<label name="..." value="..."/>
...
</labels>
</containerconfig>
</type>
spare_part receives a size value with an optional unit (M|G)
and is used for disk images to allow the creaton of a spare
partition of the configured size. Issue #234
The vboot firmware setup was a workaround on arm for the
chromebook platform several years ago. From a todays
perspective the setup and the way to boot would be different
and obsoletes the special case implementation. Thus this
is gone now. Related to Issue #234
The packages subsection <ignore> only accepted a package
name to become ignored. However a <package> subsection
to install a package allows for an arch selection. The
same should apply to ignore a package. In addition the
allowed content for the arch attribute has been changed
from simple text to a regular expression. Allowed is a
comma seperated list of reserved architecture words like
they are displayed by uname -m
Zypper supports the al (add lock) command which allows to ignore
a package in the dependecny resolution process. This is useful
to prevent installation of a package which was pulled in by e.g
a recommendation flag from the spec file. Packages marked to be
ignored are not handled for apt and yum right now. Using this
feature together with an unsupported package manager backend
results in a warning to the user
The configuration files /etc/sysconfig/bootloader and
/etc/default/grub needs to be created/updated with the
relevant values regarding the bootloader setup done by
kiwi. This Fixes#226