Merge pull request #66856 from flokli/systemd-cryptsetup-lvm
systemd: build with cryptsetup support, add cryptsetup generators
This commit is contained in:
@@ -1,34 +0,0 @@
|
||||
{ systemd, cryptsetup }:
|
||||
|
||||
systemd.overrideAttrs (p: {
|
||||
version = p.version;
|
||||
name = "systemd-cryptsetup-generator-${p.version}";
|
||||
|
||||
buildInputs = p.buildInputs ++ [ cryptsetup ];
|
||||
outputs = [ "out" ];
|
||||
|
||||
buildPhase = ''
|
||||
ninja systemd-cryptsetup systemd-cryptsetup-generator
|
||||
'';
|
||||
|
||||
# As ninja install is not used here, the rpath needs to be manually fixed.
|
||||
# Otherwise the resulting binary doesn't properly link against systemd-shared.so
|
||||
postFixup = ''
|
||||
for prog in `find $out -type f -executable`; do
|
||||
(patchelf --print-needed $prog | grep 'libsystemd-shared-.*\.so' > /dev/null) && (
|
||||
patchelf --set-rpath `patchelf --print-rpath $prog`:"$out/lib/systemd" $prog
|
||||
) || true
|
||||
done
|
||||
# test it's OK
|
||||
"$out"/lib/systemd/systemd-cryptsetup
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/lib/systemd/
|
||||
cp systemd-cryptsetup $out/lib/systemd/systemd-cryptsetup
|
||||
cp src/shared/*.so $out/lib/systemd/
|
||||
|
||||
mkdir -p $out/lib/systemd/system-generators/
|
||||
cp systemd-cryptsetup-generator $out/lib/systemd/system-generators/systemd-cryptsetup-generator
|
||||
'';
|
||||
})
|
||||
@@ -1,5 +1,5 @@
|
||||
{ stdenv, lib, fetchFromGitHub, fetchpatch, pkgconfig, intltool, gperf, libcap
|
||||
, curl, kmod, gnupg, gnutar, xz, pam, acl, libuuid, m4, utillinux, libffi
|
||||
{ stdenv, lib, fetchFromGitHub, pkgconfig, intltool, gperf, libcap
|
||||
, curl, kmod, gnupg, gnutar, xz, pam, acl, libuuid, m4, e2fsprogs, utillinux, libffi
|
||||
, glib, kbd, libxslt, coreutils, libgcrypt, libgpgerror, libidn2, libapparmor
|
||||
, audit, lz4, bzip2, pcre2
|
||||
, linuxHeaders ? stdenv.cc.libc.linuxHeaders
|
||||
@@ -9,6 +9,7 @@
|
||||
, patchelf
|
||||
, substituteAll
|
||||
, getent
|
||||
, cryptsetup, lvm2
|
||||
, buildPackages
|
||||
, perl
|
||||
, withSelinux ? false, libselinux
|
||||
@@ -30,6 +31,7 @@ let gnupg-minimal = gnupg.override {
|
||||
zlib = null;
|
||||
bzip2 = null;
|
||||
};
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
version = "245.7";
|
||||
pname = "systemd";
|
||||
@@ -89,7 +91,7 @@ in stdenv.mkDerivation {
|
||||
];
|
||||
buildInputs =
|
||||
[ linuxHeaders libcap curl.dev kmod xz pam acl
|
||||
/* cryptsetup */ libuuid glib libgcrypt libgpgerror libidn2
|
||||
cryptsetup libuuid glib libgcrypt libgpgerror libidn2
|
||||
pcre2 ] ++
|
||||
stdenv.lib.optional withKexectools kexectools ++
|
||||
stdenv.lib.optional withLibseccomp libseccomp ++
|
||||
@@ -176,12 +178,28 @@ in stdenv.mkDerivation {
|
||||
export LC_ALL="en_US.UTF-8";
|
||||
# FIXME: patch this in systemd properly (and send upstream).
|
||||
# already fixed in f00929ad622c978f8ad83590a15a765b4beecac9: (u)mount
|
||||
for i in src/remount-fs/remount-fs.c src/core/mount.c src/core/swap.c src/fsck/fsck.c units/emergency.service.in units/rescue.service.in src/journal/cat.c src/shutdown/shutdown.c src/nspawn/nspawn.c src/shared/generator.c units/systemd-logind.service.in units/systemd-nspawn@.service.in; do
|
||||
for i in \
|
||||
src/core/mount.c \
|
||||
src/core/swap.c \
|
||||
src/cryptsetup/cryptsetup-generator.c \
|
||||
src/fsck/fsck.c \
|
||||
src/journal/cat.c \
|
||||
src/nspawn/nspawn.c \
|
||||
src/remount-fs/remount-fs.c \
|
||||
src/shared/generator.c \
|
||||
src/shutdown/shutdown.c \
|
||||
units/emergency.service.in \
|
||||
units/rescue.service.in \
|
||||
units/systemd-logind.service.in \
|
||||
units/systemd-nspawn@.service.in; \
|
||||
do
|
||||
test -e $i
|
||||
substituteInPlace $i \
|
||||
--replace /usr/bin/getent ${getent}/bin/getent \
|
||||
--replace /sbin/mkswap ${lib.getBin utillinux}/sbin/mkswap \
|
||||
--replace /sbin/swapon ${lib.getBin utillinux}/sbin/swapon \
|
||||
--replace /sbin/swapoff ${lib.getBin utillinux}/sbin/swapoff \
|
||||
--replace /sbin/mke2fs ${lib.getBin e2fsprogs}/sbin/mke2fs \
|
||||
--replace /sbin/fsck ${lib.getBin utillinux}/sbin/fsck \
|
||||
--replace /bin/echo ${coreutils}/bin/echo \
|
||||
--replace /bin/cat ${coreutils}/bin/cat \
|
||||
|
||||
Reference in New Issue
Block a user