[Buildroot] [PATCH 3/3] package/dracut: add subpackage for dracut-util

Fiona Klute via buildroot <[email protected]>
Newsgroups net.busybox.buildroot
Message-ID <[email protected]>
From: "Fiona Klute (Othermo GmbH)" <[email protected]>

dracut-util is a small executable that provides dracut-getarg{,s}
commands for scripts in the initramfs. As such it must be built and
installed for the target so it is available when building the
initramfs.

The reason to create a subpackage instead of adding a target build for
package/dracut is to avoid a conflict in case someone needs "full"
dracut on the target in the future (to build an initramfs on the
target system, outside the Buildroot build). Also using ./configure
would require a dependency on kmod, which is not needed for
dracut-util.

Signed-off-by: Fiona Klute (Othermo GmbH) <[email protected]>
---
 package/Config.in                           |  1 +
 package/dracut/Config.in                    |  1 +
 package/dracut/Config.in.host               |  1 +
 package/dracut/dracut-util/Config.in        | 14 +++++++++++++
 package/dracut/dracut-util/dracut-util.hash |  1 +
 package/dracut/dracut-util/dracut-util.mk   | 23 +++++++++++++++++++++
 package/dracut/dracut.mk                    |  2 ++
 7 files changed, 43 insertions(+)
 create mode 100644 package/dracut/Config.in
 create mode 100644 package/dracut/dracut-util/Config.in
 create mode 120000 package/dracut/dracut-util/dracut-util.hash
 create mode 100644 package/dracut/dracut-util/dracut-util.mk

diff --git a/package/Config.in b/package/Config.in
index ce316334e1..34a848fa74 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2822,6 +2822,7 @@ menu "System tools"
 	source "package/docker-credential-acr-env/Config.in"
 	source "package/docker-credential-gcr/Config.in"
 	source "package/docker-engine/Config.in"
+	source "package/dracut/Config.in"
 	source "package/dtui/Config.in"
 	source "package/earlyoom/Config.in"
 	source "package/efibootmgr/Config.in"
diff --git a/package/dracut/Config.in b/package/dracut/Config.in
new file mode 100644
index 0000000000..496b72c105
--- /dev/null
+++ b/package/dracut/Config.in
@@ -0,0 +1 @@
+source package/dracut/dracut-util/Config.in
diff --git a/package/dracut/Config.in.host b/package/dracut/Config.in.host
index af68728457..51e428ea2f 100644
--- a/package/dracut/Config.in.host
+++ b/package/dracut/Config.in.host
@@ -1,6 +1,7 @@
 config BR2_PACKAGE_HOST_DRACUT
 	bool
 	select BR2_PACKAGE_HOST_KMOD
+	select BR2_PACKAGE_DRACUT_UTIL # must be included in initramfs
 	help
 	  dracut-ng is used to create an initramfs image by
 	  copying tools and files from an installed system
diff --git a/package/dracut/dracut-util/Config.in b/package/dracut/dracut-util/Config.in
new file mode 100644
index 0000000000..1de35bed40
--- /dev/null
+++ b/package/dracut/dracut-util/Config.in
@@ -0,0 +1,14 @@
+config BR2_PACKAGE_DRACUT_UTIL
+	bool
+	help
+	  dracut-ng is used to create an initramfs image by
+	  copying tools and files from an installed system
+	  and combining it with the dracut framework.
+	  dracut-ng is a drop-in replacement for the legacy
+	  dracut project.
+
+	  This package installs only the dracut-util executable, which
+	  is needed by many of the Dracut scripts installed into the
+	  initramfs.
+
+	  https://dracut-ng.github.io/dracut/
diff --git a/package/dracut/dracut-util/dracut-util.hash b/package/dracut/dracut-util/dracut-util.hash
new file mode 120000
index 0000000000..22e15cf0aa
--- /dev/null
+++ b/package/dracut/dracut-util/dracut-util.hash
@@ -0,0 +1 @@
+../dracut.hash
\ No newline at end of file
diff --git a/package/dracut/dracut-util/dracut-util.mk b/package/dracut/dracut-util/dracut-util.mk
new file mode 100644
index 0000000000..e14e6bc5ad
--- /dev/null
+++ b/package/dracut/dracut-util/dracut-util.mk
@@ -0,0 +1,23 @@
+################################################################################
+#
+# dracut-util
+#
+################################################################################
+
+# The following assignments work only because dracut.mk is included
+# before this file is.
+DRACUT_UTIL_VERSION = $(DRACUT_VERSION)
+DRACUT_UTIL_SITE = $(DRACUT_SITE)
+DRACUT_UTIL_LICENSE = $(DRACUT_LICENSE)
+DRACUT_UTIL_LICENSE_FILES = $(DRACUT_LICENSE_FILES)
+
+# share the dracut archive, build only src/util
+DRACUT_UTIL_SOURCE = dracut-$(DRACUT_VERSION).tar.gz
+DRACUT_UTIL_DL_SUBDIR = dracut
+DRACUT_UTIL_SUBDIR = src/util
+
+define DRACUT_UTIL_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/src/util/dracut-util $(TARGET_DIR)/usr/bin/dracut-util
+endef
+
+$(eval $(cmake-package))
diff --git a/package/dracut/dracut.mk b/package/dracut/dracut.mk
index 0bf755319e..6844ac0b65 100644
--- a/package/dracut/dracut.mk
+++ b/package/dracut/dracut.mk
@@ -51,3 +51,5 @@ HOST_DRACUT_POST_INSTALL_HOOKS += HOST_DRACUT_POST_INSTALL_BUSYBOX_INIT_MODULE
 endif
 
 $(eval $(host-autotools-package))
+
+include package/dracut/dracut-util/dracut-util.mk
-- 
2.55.0

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.