]> git.ipfire.org Git - thirdparty/mkosi.git/log
thirdparty/mkosi.git
2 years agoImprove check for whether we have to rerun depmod 2301/head
Daan De Meyer [Thu, 18 Jan 2024 09:26:10 +0000 (10:26 +0100)] 
Improve check for whether we have to rerun depmod

Let's check if any extra modules were dropped in by users and rerun
depmod in that case.

2 years agoDon't preserve timestamps when copying skeleton/extra trees
Daan De Meyer [Thu, 18 Jan 2024 09:24:45 +0000 (10:24 +0100)] 
Don't preserve timestamps when copying skeleton/extra trees

If timestamps should be preserved, a tar archive should be used.
Timestamps in directories are very likely to be arbitrary and there's
no point in preserving them. This doesn't impact reproducible builds
as we have SourceDateEpoch= for that.

2 years agoMerge pull request #2298 from DaanDeMeyer/env
Daan De Meyer [Wed, 17 Jan 2024 21:40:32 +0000 (22:40 +0100)] 
Merge pull request #2298 from DaanDeMeyer/env

Introduce config_make_dict_parser()

2 years agoFix summary indentation 2298/head
Daan De Meyer [Wed, 17 Jan 2024 14:34:12 +0000 (15:34 +0100)] 
Fix summary indentation

2 years agoIntroduce config_make_dict_parser()
Daan De Meyer [Wed, 17 Jan 2024 14:05:20 +0000 (15:05 +0100)] 
Introduce config_make_dict_parser()

2 years agoFix --mirror for Fedora (again)
Daan De Meyer [Wed, 17 Jan 2024 13:03:15 +0000 (14:03 +0100)] 
Fix --mirror for Fedora (again)

2 years agoMerge pull request #2296 from DaanDeMeyer/passwd
Daan De Meyer [Wed, 17 Jan 2024 11:28:46 +0000 (12:28 +0100)] 
Merge pull request #2296 from DaanDeMeyer/passwd

Hash root password when a plaintext one is given

2 years agoStop using --best when not necessary 2296/head
Daan De Meyer [Wed, 17 Jan 2024 10:27:20 +0000 (11:27 +0100)] 
Stop using --best when not necessary

2 years agoRemove unnecessary quotes
Daan De Meyer [Wed, 17 Jan 2024 10:26:11 +0000 (11:26 +0100)] 
Remove unnecessary quotes

2 years agoFix SRPM path in rpm scripts
Daan De Meyer [Wed, 17 Jan 2024 10:18:52 +0000 (11:18 +0100)] 
Fix SRPM path in rpm scripts

2 years agoHash root password when a plaintext one is given
Daan De Meyer [Wed, 17 Jan 2024 10:18:39 +0000 (11:18 +0100)] 
Hash root password when a plaintext one is given

2 years agoRevert "Don't include root password in /usr/lib/credstore"
Daan De Meyer [Wed, 17 Jan 2024 09:34:08 +0000 (10:34 +0100)] 
Revert "Don't include root password in /usr/lib/credstore"

If /etc/shadow is included in the image this is just as safe/unsafe
as including the hashed root password in /usr/lib/credstore. We'll
deal with including the plaintext root password in the next commit.

This reverts commit 1e054b4f3d75552b23299d20079f5f6ee3b7853a.

2 years agoMerge pull request #2294 from DaanDeMeyer/topdir
Jörg Behrmann [Wed, 17 Jan 2024 09:27:22 +0000 (10:27 +0100)] 
Merge pull request #2294 from DaanDeMeyer/topdir

Always set rpm _topdir to /var/tmp

2 years agoMerge pull request #2295 from DaanDeMeyer/news
Jörg Behrmann [Wed, 17 Jan 2024 09:23:57 +0000 (10:23 +0100)] 
Merge pull request #2295 from DaanDeMeyer/news

Update NEWS

2 years agoAdd link to constellation mkosi blog post 2295/head
Daan De Meyer [Tue, 16 Jan 2024 22:39:09 +0000 (23:39 +0100)] 
Add link to constellation mkosi blog post

2 years agoAdd link to "Building USIs with mkosi" blog post
Daan De Meyer [Tue, 16 Jan 2024 22:32:26 +0000 (23:32 +0100)] 
Add link to "Building USIs with mkosi" blog post

