From patchwork Mon Dec 16 10:30:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsOpbXkgUk9TRU4=?= X-Patchwork-Id: 1210216 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.138; helo=whitealder.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=smile.fr Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=smile-fr.20150623.gappssmtp.com header.i=@smile-fr.20150623.gappssmtp.com header.b="KJO1YSpl"; dkim-atps=neutral Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 47byH45frZz9sPK for ; Mon, 16 Dec 2019 21:31:12 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 168E087048; Mon, 16 Dec 2019 10:31:10 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id p1MaRXt3vvZZ; Mon, 16 Dec 2019 10:31:07 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 8C53A86F92; Mon, 16 Dec 2019 10:31:07 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 554E41BF2B5 for ; Mon, 16 Dec 2019 10:31:03 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 4F61285660 for ; Mon, 16 Dec 2019 10:31:03 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XqcZo2A6Vfiu for ; Mon, 16 Dec 2019 10:31:01 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 6518D854DF for ; Mon, 16 Dec 2019 10:31:01 +0000 (UTC) Received: by mail-wr1-f49.google.com with SMTP id w15so6593105wru.4 for ; Mon, 16 Dec 2019 02:31:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=smile-fr.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nqMWkcmMAbO+0QSPlBkeRgfBnP2JF8Kku8PpkVOP2Qs=; b=KJO1YSplKkGcMrUdII1p3qIWO1biWj5QbvNZm2tGBcWTScBXLxARFGK371MJ3CTMUu yO6mxyz41ViaUYISbewYB4ZIHtEY2HmPna/TwMEgu39dt2kY6rHYDt/zcdcWmEzx/4dK C0VarQJfctKq0mDUP94TYrP9wVjoGAR0OHYAohgxtyYqox7yDCqi4wsCuwK9giONNqRq S2B3F4kCb0DZDd6g1HKIq+Q6iprHiGbWjCeAlrpaTUl92RptBz6dCKYkeWA/Ja0Djlod pqRJSUN+wawDJzQ+e5+oOafdw2ptnnrfcOl1WWyq7KhbpVektiJnFL08BoTwzlYlPAH1 em2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nqMWkcmMAbO+0QSPlBkeRgfBnP2JF8Kku8PpkVOP2Qs=; b=T+4vSElxmLOiWPfJ3A3Qi6IWT6PjIhTwgwdTegvftji5j5+sLHCq/x6/rr4FNrTh6E vKY974GPlOdRIlYErA4vCdqX7xXcEZAyXU5ZLq60XUoLW0p6XAmbp8digM3h4/EV+tVZ bjTp8dq58LPJSVAnUyTxtjLWxAXeE+Ajj5crK/FKnx3fop00CaFiR/yjv3jVa08ueOyn hHdXPM6aKOZaxn45JXPRCezTtlM60m52CArFYOB300T9HxonVyBXnY8R7BLN1vzZRYtX 7wQqWct4K+utQjjjI2Z2XPdipGo3JVkfPtt2kY9yOHC29wgZraHCrMKP7N28ZYyOwA21 N9oQ== X-Gm-Message-State: APjAAAVX/sRV2mgo1/IHOVSMIUTmPZMPAs3pVvRYOS1/CvbFG+wOs5A9 lQe6FN1CgsvcyNciToueYDcSOOJhZQ== X-Google-Smtp-Source: APXvYqxo+lh+Boo+ZjK1xWesTdA0PIc85ytCpEjuKofQ/UTp41VcQkwX7agauIHxpfq6FsUGrDpTHw== X-Received: by 2002:adf:f288:: with SMTP id k8mr31121099wro.301.1576492259228; Mon, 16 Dec 2019 02:30:59 -0800 (PST) Received: from localhost.localdomain ([2a01:e0a:4f5:d4c0:c24e:c904:189d:5967]) by smtp.googlemail.com with ESMTPSA id h8sm22313643wrx.63.2019.12.16.02.30.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Dec 2019 02:30:58 -0800 (PST) From: =?utf-8?b?SsOpcsOpbXkgUm9zZW4=?= To: buildroot@buildroot.org Date: Mon, 16 Dec 2019 11:30:41 +0100 Message-Id: <20191216103052.35220-3-jeremy.rosen@smile.fr> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191216103052.35220-1-jeremy.rosen@smile.fr> References: <20191216103052.35220-1-jeremy.rosen@smile.fr> MIME-Version: 1.0 Subject: [Buildroot] [PATCH v5 02/13] package/systemd: use host-systemctl preset all to enable units X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?b?SsOpcsOpbXkgUm9zZW4=?= Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" since v234 upstream recommands using systemctl preset-all to enable units. * add a buildroot specific preset file * use that file to disable getty@tty1 * make systemd depend on host-systemd * remove all link-creating code that systemd does for us. Most packages will not be affected by this change, but a few packages were installing units without manually enabling them. Those packages will now be automatically enabled. The fact that those packages were not enabled is almost certainly a bug, but it is a change of behaviour that needs to be reported This also means that systemd builds udevadm for the host. As a consequence we now conflict wit host-eudev instead of needing to to build the hwdb database. This patch thus removes the dependency Signed-off-by:Jérémy Rosen --- docs/manual/adding-packages-generic.txt | 4 + package/systemd/80-buildroot.preset | 5 ++ package/systemd/Config.in | 2 +- package/systemd/systemd.mk | 108 ++++-------------------- 4 files changed, 27 insertions(+), 92 deletions(-) create mode 100644 package/systemd/80-buildroot.preset diff --git a/docs/manual/adding-packages-generic.txt b/docs/manual/adding-packages-generic.txt index 86300e7460..f7f3e447f1 100644 --- a/docs/manual/adding-packages-generic.txt +++ b/docs/manual/adding-packages-generic.txt @@ -550,6 +550,10 @@ different steps of the build process. is when openrc is chosen as init system and +LIBFOO_INSTALL_INIT_OPENRC+ has not been set, in such situation +LIBFOO_INSTALL_INIT_SYSV+ will be called, since openrc supports sysv init scripts. + When systemd is used as the init system, buildroot will automatically enable + all services using the +systemctl preset-all+ command in the final phase of + image building. You can add preset files to prevent a particular unit from + being automatically enabled by buildroot. * +LIBFOO_HELP_CMDS+ lists the actions to print the package help, which is included to the main +make help+ output. These commands can print diff --git a/package/systemd/80-buildroot.preset b/package/systemd/80-buildroot.preset new file mode 100644 index 0000000000..4074901cbd --- /dev/null +++ b/package/systemd/80-buildroot.preset @@ -0,0 +1,5 @@ +# Higher priority than systemd presets + +# by default systemd enables a getty on tty1 +# we don't want that because tty1 may not exist +disable getty@.service diff --git a/package/systemd/Config.in b/package/systemd/Config.in index 8f1d6fc0c0..c727082a1a 100644 --- a/package/systemd/Config.in +++ b/package/systemd/Config.in @@ -35,6 +35,7 @@ menuconfig BR2_PACKAGE_SYSTEMD select BR2_PACKAGE_KMOD_TOOLS select BR2_TARGET_TZ_INFO select BR2_NEEDS_HOST_UTF8_LOCALE + select BR2_PACKAGE_HOST_SYSTEMD # for systemctl preset-all, during target-finalize help systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. systemd provides @@ -199,7 +200,6 @@ config BR2_PACKAGE_SYSTEMD_HOSTNAMED config BR2_PACKAGE_SYSTEMD_HWDB bool "enable hwdb installation" default y - select BR2_PACKAGE_HOST_EUDEV # for udevadm, during target-finalize help Enables hardware database installation to /usr/lib/udev/hwdb.d diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk index 5329f91bf8..057a4eb9e5 100644 --- a/package/systemd/systemd.mk +++ b/package/systemd/systemd.mk @@ -52,12 +52,6 @@ endif ifeq ($(BR2_PACKAGE_AUDIT),y) SYSTEMD_DEPENDENCIES += audit SYSTEMD_CONF_OPTS += -Daudit=true -define SYSTEMD_INSTALL_SERVICE_AUDIT - mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants - ln -sf ../../../../usr/lib/systemd/system/auditd.service \ - $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/auditd.service -endef - else SYSTEMD_CONF_OPTS += -Daudit=false endif @@ -65,11 +59,6 @@ endif ifeq ($(BR2_PACKAGE_CRYPTSETUP),y) SYSTEMD_DEPENDENCIES += cryptsetup SYSTEMD_CONF_OPTS += -Dlibcryptsetup=true -define SYSTEMD_INSTALL_TARGET_CRYPTSETUP - mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants - ln -sf ../../../../usr/lib/systemd/system/remote-cryptsetup.target \ - $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/remote-cryptsetup.target -endef else SYSTEMD_CONF_OPTS += -Dlibcryptsetup=false endif @@ -204,6 +193,11 @@ 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 + else SYSTEMD_CONF_OPTS += -Dhwdb=false endif @@ -270,11 +264,6 @@ endif ifeq ($(BR2_PACKAGE_SYSTEMD_MACHINED),y) SYSTEMD_CONF_OPTS += -Dmachined=true -define SYSTEMD_INSTALL_TARGET_MACHINED - mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants - ln -sf ../../../../lib/systemd/system/machines.target \ - $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/machines.target -endef else SYSTEMD_CONF_OPTS += -Dmachined=false endif @@ -318,11 +307,6 @@ endif ifeq ($(BR2_PACKAGE_SYSTEMD_PSTORE),y) SYSTEMD_CONF_OPTS += -Dpstore=true -define SYSTEMD_INSTALL_SERVICE_PSTORE - mkdir -p $(TARGET_DIR)/etc/systemd/system/systemd-remount-fs.service.wants - ln -sf ../../../../lib/systemd/system/systemd-pstore.service \ - $(TARGET_DIR)/etc/systemd/system/systemd-remount-fs.service.wants/systemd-pstore.service -endef else SYSTEMD_CONF_OPTS += -Dpstore=false endif @@ -337,29 +321,11 @@ endif ifeq ($(BR2_PACKAGE_SYSTEMD_NETWORKD),y) SYSTEMD_CONF_OPTS += -Dnetworkd=true SYSTEMD_NETWORKD_USER = systemd-network -1 systemd-network -1 * - - - Network Manager -define SYSTEMD_INSTALL_SOCKET_NETWORKD - mkdir -p $(TARGET_DIR)/etc/systemd/system/sockets.target.wants - ln -sf ../../../../lib/systemd/system/systemd-networkd.socket \ - $(TARGET_DIR)/etc/systemd/system/sockets.target.wants/systemd-networkd.socket -endef -define SYSTEMD_INSTALL_SERVICE_NETWORKD - ln -sf ../../../lib/systemd/system/systemd-networkd.service \ - $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.network1.service - mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants - ln -sf ../../../../lib/systemd/system/systemd-networkd.service \ - $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/systemd-networkd.service - mkdir -p $(TARGET_DIR)/etc/systemd/system/network-online.target.wants - ln -sf ../../../../lib/systemd/system/systemd-networkd-wait-online.service \ - $(TARGET_DIR)/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service - mkdir -p $(TARGET_DIR)/etc/systemd/system/network-pre.target.wants - ln -sf ../../../../lib/systemd/system/systemd-network-generator.service \ - $(TARGET_DIR)/etc/systemd/system/network-pre.target.wants/systemd-network-generator.service -endef 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)/ \ - package/systemd/dhcp.network > \ + $(SYSTEMD_PKGDIR)/dhcp.network > \ $(TARGET_DIR)/etc/systemd/network/dhcp.network endef endif @@ -374,13 +340,6 @@ define SYSTEMD_INSTALL_RESOLVCONF_HOOK endef SYSTEMD_CONF_OPTS += -Dresolve=true SYSTEMD_RESOLVED_USER = systemd-resolve -1 systemd-resolve -1 * - - - Network Name Resolution Manager -define SYSTEMD_INSTALL_SERVICE_RESOLVED - mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants - ln -sf ../../../lib/systemd/system/systemd-resolved.service \ - $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.resolve1.service - ln -sf ../../../../lib/systemd/system/systemd-resolved.service \ - $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/systemd-resolved.service -endef else SYSTEMD_CONF_OPTS += -Dresolve=false endif @@ -388,15 +347,6 @@ endif ifeq ($(BR2_PACKAGE_SYSTEMD_TIMESYNCD),y) SYSTEMD_CONF_OPTS += -Dtimesyncd=true SYSTEMD_TIMESYNCD_USER = systemd-timesync -1 systemd-timesync -1 * - - - Network Time Synchronization -define SYSTEMD_INSTALL_SERVICE_TIMESYNCD - mkdir -p $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants - ln -sf ../../../../lib/systemd/system/systemd-timesyncd.service \ - $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service - ln -sf ../../../../lib/systemd/system/systemd-time-wait-sync.service \ - $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants/systemd-time-wait-sync.service - ln -sf ../../../lib/systemd/system/systemd-timesyncd.service \ - $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.timesync1.service -endef else SYSTEMD_CONF_OPTS += -Dtimesyncd=false endif @@ -447,18 +397,8 @@ SYSTEMD_CONF_OPTS += -Dfallback-hostname=$(SYSTEMD_FALLBACK_HOSTNAME) endif define SYSTEMD_INSTALL_INIT_HOOK - ln -fs ../lib/systemd/systemd $(TARGET_DIR)/sbin/init - ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/halt - ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/poweroff - ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/reboot - ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/shutdown - ln -fs ../../../lib/systemd/system/multi-user.target \ - $(TARGET_DIR)/etc/systemd/system/default.target - ln -fs ../../../lib/systemd/system/reboot.target \ - $(TARGET_DIR)/etc/systemd/system/ctrl-alt-del.target - mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants - ln -sf ../../../../lib/systemd/system/remote-fs.target \ - $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/remote-fs.target + ln -fs multi-user.target \ + $(TARGET_DIR)/usr/lib/systemd/system/default.target endef define SYSTEMD_INSTALL_MACHINEID_HOOK @@ -466,9 +406,6 @@ define SYSTEMD_INSTALL_MACHINEID_HOOK endef SYSTEMD_POST_INSTALL_TARGET_HOOKS += \ - SYSTEMD_INSTALL_TARGET_CRYPTSETUP \ - SYSTEMD_INSTALL_TARGET_MACHINED \ - SYSTEMD_INSTALL_SOCKET_NETWORKD \ SYSTEMD_INSTALL_INIT_HOOK \ SYSTEMD_INSTALL_MACHINEID_HOOK \ SYSTEMD_INSTALL_RESOLVCONF_HOOK @@ -492,10 +429,6 @@ define SYSTEMD_USERS $(SYSTEMD_TIMESYNCD_USER) endef -define SYSTEMD_DISABLE_SERVICE_TTY1 - rm -f $(TARGET_DIR)/etc/systemd/system/getty.target.wants/getty@tty1.service -endef - ifneq ($(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)),) # systemd needs getty.service for VTs and serial-getty.service for serial ttys # note that console-getty.service should be used on /dev/console as it should not have dependencies @@ -523,30 +456,23 @@ define SYSTEMD_INSTALL_SERVICE_TTY endef endif -define SYSTEMD_INSTALL_SERVICE_AUTOVT - ln -sf ../../../lib/systemd/system/getty@.service \ - $(TARGET_DIR)/lib/systemd/system/autovt@.service -endef -define SYSTEMD_INSTALL_SERVICE_BOOT_CHECK - mkdir -p $(TARGET_DIR)/etc/systemd/system/boot-complete.target.requires - ln -sf ../../../../lib/systemd/system/systemd-boot-check-no-failures.service \ - $(TARGET_DIR)/etc/systemd/system/boot-complete.target.requires/systemd-boot-check-no-failures.service +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_DISABLE_SERVICE_TTY1) + $(SYSTEMD_INSTALL_PRESET) $(SYSTEMD_INSTALL_SERVICE_TTY) - $(SYSTEMD_INSTALL_SERVICE_AUTOVT) - $(SYSTEMD_INSTALL_SERVICE_RESOLVED) - $(SYSTEMD_INSTALL_SERVICE_TIMESYNCD) $(SYSTEMD_INSTALL_NETWORK_CONFS) - $(SYSTEMD_INSTALL_SERVICE_PSTORE) - $(SYSTEMD_INSTALL_SERVICE_NETWORKD) - $(SYSTEMD_INSTALL_SERVICE_AUDIT) - $(SYSTEMD_INSTALL_SERVICE_BOOT_CHECK) endef +define SYSTEMD_PRESET_ALL + $(HOST_DIR)/bin/systemctl --root=$(TARGET_DIR) preset-all +endef +SYSTEMD_TARGET_FINALIZE_HOOKS += SYSTEMD_PRESET_ALL + + SYSTEMD_CONF_ENV = $(HOST_UTF8_LOCALE_ENV) SYSTEMD_NINJA_ENV = $(HOST_UTF8_LOCALE_ENV)