* Update buildroot-patches for 2020.11-rc1 buildroot * Update buildroot to 2020.11-rc1 Signed-off-by: Stefan Agner <stefan@agner.ch> * Don't rely on sfdisk --list-free output The --list-free (-F) argument does not allow machine readable mode. And it seems that the output format changes over time (different spacing, using size postfixes instead of raw blocks). Use sfdisk json output and calculate free partition space ourselfs. This works for 2.35 and 2.36 and is more robust since we rely on output which is meant for scripts to parse. * Migrate defconfigs for Buildroot 2020.11-rc1 In particular, rename BR2_TARGET_UBOOT_BOOT_SCRIPT(_SOURCE) to BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT(_SOURCE). * Rebase/remove systemd patches for systemd 246 * Drop apparmor/libapparmor from buildroot-external * hassos-persists: use /run as directory for lockfiles The U-Boot tools use /var/lock by default which is not created any more by systemd by default (it is under tmpfiles legacy.conf, which we no longer install). * Disable systemd-update-done.service The service is not suited for pure read-only systems. In particular the service needs to be able to write a file in /etc and /var. Remove the service. Note: This is a static service and cannot be removed using systemd-preset. * Disable apparmor.service for now The service loads all default profiles. Some might actually cause problems. E.g. the profile for ping seems not to match our setup for /etc/resolv.conf: [85503.634653] audit: type=1400 audit(1605286002.684:236): apparmor="DENIED" operation="open" profile="ping" name="/run/resolv.conf" pid=27585 comm="ping" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
736 lines
20 KiB
Makefile
736 lines
20 KiB
Makefile
################################################################################
|
|
#
|
|
# systemd
|
|
#
|
|
################################################################################
|
|
|
|
SYSTEMD_VERSION = 246.5
|
|
SYSTEMD_SITE = $(call github,systemd,systemd-stable,v$(SYSTEMD_VERSION))
|
|
SYSTEMD_LICENSE = LGPL-2.1+, GPL-2.0+ (udev), Public Domain (few source files, see README), BSD-3-Clause (tools/chromiumos)
|
|
SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README tools/chromiumos/LICENSE
|
|
SYSTEMD_INSTALL_STAGING = YES
|
|
SYSTEMD_DEPENDENCIES = \
|
|
$(BR2_COREUTILS_HOST_DEPENDENCY) \
|
|
$(if $(BR2_PACKAGE_BASH_COMPLETION),bash-completion) \
|
|
host-gperf \
|
|
kmod \
|
|
libcap \
|
|
util-linux-libs \
|
|
$(TARGET_NLS_DEPENDENCIES)
|
|
|
|
SYSTEMD_SELINUX_MODULES = systemd udev
|
|
|
|
SYSTEMD_PROVIDES = udev
|
|
|
|
SYSTEMD_CONF_OPTS += \
|
|
-Ddefault-hierarchy=hybrid \
|
|
-Didn=true \
|
|
-Dima=false \
|
|
-Dkexec-path=/usr/sbin/kexec \
|
|
-Dkmod-path=/usr/bin/kmod \
|
|
-Dldconfig=false \
|
|
-Dloadkeys-path=/usr/bin/loadkeys \
|
|
-Dman=false \
|
|
-Dmount-path=/usr/bin/mount \
|
|
-Dnss-systemd=true \
|
|
-Dportabled=false \
|
|
-Dquotacheck-path=/usr/sbin/quotacheck \
|
|
-Dquotaon-path=/usr/sbin/quotaon \
|
|
-Drootlibdir='/usr/lib' \
|
|
-Dsetfont-path=/usr/bin/setfont \
|
|
-Dsplit-bin=true \
|
|
-Dsplit-usr=false \
|
|
-Dsulogin-path=/usr/sbin/sulogin \
|
|
-Dsystem-gid-max=999 \
|
|
-Dsystem-uid-max=999 \
|
|
-Dsysvinit-path= \
|
|
-Dsysvrcnd-path= \
|
|
-Dtelinit-path= \
|
|
-Dtests=false \
|
|
-Dumount-path=/usr/bin/umount \
|
|
-Dutmp=false
|
|
|
|
ifeq ($(BR2_PACKAGE_ACL),y)
|
|
SYSTEMD_DEPENDENCIES += acl
|
|
SYSTEMD_CONF_OPTS += -Dacl=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dacl=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBAPPARMOR),y)
|
|
SYSTEMD_DEPENDENCIES += libapparmor
|
|
SYSTEMD_CONF_OPTS += -Dapparmor=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dapparmor=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_AUDIT),y)
|
|
SYSTEMD_DEPENDENCIES += audit
|
|
SYSTEMD_CONF_OPTS += -Daudit=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Daudit=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_CRYPTSETUP),y)
|
|
SYSTEMD_DEPENDENCIES += cryptsetup
|
|
SYSTEMD_CONF_OPTS += -Dlibcryptsetup=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dlibcryptsetup=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_ELFUTILS),y)
|
|
SYSTEMD_DEPENDENCIES += elfutils
|
|
SYSTEMD_CONF_OPTS += -Delfutils=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Delfutils=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_GNUTLS),y)
|
|
SYSTEMD_DEPENDENCIES += gnutls
|
|
SYSTEMD_CONF_OPTS += -Dgnutls=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dgnutls=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_IPTABLES),y)
|
|
SYSTEMD_DEPENDENCIES += iptables
|
|
SYSTEMD_CONF_OPTS += -Dlibiptc=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dlibiptc=false
|
|
endif
|
|
|
|
# Both options can't be selected at the same time so prefer libidn2
|
|
ifeq ($(BR2_PACKAGE_LIBIDN2),y)
|
|
SYSTEMD_DEPENDENCIES += libidn2
|
|
SYSTEMD_CONF_OPTS += -Dlibidn2=true -Dlibidn=false
|
|
else ifeq ($(BR2_PACKAGE_LIBIDN),y)
|
|
SYSTEMD_DEPENDENCIES += libidn
|
|
SYSTEMD_CONF_OPTS += -Dlibidn=true -Dlibidn2=false
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dlibidn=false -Dlibidn2=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBSECCOMP),y)
|
|
SYSTEMD_DEPENDENCIES += libseccomp
|
|
SYSTEMD_CONF_OPTS += -Dseccomp=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dseccomp=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBXKBCOMMON),y)
|
|
SYSTEMD_DEPENDENCIES += libxkbcommon
|
|
SYSTEMD_CONF_OPTS += -Dxkbcommon=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dxkbcommon=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_BZIP2),y)
|
|
SYSTEMD_DEPENDENCIES += bzip2
|
|
SYSTEMD_CONF_OPTS += -Dbzip2=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dbzip2=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_ZSTD),y)
|
|
SYSTEMD_DEPENDENCIES += zstd
|
|
SYSTEMD_CONF_OPTS += -Dzstd=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dzstd=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LZ4),y)
|
|
SYSTEMD_DEPENDENCIES += lz4
|
|
SYSTEMD_CONF_OPTS += -Dlz4=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dlz4=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
|
|
SYSTEMD_DEPENDENCIES += linux-pam
|
|
SYSTEMD_CONF_OPTS += -Dpam=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dpam=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBFDISK),y)
|
|
SYSTEMD_CONF_OPTS += -Dfdisk=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dfdisk=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_VALGRIND),y)
|
|
SYSTEMD_DEPENDENCIES += valgrind
|
|
SYSTEMD_CONF_OPTS += -Dvalgrind=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dvalgrind=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_XZ),y)
|
|
SYSTEMD_DEPENDENCIES += xz
|
|
SYSTEMD_CONF_OPTS += -Dxz=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dxz=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_ZLIB),y)
|
|
SYSTEMD_DEPENDENCIES += zlib
|
|
SYSTEMD_CONF_OPTS += -Dzlib=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dzlib=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBCURL),y)
|
|
SYSTEMD_DEPENDENCIES += libcurl
|
|
SYSTEMD_CONF_OPTS += -Dlibcurl=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dlibcurl=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBGCRYPT),y)
|
|
SYSTEMD_DEPENDENCIES += libgcrypt
|
|
SYSTEMD_CONF_OPTS += -Ddefault-dnssec=allow-downgrade -Dgcrypt=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Ddefault-dnssec=no -Dgcrypt=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_P11_KIT),y)
|
|
SYSTEMD_DEPENDENCIES += p11-kit
|
|
SYSTEMD_CONF_OPTS += -Dp11kit=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dp11kit=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENSSL),y)
|
|
SYSTEMD_DEPENDENCIES += openssl
|
|
SYSTEMD_CONF_OPTS += -Dopenssl=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dopenssl=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_PCRE2),y)
|
|
SYSTEMD_DEPENDENCIES += pcre2
|
|
SYSTEMD_CONF_OPTS += -Dpcre2=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dpcre2=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y)
|
|
SYSTEMD_CONF_OPTS += -Dblkid=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dblkid=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_UTIL_LINUX_NOLOGIN),y)
|
|
SYSTEMD_CONF_OPTS += -Dnologin-path=/sbin/nologin
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dnologin-path=/bin/false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_INITRD),y)
|
|
SYSTEMD_CONF_OPTS += -Dinitrd=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dinitrd=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_KERNELINSTALL),y)
|
|
SYSTEMD_CONF_OPTS += -Dkernel-install=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dkernel-install=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_ANALYZE),y)
|
|
SYSTEMD_CONF_OPTS += -Danalyze=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Danalyze=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE),y)
|
|
# remote also depends on libcurl, this is already added above.
|
|
SYSTEMD_DEPENDENCIES += libmicrohttpd
|
|
SYSTEMD_CONF_OPTS += -Dremote=true -Dmicrohttpd=true
|
|
SYSTEMD_REMOTE_USER = systemd-journal-remote -1 systemd-journal-remote -1 * - - - systemd Journal Remote
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dremote=false -Dmicrohttpd=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBQRENCODE),y)
|
|
SYSTEMD_DEPENDENCIES += libqrencode
|
|
SYSTEMD_CONF_OPTS += -Dqrencode=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dqrencode=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
|
|
SYSTEMD_DEPENDENCIES += libselinux
|
|
SYSTEMD_CONF_OPTS += -Dselinux=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dselinux=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_HWDB),y)
|
|
SYSTEMD_CONF_OPTS += -Dhwdb=true
|
|
define SYSTEMD_BUILD_HWDB
|
|
$(HOST_DIR)/bin/udevadm hwdb --update --root $(TARGET_DIR)
|
|
endef
|
|
SYSTEMD_TARGET_FINALIZE_HOOKS += SYSTEMD_BUILD_HWDB
|
|
define SYSTEMD_RM_HWDB_SRV
|
|
rm -rf $(TARGET_DIR)/$(HOST_EUDEV_SYSCONFDIR)/udev/hwdb.d/
|
|
endef
|
|
SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_RM_HWDB_SRV
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dhwdb=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_BINFMT),y)
|
|
SYSTEMD_CONF_OPTS += -Dbinfmt=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dbinfmt=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_VCONSOLE),y)
|
|
SYSTEMD_CONF_OPTS += -Dvconsole=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dvconsole=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_QUOTACHECK),y)
|
|
SYSTEMD_CONF_OPTS += -Dquotacheck=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dquotacheck=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_TMPFILES),y)
|
|
SYSTEMD_CONF_OPTS += -Dtmpfiles=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dtmpfiles=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y)
|
|
SYSTEMD_CONF_OPTS += -Dsysusers=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dsysusers=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_FIRSTBOOT),y)
|
|
SYSTEMD_CONF_OPTS += -Dfirstboot=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dfirstboot=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_RANDOMSEED),y)
|
|
SYSTEMD_CONF_OPTS += -Drandomseed=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Drandomseed=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_BACKLIGHT),y)
|
|
SYSTEMD_CONF_OPTS += -Dbacklight=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dbacklight=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_RFKILL),y)
|
|
SYSTEMD_CONF_OPTS += -Drfkill=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Drfkill=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_LOGIND),y)
|
|
SYSTEMD_CONF_OPTS += -Dlogind=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dlogind=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_MACHINED),y)
|
|
SYSTEMD_CONF_OPTS += -Dmachined=true -Dnss-mymachines=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dmachined=false -Dnss-mymachines=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_IMPORTD),y)
|
|
SYSTEMD_CONF_OPTS += -Dimportd=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dimportd=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_HOMED),y)
|
|
SYSTEMD_CONF_OPTS += -Dhomed=true
|
|
SYSTEMD_DEPENDENCIES += cryptsetup openssl
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dhomed=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_HOSTNAMED),y)
|
|
SYSTEMD_CONF_OPTS += -Dhostnamed=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dhostnamed=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_MYHOSTNAME),y)
|
|
SYSTEMD_CONF_OPTS += -Dnss-myhostname=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dnss-myhostname=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_TIMEDATED),y)
|
|
SYSTEMD_CONF_OPTS += -Dtimedated=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dtimedated=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_LOCALED),y)
|
|
SYSTEMD_CONF_OPTS += -Dlocaled=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dlocaled=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_REPART),y)
|
|
SYSTEMD_CONF_OPTS += -Drepart=true
|
|
SYSTEMD_DEPENDENCIES += openssl
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Drepart=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_USERDB),y)
|
|
SYSTEMD_CONF_OPTS += -Duserdb=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Duserdb=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_COREDUMP),y)
|
|
SYSTEMD_CONF_OPTS += -Dcoredump=true
|
|
SYSTEMD_COREDUMP_USER = systemd-coredump -1 systemd-coredump -1 * - - - systemd core dump processing
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dcoredump=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_PSTORE),y)
|
|
SYSTEMD_CONF_OPTS += -Dpstore=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dpstore=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_POLKIT),y)
|
|
SYSTEMD_CONF_OPTS += -Dpolkit=true
|
|
SYSTEMD_DEPENDENCIES += polkit
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dpolkit=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_NETWORKD),y)
|
|
SYSTEMD_CONF_OPTS += -Dnetworkd=true
|
|
SYSTEMD_NETWORKD_USER = systemd-network -1 systemd-network -1 * - - - systemd Network Management
|
|
SYSTEMD_NETWORKD_DHCP_IFACE = $(call qstrip,$(BR2_SYSTEM_DHCP))
|
|
ifneq ($(SYSTEMD_NETWORKD_DHCP_IFACE),)
|
|
define SYSTEMD_INSTALL_NETWORK_CONFS
|
|
sed s/SYSTEMD_NETWORKD_DHCP_IFACE/$(SYSTEMD_NETWORKD_DHCP_IFACE)/ \
|
|
$(SYSTEMD_PKGDIR)/dhcp.network > \
|
|
$(TARGET_DIR)/etc/systemd/network/$(SYSTEMD_NETWORKD_DHCP_IFACE).network
|
|
endef
|
|
endif
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dnetworkd=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_RESOLVED),y)
|
|
define SYSTEMD_INSTALL_RESOLVCONF_HOOK
|
|
ln -sf ../run/systemd/resolve/resolv.conf \
|
|
$(TARGET_DIR)/etc/resolv.conf
|
|
endef
|
|
SYSTEMD_CONF_OPTS += -Dnss-resolve=true -Dresolve=true
|
|
SYSTEMD_RESOLVED_USER = systemd-resolve -1 systemd-resolve -1 * - - - systemd Resolver
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dnss-resolve=false -Dresolve=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_GNUTLS),y)
|
|
SYSTEMD_CONF_OPTS += -Ddns-over-tls=gnutls -Ddefault-dns-over-tls=opportunistic
|
|
SYSTEMD_DEPENDENCIES += gnutls
|
|
else ifeq ($(BR2_PACKAGE_OPENSSL),y)
|
|
SYSTEMD_CONF_OPTS += -Ddns-over-tls=openssl -Ddefault-dns-over-tls=opportunistic
|
|
SYSTEMD_DEPENDENCIES += openssl
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Ddns-over-tls=false -Ddefault-dns-over-tls=no
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_TIMESYNCD),y)
|
|
SYSTEMD_CONF_OPTS += -Dtimesyncd=true
|
|
SYSTEMD_TIMESYNCD_USER = systemd-timesync -1 systemd-timesync -1 * - - - systemd Time Synchronization
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dtimesyncd=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT),y)
|
|
SYSTEMD_CONF_OPTS += -Dsmack=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dsmack=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_HIBERNATE),y)
|
|
SYSTEMD_CONF_OPTS += -Dhibernate=true
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Dhibernate=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD_BOOT),y)
|
|
SYSTEMD_INSTALL_IMAGES = YES
|
|
SYSTEMD_DEPENDENCIES += gnu-efi
|
|
SYSTEMD_CONF_OPTS += \
|
|
-Defi=true \
|
|
-Dgnu-efi=true \
|
|
-Defi-cc=$(TARGET_CC) \
|
|
-Defi-ld=$(TARGET_LD) \
|
|
-Defi-libdir=$(STAGING_DIR)/usr/lib \
|
|
-Defi-ldsdir=$(STAGING_DIR)/usr/lib \
|
|
-Defi-includedir=$(STAGING_DIR)/usr/include/efi
|
|
|
|
SYSTEMD_BOOT_EFI_ARCH = $(call qstrip,$(BR2_PACKAGE_SYSTEMD_BOOT_EFI_ARCH))
|
|
define SYSTEMD_INSTALL_BOOT_FILES
|
|
$(INSTALL) -D -m 0644 $(@D)/build/src/boot/efi/systemd-boot$(SYSTEMD_BOOT_EFI_ARCH).efi \
|
|
$(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(SYSTEMD_BOOT_EFI_ARCH).efi
|
|
echo "boot$(SYSTEMD_BOOT_EFI_ARCH).efi" > \
|
|
$(BINARIES_DIR)/efi-part/startup.nsh
|
|
$(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/boot-files/loader.conf \
|
|
$(BINARIES_DIR)/efi-part/loader/loader.conf
|
|
$(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/boot-files/buildroot.conf \
|
|
$(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf
|
|
endef
|
|
|
|
else
|
|
SYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false
|
|
endif # BR2_PACKAGE_SYSTEMD_BOOT == y
|
|
|
|
SYSTEMD_FALLBACK_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME))
|
|
ifneq ($(SYSTEMD_FALLBACK_HOSTNAME),)
|
|
SYSTEMD_CONF_OPTS += -Dfallback-hostname=$(SYSTEMD_FALLBACK_HOSTNAME)
|
|
endif
|
|
|
|
define SYSTEMD_INSTALL_INIT_HOOK
|
|
ln -fs multi-user.target \
|
|
$(TARGET_DIR)/usr/lib/systemd/system/default.target
|
|
endef
|
|
|
|
define SYSTEMD_INSTALL_MACHINEID_HOOK
|
|
touch $(TARGET_DIR)/etc/machine-id
|
|
endef
|
|
|
|
SYSTEMD_POST_INSTALL_TARGET_HOOKS += \
|
|
SYSTEMD_INSTALL_INIT_HOOK \
|
|
SYSTEMD_INSTALL_MACHINEID_HOOK \
|
|
SYSTEMD_INSTALL_RESOLVCONF_HOOK
|
|
|
|
define SYSTEMD_INSTALL_IMAGES_CMDS
|
|
$(SYSTEMD_INSTALL_BOOT_FILES)
|
|
endef
|
|
|
|
define SYSTEMD_USERS
|
|
# udev user groups
|
|
# systemd user groups
|
|
- - systemd-journal -1 * - - - Journal
|
|
$(SYSTEMD_REMOTE_USER)
|
|
$(SYSTEMD_COREDUMP_USER)
|
|
$(SYSTEMD_NETWORKD_USER)
|
|
$(SYSTEMD_RESOLVED_USER)
|
|
$(SYSTEMD_TIMESYNCD_USER)
|
|
endef
|
|
|
|
define SYSTEMD_INSTALL_NSSCONFIG_HOOK
|
|
$(SED) '/^passwd:/ {/systemd/! s/$$/ systemd/}' \
|
|
-e '/^group:/ {/systemd/! s/$$/ [SUCCESS=merge] systemd/}' \
|
|
$(if $(BR2_PACKAGE_SYSTEMD_RESOLVED), \
|
|
-e '/^hosts:/ s/[[:space:]]*mymachines//' \
|
|
-e '/^hosts:/ {/resolve/! s/files/files resolve [!UNAVAIL=return]/}' ) \
|
|
$(if $(BR2_PACKAGE_SYSTEMD_MYHOSTNAME), \
|
|
-e '/^hosts:/ {/myhostname/! s/$$/ myhostname/}' ) \
|
|
$(if $(BR2_PACKAGE_SYSTEMD_MACHINED), \
|
|
-e '/^passwd:/ {/mymachines/! s/files/files mymachines/}' \
|
|
-e '/^group:/ {/mymachines/! s/files/files [SUCCESS=merge] mymachines/}' \
|
|
-e '/^hosts:/ {/mymachines/! s/files/files mymachines/}' ) \
|
|
$(TARGET_DIR)/etc/nsswitch.conf
|
|
endef
|
|
|
|
SYSTEMD_TARGET_FINALIZE_HOOKS += SYSTEMD_INSTALL_NSSCONFIG_HOOK
|
|
|
|
ifneq ($(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)),)
|
|
# systemd provides multiple units to autospawn getty as neede
|
|
# * getty@.service to start a getty on normal TTY
|
|
# * sertial-getty@.service to start a getty on serial lines
|
|
# * console-getty.service for generic /dev/console
|
|
# * container-getty@.service for a getty on /dev/pts/*
|
|
#
|
|
# the generator systemd-getty-generator will
|
|
# * read the console= kernel command line parameter
|
|
# * enable one of the above units depending on what it finds
|
|
#
|
|
# Systemd defaults to enablinb getty@tty1.service
|
|
#
|
|
# What we want to do
|
|
# * Enable a getty on $BR2_TARGET_GENERIC_TTY_PATH
|
|
# * Set the baudrate for all units according to BR2_TARGET_GENERIC_GETTY_BAUDRATE
|
|
# * Always enable a getty on the console using systemd-getty-generator
|
|
# (backward compatibility with previous releases of buildroot)
|
|
#
|
|
# What we do
|
|
# * disable getty@tty1 (enabled by upstream systemd)
|
|
# * enable getty@xxx if $BR2_TARGET_GENERIC_TTY_PATH is a tty
|
|
# * enable serial-getty@xxx for other $BR2_TARGET_GENERIC_TTY_PATH
|
|
# * rewrite baudrates if a baudrate is provided
|
|
define SYSTEMD_INSTALL_SERVICE_TTY
|
|
mkdir $(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d; \
|
|
printf '[Install]\nDefaultInstance=\n' \
|
|
>$(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d/buildroot-console.conf; \
|
|
if [ $(BR2_TARGET_GENERIC_GETTY_PORT) = "console" ]; \
|
|
then \
|
|
: ; \
|
|
elif echo $(BR2_TARGET_GENERIC_GETTY_PORT) | egrep -q 'tty[0-9]*$$'; \
|
|
then \
|
|
printf '[Install]\nDefaultInstance=%s\n' \
|
|
$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) \
|
|
>$(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d/buildroot-console.conf; \
|
|
else \
|
|
mkdir $(TARGET_DIR)/usr/lib/systemd/system/serial-getty@.service.d;\
|
|
printf '[Install]\nDefaultInstance=%s\n' \
|
|
$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) \
|
|
>$(TARGET_DIR)/usr/lib/systemd/system/serial-getty@.service.d/buildroot-console.conf;\
|
|
fi; \
|
|
if [ $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE)) -gt 0 ] ; \
|
|
then \
|
|
$(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/getty@.service; \
|
|
$(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/serial-getty@.service; \
|
|
$(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/console-getty@.service; \
|
|
$(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/container-getty@.service; \
|
|
fi
|
|
endef
|
|
endif
|
|
|
|
define SYSTEMD_INSTALL_PRESET
|
|
$(INSTALL) -D -m 644 $(SYSTEMD_PKGDIR)/80-buildroot.preset $(TARGET_DIR)/usr/lib/systemd/system-preset/80-buildroot.preset
|
|
endef
|
|
|
|
define SYSTEMD_INSTALL_INIT_SYSTEMD
|
|
$(SYSTEMD_INSTALL_PRESET)
|
|
$(SYSTEMD_INSTALL_SERVICE_TTY)
|
|
$(SYSTEMD_INSTALL_NETWORK_CONFS)
|
|
endef
|
|
|
|
define SYSTEMD_PRESET_ALL
|
|
$(HOST_DIR)/bin/systemctl --root=$(TARGET_DIR) preset-all
|
|
endef
|
|
SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_PRESET_ALL
|
|
|
|
SYSTEMD_CONF_ENV = $(HOST_UTF8_LOCALE_ENV)
|
|
SYSTEMD_NINJA_ENV = $(HOST_UTF8_LOCALE_ENV)
|
|
|
|
define SYSTEMD_LINUX_CONFIG_FIXUPS
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_FHANDLE)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_EPOLL)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SIGNALFD)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_TIMERFD)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_PROC_FS)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SYSFS)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_AUTOFS4_FS)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_POSIX_ACL)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_XATTR)
|
|
endef
|
|
|
|
# We need a very minimal host variant, so we disable as much as possible.
|
|
HOST_SYSTEMD_CONF_OPTS = \
|
|
-Dsplit-bin=true \
|
|
-Dsplit-usr=false \
|
|
--prefix=/usr \
|
|
--libdir=lib \
|
|
--sysconfdir=/etc \
|
|
--localstatedir=/var \
|
|
-Dutmp=false \
|
|
-Dhibernate=false \
|
|
-Dldconfig=false \
|
|
-Dresolve=false \
|
|
-Defi=false \
|
|
-Dtpm=false \
|
|
-Denvironment-d=false \
|
|
-Dbinfmt=false \
|
|
-Drepart=false \
|
|
-Dcoredump=false \
|
|
-Dpstore=false \
|
|
-Dlogind=false \
|
|
-Dhostnamed=false \
|
|
-Dlocaled=false \
|
|
-Dmachined=false \
|
|
-Dportabled=false \
|
|
-Duserdb=false \
|
|
-Dhomed=false \
|
|
-Dnetworkd=false \
|
|
-Dtimedated=false \
|
|
-Dtimesyncd=false \
|
|
-Dremote=false \
|
|
-Dcreate-log-dirs=false \
|
|
-Dnss-myhostname=false \
|
|
-Dnss-mymachines=false \
|
|
-Dnss-resolve=false \
|
|
-Dnss-systemd=false \
|
|
-Dfirstboot=false \
|
|
-Drandomseed=false \
|
|
-Dbacklight=false \
|
|
-Dvconsole=false \
|
|
-Dquotacheck=false \
|
|
-Dsysusers=false \
|
|
-Dtmpfiles=false \
|
|
-Dimportd=false \
|
|
-Dhwdb=false \
|
|
-Drfkill=false \
|
|
-Dman=false \
|
|
-Dhtml=false \
|
|
-Dsmack=false \
|
|
-Dpolkit=false \
|
|
-Dblkid=false \
|
|
-Didn=false \
|
|
-Dadm-group=false \
|
|
-Dwheel-group=false \
|
|
-Dzlib=false \
|
|
-Dgshadow=false \
|
|
-Dima=false \
|
|
-Dtests=false \
|
|
-Dglib=false \
|
|
-Dacl=false \
|
|
-Dsysvinit-path='' \
|
|
-Dinitrd=false \
|
|
-Dxdg-autostart=false \
|
|
-Dkernel-install=false \
|
|
-Dsystemd-analyze=false \
|
|
-Dlibcryptsetup=false \
|
|
-Daudit=false \
|
|
-Dzstd=false
|
|
|
|
HOST_SYSTEMD_DEPENDENCIES = \
|
|
$(BR2_COREUTILS_HOST_DEPENDENCY) \
|
|
host-util-linux \
|
|
host-patchelf \
|
|
host-libcap \
|
|
host-gperf
|
|
|
|
HOST_SYSTEMD_NINJA_ENV = DESTDIR=$(HOST_DIR)
|
|
|
|
# Fix RPATH After installation
|
|
# * systemd provides a install_rpath instruction to meson because the binaries
|
|
# need to link with libsystemd which is not in a standard path
|
|
# * meson can only replace the RPATH, not append to it
|
|
# * the original rpath is thus lost.
|
|
# * the original path had been tweaked by buildroot via LDFLAGS to add
|
|
# $(HOST_DIR)/lib
|
|
# * thus re-tweak rpath after the installation for all binaries that need it
|
|
HOST_SYSTEMD_HOST_TOOLS = busctl journalctl systemctl systemd-* udevadm
|
|
|
|
define HOST_SYSTEMD_FIX_RPATH
|
|
for f in $(addprefix $(HOST_DIR)/bin/,$(HOST_SYSTEMD_HOST_TOOLS)); do \
|
|
[ -e $$f ] || continue; \
|
|
$(HOST_DIR)/bin/patchelf --set-rpath $(HOST_DIR)/lib:$(HOST_DIR)/lib/systemd $${f} \
|
|
|| exit 1; \
|
|
done
|
|
endef
|
|
HOST_SYSTEMD_POST_INSTALL_HOOKS += HOST_SYSTEMD_FIX_RPATH
|
|
|
|
$(eval $(meson-package))
|
|
$(eval $(host-meson-package))
|