2 years agoUpdate NEWS
Daan De Meyer [Tue, 16 Jan 2024 21:26:00 +0000 (22:26 +0100)] 
Update NEWS

2 years agoClarify that --build-in-place sets _builddir to the CWD 2294/head
Daan De Meyer [Tue, 16 Jan 2024 20:28:41 +0000 (21:28 +0100)] 
Clarify that --build-in-place sets _builddir to the CWD

This isn't exactly obvious, so let's mention that --build-in-place
configures _builddir to the current working directory which explains
why we need to change directory to the upstream sources before
invoking rpmbuild.

2 years agoAlways set rpm _topdir to /var/tmp
Daan De Meyer [Tue, 16 Jan 2024 20:20:38 +0000 (21:20 +0100)] 
Always set rpm _topdir to /var/tmp

_topdir is rpm's working directory. Set it /var/tmp so we don't pollute
the image or source directories we're building from with rpmbuild
artifacts.

2 years agoUse $PACKAGEDIR when building mkosi rpm
Daan De Meyer [Tue, 16 Jan 2024 15:57:47 +0000 (16:57 +0100)] 
Use $PACKAGEDIR when building mkosi rpm

2 years agoCache depmod again
Daan De Meyer [Tue, 16 Jan 2024 15:39:05 +0000 (16:39 +0100)] 
Cache depmod again

Let's run depmod before we cache our images so that we can skip it
when doing incremental builds for kernels installed with the package
manager. depmod is noticeably slow so this speeds up kernel builds a
bit.

2 years agoFix shim signing bug
Daan De Meyer [Tue, 16 Jan 2024 13:37:51 +0000 (14:37 +0100)] 
Fix shim signing bug

sign_efi_binary() expects the full output path.

2 years agoMerge pull request #2291 from DaanDeMeyer/stuff
Jörg Behrmann [Tue, 16 Jan 2024 14:57:23 +0000 (15:57 +0100)] 
Merge pull request #2291 from DaanDeMeyer/stuff

kernel-install: Build microcode initrd

2 years agokernel-install: Build microcode initrd 2291/head
Daan De Meyer [Tue, 16 Jan 2024 13:49:20 +0000 (14:49 +0100)] 
kernel-install: Build microcode initrd

Let's make sure we build a microcode initrd as well in the
kernel-install plugin. It's a bit too complicated to reuse
the build_microcode_initrd() function we have already due to
sandboxing so we opt to duplicate it instead.

2 years agoMake archive.py independent of Context
Daan De Meyer [Tue, 16 Jan 2024 13:21:52 +0000 (14:21 +0100)] 
Make archive.py independent of Context

Let's make these functions slightly more generic by passing in a
tools directory and a sandbox instead of the full Context object.

2 years agoMake sure we open Packages output location in binary mode
Daan De Meyer [Tue, 16 Jan 2024 13:59:40 +0000 (14:59 +0100)] 
Make sure we open Packages output location in binary mode

2 years agoUse stdin/stdout for cpio/tar
Daan De Meyer [Tue, 16 Jan 2024 12:54:30 +0000 (13:54 +0100)] 
Use stdin/stdout for cpio/tar

Let's reduce the amount of stuff we have to mount in the sandbox
by making use of stdin/stdout when invoking cpio/tar.

2 years agoMerge pull request #2289 from DaanDeMeyer/news
Daan De Meyer [Tue, 16 Jan 2024 12:31:01 +0000 (13:31 +0100)] 
Merge pull request #2289 from DaanDeMeyer/news

Update NEWS

2 years agoDon't include root password in /usr/lib/credstore 2289/head
Daan De Meyer [Tue, 16 Jan 2024 12:04:58 +0000 (13:04 +0100)] 
Don't include root password in /usr/lib/credstore

2 years agoUpdate NEWS
Daan De Meyer [Tue, 16 Jan 2024 12:01:37 +0000 (13:01 +0100)] 
Update NEWS

2 years agoMerge pull request #2287 from DaanDeMeyer/stuff
Daan De Meyer [Tue, 16 Jan 2024 12:00:50 +0000 (13:00 +0100)] 
Merge pull request #2287 from DaanDeMeyer/stuff

Package manager improvements

