Files
Arch-R/packages/sysutils/systemd/package.mk
Matthias Reichl 750dd4add2 systemd: enable systemd-timesyncd when using kernel ip configuration
connman's NTP client can't be used if it's not managing the network
interface so use systemd's timesyncd as we already build it.

timesyncd is automatically configured to use the NTP servers provided
by kernel ip config, if they are missing the default fallback NTP
servers (currently the ones from Google) are used.

Users can also provide timesyncd configuration files via
/storage/.config/timesyncd.conf.d/ eg to change the (fallback) servers.

Signed-off-by: Matthias Reichl <hias@horus.com>
2019-11-15 18:54:04 +01:00

286 lines
11 KiB
Makefile

# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="systemd"
PKG_VERSION="243"
PKG_SHA256="0611843c2407f8b125b1b7cb93533bdebd4ccf91c99dffa64ec61556a258c7d1"
PKG_LICENSE="LGPL2.1+"
PKG_SITE="http://www.freedesktop.org/wiki/Software/systemd"
PKG_URL="https://github.com/systemd/systemd/archive/v$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain libcap kmod util-linux entropy libidn2"
PKG_LONGDESC="A system and session manager for Linux, compatible with SysV and LSB init scripts."
PKG_MESON_OPTS_TARGET="--libdir=/usr/lib \
-Drootprefix=/usr \
-Dsplit-usr=false \
-Dsplit-bin=true \
-Ddefault-hierarchy=hybrid \
-Dtty-gid=5 \
-Dtests=false \
-Dseccomp=false \
-Dselinux=false \
-Dapparmor=false \
-Dpolkit=false \
-Dacl=false \
-Daudit=false \
-Dblkid=true \
-Dkmod=true \
-Dpam=false \
-Dmicrohttpd=false \
-Dlibcryptsetup=false \
-Dlibcurl=false \
-Dlibidn=false \
-Dlibidn2=true \
-Dlibiptc=false \
-Dqrencode=false \
-Dgcrypt=false \
-Dgnutls=false \
-Dopenssl=false \
-Delfutils=false \
-Dzlib=false \
-Dbzip2=false \
-Dxz=false \
-Dlz4=false \
-Dxkbcommon=false \
-Dpcre2=false \
-Dglib=false \
-Ddbus=false \
-Ddefault-dnssec=no \
-Dimportd=false \
-Dremote=false \
-Dutmp=false \
-Dhibernate=false \
-Denvironment-d=false \
-Dbinfmt=false \
-Dcoredump=false \
-Dresolve=false \
-Dlogind=true \
-Dhostnamed=true \
-Dlocaled=false \
-Dmachined=false \
-Dnetworkd=false \
-Dtimedated=false \
-Dtimesyncd=true \
-Dfirstboot=false \
-Drandomseed=false \
-Dbacklight=false \
-Dvconsole=false \
-Dquotacheck=false \
-Dsysusers=false \
-Dtmpfiles=true \
-Dhwdb=true \
-Drfkill=false \
-Dldconfig=false \
-Defi=false \
-Dtpm=false \
-Dima=false \
-Dsmack=false \
-Dgshadow=false \
-Didn=false \
-Dnss-myhostname=false \
-Dnss-mymachines=false \
-Dnss-resolve=false \
-Dnss-systemd=false \
-Dman=false \
-Dhtml=false \
-Dbashcompletiondir=no \
-Dzshcompletiondir=no \
-Dkmod-path=/usr/bin/kmod \
-Dmount-path=/usr/bin/mount \
-Dumount-path=/usr/bin/umount \
-Ddebug-tty=$DEBUG_TTY \
-Dversion-tag=${PKG_VERSION}"
pre_configure_target() {
export TARGET_CFLAGS="$TARGET_CFLAGS -fno-schedule-insns -fno-schedule-insns2 -Wno-format-truncation"
export LC_ALL=en_US.UTF-8
}
post_makeinstall_target() {
# remove unneeded stuff
safe_remove $INSTALL/etc/init.d
safe_remove $INSTALL/etc/pam.d
safe_remove $INSTALL/etc/systemd/system
safe_remove $INSTALL/etc/xdg
safe_remove $INSTALL/etc/X11
safe_remove $INSTALL/usr/bin/kernel-install
safe_remove $INSTALL/usr/lib/kernel/install.d
safe_remove $INSTALL/usr/lib/rpm
safe_remove $INSTALL/usr/lib/systemd/user
safe_remove $INSTALL/usr/lib/tmpfiles.d/etc.conf
safe_remove $INSTALL/usr/lib/tmpfiles.d/home.conf
safe_remove $INSTALL/usr/share/factory
safe_remove $INSTALL/usr/share/zsh
# clean up hwdb
safe_remove $INSTALL/usr/lib/udev/hwdb.d/20-OUI.hwdb
safe_remove $INSTALL/usr/lib/udev/hwdb.d/20-acpi-vendor.hwdb
safe_remove $INSTALL/usr/lib/udev/hwdb.d/20-bluetooth-vendor-product.hwdb
safe_remove $INSTALL/usr/lib/udev/hwdb.d/20-net-ifname.hwdb
safe_remove $INSTALL/usr/lib/udev/hwdb.d/20-sdio-classes.hwdb
safe_remove $INSTALL/usr/lib/udev/hwdb.d/20-sdio-vendor-model.hwdb
# remove Network adaper renaming rule, this is confusing
safe_remove $INSTALL/usr/lib/udev/rules.d/80-net-setup-link.rules
# remove the uaccess rules as we don't build systemd with ACL (see https://github.com/systemd/systemd/issues/4107)
safe_remove $INSTALL/usr/lib/udev/rules.d/70-uaccess.rules
safe_remove $INSTALL/usr/lib/udev/rules.d/71-seat.rules
safe_remove $INSTALL/usr/lib/udev/rules.d/73-seat-late.rules
# remove getty units, we dont want a console
safe_remove $INSTALL/usr/lib/systemd/system/autovt@.service
safe_remove $INSTALL/usr/lib/systemd/system/console-getty.service
safe_remove $INSTALL/usr/lib/systemd/system/console-shell.service
safe_remove $INSTALL/usr/lib/systemd/system/container-getty@.service
safe_remove $INSTALL/usr/lib/systemd/system/getty.target
safe_remove $INSTALL/usr/lib/systemd/system/getty@.service
safe_remove $INSTALL/usr/lib/systemd/system/serial-getty@.service
safe_remove $INSTALL/usr/lib/systemd/system/*.target.wants/getty.target
# remove other notused or nonsense stuff (our /etc is ro)
safe_remove $INSTALL/usr/lib/systemd/systemd-update-done
safe_remove $INSTALL/usr/lib/systemd/system/systemd-update-done.service
safe_remove $INSTALL/usr/lib/systemd/system/*.target.wants/systemd-update-done.service
# remove systemd-udev-hwdb-update. we have own hwdb.service
safe_remove $INSTALL/usr/lib/systemd/system/systemd-udev-hwdb-update.service
safe_remove $INSTALL/usr/lib/systemd/system/*.target.wants/systemd-udev-hwdb-update.service
# remove systemd-user-sessions
safe_remove $INSTALL/usr/lib/systemd/system/systemd-user-sessions.service
safe_remove $INSTALL/usr/lib/systemd/system/*.target.wants/systemd-user-sessions.service
# remove nspawn
safe_remove $INSTALL/usr/bin/systemd-nspawn
safe_remove $INSTALL/usr/lib/systemd/system/systemd-nspawn@.service
# remove unneeded generators
for gen in $INSTALL/usr/lib/systemd/system-generators/*; do
case "$gen" in
*/systemd-debug-generator)
# keep it
;;
*)
safe_remove "$gen"
;;
esac
done
# remove catalog
safe_remove $INSTALL/usr/lib/systemd/catalog
# remove partition
safe_remove $INSTALL/usr/lib/systemd/systemd-growfs
safe_remove $INSTALL/usr/lib/systemd/systemd-makefs
# distro preset policy
safe_remove $INSTALL/usr/lib/systemd/system-preset/*
echo "disable *" > $INSTALL/usr/lib/systemd/system-preset/99-default.preset
safe_remove $INSTALL/usr/lib/systemd/user-preset/*
echo "disable *" > $INSTALL/usr/lib/systemd/user-preset/90-systemd.preset
# remove networkd
safe_remove $INSTALL/usr/lib/systemd/network
# tune journald.conf
sed -e "s,^.*Compress=.*$,Compress=no,g" -i $INSTALL/etc/systemd/journald.conf
sed -e "s,^.*SplitMode=.*$,SplitMode=none,g" -i $INSTALL/etc/systemd/journald.conf
sed -e "s,^.*RuntimeMaxUse=.*$,RuntimeMaxUse=2M,g" -i $INSTALL/etc/systemd/journald.conf
sed -e "s,^.*RuntimeMaxFileSize=.*$,RuntimeMaxFileSize=128K,g" -i $INSTALL/etc/systemd/journald.conf
sed -e "s,^.*SystemMaxUse=.*$,SystemMaxUse=10M,g" -i $INSTALL/etc/systemd/journald.conf
# tune logind.conf
sed -e "s,^.*HandleLidSwitch=.*$,HandleLidSwitch=ignore,g" -i $INSTALL/etc/systemd/logind.conf
sed -e "s,^.*HandlePowerKey=.*$,HandlePowerKey=ignore,g" -i $INSTALL/etc/systemd/logind.conf
# replace systemd-machine-id-setup with ours
safe_remove $INSTALL/usr/lib/systemd/systemd-machine-id-commit
safe_remove $INSTALL/usr/lib/systemd/system/systemd-machine-id-commit.service
safe_remove $INSTALL/usr/lib/systemd/system/*.target.wants/systemd-machine-id-commit.service
safe_remove $INSTALL/usr/bin/systemd-machine-id-setup
mkdir -p $INSTALL/usr/bin
cp $PKG_DIR/scripts/systemd-machine-id-setup $INSTALL/usr/bin
cp $PKG_DIR/scripts/userconfig-setup $INSTALL/usr/bin
cp $PKG_DIR/scripts/usercache-setup $INSTALL/usr/bin
# use systemd to set cpufreq governor and tunables
find_file_path scripts/cpufreq && cp -PRv $FOUND_PATH $INSTALL/usr/bin
mkdir -p $INSTALL/usr/sbin
cp $PKG_DIR/scripts/kernel-overlays-setup $INSTALL/usr/sbin
cp $PKG_DIR/scripts/network-base-setup $INSTALL/usr/sbin
cp $PKG_DIR/scripts/systemd-timesyncd-setup $INSTALL/usr/sbin
# /etc/resolv.conf and /etc/hosts must be writable
ln -sf /run/libreelec/resolv.conf $INSTALL/etc/resolv.conf
ln -sf /run/libreelec/hosts $INSTALL/etc/hosts
# provide 'halt', 'shutdown', 'reboot' & co.
ln -sf /usr/bin/systemctl $INSTALL/usr/sbin/halt
ln -sf /usr/bin/systemctl $INSTALL/usr/sbin/poweroff
ln -sf /usr/bin/systemctl $INSTALL/usr/sbin/reboot
ln -sf /usr/bin/systemctl $INSTALL/usr/sbin/runlevel
ln -sf /usr/bin/systemctl $INSTALL/usr/sbin/shutdown
ln -sf /usr/bin/systemctl $INSTALL/usr/sbin/telinit
# strip
debug_strip $INSTALL/usr
# defaults
mkdir -p $INSTALL/usr/config
cp -PR $PKG_DIR/config/* $INSTALL/usr/config
safe_remove $INSTALL/etc/modules-load.d
ln -sf /storage/.config/modules-load.d $INSTALL/etc/modules-load.d
safe_remove $INSTALL/etc/systemd/logind.conf.d
ln -sf /storage/.config/logind.conf.d $INSTALL/etc/systemd/logind.conf.d
safe_remove $INSTALL/etc/systemd/sleep.conf.d
ln -sf /storage/.config/sleep.conf.d $INSTALL/etc/systemd/sleep.conf.d
ln -sf /storage/.config/timesyncd.conf.d $INSTALL/etc/systemd/timesyncd.conf.d
safe_remove $INSTALL/etc/sysctl.d
ln -sf /storage/.config/sysctl.d $INSTALL/etc/sysctl.d
safe_remove $INSTALL/etc/tmpfiles.d
ln -sf /storage/.config/tmpfiles.d $INSTALL/etc/tmpfiles.d
safe_remove $INSTALL/etc/udev/hwdb.d
ln -sf /storage/.config/hwdb.d $INSTALL/etc/udev/hwdb.d
safe_remove $INSTALL/etc/udev/rules.d
ln -sf /storage/.config/udev.rules.d $INSTALL/etc/udev/rules.d
}
post_install() {
add_group systemd-journal 190
add_group systemd-timesync 191
add_user systemd-timesync x 191 191 "systemd-timesync" "/" "/bin/false"
add_group systemd-network 193
add_user systemd-network x 193 193 "systemd-network" "/" "/bin/sh"
add_group audio 63
add_group cdrom 11
add_group dialout 18
add_group disk 6
add_group floppy 19
add_group kmem 9
add_group lp 7
add_group tape 33
add_group tty 5
add_group video 39
add_group utmp 22
add_group input 199
enable_service machine-id.service
enable_service debugconfig.service
enable_service userconfig.service
enable_service usercache.service
enable_service kernel-overlays.service
enable_service hwdb.service
enable_service cpufreq.service
enable_service network-base.service
enable_service systemd-timesyncd.service
enable_service systemd-timesyncd-setup.service
}