Merge pull request #136227 from liff/gradle-native

gradle: Add ncurses dependencies on Linux
This commit is contained in:
Jörg Thalheim
2021-12-02 10:36:19 +00:00
committed by GitHub
@@ -6,7 +6,7 @@ rec {
{ version, nativeVersion, sha256, defaultJava ? jdk8 }:
{ lib, stdenv, fetchurl, makeWrapper, unzip, java ? defaultJava
, javaToolchains ? [ ] }:
, javaToolchains ? [ ], ncurses5, ncurses6 }:
stdenv.mkDerivation rec {
pname = "gradle";
@@ -52,18 +52,25 @@ rec {
fixupPhase = let arch = if stdenv.is64bit then "amd64" else "i386";
in ''
mkdir patching
pushd patching
jar xf $out/lib/gradle/lib/native-platform-linux-${arch}-${nativeVersion}.jar
patchelf --set-rpath "${stdenv.cc.cc.lib}/lib:${stdenv.cc.cc.lib}/lib64" net/rubygrapefruit/platform/linux-${arch}/libnative-platform.so
jar cf native-platform-linux-${arch}-${nativeVersion}.jar .
mv native-platform-linux-${arch}-${nativeVersion}.jar $out/lib/gradle/lib/
popd
for variant in "" "-ncurses5" "-ncurses6"; do
mkdir "patching$variant"
pushd "patching$variant"
jar xf $out/lib/gradle/lib/native-platform-linux-${arch}$variant-${nativeVersion}.jar
patchelf \
--set-rpath "${stdenv.cc.cc.lib}/lib64:${lib.makeLibraryPath [ stdenv.cc.cc ncurses5 ncurses6 ]}" \
net/rubygrapefruit/platform/linux-${arch}$variant/libnative-platform*.so
jar cf native-platform-linux-${arch}$variant-${nativeVersion}.jar .
mv native-platform-linux-${arch}$variant-${nativeVersion}.jar $out/lib/gradle/lib/
popd
done
# The scanner doesn't pick up the runtime dependency in the jar.
# Manually add a reference where it will be found.
mkdir $out/nix-support
echo ${stdenv.cc.cc} > $out/nix-support/manual-runtime-dependencies
# Gradle will refuse to start without _both_ 5 and 6 versions of ncurses.
echo ${ncurses5} >> $out/nix-support/manual-runtime-dependencies
echo ${ncurses6} >> $out/nix-support/manual-runtime-dependencies
'';
meta = with lib; {
@@ -81,7 +88,7 @@ rec {
downloadPage = "https://gradle.org/next-steps/?version=${version}";
license = licenses.asl20;
platforms = platforms.unix;
maintainers = with maintainers; [ lorenzleutgeb ];
maintainers = with maintainers; [ lorenzleutgeb liff ];
};
};