Files
pmaports-rtwo/extra-repos/systemd/systemd/APKBUILD
T
Clayton Craft bb5dca5a42 systemd/systemd: fix typo in pre-install (MR 5468) (MR 5563)
The space here caused this install script to attempt to create a group
named '2' and add a user named 'sgx' to it.

[ci:skip-build] already built successfully in CI
2025-01-10 13:02:33 +01:00

401 lines
9.9 KiB
Bash

# Contributor: Jakub Panek <me@panekj.dev>
# Maintainer: Caleb Connolly <caleb@postmarketos.org>
# Co-Maintainer: jane400 <jane400@postmarketos.org>
pkgname=systemd
pkgver=256
_pkgver="musl-v${pkgver//_/-}"
pkgrel=2
pkgdesc="System and service manager"
url="https://github.com/systemd/systemd"
arch="all !ppc64le !armhf !s390x" # blocked by pmboostrap not supporting
license="MIT AND GPL-2.0-only AND LGPL-2.1-or-later"
options="pmb:strict !check" # few tests fail, need to debug. We use alpine dbus for building, systemd-dbus for runtime
makedepends="
acl-dev
audit-dev
bash
bash-completion
clang
cmake
coreutils
cryptsetup-dev
elfutils
glib-dev
gperf
kmod-dev
libapparmor-dev
libbpf-dev
libbz2
libcap-dev
libfido2-dev
libgcc
libgcrypt-dev
libintl
libiptcdata-dev
libmicrohttpd-dev
libpwquality
libqrencode-dev
libseccomp-dev
libselinux-dev
libxkbcommon-dev
linux-pam-dev
llvm15
lz4-dev
meson
musl-dev
pcre2-dev
perl
pkgconf
py3-jinja2
py3-lxml
python3-dev
rsync
tpm2-tss-mu
tzdata
util-linux-dev
xz-dev
zstd-dev
gnu-efi-dev
"
# We add these as explicit dependencies to ensure we get the systemd variants
# and not the Alpine ones.
depends="
!openrc
kbd
kmod
"
if [ -z "$BOOTSTRAP" ] || [ "$BOOTSTRAP" -gt 2 ]; then
makedepends="$makedepends
dbus-dev
polkit-dev
"
else
makedepends="$makedepends
dbus-dev<999
polkit-dev<999
"
fi
# provides=openrc and openrc-settingsd to prevent those packages
# getting pulled in, as there are some conflicts (dbus)
provides="busctl eudev openrc-settingsd=$pkgver-r$pkgrel"
provider_priority=100
install="$pkgname.pre-install"
subpackages="
$pkgname-lang
$pkgname-dbg
$pkgname-dev
$pkgname-doc
$pkgname-x11
$pkgname-udevd
$pkgname-udevd-zsh-completion:udevd_zcomp:noarch
$pkgname-udevd-bash-completion:udevd_bcomp:noarch
$pkgname-timesyncd
$pkgname-timesyncd-zsh-completion:timesyncd_zcomp:noarch
$pkgname-timesyncd-bash-completion:timesyncd_bcomp:noarch
$pkgname-networkd
$pkgname-networkd-zsh-completion:networkd_zcomp:noarch
$pkgname-networkd-bash-completion:networkd_bcomp:noarch
$pkgname-resolved
$pkgname-resolved-zsh-completion:resolved_zcomp:noarch
$pkgname-resolved-bash-completion:resolved_bcomp:noarch
$pkgname-logind
$pkgname-logind-zsh-completion:logind_zcomp:noarch
$pkgname-logind-bash-completion:logind_bcomp:noarch
$pkgname-journald
$pkgname-journald-zsh-completion:journald_zcomp:noarch
$pkgname-journald-bash-completion:journald_bcomp:noarch
$pkgname-libs
$pkgname-bash-completion
$pkgname-zsh-completion
"
source="
https://gitlab.com/postmarketOS/systemd/-/archive/$_pkgver/systemd-$_pkgver.tar.gz
wired.network
"
builddir="$srcdir/systemd-$_pkgver"
export CFLAGS="$CFLAGS -D__UAPI_DEF_ETHHDR=0" # see src/basic/linux/if_ether.h
_bashcomp="usr/share/bash-completion/completions"
_zshcomp="usr/share/zsh/site-functions"
_default_bashcomp() {
depends=""
pkgdesc="Bash completions for $pkgname"
install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
cd "$pkgdir" || return 0
amove "$_bashcomp/$1"
}
_default_zshcomp() {
depends=""
pkgdesc="Zsh completions for $pkgname"
install_if="$pkgname=$pkgver-r$pkgrel zsh"
cd "$pkgdir" || return 0
amove "$_zshcomp/$1"
}
build() {
abuild-meson \
-Dmode=release \
\
-Dkmod-path=/bin/kmod \
-Dsulogin-path=/sbin/sulogin \
\
-Ddebug-shell=/bin/ash \
-Dpolkit=enabled \
-Dpam=enabled \
-Dpamlibdir=/usr/lib/security \
-Dpamconfdir=/etc/pam.d \
\
-Dutmp=false \
-Dldconfig=false \
-Duserdb=false \
-Dhomed=disabled \
-Dnss-myhostname=false \
-Dnss-mymachines=disabled \
-Dnss-resolve=disabled \
-Dnss-systemd=false \
-Dsysusers=false \
-Dselinux=disabled \
\
-Dman=enabled\
-Dhtml=disabled \
\
-Dsystem-alloc-uid-min=101 \
-Dsystem-alloc-gid-min=101 \
-Dsystem-uid-max=999 \
-Dsystem-gid-max=999 \
-Dwheel-group=true \
-Dnobody-user=nobody \
-Dnobody-group=nobody \
\
-Ddefault-kill-user-processes=true \
-Dgshadow=false \
-Ddefault-locale=en_US.UTF-8 \
\
-Ddefault-dns-over-tls=yes \
-Ddns-over-tls=openssl \
-Ddns-servers="9.9.9.10#dns10.quad9.net 149.112.112.10#dns10.quad9.net 2620:fe::10#dns10.quad9.net 2620:fe::fe:10#dns10.quad9.net" \
-Dntp-servers="0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 4.pool.ntp.org" \
\
-Didn=false \
-Dsysvinit-path="" \
build .
meson compile ${JOBS:+-j ${JOBS}} -C build
}
check() {
meson test -C build
}
package() {
# NOTE: as we can't parse .note.dlopen yet, we specify so:libkmod.so.2 here.
# This wouldn't be needed for a container or similiar, but this doesn't apply to us.
#
# FIXME: For some reason .note.dlopen isn't placed in the binary. Investigate!
# https://github.com/systemd/systemd/blob/main/docs/ELF_DLOPEN_METADATA.md
depends="$pkgname-udevd $pkgname-journald util-linux-login less so:libkmod.so.2"
DESTDIR="$pkgdir" meson install --no-rebuild -C build
# ship default policy to leave services disabled
mkdir -p "$pkgdir"/usr/lib/systemd/system-preset
echo 'disable' > "$pkgdir"/usr/lib/systemd/system-preset/99-default.preset
}
udevd() {
pkgdesc="systemd udev"
# NOTE: should only be udev, but packages hardcode eudev
provides="eudev udev eudev-libs"
provider_priority=100
amove usr/bin/udevadm
amove etc/udev
amove usr/lib/libudev*
amove usr/lib/systemd/system/initrd-udevadm-cleanup-db.service
amove usr/lib/systemd/system/sockets.target.wants/systemd-udev*
amove usr/lib/systemd/system/sysinit.target.wants/systemd-udev*
amove usr/lib/systemd/system/systemd-udev*
amove usr/lib/systemd/systemd-udevd
amove usr/lib/udev
# Install a symlink to /usr/bin to be compatible with eudev
ln -sf /usr/lib/systemd/systemd-udevd "$subpkgdir"/usr/bin/udevd
}
udevd_bcomp() {
_default_bashcomp udevadm
}
udevd_zcomp() {
_default_zshcomp _udevadm
}
timesyncd() {
pkgdesc="systemd Time Synchronization"
amove etc/systemd/timesyncd.conf
amove usr/bin/timedatectl
amove usr/lib/systemd/ntp-units.d/80-systemd-timesync.list
amove usr/lib/systemd/systemd-timesyncd
amove usr/lib/systemd/system/systemd-timesyncd.service
amove usr/share/dbus-1/system-services/org.freedesktop.timesync1.service
amove usr/share/dbus-1/system.d/org.freedesktop.timesync1.conf
amove usr/share/polkit-1/actions/org.freedesktop.timesync1.policy
}
timesyncd_bcomp() {
_default_bashcomp timedatectl
}
timesyncd_zcomp() {
_default_zshcomp _timedatectl
}
networkd() {
pkgdesc="systemd Network Configuration"
amove usr/bin/networkctl
amove etc/systemd/network
amove etc/systemd/networkd.conf
amove usr/share/polkit-1/rules.d/systemd-networkd.rules
amove usr/lib/systemd/systemd-network-generator
amove usr/lib/systemd/systemd-networkd
amove usr/lib/systemd/systemd-networkd-wait-online
amove usr/lib/systemd/network
amove usr/lib/systemd/system/systemd-networkd.service
amove usr/lib/systemd/system/systemd-networkd.socket
amove usr/lib/systemd/system/systemd-networkd-wait-online.service
amove usr/share/dbus-1/interfaces/org.freedesktop.network1.DHCPServer.xml
amove usr/share/dbus-1/interfaces/org.freedesktop.network1.Link.xml
amove usr/share/dbus-1/interfaces/org.freedesktop.network1.Manager.xml
amove usr/share/dbus-1/interfaces/org.freedesktop.network1.Network.xml
amove usr/share/dbus-1/system-services/org.freedesktop.network1.service
amove usr/share/dbus-1/system.d/org.freedesktop.network1.conf
amove usr/share/polkit-1/actions/org.freedesktop.network1.policy
install -D -m0644 "$srcdir/wired.network" "$subpkgdir/usr/lib/systemd/network/80-wired.network"
}
networkd_bcomp() {
_default_bashcomp networkctl
}
networkd_zcomp() {
_default_zshcomp _networkctl
}
resolved() {
pkgdesc="systemd Network Name Resolution"
replaces="resolvconf"
provides="resolvconf"
amove etc/systemd/resolved.conf
amove usr/lib/systemd/system/systemd-resolved.service
amove usr/lib/systemd/systemd-resolved
amove usr/bin/resolvconf
amove usr/bin/resolvectl
amove usr/bin/systemd-resolve
amove usr/lib/tmpfiles.d/systemd-resolve.conf
amove usr/share/dbus-1/interfaces/org.freedesktop.resolve1*
amove usr/share/dbus-1/system-services/org.freedesktop.resolve1.service
amove usr/share/dbus-1/system.d/org.freedesktop.resolve1.conf
amove usr/share/polkit-1/actions/org.freedesktop.resolve1.policy
}
resolved_bcomp() {
_default_bashcomp resolvectl
_default_bashcomp systemd-resolve
}
resolved_zcomp() {
_default_zshcomp _resolvectl
}
logind() {
pkgdesc="systemd User Login Management"
depends="dbus shadow"
provides="elogind"
provider_priority=100
amove usr/bin/loginctl
amove etc/systemd/logind.conf
amove usr/lib/systemd/systemd-logind
amove usr/lib/systemd/system/systemd-logind.service
amove usr/lib/systemd/system/dbus-org.freedesktop.login1.service
amove usr/share/dbus-1/interfaces/org.freedesktop.login1.*.xml
amove usr/share/dbus-1/system-services/org.freedesktop.login1.service
amove usr/share/dbus-1/system.d/org.freedesktop.login1.conf
amove usr/share/polkit-1/actions/org.freedesktop.login1.policy
}
logind_bcomp() {
_default_bashcomp loginctl
}
logind_zcomp() {
_default_zshcomp _loginctl
}
journald() {
pkgdesc="systemd Journal"
amove usr/bin/journalctl
amove etc/systemd/journal-remote.conf
amove etc/systemd/journald.conf
amove usr/lib/systemd/system/sockets.target.wants/systemd-journal*
amove usr/lib/systemd/system/systemd-journal*
amove usr/lib/systemd/systemd-journal*
amove usr/lib/tmpfiles.d/journal-nocow.conf
amove var/log/journal
}
journald_bcomp() {
_default_bashcomp journalctl
}
journald_zcomp() {
_default_zshcomp _journalctl
}
x11() {
pkgdesc="systemd x11"
install_if="$pkgname=$pkgver-r$pkgrel xorg-server-common"
amove usr/lib/tmpfiles.d/x11.conf
amove etc/X11/xinit/xinitrc.d/50-systemd-user.sh
}
dev() {
provides="eudev-dev udev-dev"
provider_priority=100
default_dev
}
sha512sums="
f556d2eabcb732bed6bf7a5396be6f6d67eebf80218c7ae5525042fba661b1d242cb7941a720ff6d015a3b6af0ee545a4a647044a9da2acd16914d6c0cdda4c2 systemd-musl-v256.tar.gz
81c897fed8a3fbfb67ec591b2398a5d65e4af1b3ef379376c157c98d71f085b707f8ebc896d5571a94f99f8fc84fd6b43e3b879ca9b0d57fc6c4596034c7a777 wired.network
"