aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/development/compilers/graalvm/community-edition.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/development/compilers/graalvm/community-edition.nix')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/compilers/graalvm/community-edition.nix142
1 files changed, 95 insertions, 47 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/development/compilers/graalvm/community-edition.nix b/infra/libkookie/nixpkgs/pkgs/development/compilers/graalvm/community-edition.nix
index f3a03b364743..3a8fca2c1a05 100644
--- a/infra/libkookie/nixpkgs/pkgs/development/compilers/graalvm/community-edition.nix
+++ b/infra/libkookie/nixpkgs/pkgs/development/compilers/graalvm/community-edition.nix
@@ -1,56 +1,106 @@
-{ lib, stdenv, fetchurl, perl, unzip, glibc, zlib, setJavaClassPath, Foundation, openssl }:
+{ stdenv
+, lib
+, fetchurl
+, autoPatchelfHook
+, setJavaClassPath
+, makeWrapper
+# minimum dependencies
+, Foundation
+, alsaLib
+, fontconfig
+, freetype
+, glibc
+, openssl
+, perl
+, unzip
+, xorg
+, zlib
+# runtime dependencies
+, cups
+# runtime dependencies for GTK+ Look and Feel
+, gtkSupport ? true
+, cairo
+, glib
+, gtk3
+}:
let
platform = if stdenv.isDarwin then "darwin-amd64" else "linux-amd64";
+ runtimeDependencies = [
+ cups
+ ] ++ lib.optionals gtkSupport [
+ cairo glib gtk3
+ ];
+ runtimeLibraryPath = lib.makeLibraryPath runtimeDependencies;
common = javaVersion:
let
javaVersionPlatform = "${javaVersion}-${platform}";
graalvmXXX-ce = stdenv.mkDerivation rec {
pname = "graalvm${javaVersion}-ce";
- version = "20.3.0";
+ version = "21.0.0";
srcs = [
(fetchurl {
- sha256 = { "8-linux-amd64" = "195b20ivvv8ipjn3qq2313j8qf96ji93pqm99nvn20bq23wasp25";
- "11-linux-amd64" = "1mdk1zhazvvh1fa01bzi5v5fxhvx592xmbakx0y1137vykbayyjm";
- "8-darwin-amd64" = "1rrs471204p71knyxpjxymdi8ws98ph2kf5j0knk529g0d24rs01";
- "11-darwin-amd64" = "008dl8dbf37mv4wahb9hbd6jp8svvmpy1rgsiqkn3i4hypxnkf12";
+ sha256 = { "8-linux-amd64" = "18q1plrpclp02rlwn3vvv2fcyspvqv2gkzn14f0b59pnladmlv1j";
+ "11-linux-amd64" = "1g1xjbr693rimdy2cy6jvz4vgnbnw76wa87xcmaszka206fmpnsc";
+ "8-darwin-amd64" = "0giv8f7ybdykadzmxjy91i6njbdx6dclyx7g6vyhwk2l1cvxi4li";
+ "11-darwin-amd64" = "1a8gjp6fp11ms05pd62h1x1ifkkr3wv0hrxic670v90bbps9lsqf";
}.${javaVersionPlatform};
url = "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${version}/graalvm-ce-java${javaVersionPlatform}-${version}.tar.gz";
})
(fetchurl {
- sha256 = { "8-linux-amd64" = "1rzbhllz28x5ps8n304v998hykr4m8z1gfg53ybi6laxhkbx3i13";
- "11-linux-amd64" = "09ipdl1489xnbckwl6sl9y7zy7kp5qf5fgf3kgz5d69jrk2z6rvf";
- "8-darwin-amd64" = "1iy2943jbrarh8bm9wy15xk7prnskqwik2ham07a6ybp4j4b81xi";
- "11-darwin-amd64" = "0vk2grlirghzc78kvwg66w0xriy5p8qkcp7qx83i62d7sj0kvwnf";
+ sha256 = { "8-linux-amd64" = "0hpq2g9hc8b7j4d8a08kq1mnl6pl7a4kwaj0a3gka3d4m6r7cscg";
+ "11-linux-amd64" = "0z3hb2bf0lqzw760civ3h1wvx22a75n7baxc0l2i9h5wxas002y7";
+ "8-darwin-amd64" = "1izbgl4hjg5jyi422xnkx006qnw163r1i1djf76q1plms40y01ph";
+ "11-darwin-amd64" = "1d9z75gil0if74ndla9yw3xx9i2bfbcs32qa0z6wi5if66cmknb8";
}.${javaVersionPlatform};
url = "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${version}/native-image-installable-svm-java${javaVersionPlatform}-${version}.jar";
})
(fetchurl {
- sha256 = { "8-linux-amd64" = "0v98v44vblhyi3jhrngmvrkb3a6d607x4fpmrb4mrrsg75vbvc6d";
- "11-linux-amd64" = "0kb9472ilwqg40gyw1c4lmzkd9s763raw560sw80ljm3p75k4sc7";
- "8-darwin-amd64" = "192n9ckr4p8qirpxr67ji3wzxpng33yfr7kxynlrcp7b3ghfic6p";
- "11-darwin-amd64" = "1wqdk8wphywa00kl3xikiskclb84rx3nw5a4vi5y2n060kclcp22";
+ sha256 = { "8-linux-amd64" = "122p8psgmzhqnjb2fy1lwghg0kw5qa8xkzgyjp682lwg4j8brz43";
+ "11-linux-amd64" = "1vdc90m6s013cbhmj58nb4vyxllbxirw0idlgv0iv9cyhx90hzgz";
+ "8-darwin-amd64" = "04q0s9xsaskqn9kbhz0mgdk28j2qnxrzqfmw6jn2znr8s8jsc6yp";
+ "11-darwin-amd64" = "1pw4xd8g5cc9bm52awmm1zxs96ijws43vws7y10wxa6a0nhv7z5f";
}.${javaVersionPlatform};
url = "https://github.com/oracle/truffleruby/releases/download/vm-${version}/ruby-installable-svm-java${javaVersionPlatform}-${version}.jar";
})
(fetchurl {
- sha256 = { "8-linux-amd64" = "1iskmkhrrwlhcq92g1ljvsfi9q403xxkwgzn9m282z5llh2fxv74";
- "11-linux-amd64" = "13bg2gs22rzbngnbw8j68jqgcknbiw30kpxac5jjcn55rf2ymvkz";
- "8-darwin-amd64" = "08pib13q7s5wymnbykkyif66ll146vznxw4yz12qwhb419882jc7";
- "11-darwin-amd64" = "0cb9lhc21yr2dnrm4kwa68laaczvsdnzpcbl2qix50d0v84xl602";
+ sha256 = { "8-linux-amd64" = "19m7n4f5jrmsfvgv903sarkcjh55l0nlnw99lvjlcafw5hqzyb91";
+ "11-linux-amd64" = "18ibb7l7b4hmbnvyr8j7mrs11mvlsf2j0c8rdd2s93x2114f26ba";
+ "8-darwin-amd64" = "1zlzi00339kvg4ym2j75ypfkzn8zbwdpriqmkaz4fh28qjmc1dwq";
+ "11-darwin-amd64" = "0x301i1fimakhi2x29ldr0fsqkb3qs0g9jsmjv27d62dpqx8kgc8";
}.${javaVersionPlatform};
url = "https://github.com/graalvm/graalpython/releases/download/vm-${version}/python-installable-svm-java${javaVersionPlatform}-${version}.jar";
})
(fetchurl {
- sha256 = { "8-linux-amd64" = "12lvcl1vmc35wh3xw5dqca7yiijsd432x4lim3knzppipy7fmflq";
- "11-linux-amd64" = "1s8zfgjyyw6w53974h9a2ig8a1bvc97aplyrdziywfrijgp6zkqk";
- "8-darwin-amd64" = "06i1n42hkhcf1pfb2bly22ws4a09xgydsgh8b0kvjmb1fapd4paq";
- "11-darwin-amd64" = "1r2bqhfxnw09izxlsc562znlp3m9c1isqzhlki083h3vp548vv9s";
+ sha256 = { "8-linux-amd64" = "0dlgbg6kri89r9zbk6n0ch3g8356j1g35bwjng87c2y5y0vcw0b5";
+ "11-linux-amd64" = "1yby65hww6zmd2g5pjwbq5pv3iv4gfv060b8fq75fjhwrisyj5gd";
+ "8-darwin-amd64" = "1smdj491g23i3z7p5rybid18nnz8bphrqjkv0lg2ffyrpn8k6g93";
+ "11-darwin-amd64" = "056zyn0lpd7741k1szzjwwacka0g7rn0j4ypfmav4h1245mjg8lx";
}.${javaVersionPlatform};
url = "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${version}/wasm-installable-svm-java${javaVersionPlatform}-${version}.jar";
})
];
- nativeBuildInputs = [ unzip perl ];
+
+ buildInputs = lib.optionals stdenv.isLinux [
+ alsaLib # libasound.so wanted by lib/libjsound.so
+ fontconfig
+ freetype
+ openssl # libssl.so wanted by languages/ruby/lib/mri/openssl.so
+ stdenv.cc.cc.lib # libstdc++.so.6
+ xorg.libX11
+ xorg.libXext
+ xorg.libXi
+ xorg.libXrender
+ xorg.libXtst
+ zlib
+ ];
+
+ # Workaround for libssl.so.10 wanted by TruffleRuby
+ # Resulting TruffleRuby cannot use `openssl` library.
+ autoPatchelfIgnoreMissingDeps = true;
+
+ nativeBuildInputs = [ unzip perl autoPatchelfHook makeWrapper ];
+
unpackPhase = ''
unpack_jar() {
jar=$1
@@ -136,32 +186,28 @@ let
dontStrip = true;
- # copy-paste openjdk's preFixup
preFixup = ''
+ # We cannot use -exec since wrapProgram is a function but not a
+ # command.
+ #
+ # jspawnhelper is executed from JVM, so it doesn't need to wrap it,
+ # and it breaks building OpenJDK (#114495).
+ for bin in $( find "$out" -executable -type f -not -path '*/languages/ruby/lib/gems/*' -not -name jspawnhelper ); do
+ if patchelf --print-interpreter "$bin" &> /dev/null || head -n 1 "$bin" | grep '^#!' -q; then
+ wrapProgram "$bin" \
+ --prefix LD_LIBRARY_PATH : "${runtimeLibraryPath}"
+ fi
+ done
+
+ # copy-paste openjdk's preFixup
# Set JAVA_HOME automatically.
mkdir -p $out/nix-support
cat <<EOF > $out/nix-support/setup-hook
if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi
EOF
- '';
-
- postFixup = ''
- rpath="${ { "8" = "$out/jre/lib/amd64/jli:$out/jre/lib/amd64/server:$out/jre/lib/amd64";
- "11" = "$out/lib/jli:$out/lib/server:$out/lib";
- }.${javaVersion}
- }:${
- lib.makeLibraryPath [
- stdenv.cc.cc.lib # libstdc++.so.6
- zlib # libz.so.1
- ]}"
- ${lib.optionalString stdenv.isLinux ''
- for f in $(find $out -type f -perm -0100); do
- patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$f" || true
- patchelf --set-rpath "$rpath" "$f" || true
- if ldd "$f" | fgrep 'not found'; then echo "in file $f"; fi
- done
- ''}
+ find "$out" -name libfontmanager.so -exec \
+ patchelf --add-needed libfontconfig.so {} \;
'';
# $out/bin/native-image needs zlib to build native executables.
@@ -204,11 +250,13 @@ let
echo '1 + 1' | $out/bin/graalpython
- # TODO: `irb` on MacOS gives an error saying "Could not find OpenSSL
- # headers, install via Homebrew or MacPorts or set OPENSSL_PREFIX", even
- # though `openssl` is in `propagatedBuildInputs`. For more details see:
- # https://github.com/NixOS/nixpkgs/pull/105815
- # echo '1 + 1' | $out/bin/irb
+ ${lib.optionalString stdenv.isLinux ''
+ # TODO: `irb` on MacOS gives an error saying "Could not find OpenSSL
+ # headers, install via Homebrew or MacPorts or set OPENSSL_PREFIX", even
+ # though `openssl` is in `propagatedBuildInputs`. For more details see:
+ # https://github.com/NixOS/nixpkgs/pull/105815
+ echo '1 + 1' | $out/bin/irb
+ ''}
echo '1 + 1' | $out/bin/node -i
${lib.optionalString (javaVersion == "11") ''