2 years agoAdd PackageDirectories= 2287/head
Daan De Meyer [Mon, 15 Jan 2024 21:24:08 +0000 (22:24 +0100)] 
Add PackageDirectories=

Let's make it possible to serve local packages as a local repository
so that users don't have to put local paths in their Packages= setting.
We'll also allow adding more packages to this local repository in the
build script so that these can be installed in the initrd when we build
it or in a postinst or finalize script.

2 years agoMount package manager caches to their canonical locations
Daan De Meyer [Mon, 15 Jan 2024 20:57:35 +0000 (21:57 +0100)] 
Mount package manager caches to their canonical locations

Let's reduce the amount of configuration by mounting package
manager caches to their canonical locations.

2 years agoReplace flatten() with format string
Daan De Meyer [Mon, 15 Jan 2024 20:31:34 +0000 (21:31 +0100)] 
Replace flatten() with format string

2 years agoUse context.pkgmngr in one more place
Daan De Meyer [Mon, 15 Jan 2024 20:30:58 +0000 (21:30 +0100)] 
Use context.pkgmngr in one more place

2 years agoMount package manager cache directories when running scripts
Daan De Meyer [Mon, 15 Jan 2024 20:29:10 +0000 (21:29 +0100)] 
Mount package manager cache directories when running scripts

When running package managers in host scripts we want the cache
to be available as well;

2 years agoPut --mirror in cache manifest
Daan De Meyer [Mon, 15 Jan 2024 20:04:55 +0000 (21:04 +0100)] 
Put --mirror in cache manifest

2 years agoFix --mirror for CentOS and Fedora
Daan De Meyer [Mon, 15 Jan 2024 19:59:03 +0000 (20:59 +0100)] 
Fix --mirror for CentOS and Fedora

Let's unify the interface for --mirror and only require users to
specify a url and add the entire path ourselves in mkosi. This is
required to use EPEL repositories with --mirror= as the epel
repositories are mirrored under <url>/fedora/epel whereas the CentOS
Stream repositories are under <url>/centos-stream

2 years agoci: Enable Arch Linux tools tree CI again
Daan De Meyer [Tue, 16 Jan 2024 09:33:54 +0000 (10:33 +0100)] 
ci: Enable Arch Linux tools tree CI again

The required qemu fix was backported to the qemu package.

2 years agoGenerate more strict regexes from loaded modules
Daan De Meyer [Tue, 16 Jan 2024 10:11:54 +0000 (11:11 +0100)] 
Generate more strict regexes from loaded modules

Let's only match actual modules ending in .ko.

2 years agofedora: Don't download filelists
Daan De Meyer [Mon, 15 Jan 2024 13:16:30 +0000 (14:16 +0100)] 
fedora: Don't download filelists

Fixes a bug introduced in c1bef56eafb6809a91816c3c17e57050c1724fc4.

2 years agoMerge pull request #2285 from DaanDeMeyer/tmpfiles
Jörg Behrmann [Mon, 15 Jan 2024 10:59:14 +0000 (11:59 +0100)] 
Merge pull request #2285 from DaanDeMeyer/tmpfiles

Run systemd-tmpfiles as part of the build

2 years agoRun systemd-tmpfiles as part of the build 2285/head
Daan De Meyer [Sun, 14 Jan 2024 20:53:06 +0000 (21:53 +0100)] 
Run systemd-tmpfiles as part of the build

Let's make sure we take user provided tmpfiles snippets into account
as well. Since systemd now mounts the initramfs read-only by default,
we need to make sure all tmpfiles snippets that copy to /etc have
already been processed during the image build itself as they won't be
able to run during the initramfs stage.

2 years agoUse 1. for ordered list
Daan De Meyer [Sun, 14 Jan 2024 20:58:41 +0000 (21:58 +0100)] 
Use 1. for ordered list

The actual number used doesn't matter, so just use 1. everywhere.

2 years agoSkip normalize_mtime() if the directory does not exist
Daan De Meyer [Sun, 14 Jan 2024 19:50:08 +0000 (20:50 +0100)] 
Skip normalize_mtime() if the directory does not exist

2 years agoMerge pull request #2283 from DaanDeMeyer/arch
Daan De Meyer [Sun, 14 Jan 2024 19:38:23 +0000 (20:38 +0100)] 
Merge pull request #2283 from DaanDeMeyer/arch

Make sure /etc/mtab exists in sandbox

