2016-03-24 11:42:27 +00:00
|
|
|
{ stdenv, systemd, cryptsetup }:
|
|
|
|
|
|
|
|
stdenv.lib.overrideDerivation systemd (p: {
|
|
|
|
version = p.version;
|
2018-05-25 10:21:07 +01:00
|
|
|
name = "systemd-cryptsetup-generator-${p.version}";
|
2016-03-24 11:42:27 +00:00
|
|
|
|
|
|
|
nativeBuildInputs = p.nativeBuildInputs ++ [ cryptsetup ];
|
|
|
|
outputs = [ "out" ];
|
|
|
|
|
|
|
|
buildPhase = ''
|
2018-02-20 11:06:55 +00:00
|
|
|
ninja systemd-cryptsetup systemd-cryptsetup-generator
|
2016-03-24 11:42:27 +00:00
|
|
|
'';
|
|
|
|
|
2018-04-11 19:51:39 +01:00
|
|
|
# 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 = ''
|
|
|
|
sharedLib=libsystemd-shared-${p.version}.so
|
|
|
|
for prog in `find $out -type f -executable`; do
|
|
|
|
(patchelf --print-needed $prog | grep $sharedLib > /dev/null) && (
|
|
|
|
patchelf --set-rpath `patchelf --print-rpath $prog`:"$out/lib/systemd" $prog
|
|
|
|
) || true
|
|
|
|
done
|
|
|
|
'';
|
|
|
|
|
2016-03-24 11:42:27 +00:00
|
|
|
installPhase = ''
|
2016-03-24 12:30:29 +00:00
|
|
|
mkdir -p $out/lib/systemd/
|
2018-02-20 11:06:55 +00:00
|
|
|
cp systemd-cryptsetup $out/lib/systemd/systemd-cryptsetup
|
|
|
|
cp src/shared/*.so $out/lib/systemd/
|
2016-03-24 14:50:39 +00:00
|
|
|
|
|
|
|
mkdir -p $out/lib/systemd/system-generators/
|
2018-02-20 11:06:55 +00:00
|
|
|
cp systemd-cryptsetup-generator $out/lib/systemd/system-generators/systemd-cryptsetup-generator
|
2016-03-24 11:42:27 +00:00
|
|
|
'';
|
|
|
|
})
|