From d3e904068665e9358afbd0757e87c941092620cf Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Tue, 9 Mar 2021 13:24:03 +0100 Subject: [PATCH] jre_minimal: strip libraries runCommand doesn't invoke the automatic stripping from stdenv, expanding the derivation like this does. Fixes #115486 --- pkgs/development/compilers/openjdk/jre.nix | 33 ++++++++++++++++------ 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/pkgs/development/compilers/openjdk/jre.nix b/pkgs/development/compilers/openjdk/jre.nix index 817cdf9c26a..436bd0468c5 100644 --- a/pkgs/development/compilers/openjdk/jre.nix +++ b/pkgs/development/compilers/openjdk/jre.nix @@ -1,19 +1,34 @@ -{ jdk -, runCommand -, patchelf +{ stdenv +, jdk , lib , modules ? [ "java.base" ] }: let - jre = runCommand "${jdk.name}-jre" { - nativeBuildInputs = [ patchelf ]; + jre = stdenv.mkDerivation { + name = "${jdk.name}-minimal-jre"; + version = jdk.version; + buildInputs = [ jdk ]; + + dontUnpack = true; + + # Strip more heavily than the default '-S', since if you're + # using this derivation you probably care about this. + stripDebugFlags = [ "--strip-unneeded" ]; + + buildPhase = '' + runHook preBuild + + jlink --module-path ${jdk}/lib/openjdk/jmods --add-modules ${lib.concatStringsSep "," modules} --output $out + + runHook postBuild + ''; + + dontInstall = true; + passthru = { home = "${jre}"; }; - } '' - jlink --module-path ${jdk}/lib/openjdk/jmods --add-modules ${lib.concatStringsSep "," modules} --output $out - patchelf --shrink-rpath $out/bin/* $out/lib/jexec $out/lib/jspawnhelper $out/lib/*.so $out/lib/*/*.so - ''; + }; in jre