2 years agoMake sure /etc/mtab exists in sandbox 2283/head
Daan De Meyer [Sun, 14 Jan 2024 17:02:39 +0000 (18:02 +0100)] 
Make sure /etc/mtab exists in sandbox

Required for pacman's CheckSpace option. To avoid messing with the
package manager tree /etc too much, we bind mount individual
subdirectories of it instead of the entire directory.

2 years agoMerge pull request #2279 from DaanDeMeyer/rpm-build
Jörg Behrmann [Sun, 14 Jan 2024 18:40:58 +0000 (19:40 +0100)] 
Merge pull request #2279 from DaanDeMeyer/rpm-build

Drop rpm-build from 30-rpm default image config

2 years agoMake sure we don't build the same tools tree more than once
Daan De Meyer [Sun, 14 Jan 2024 16:16:05 +0000 (17:16 +0100)] 
Make sure we don't build the same tools tree more than once

We can do this by simply checking if the output path already exists
instead of relying on needs_build(). This allows us to refactor
needs_build() to needs_clean(). We also move some prechecks into
run_build() and run_clean() so as to not duplicate them and improve
the logging messages in run_clean().

Fixes #2280

2 years agoBe more careful with mounting /etc/alternatives in relaxed mode
Daan De Meyer [Sun, 14 Jan 2024 16:57:34 +0000 (17:57 +0100)] 
Be more careful with mounting /etc/alternatives in relaxed mode

Otherwise we might end up trying to create a mountpoint in the host's
/etc.

2 years agoAdd BuildSources=. to the default image configuration 2279/head
Daan De Meyer [Fri, 12 Jan 2024 14:28:41 +0000 (15:28 +0100)] 
Add BuildSources=. to the default image configuration

If we enable the rpm build, we set BuildSources= which means we
override the default build sources. However we still want the source
directory to be used as BuildSources= as well, so configure it explicitly.

2 years agoSimplify run_prepare_scripts()
Daan De Meyer [Fri, 12 Jan 2024 14:23:44 +0000 (15:23 +0100)] 
Simplify run_prepare_scripts()

Make it look more like the other script functions.

2 years agoUse finalize_ephemeral_source_mounts() for package managers as well
Daan De Meyer [Fri, 12 Jan 2024 14:41:22 +0000 (15:41 +0100)] 
Use finalize_ephemeral_source_mounts() for package managers as well

Otherwise we'll still  create mountpoints in the actual source
directories when using nested build sources.

2 years agoDrop rpm-build from 30-rpm default image config
Daan De Meyer [Fri, 12 Jan 2024 13:50:20 +0000 (14:50 +0100)] 
Drop rpm-build from 30-rpm default image config

We already install it unconditionally these days.

2 years agoRelease 20.1 v20.1
Luca Boccassi [Fri, 12 Jan 2024 13:41:06 +0000 (13:41 +0000)] 
Release 20.1

2 years agoAdd note on BuildSources= being required to install local packages.
Daan De Meyer [Fri, 12 Jan 2024 12:10:09 +0000 (13:10 +0100)] 
Add note on BuildSources= being required to install local packages.

2 years agoVerify that output path is not a symlink in needs_build()
Daan De Meyer [Fri, 12 Jan 2024 11:30:41 +0000 (12:30 +0100)] 
Verify that output path is not a symlink in needs_build()

Otherwise if we first build a disk image and then try to run
"mkosi -t directory qemu" we won't actually rebuild the image as it
will think the output already exists and we'll try to boot a disk
image as a directory.

2 years agoUpdate NEWS
Daan De Meyer [Fri, 12 Jan 2024 11:03:00 +0000 (12:03 +0100)] 
Update NEWS

2 years agoMerge pull request #2275 from DaanDeMeyer/selinux
Daan De Meyer [Fri, 12 Jan 2024 10:30:39 +0000 (11:30 +0100)] 
Merge pull request #2275 from DaanDeMeyer/selinux

Improve SELinux binary policy selection

2 years agoAdd debug log when we don't add microcode initrd 2275/head
Daan De Meyer [Fri, 12 Jan 2024 09:50:09 +0000 (10:50 +0100)] 
Add debug log when we don't add microcode initrd

