]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
feat(Makefile): cargo wrapper for dracut-cpio build
authorDavid Disseldorp <ddiss@suse.de>
Tue, 1 Jun 2021 23:35:59 +0000 (01:35 +0200)
committerHarald Hoyer <harald@hoyer.xyz>
Wed, 24 Nov 2021 10:14:54 +0000 (11:14 +0100)
If configured with --enable-dracut-cpio, call cargo to build the
dracut-cpio release binary.

Signed-off-by: David Disseldorp <ddiss@suse.de>
Makefile
configure

index e7d69e10efa64c62cf578b2c3ce7bba83984fd93..85e1020aeee403abacb7c277864bfb8cacc54a37 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -102,6 +102,16 @@ ifeq ($(HAVE_SHFMT),yes)
        shfmt -w -s .
 endif
 
+src/dracut-cpio/target/release/dracut-cpio: src/dracut-cpio/src/main.rs
+       cargo --offline build --release --manifest-path src/dracut-cpio/Cargo.toml
+
+dracut-cpio: src/dracut-cpio/target/release/dracut-cpio
+       ln -fs $< $@
+
+ifeq ($(enable_dracut_cpio),yes)
+all: dracut-cpio
+endif
+
 doc: $(manpages) dracut.html
 
 ifneq ($(enable_documentation),no)
@@ -196,6 +206,9 @@ endif
        if [ -f dracut-util ]; then \
                install -m 0755 dracut-util $(DESTDIR)$(pkglibdir)/dracut-util; \
        fi
+ifeq ($(enable_dracut_cpio),yes)
+       install -m 0755 dracut-cpio $(DESTDIR)$(pkglibdir)/dracut-cpio
+endif
        mkdir -p $(DESTDIR)${prefix}/lib/kernel/install.d
        install -m 0755 install.d/50-dracut.install $(DESTDIR)${prefix}/lib/kernel/install.d/50-dracut.install
        install -m 0755 install.d/51-dracut-rescue.install $(DESTDIR)${prefix}/lib/kernel/install.d/51-dracut-rescue.install
@@ -222,6 +235,7 @@ clean:
        $(RM) dracut-util util/util $(UTIL_OBJECTS)
        $(RM) $(manpages) dracut.html
        $(RM) dracut.pc
+       $(RM) dracut-cpio src/dracut-cpio/target/release/dracut-cpio*
        $(MAKE) -C test clean
 
 dist: dracut-$(DRACUT_MAIN_VERSION).tar.xz
index 3010cece7da42a350fdcf500c698cd9595c036b3..3c7e6a1ff96840433319d6e19d7193f52e8cf5c9 100755 (executable)
--- a/configure
+++ b/configure
@@ -6,6 +6,7 @@ echo \#buildapi-variable-no-builddir > /dev/null
 prefix=/usr
 
 enable_documentation=yes
+enable_dracut_cpio=no
 
 CC="${CC:-cc}"
 PKG_CONFIG="${PKG_CONFIG:-pkg-config}"
@@ -48,6 +49,7 @@ while (($# > 0)); do
         --infodir) read_arg infodir "$@" || shift ;;
         --systemdsystemunitdir) read_arg systemdsystemunitdir "$@" || shift ;;
         --bashcompletiondir) read_arg bashcompletiondir "$@" || shift ;;
+        --enable-dracut-cpio) enable_dracut_cpio=yes ;;
         *) echo "Ignoring unknown option '$1'" ;;
     esac
     shift
@@ -102,6 +104,15 @@ if test $found = no; then
     exit 1
 fi
 
+if test "$enable_dracut_cpio" = "yes"; then
+    cargo --version > /dev/null
+    ret=$?
+    if test $ret -ne 0; then
+        echo "dracut couldn't find cargo for dracut-cpio build"
+        exit 1
+    fi
+fi
+
 cat > Makefile.inc.$$ << EOF
 prefix ?= ${prefix}
 libdir ?= ${libdir:-${prefix}/lib}
@@ -110,6 +121,7 @@ sysconfdir ?= ${sysconfdir:-${prefix}/etc}
 sbindir ?= ${sbindir:-${prefix}/sbin}
 mandir ?= ${mandir:-${prefix}/share/man}
 enable_documentation ?= ${enable_documentation:-yes}
+enable_dracut_cpio ?= ${enable_dracut_cpio}
 bindir ?= ${bindir:-${prefix}/bin}
 KMOD_CFLAGS ?= $(${PKG_CONFIG} --cflags " libkmod >= 23 ")
 KMOD_LIBS ?= $(${PKG_CONFIG} --libs " libkmod >= 23 ")