summaryrefslogtreecommitdiff
path: root/mkosi.build
Commit message (Collapse)AuthorAgeFilesLines
* mkosi: Switch to use mkosi presets with prebuilt initrdsDaan De Meyer2023-05-011-192/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of building the initrds for the mkosi images with dracut, let's switch to using mkosi presets to build the initrd with mkosi as well. This commit splits up our single image build into three separate mkosi presets: 1. The "base" preset. This image contains systemd and all its runtime dependencies. The sole purpose of this image is to serve as a base image for the initrd and the final image. It's also responsible for building systemd from source with the build script. The results are installed into the base image. Note that we install the systemd and udev packages into this image as well to prevent package managers from overriding the systemd we built from source with the distro packaged systemd if it's pulled in as a dependency by another package from the initrd or final profiles. 2. The "initrd" preset. This image provides the initrd. It's trivial and does nothing more than packaging the base image up as a zstd compressed initramfs and adds /init and /etc/initrd-release symlinks to the image. 3. The "final" preset. This image builds on top of the base image and adds a kernel and extra packages that are useful for testing and debugging. We also split out the optional kernel build into a separate set of config files that are only included if a kernel to build is actually provided. Note that this commit doesn't really change anything about how mkosi is used. The commands remain the same, except that mkosi will now build all the presets in order. "mkosi summary" will show the summary of all the presets. "mkosi qemu, boot, shell" will always boot the final preset. With "-f", all presets will be built and the final one is booted. "-i" makes a cache of each preset. The only thing to keep in mind is that specifying config via the mkosi CLI will apply to each of the presets. e.g. any extra packages added with "-p" will be installed in both the initrd and the final image. To apply local configuration to a single preset, create a file 00-local.conf in mkosi.presets/<profile>/mkosi.conf.d and put all the preset specific configuration in there.
* mkosi: Make sure we always boot our built from source kernelDaan De Meyer2023-04-051-5/+6
| | | | | If we build a kernel from source, let's make sure it's always booted by giving it a very high version number.
* mkosi: Use default timeout of 10sDaan De Meyer2023-03-161-0/+2
| | | | | Let's override the default timeout to something more reasonable for mkosi builds.
* tree-wide: Drop gnu-efiJan Janssen2023-03-101-1/+1
| | | | | | | This drops all mentions of gnu-efi and its manual build machinery. A future commit will bring bootloader builds back. A new bootloader meson option is now used to control whether to build sd-boot and its userspace tooling.
* mkosi: Simplify BUILDDIR/SRCDIR handling a bitDaan De Meyer2023-02-211-12/+12
|
* mkosi: Move more logic to the postinst scriptDaan De Meyer2023-02-211-83/+2
| | | | | | Let's move stuff that only applies to the final image to the postinst script. Let's also move out some of the static files to mkosi.extra/ instead of hardcoding them in scripts.
* mkosi: Remove preset workaroundDaan De Meyer2023-02-211-4/+0
| | | | | A "disable *" preset is already shipped on debian so no need to add one ourselves.
* mkosi: Use 4 space indentation for scriptsDaan De Meyer2023-02-211-169/+169
| | | | | mkosi scripts are shell scripts and for shell scripts we use 4 space indentation.
* mkosi: Drop locale workaroundDaan De Meyer2023-02-211-23/+0
| | | | | mkosi will always run all commands with the C.UTF-8 locale so we don't need a workaround in the build script anymore.
* mkosi: Drop ld workaroundDaan De Meyer2023-02-211-12/+0
| | | | | Build scripts will always run in an environment with /etc/ available now, so we don't need this workaround anymore.
* mkosi: configure multiarch libdir in debian/ubuntu buildsLuca Boccassi2023-02-161-0/+12
| | | | | | | Debian/Ubuntu use /usr/lib/<triplet> instead of /usr/lib64, so configure it accordingly. This is especially important for cryptsetup token plugins, as cryptsetup comes from the distro and is configured to look into those directories.
* mkosi: Stop installing kernel headers to /usrDaan De Meyer2023-02-121-1/+0
| | | | | The selftests automatically pick up the headers from the kernel build directory so we don't have to install them to /usr ourselves.
* mkosi: Update to latestDaan De Meyer2023-02-101-4/+0
| | | | | | | | | Let's make sure we're testing unprivileged builds properly. Usage of SourceFileTransfer= and SourceFileTransferFinal= are removed as they were dropped by mkosi. SourceFileTransfer=mount is now the default in mkosi so behavior for the build script is unchanged. We stop copying sources in the final image until mkosi adds support for virtiofs.
* mkosi: Drop focal workaround in build scriptDaan De Meyer2023-01-291-6/+1
| | | | | Now that jammy is the latest LTS, lets drop the focal workaround from the build script.
* mkosi: Don't modify rootfs in build scriptDaan De Meyer2023-01-291-6/+9
| | | | | | When unprivileged mkosi becomes available, builds will be executed as an unprivileged user, so we won't be able to modify the rootfs anymore. Let's update the build script to account for this.
* mkosi: Fix shellcheck warningsDaan De Meyer2023-01-291-2/+2
|
* mkosi: Update and enable ukify in mkosi buildsDaan De Meyer2023-01-271-1/+2
| | | | | | | We also add the necessary deps for ukify to the mkosi configs. CentOS Stream 8 is dropped from CI because its python version is too old (3.6) to be able to run ukify.
* mkosi: Use meson setupDaan De Meyer2023-01-151-1/+1
|
* mkosi: Make sure selftests bpftool is accessible from $PATHDaan De Meyer2022-12-051-0/+2
|
* mkosi: Rework kconfig handlingDaan De Meyer2022-12-051-32/+4
| | | | | | | | | | | | | | | | Instead of relying on the arch specific kconfigs that enable all kinds of options that are irrelevant for our use case, let's beef up our own config a little so that we don't need to rely on the arch specific configs anymore. Also, instead of using scripts/config to enable options in the mkosi build script, let's add a new kernel.config file that includes all the configs we want enabled/disabled. Finally, let's make sure we can properly run the bpf selftests by making sure we enable all the right configs required to run the bpf selftests successfully. We use the scripts/kconfig/merge_config.sh script to merge the three different config files together.
* Merge pull request #25327 from keszybz/mkosi-less-workFrantisek Sumsal2022-11-141-6/+6
|\ | | | | Skip mkosi runs on docs-only changes and some small cleanups
| * mkosi: drop spaces after shell redirection operatorZbigniew Jędrzejewski-Szmek2022-11-141-6/+6
| |
* | README: note Kconfig for verifying DDIs via MoK keysLuca Boccassi2022-11-141-0/+4
|/ | | | Also note them in the mkosi.build kernel config list
* mkosi: Build and install kernel selftestsDaan De Meyer2022-11-081-2/+13
|
* mkosi: Make sure bpf-framework works on CentOS Stream 8 as wellDaan De Meyer2022-10-171-0/+16
|
* mkosi: Reenable bpf-frameworkDaan De Meyer2022-10-171-1/+1
| | | | | This got changed by mistake by #24511. Since we still support the same libbpf version, we can keep this enabled everywhere.
* Merge pull request #24629 from DaanDeMeyer/mkosi-kernelDaan De Meyer2022-10-111-0/+37
|\ | | | | mkosi: Optionally build a kernel image from mkosi.kernel/
| * mkosi: Optionally build a kernel image from mkosi.kernel/Daan De Meyer2022-09-291-0/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If mkosi.kernel/ exists, the mkosi script will try to build a kernel image from it. We use the architecture defconfig as a base and add our own extra configuration on top. We also add some extra tooling to the build image required to build the kernel and include some documentation in HACKING.md on how to use this new feature. To avoid the kernel sources from being copied into the build or final image (which we don't want because it takes a while), we put the mkosi.kernel/ directory in .gitignore and use "SourceFileTransfer=mount" so that the sources are still accessible in the build image.
* | Bump libbpf version to 0.7Daan De Meyer2022-10-061-1/+1
|/ | | | | | | | We already depend on the skeleton APIs introduced in libbpf 0.7 so let's bump our minimum version to reflect that. We don't enforce bpf compilation on mkosi anymore since not all distros have sufficiently up-to-date libbpf available.
* mkosi: Print logs of failing testsJan Janssen2022-08-251-1/+1
|
* mkosi: use the just built systemd-sysusers instead of groupaddLuca Boccassi2022-08-251-1/+1
| | | | | It disappeared again from SUSE Tumbleweed. Just use sysusers since we just built it.
* mkosi: Ensure we build all features/components in mkosiDaan De Meyer2022-08-231-1/+88
| | | | | | | | | | | | | | | | | | | | | | Explicitly enable all features/components in the mkosi build to ensure they all get built and we get an error if they can't be built. We also rework the packages sections of all mkosi configs to reduce duplication and cover all the dependencies necessary to build/use all systemd features. Note that for the final image, since systemd is installed by default in base images, we rely on that to install the base library dependencies and we only list extra optional dependencies and tools that aren't already installed by default into the base image. We also drop the centos stream 8 mkosi build as dependencies on that distro are too out-of-date to be able to build all systemd features. Since centos stream 9 has been out for a while, let's focus on that and leave it to downstream to keep systemd building on centos stream 8. Finally, there's a few additions to the mkosi scripts to make sure services don't start by default on boot.
* mkosi: Install tests in final imageDaan De Meyer2022-08-201-1/+2
|
* mkosi: Changes to allow booting with sanitizers in mkosiDaan De Meyer2022-07-181-2/+53
| | | | | | | | | | | | - Extra memory because ASAN needs it - The environment variables to make the sanitizers more useful - LD_PRELOAD because the ASAN DSO needs to be the first in the list - The sanitizer library packages - Disable syscall filters because they interfere with ASAN - Disable systemd-hwdb-update because it's super slow when systemd-hwdb is built with sanitizers - Take the value for meson's b_sanitize option from the SANITIZERS environment variable
* mkosi: Fix build script indentationDaan De Meyer2022-07-181-19/+19
|
* mkosi: Enable meson developer modeDaan De Meyer2022-07-181-1/+2
|
* ci: check for failed services after bootFrantisek Sumsal2021-12-101-0/+9
| | | | | This should, hopefully, catch issues like systemd/systemd#21671 automagically.
* mkosi: Install sd-boot using postinst script instead of in build scriptDaan De Meyer2021-11-251-9/+0
| | | | | This allows us to reuse bootctl install instead of replicating the logic in the build script.
* licensing: add forgotten spdx headersZbigniew Jędrzejewski-Szmek2021-10-011-0/+1
| | | | | Those are all "our" files, but we forgot to add the headers, most likely because of non-standard file extensions.
* mkosi: Remove build script umask workaroundDaan De Meyer2021-09-281-10/+0
| | | | | A fix for this landed in meson 3 years ago so the workaround in the build script can now be removed (https://github.com/mesonbuild/meson/pull/3225).
* mkosi: make mkosi.build shellcheck-cleanZbigniew Jędrzejewski-Szmek2021-09-031-8/+8
| | | | | Also remove the space after redirection operators. (Some redirections were with, some without, and I think it's nicer without.)
* mkosi: drop the code to determine nobody user nameZbigniew Jędrzejewski-Szmek2021-09-031-36/+0
| | | | | | The comments were outdated: at least "nfsnobody" is not used in Fedora since a few years. So I hope we don't need this anymore. The meson build scripts do autodetection on their own.
* mkosi: initialize /usr/lib/os-release' IMAGE_ID + IMAGE_VERSION fields from ↵Lennart Poettering2021-07-031-0/+22
| | | | | | | build If it's passed into the build, use it, so that the mkosi build version is propagated into the image itself.
* mkosi: work-around to make systemd build in Fedora images that lack ↵Lennart Poettering2021-04-071-0/+12
| | | | | | | | | | | | populated /etc On Fedora /usr/bin/ld is a symlink managed via the "alternatives" system. This unfortunately means the binary is not usable in environments where /var or /etc are unpopulated. Let's address this by redirecting "ld" to "ld.bfd" manually if such an environment is detected, via $PATH. This is useful for building systemd in mkosi with UsrOnly=1 set.
* meson: Fix update-man-rules when the build dir is not a subdir of the ↵Daan De Meyer2021-01-241-1/+1
| | | | | | | | | | | | | project dir Until now, update-man-rules assumed that the build directory was a subdirectory of the project directory. When using mkosi, this is not the case. We use find instead of git ls-files because git ls-files does not seem to support outputting absolute paths. Also, this makes update-man-rules a bit more user-friendly as new manpages don't have to be added to the git staging area before they are processed by update-man-rules.py.
* mkosi: Pass build script arguments to ninjaDaan De Meyer2021-01-241-1/+1
| | | | | | mkosi recently gained support to pass arguments to the build script. Let's take advantage of this in systemd's build script to allow passing which target to build to ninja in the build script.
* mkosi: Allow setting version-tag option via VERSION_TAG env variableDaan De Meyer2021-01-151-1/+2
| | | | | | | | With https://github.com/systemd/mkosi/pull/630, we can set environment variables for the build script in mkosi. Let's modify the build script so we can set the version-tag option via an environment variable of the same name. The default is the empty string which causes meson to fall back to the default behavior (git version).
* mkosi: Only reset file permissions when $SRCDIR is not a mountpointDaan De Meyer2021-01-141-2/+4
| | | | | | If $SRCDIR is mounted into the build image (via mkosi overrides), let's not reset the permissions fo the source tree so as to not modify the original files on the host.
* mkosi: Disable translationsDaan De Meyer2021-01-101-1/+7
| | | | | Speeds up incremental builds by half a second. Let's assume translations won't be necessary in the resulting test images.
* mkosi.build: Only create groups if they don't exist yetDaan De Meyer2021-01-091-1/+1
|