2 years agoAllow gpg access to /run/pscsd/pscsd.comm on the host if it exists
Daan De Meyer [Fri, 12 Jan 2024 09:33:26 +0000 (10:33 +0100)] 
Allow gpg access to /run/pscsd/pscsd.comm on the host if it exists

This is required for gpg to communicate with pscsd for interaction
with smartcards so let's mount it in if it exists.

2 years agoImprove SELinux binary policy selection
Daan De Meyer [Fri, 12 Jan 2024 09:15:53 +0000 (10:15 +0100)] 
Improve SELinux binary policy selection

Let's deal with the possibility that there might be more than one
policy in the binary policy directory. Let's also make sure that we
consider other files in the directory that might not be policies.

2 years agoPopulate only using the archlinux keyring
Daan De Meyer [Thu, 11 Jan 2024 19:26:07 +0000 (20:26 +0100)] 
Populate only using the archlinux keyring

Otherwise on Debian and Ubuntu we end up adding the Debian/Ubuntu
keyrings as well which is useless and slows down builds.

2 years agoMerge pull request #2271 from DaanDeMeyer/fix
Daan De Meyer [Thu, 11 Jan 2024 19:20:44 +0000 (20:20 +0100)] 
Merge pull request #2271 from DaanDeMeyer/fix

Two fixes

2 years agoUse grub binaries from tools tree instead of from image 2271/head
Daan De Meyer [Thu, 11 Jan 2024 13:07:20 +0000 (14:07 +0100)] 
Use grub binaries from tools tree instead of from image

Let's give this another try and use grub tools from the tools tree
instead of from the image.

We also hardcode the grub prefix per distribution because if we use
grub binaries from the tools tree there might not be any installed
in the image itself which means we can't derive the prefix from the
binaries in the image.

2 years agoUse default_factory for tools tree options defaults
Daan De Meyer [Thu, 11 Jan 2024 16:15:46 +0000 (17:15 +0100)] 
Use default_factory for tools tree options defaults

2 years agoSilence mkfs.erofs in CI
Daan De Meyer [Thu, 11 Jan 2024 15:34:16 +0000 (16:34 +0100)] 
Silence mkfs.erofs in CI

It prints a line for each file included in the image when connected
to a pipe which is extremely noisy so silence it.

2 years agoPrefer qemu-system-xxx binaries
Daan De Meyer [Thu, 11 Jan 2024 13:08:25 +0000 (14:08 +0100)] 
Prefer qemu-system-xxx binaries

The qemu and qemu-kvm binaries are just shorthands for specific configs.
Let's prefer the actual binaries over the shorthands.

2 years agoLog before going into debug shell
Daan De Meyer [Thu, 11 Jan 2024 07:55:13 +0000 (08:55 +0100)] 
Log before going into debug shell

Fixes #2269

2 years agoCheck for all required setfiles inputs in want_selinux_relabel()
Daan De Meyer [Wed, 10 Jan 2024 15:47:58 +0000 (16:47 +0100)] 
Check for all required setfiles inputs in want_selinux_relabel()

On Debian when policycoreutils is installed a policy is configured
without a matching binary policy being installed, so we have to
check that all parts are there.

2 years agoSkip caching if Overlay= is enabled
Daan De Meyer [Wed, 10 Jan 2024 11:20:29 +0000 (12:20 +0100)] 
Skip caching if Overlay= is enabled

When Overlay= is enabled we can't do Incremental= caching so skip
save_cache() if Overlay= is enabled.

2 years agoCopy nspawn settings to the output directory again
Daan De Meyer [Wed, 10 Jan 2024 09:58:29 +0000 (10:58 +0100)] 
Copy nspawn settings to the output directory again

machinectl pull-tar looks for a settings file so let's make sure
the output directory can be used directly for this purpose by copying
the nspawn settings file to the output directory again.

2 years agoMerge pull request #2263 from DaanDeMeyer/fix
Daan De Meyer [Wed, 10 Jan 2024 09:48:28 +0000 (10:48 +0100)] 
Merge pull request #2263 from DaanDeMeyer/fix

Fix invoked_as_root initialization

2 years agoActually call configure_extension_release() 2263/head
Daan De Meyer [Wed, 10 Jan 2024 08:10:44 +0000 (09:10 +0100)] 
Actually call configure_extension_release()

