1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-25 01:34:28 +03:00

Merge pull request #20629 from keszybz/mkosi-host-distro-by-default

mkosi: build for the host distro by default
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2021-09-03 17:46:35 +02:00 committed by GitHub
commit 2c1591b91e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 14 additions and 53 deletions

4
.gitignore vendored
View File

@ -36,6 +36,6 @@ __pycache__/
/mkosi.builddir/ /mkosi.builddir/
/mkosi.output/ /mkosi.output/
/mkosi.default /mkosi.default
mkosi.default.d/* # Ignore any mkosi config files with "local" in the name
!mkosi.default.d/10-systemd.conf /mkosi.default.d/*local*.conf
/tags /tags

View File

@ -34,13 +34,10 @@ possible, however. In order to simplify testing for cases like this we provide
a set of `mkosi` build files directly in the source tree. `mkosi` is a tool for a set of `mkosi` build files directly in the source tree. `mkosi` is a tool for
building clean OS images from an upstream distribution in combination with a building clean OS images from an upstream distribution in combination with a
fresh build of the project in the local working directory. To make use of this, fresh build of the project in the local working directory. To make use of this,
please acquire `mkosi` from https://github.com/systemd/mkosi first, unless your please install the `mkosi` package (if not packaged for your distro, it can be
distribution has packaged it already and you can get it from there. After the downloaded from https://github.com/systemd/mkosi). `mkosi` will build an image
tool is installed, symlink the settings file for your distribution of choice for the host distro by default. It is sufficient to type `mkosi` in the systemd
from .mkosi/ to mkosi.default in the project root directory (note that the project directory to generate a disk image `image.raw` you can boot either in
package manager for this distro needs to be installed on your host system).
After doing that, it is sufficient to type `mkosi` in the systemd project
directory to generate a disk image `image.raw` you can boot either in
`systemd-nspawn` or in an UEFI-capable VM: `systemd-nspawn` or in an UEFI-capable VM:
``` ```

View File

@ -20,7 +20,7 @@ fi
# that /usr/bin/ld is a symlink that points to a non-existing file in # that /usr/bin/ld is a symlink that points to a non-existing file in
# /etc/alternative/ in this mode. Let's work around this for now by manually # /etc/alternative/ in this mode. Let's work around this for now by manually
# redirect "ld" to "ld.bfd", i.e. circumventing the /usr/bin/ld symlink. # redirect "ld" to "ld.bfd", i.e. circumventing the /usr/bin/ld symlink.
if [ ! -x /usr/bin/ld -a -x /usr/bin/ld.bfd ] ; then if [ ! -x /usr/bin/ld ] && [ -x /usr/bin/ld.bfd ]; then
mkdir -p "$HOME"/bin mkdir -p "$HOME"/bin
ln -s /usr/bin/ld.bfd "$HOME"/bin/ld ln -s /usr/bin/ld.bfd "$HOME"/bin/ld
PATH="$HOME/bin:$PATH" PATH="$HOME/bin:$PATH"
@ -35,7 +35,7 @@ fi
# So let's ensure we're running under UTF-8. # So let's ensure we're running under UTF-8.
# #
# If our current locale already is UTF-8, then we don't need to do anything: # If our current locale already is UTF-8, then we don't need to do anything:
if [ "$(locale charmap 2> /dev/null)" != "UTF-8" ] ; then if [ "$(locale charmap 2>/dev/null)" != "UTF-8" ] ; then
# Try using C.UTF-8 locale, if available. This locale is not shipped # Try using C.UTF-8 locale, if available. This locale is not shipped
# by upstream glibc, so it's not available in all distros. # by upstream glibc, so it's not available in all distros.
# (In particular, it's not available in Arch Linux.) # (In particular, it's not available in Arch Linux.)
@ -54,9 +54,9 @@ if [ "$(locale charmap 2> /dev/null)" != "UTF-8" ] ; then
fi fi
if [ ! -f "$BUILDDIR"/build.ninja ] ; then if [ ! -f "$BUILDDIR"/build.ninja ] ; then
sysvinit_path=`realpath /etc/init.d` sysvinit_path=$(realpath /etc/init.d)
init_path=`realpath /sbin/init 2>/dev/null` init_path=$(realpath /sbin/init 2>/dev/null)
if [ -z "$init_path" ] ; then if [ -z "$init_path" ] ; then
rootprefix="" rootprefix=""
else else
@ -64,46 +64,10 @@ if [ ! -f "$BUILDDIR"/build.ninja ] ; then
rootprefix=/${rootprefix#/} rootprefix=/${rootprefix#/}
fi fi
nobody_user=`id -u -n 65534 2> /dev/null`
if [ "$nobody_user" != "" ] ; then
# Validate that we can translate forth and back
if [ "`id -u $nobody_user`" != 65534 ] ; then
nobody_user=""
fi
fi
if [ "$nobody_user" = "" ] ; then
if id -u nobody 2> /dev/null ; then
# The "nobody" user is defined already for something else, pick the Fedora name
nobody_user=nfsnobody
else
# The "nobody" user name is free, use it
nobody_user=nobody
fi
fi
nobody_group=`id -g -n 65534 2> /dev/null`
if [ "$nobody_group" != "" ] ; then
# Validate that we can translate forth and back
if [ "`id -g $nobody_group`" != 65534 ] ; then
nobody_group=""
fi
fi
if [ "$nobody_group" = "" ] ; then
if id -u nobody 2> /dev/null ; then
# The "nobody" group is defined already for something else, pick the Fedora name
nobody_group=nfsnobody
else
# The "nobody" group name is free, use it
nobody_group=nobody
fi
fi
meson "$BUILDDIR" \ meson "$BUILDDIR" \
-D "sysvinit-path=$sysvinit_path" \ -D "sysvinit-path=$sysvinit_path" \
-D "rootprefix=$rootprefix" \ -D "rootprefix=$rootprefix" \
-D man=false \ -D man=false \
-D "nobody-user=$nobody_user" \
-D "nobody-group=$nobody_group" \
-D translations=false \ -D translations=false \
-D version-tag="${VERSION_TAG}" -D version-tag="${VERSION_TAG}"
fi fi
@ -112,7 +76,7 @@ cd "$BUILDDIR"
ninja "$@" ninja "$@"
if [ "$WITH_TESTS" = 1 ] ; then if [ "$WITH_TESTS" = 1 ] ; then
for id in 1 2 3; do for id in 1 2 3; do
getent group $id > /dev/null || groupadd -g $id testgroup$id getent group $id >/dev/null || groupadd -g $id testgroup$id
done done
ninja test ninja test
@ -128,7 +92,7 @@ fi
mkdir -p "$DESTDIR"/etc mkdir -p "$DESTDIR"/etc
cat > "$DESTDIR"/etc/issue <<EOF cat >"$DESTDIR"/etc/issue <<EOF
\S (built from systemd tree) \S (built from systemd tree)
Kernel \r on an \m (\l) Kernel \r on an \m (\l)
@ -138,7 +102,7 @@ if [ -n "$IMAGE_ID" ] ; then
mkdir -p "$DESTDIR"/usr/lib mkdir -p "$DESTDIR"/usr/lib
sed -n \ sed -n \
-e '/^IMAGE_ID=/!p' \ -e '/^IMAGE_ID=/!p' \
-e '$aIMAGE_ID='$IMAGE_ID < /usr/lib/os-release > "$DESTDIR"/usr/lib/os-release -e "\$aIMAGE_ID=$IMAGE_ID" <"/usr/lib/os-release" >"${DESTDIR}/usr/lib/os-release"
OSRELEASEFILE="$DESTDIR"/usr/lib/os-release OSRELEASEFILE="$DESTDIR"/usr/lib/os-release
else else
@ -150,7 +114,7 @@ if [ -n "$IMAGE_VERSION" ] ; then
mkdir -p "$DESTDIR"/usr/lib mkdir -p "$DESTDIR"/usr/lib
sed -n \ sed -n \
-e '/^IMAGE_VERSION=/!p' \ -e '/^IMAGE_VERSION=/!p' \
-e '$aIMAGE_VERSION='$IMAGE_VERSION < $OSRELEASEFILE > /tmp/os-release.tmp -e "\$aIMAGE_VERSION=$IMAGE_VERSION" <$OSRELEASEFILE >"/tmp/os-release.tmp"
cat /tmp/os-release.tmp > "$DESTDIR"/usr/lib/os-release cat /tmp/os-release.tmp > "$DESTDIR"/usr/lib/os-release
rm /tmp/os-release.tmp rm /tmp/os-release.tmp