diff --git a/Makefile b/Makefile index e7d69e10..85e1020a 100644 --- 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 diff --git a/configure b/configure index 3010cece..3c7e6a1f 100755 --- 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 ")