2 years agoFix invoked_as_root check
Daan De Meyer [Wed, 10 Jan 2024 07:22:43 +0000 (08:22 +0100)] 
Fix invoked_as_root check

2 years agoMerge pull request #2262 from DaanDeMeyer/sources
Daan De Meyer [Tue, 9 Jan 2024 21:00:57 +0000 (22:00 +0100)] 
Merge pull request #2262 from DaanDeMeyer/sources

Mount BuildSources= when executing package managers

2 years agoUse the directory mkosi was invoked in as the default for BuildSources= 2262/head
Daan De Meyer [Tue, 9 Jan 2024 19:22:59 +0000 (20:22 +0100)] 
Use the directory mkosi was invoked in as the default for BuildSources=

While parsing config, we use chdir(). Also, when a BuildSources=
match is found, BuildSources= is initialized to its default value
which is Path.cwd(). However, we want the default value to be the
top level directory that mkosi was invoked in, not the current working
directory that we happen to be in while parsing configuration. Let's
fix this by using the directory mkosi was invoked in instead of Path.cwd().

2 years agoMount in local mirror if it is provided.
Daan De Meyer [Tue, 9 Jan 2024 18:57:16 +0000 (19:57 +0100)] 
Mount in local mirror if it is provided.

2 years agoMount BuildSources= when executing package managers
Daan De Meyer [Tue, 9 Jan 2024 18:48:44 +0000 (19:48 +0100)] 
Mount BuildSources= when executing package managers

Users might have local packages which need to be mounted into the
sandbox as well. Let's make this possible by using BuildSources=.

2 years agoNEWS: reword a sentence and add punctuation
Zbigniew Jędrzejewski-Szmek [Tue, 9 Jan 2024 15:30:54 +0000 (16:30 +0100)] 
NEWS: reword a sentence and add punctuation

2 years agoFix typos in manpage
Luca Boccassi [Tue, 9 Jan 2024 15:35:24 +0000 (15:35 +0000)] 
Fix typos in manpage

2 years agoRelease 20 v20
Luca Boccassi [Tue, 9 Jan 2024 15:05:32 +0000 (15:05 +0000)] 
Release 20

2 years agoMake sure SYSTEMD_REPART_MKFS_OPTIONS_<fs> always applies
Daan De Meyer [Tue, 9 Jan 2024 12:12:37 +0000 (13:12 +0100)] 
Make sure SYSTEMD_REPART_MKFS_OPTIONS_<fs> always applies

Let's make sure we always use the extra mkfs options configured in
these environment variables.

We also stop filtering the environment we pass to systemd-repart.

2 years agoOnly run mount --make-rslave / if we didn't unshare a user namespace
Daan De Meyer [Tue, 9 Jan 2024 10:24:18 +0000 (11:24 +0100)] 
Only run mount --make-rslave / if we didn't unshare a user namespace

When unsharing a mount namespace in a different user namespace than
the parent mount namespace, all mounts are marked as slave by default
so we don't need to explicitly mark all of them as slave mounts.

2 years agoMerge pull request #2258 from DaanDeMeyer/policycoreutils
Jörg Behrmann [Tue, 9 Jan 2024 12:08:44 +0000 (13:08 +0100)] 
Merge pull request #2258 from DaanDeMeyer/policycoreutils

Add policycoreutils to tools trees

2 years agoAdd policycoreutils to tools trees 2258/head
Daan De Meyer [Tue, 9 Jan 2024 11:11:51 +0000 (12:11 +0100)] 
Add policycoreutils to tools trees

This package provides setfiles which is required for selinux
relabeling.

2 years agoAdd Ubuntu to tools trees docs packages list
Daan De Meyer [Tue, 9 Jan 2024 11:11:16 +0000 (12:11 +0100)] 
Add Ubuntu to tools trees docs packages list

2 years agoMerge pull request #2255 from DaanDeMeyer/simplify
Daan De Meyer [Tue, 9 Jan 2024 10:10:25 +0000 (11:10 +0100)] 
Merge pull request #2255 from DaanDeMeyer/simplify

Simplify apivfs_cmd() and chroot_cmd()

2 years agoUnshare IPC namespace when not in relaxed mode 2255/head
Daan De Meyer [Tue, 9 Jan 2024 09:26:03 +0000 (10:26 +0100)] 
Unshare IPC namespace when not in relaxed mode

Otherwise tests in the sandbox will think they have access to IPC
stuff when they actually don't.

Fixes #2256

2 years agoOnly set --security-label if the filesystem was relabeled
Daan De Meyer [Tue, 9 Jan 2024 07:49:00 +0000 (08:49 +0100)] 
Only set --security-label if the filesystem was relabeled

Otherwise we run into virtiofsd errors when operating on non relabeled
directories with --security-label enabled.

2 years agoSimplify apivfs_cmd() and chroot_cmd()
Daan De Meyer [Mon, 8 Jan 2024 22:31:37 +0000 (23:31 +0100)] 
Simplify apivfs_cmd() and chroot_cmd()

We move the setpgid logic to run(), avoiding the need to pass a tools
argument to chroot_cmd() and apivfs_cmd().

We also try to remove as much logic from these functions as possible.
Since we can't really assume that any logic we execute during the
function will still hold true in the sandbox, so it's best to delay
any logic execution until we're already in the sandbox (using the
--ro-bind-try options of bubblewrap).

We also rework the /etc/resolv.conf handling to simply make sure that
/run/systemd/resolve exists in the chroot since if /etc/resolv.conf
points to /run it'll almost certainly be to
/run/systemd/resolv/stub-resolv.conf.

2 years agoBind mount /work into chroot instead of individual files/directories
Daan De Meyer [Mon, 8 Jan 2024 19:01:33 +0000 (20:01 +0100)] 
Bind mount /work into chroot instead of individual files/directories

Same effect with less code.

2 years agoMerge pull request #2253 from DaanDeMeyer/fix
Daan De Meyer [Mon, 8 Jan 2024 18:40:26 +0000 (19:40 +0100)] 
Merge pull request #2253 from DaanDeMeyer/fix

More sandboxing fixes

2 years agoUse /work for host scripts as well 2253/head
Daan De Meyer [Mon, 8 Jan 2024 15:56:31 +0000 (16:56 +0100)] 
Use /work for host scripts as well

Now that everything runs sandboxed, /work is free to use for host
scripts as well. At the same time, let's stop unconditionally
mounting the current working directory when running build scripts.

To keep things working smoothly, we'll make mounting the current
working directory the default value for BuildSources= instead.

2 years agoReset default values when assigning the empty string to list setting
Daan De Meyer [Mon, 8 Jan 2024 16:38:11 +0000 (17:38 +0100)] 
Reset default values when assigning the empty string to list setting

For list based settings, it makes more sense for the empty string
to get rid of any default value as well.

2 years agoChange directory to the root directory in Mkosi.default()
Daan De Meyer [Mon, 8 Jan 2024 16:34:32 +0000 (17:34 +0100)] 
Change directory to the root directory in Mkosi.default()

Let's make sure subsequent invocations of Mkosi.default() return
the same value even if we default some settings to the current
working directory.

2 years agodebian: Use ?exact-name() instead of ?name()
Daan De Meyer [Mon, 8 Jan 2024 14:55:55 +0000 (15:55 +0100)] 
debian: Use ?exact-name() instead of ?name()

2 years agoAlways use /var/tmp in apivfs_cmd()
Daan De Meyer [Mon, 8 Jan 2024 14:54:26 +0000 (15:54 +0100)] 
Always use /var/tmp in apivfs_cmd()

apivfs_cmd() is always executed from within a sandbox so we can
just reuse the sandboxes /var/tmp.

2 years agoDon't use host's /var/tmp in sandbox
Daan De Meyer [Mon, 8 Jan 2024 14:52:15 +0000 (15:52 +0100)] 
Don't use host's /var/tmp in sandbox

Instead, use a subdirectory of the host's /var/tmp. Because we want
to limit the lifetime of this directory to the lifetime of the sandbox,
we use a shell command to create and remove the directory.

2 years agoPut tmpfs on /tmp in sandbox when not in relaxed mode
Daan De Meyer [Mon, 8 Jan 2024 14:21:01 +0000 (15:21 +0100)] 
Put tmpfs on /tmp in sandbox when not in relaxed mode

Let's sandbox more by not using the host's /tmp but instead putting
a fresh tmpfs on /tmp. We used the host's /tmp before because the
definitions could potentially be in the host's /tmp but now that we
mount everything in explicitly that isn't a problem anymore.