mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-10-06 04:27:27 +03:00
openjfx: convert to gradle setup hook
This commit is contained in:
parent
27d8261b6d
commit
e6f8a3baba
@ -1,107 +1,71 @@
|
|||||||
{ stdenv, lib, fetchFromGitHub, writeText, gradle_7, pkg-config, perl, cmake
|
{ stdenv, lib, pkgs, fetchFromGitHub, writeText, gradle_7, pkg-config, perl, cmake
|
||||||
, gperf, gtk2, gtk3, libXtst, libXxf86vm, glib, alsa-lib, ffmpeg_4-headless, python3, ruby, fetchurl, runCommand
|
, gperf, gtk2, gtk3, libXtst, libXxf86vm, glib, alsa-lib, ffmpeg_4-headless, python3, ruby
|
||||||
, openjdk11-bootstrap
|
, openjdk11-bootstrap
|
||||||
, withMedia ? true
|
, withMedia ? true
|
||||||
, withWebKit ? false
|
, withWebKit ? false
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
pname = "openjfx-modular-sdk";
|
||||||
major = "11";
|
major = "11";
|
||||||
update = ".0.20";
|
update = ".0.20";
|
||||||
build = "1";
|
build = "1";
|
||||||
repover = "${major}${update}+${build}";
|
repover = "${major}${update}+${build}";
|
||||||
gradle_ = (gradle_7.override {
|
jdk = openjdk11-bootstrap;
|
||||||
java = openjdk11-bootstrap;
|
gradle = gradle_7;
|
||||||
});
|
|
||||||
|
|
||||||
icuVersionWithSep = s: "71${s}1";
|
in stdenv.mkDerivation {
|
||||||
icuPath = "download/release-${icuVersionWithSep "-"}/icu4c-${icuVersionWithSep "_"}-data-bin-l.zip";
|
inherit pname;
|
||||||
icuData = fetchurl {
|
version = "${major}${update}-${build}";
|
||||||
url = "https://github.com/unicode-org/icu/releases/${icuPath}";
|
|
||||||
hash = "sha256-pVWIy0BkICsthA5mxhR9SJQHleMNnaEcGl/AaLi5qZM=";
|
|
||||||
};
|
|
||||||
icuFakeRepository = runCommand "icu-data-repository" {} ''
|
|
||||||
install -Dm644 ${icuData} $out/${icuPath}
|
|
||||||
'';
|
|
||||||
|
|
||||||
makePackage = args: stdenv.mkDerivation ({
|
src = fetchFromGitHub {
|
||||||
version = "${major}${update}-${build}";
|
owner = "openjdk";
|
||||||
|
repo = "jfx${major}u";
|
||||||
src = fetchFromGitHub {
|
rev = repover;
|
||||||
owner = "openjdk";
|
sha256 = "sha256-BbBP2DiPZTSn1SBYMCgyiNdF9GD+NqR6YjeVNOQHHn4=";
|
||||||
repo = "jfx${major}u";
|
|
||||||
rev = repover;
|
|
||||||
sha256 = "sha256-BbBP2DiPZTSn1SBYMCgyiNdF9GD+NqR6YjeVNOQHHn4=";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4-headless ];
|
|
||||||
nativeBuildInputs = [ gradle_ perl pkg-config cmake gperf python3 ruby ];
|
|
||||||
|
|
||||||
dontUseCmakeConfigure = true;
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
substituteInPlace buildSrc/linux.gradle \
|
|
||||||
--replace ', "-Werror=implicit-function-declaration"' ""
|
|
||||||
|
|
||||||
# Add missing includes for gcc-13 for webkit build:
|
|
||||||
sed -e '1i #include <cstdio>' \
|
|
||||||
-i modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/Heap.cpp \
|
|
||||||
modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/IsoSharedPageInlines.h
|
|
||||||
'';
|
|
||||||
|
|
||||||
config = writeText "gradle.properties" (''
|
|
||||||
CONF = Release
|
|
||||||
JDK_HOME = ${openjdk11-bootstrap.home}
|
|
||||||
'' + args.gradleProperties or "");
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
runHook preBuild
|
|
||||||
|
|
||||||
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
|
||||||
export GRADLE_USER_HOME=$(mktemp -d)
|
|
||||||
ln -s $config gradle.properties
|
|
||||||
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
|
||||||
gradle --no-daemon --console=plain $gradleFlags sdk
|
|
||||||
|
|
||||||
runHook postBuild
|
|
||||||
'';
|
|
||||||
} // args);
|
|
||||||
|
|
||||||
# Fake build to pre-download deps into fixed-output derivation.
|
|
||||||
# We run nearly full build because I see no other way to download everything that's needed.
|
|
||||||
# Anyone who knows a better way?
|
|
||||||
deps = makePackage {
|
|
||||||
pname = "openjfx-deps";
|
|
||||||
|
|
||||||
# perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
|
|
||||||
installPhase = ''
|
|
||||||
find $GRADLE_USER_HOME -type f -regex '.*/modules.*\.\(jar\|pom\)' \
|
|
||||||
| perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
|
|
||||||
| sh
|
|
||||||
rm -rf $out/tmp
|
|
||||||
'';
|
|
||||||
|
|
||||||
outputHashAlgo = "sha256";
|
|
||||||
outputHashMode = "recursive";
|
|
||||||
outputHash = "sha256-syceJMUEknBDCHK8eGs6rUU3IQn+HnQfURfCrDxYPa9=";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
in makePackage {
|
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4-headless ];
|
||||||
pname = "openjfx-modular-sdk";
|
nativeBuildInputs = [ gradle perl pkg-config cmake gperf python3 ruby ];
|
||||||
|
|
||||||
gradleProperties = ''
|
dontUseCmakeConfigure = true;
|
||||||
|
|
||||||
|
config = writeText "gradle.properties" ''
|
||||||
|
CONF = Release
|
||||||
|
JDK_HOME = ${jdk.home}
|
||||||
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
||||||
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
||||||
${lib.optionalString withWebKit "icuRepositoryURL = file://${icuFakeRepository}"}
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preBuild = ''
|
postPatch = ''
|
||||||
swtJar="$(find ${deps} -name org.eclipse.swt\*.jar)"
|
substituteInPlace buildSrc/linux.gradle \
|
||||||
substituteInPlace build.gradle \
|
--replace ', "-Werror=implicit-function-declaration"' ""
|
||||||
--replace 'mavenCentral()' 'mavenLocal(); maven { url uri("${deps}") }' \
|
|
||||||
--replace 'name: SWT_FILE_NAME' "files('$swtJar')"
|
# Add missing includes for gcc-13 for webkit build:
|
||||||
|
sed -e '1i #include <cstdio>' \
|
||||||
|
-i modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/Heap.cpp \
|
||||||
|
modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/IsoSharedPageInlines.h
|
||||||
|
|
||||||
|
ln -s $config gradle.properties
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
mitmCache = gradle.fetchDeps {
|
||||||
|
attrPath = "openjfx${major}";
|
||||||
|
pkg = pkgs."openjfx${major}".override { withWebKit = true; };
|
||||||
|
data = ./deps.json;
|
||||||
|
};
|
||||||
|
|
||||||
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
||||||
|
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = false;
|
||||||
|
|
||||||
|
gradleBuildTask = "sdk";
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
cp -r build/modular-sdk $out
|
cp -r build/modular-sdk $out
|
||||||
'';
|
'';
|
||||||
@ -110,18 +74,16 @@ in makePackage {
|
|||||||
|
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
# Remove references to bootstrap.
|
# Remove references to bootstrap.
|
||||||
|
export openjdkOutPath='${jdk.outPath}'
|
||||||
find "$out" -name \*.so | while read lib; do
|
find "$out" -name \*.so | while read lib; do
|
||||||
new_refs="$(patchelf --print-rpath "$lib" | sed -E 's,:?${openjdk11-bootstrap}[^:]*,,')"
|
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
||||||
patchelf --set-rpath "$new_refs" "$lib"
|
patchelf --set-rpath "$new_refs" "$lib"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Remove licenses, otherwise they may conflict with the ones included in the openjdk
|
# Remove licenses, otherwise they may conflict with the ones included in the openjdk
|
||||||
rm -rf $out/modules_legal/*
|
rm -rf $out/modules_legal/*
|
||||||
'';
|
'';
|
||||||
|
|
||||||
disallowedReferences = [ openjdk11-bootstrap ];
|
disallowedReferences = [ jdk gradle.jdk ];
|
||||||
|
|
||||||
passthru.deps = deps;
|
|
||||||
|
|
||||||
# Uses a lot of RAM, OOMs otherwise
|
# Uses a lot of RAM, OOMs otherwise
|
||||||
requiredSystemFeatures = [ "big-parallel" ];
|
requiredSystemFeatures = [ "big-parallel" ];
|
||||||
|
152
pkgs/development/compilers/openjdk/openjfx/11/deps.json
generated
Normal file
152
pkgs/development/compilers/openjdk/openjfx/11/deps.json
generated
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
{
|
||||||
|
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
|
||||||
|
"!version": 1,
|
||||||
|
"https://download.eclipse.org": {
|
||||||
|
"eclipse/updates/4.6/R-4.6.3-201703010400/plugins/org.eclipse.swt.gtk.linux.x86_64_3.105.3.v20170228-0512": {
|
||||||
|
"jar": "sha256-qWM1HV97griQxJlOFY2AVV2uOLAK87jXPzh1wh/zmLw="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://github.com": {
|
||||||
|
"unicode-org/icu/releases/download/release-71-1/icu4c-71_1-data-bin-l": {
|
||||||
|
"zip": "sha256-pVWIy0BkICsthA5mxhR9SJQHleMNnaEcGl/AaLi5qZM="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://repo.maven.apache.org/maven2": {
|
||||||
|
"com/ibm/icu#icu4j/61.1": {
|
||||||
|
"jar": "sha256-VcmOsYOLKku5oH3Da9N4Uy1k0M3LfO7pFCNoZqfeRGQ=",
|
||||||
|
"pom": "sha256-E7h6QHnOsFUVsZrHoVIDlHB1YB1JQj9xk1ikmACYBWs="
|
||||||
|
},
|
||||||
|
"junit#junit/4.13.2": {
|
||||||
|
"jar": "sha256-jklbY0Rp1k+4rPo0laBly6zIoP/1XOHjEAe+TBbcV9M=",
|
||||||
|
"pom": "sha256-Vptpd+5GA8llwcRsMFj6bpaSkbAWDraWTdCSzYnq3ZQ="
|
||||||
|
},
|
||||||
|
"net/java#jvnet-parent/3": {
|
||||||
|
"pom": "sha256-MPV4nvo53b+WCVqto/wSYMRWH68vcUaGcXyy3FBJR1o="
|
||||||
|
},
|
||||||
|
"org/abego/treelayout#org.abego.treelayout.core/1.0.3": {
|
||||||
|
"jar": "sha256-+l4xOVw5wufUasoPgfcgYJMWB7L6Qb02A46yy2+5MyY=",
|
||||||
|
"pom": "sha256-o7KyI3lDcDVeeSQzrwEvyZNmfAMxviusrYTbwJrOSgw="
|
||||||
|
},
|
||||||
|
"org/antlr#ST4/4.1": {
|
||||||
|
"jar": "sha256-ixzK7Z7cVc0lXZwZxNjaR1bZtvy0NWcSkrQ0cLFtddg=",
|
||||||
|
"pom": "sha256-cz5r2XyjTMbfk6QkPlEeVnPLm4jHSxiETgQqRdUWmHw="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-master/3.5.2": {
|
||||||
|
"pom": "sha256-QtkaUx6lEA6wm1QaoALDuQjo8oK9c7bi9S83HvEzG9Y="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-runtime/3.5.2": {
|
||||||
|
"jar": "sha256-zj/I7LEPOemjzdy7LONQ0nLZzT0LHhjm/nPDuTichzQ=",
|
||||||
|
"pom": "sha256-RqnCIAu4sSvXEkqnpQl/9JCZkIMpyFGgTLIFFCCqfyU="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-master/4.7.2": {
|
||||||
|
"pom": "sha256-upnLJdI5DzhoDHUChCoO4JWdHmQD4BPM/2mP1YVu6tE="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-runtime/4.7.2": {
|
||||||
|
"jar": "sha256-TFGLh9S9/4tEzYy8GvgW6US2Kj/luAt4FQHPH0dZu8Q=",
|
||||||
|
"pom": "sha256-3AnLqYwl08BuSuxRaIXUw68DBiulX0/mKD/JzxdqYPs="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2": {
|
||||||
|
"pom": "sha256-z56zaUD6xEiBA4wb4/LFjgbmjRq/v9SmjTS72LrFV3E="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2/complete": {
|
||||||
|
"jar": "sha256-aFI4bXl17/KRcdrgAswiMlFRDTXyka4neUjzgaezgLQ="
|
||||||
|
},
|
||||||
|
"org/apache#apache/13": {
|
||||||
|
"pom": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-core/7.1.0": {
|
||||||
|
"jar": "sha256-vG3+7tCrp0MCqSCBH/1snkVlvviTzMOvg2Iz36s8UTo=",
|
||||||
|
"pom": "sha256-d7ysnMSDKiKSGJgng2ASB8yYvldcyIRDNtWuBzkbPuE="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-grouping/7.1.0": {
|
||||||
|
"jar": "sha256-5wh/sGDRWa1xvW7p6W8BYGpaM1OgxJofHQ49oPUaTlo=",
|
||||||
|
"pom": "sha256-738k/3YjlZSfxMiDl1npJhD8mx8Nifmbtw+haHNh2Ec="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-parent/7.1.0": {
|
||||||
|
"pom": "sha256-l7M9mcedTRIoIuWDY0cGvGmfRCvp3tksZiKdEn+WoAc="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queries/7.1.0": {
|
||||||
|
"jar": "sha256-qamOR/ueclsDerV+wZts4QVBIoTLXl2aGs99Xv8TSTY=",
|
||||||
|
"pom": "sha256-pvMWrRvMdKy3f3mP/AIKy9aD3nx5OUrFNgAdE6vktVY="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queryparser/7.1.0": {
|
||||||
|
"jar": "sha256-HNuCsiqq3bGJW9OjSVinyaOgb/0NZ6sskNvDegRshlQ=",
|
||||||
|
"pom": "sha256-K7m67AcL6g3a5aj1rrDOZlJpBeA4THS+18OrIJ52hdM="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-sandbox/7.1.0": {
|
||||||
|
"jar": "sha256-wZA9Xag+IIZp2NkzdJeeFAIUNYsq32c1sa488kkJW+E=",
|
||||||
|
"pom": "sha256-WL5E6wSMD0If6eul+30xhr7gk7g72F4w5EKbbctVZMU="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-solr-grandparent/7.1.0": {
|
||||||
|
"pom": "sha256-3NW0Q/KK2QPk/wfTMigGxTF4BWuctNQU+2gMyArhGsU="
|
||||||
|
},
|
||||||
|
"org/apiguardian#apiguardian-api/1.1.2": {
|
||||||
|
"jar": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=",
|
||||||
|
"module": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=",
|
||||||
|
"pom": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA="
|
||||||
|
},
|
||||||
|
"org/glassfish#javax.json/1.0.4": {
|
||||||
|
"jar": "sha256-Dh3sQKHt6WWUElHtqWiu7gUsxPUDeLwxbMSOgVm9vrQ=",
|
||||||
|
"pom": "sha256-a6+Dg/+pi2bqls1b/B7H8teUY7uYrJgFKWSxIcIhLVQ="
|
||||||
|
},
|
||||||
|
"org/glassfish#json/1.0.4": {
|
||||||
|
"pom": "sha256-bXxoQjEV+SFxjZRPhZkktMaFIX7AOkn3BFWossqpcuY="
|
||||||
|
},
|
||||||
|
"org/hamcrest#hamcrest-core/1.3": {
|
||||||
|
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
|
||||||
|
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
|
||||||
|
},
|
||||||
|
"org/hamcrest#hamcrest-parent/1.3": {
|
||||||
|
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
|
||||||
|
},
|
||||||
|
"org/junit#junit-bom/5.8.1": {
|
||||||
|
"module": "sha256-a4LLpSoTSxPBmC8M+WIsbUhTcdQLmJJG8xJOOwpbGFQ=",
|
||||||
|
"pom": "sha256-733Ef45KFoZPR3lyjofteFOYGeT7iSdoqdprjvkD+GM="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-api/5.8.1": {
|
||||||
|
"jar": "sha256-zjN0p++6YF4tK2mj/vkBNAMrqz7MPthXmkhxscLEcpw=",
|
||||||
|
"module": "sha256-DWnbwja33Kq0ynNpqlYOmwqbvvf5WIgv+0hTPLunwJ0=",
|
||||||
|
"pom": "sha256-d61+1KYwutH8h0agpuZ1wj+2lAsnq2LMyzTk/Pz+Ob8="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-engine/5.8.1": {
|
||||||
|
"jar": "sha256-Rom8kCJVoZ/pgndoO6MjHAlNEHxUyNNfK2+cl9ImQY4=",
|
||||||
|
"module": "sha256-aHkP7DP5ew7IQM9HrEDuDHLgVvEiyg88ZkZ0M0mTdpk=",
|
||||||
|
"pom": "sha256-qjIKMYpyceMyYsSA/POZZbmobap2Zm63dTQrgOnN1F4="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-params/5.8.1": {
|
||||||
|
"jar": "sha256-OJuNE6jYhy/L1PDrp7LEavxihBn5obKjqfkyQaBqchg=",
|
||||||
|
"module": "sha256-Ek1gPG2AMzZtjKRxY2tEbji5zBvQEPMpVCNYGHr6hl4=",
|
||||||
|
"pom": "sha256-OrrKWfvfJTMg9yRCwQPjnOQDjcEf6MSJ28ScwjoHHws="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter/5.8.1": {
|
||||||
|
"jar": "sha256-jxBJ7iSzShC2DNgQBICZ94HCZYzeIYHoMUlqswqYKYU=",
|
||||||
|
"module": "sha256-LjS6TIWMOM0KNlr//syTKnGWzpOF4utUBZQuWBwV/1w=",
|
||||||
|
"pom": "sha256-rssFDSMtOT9Az/EfjMMPUrZslQpB+IOSXIEULt7l9PU="
|
||||||
|
},
|
||||||
|
"org/junit/platform#junit-platform-commons/1.8.1": {
|
||||||
|
"jar": "sha256-+k+mjIvVTdDLScP8vpsuQvTaa+2+fnzPKgXxoeYJtZM=",
|
||||||
|
"module": "sha256-aY/QVBrLfv/GZZhI/Qx91QEKSfFfDBy6Q+U1gH+Q9ms=",
|
||||||
|
"pom": "sha256-4ZcoLlLnANEriJie3FSJh0aTUC5KqJB6zwgpgBq6bUQ="
|
||||||
|
},
|
||||||
|
"org/junit/platform#junit-platform-engine/1.8.1": {
|
||||||
|
"jar": "sha256-cCho7X6GubRnLt4PHhhekFusqa+rV3RqfGUL48e8oEc=",
|
||||||
|
"module": "sha256-2fQgpkU5o+32D4DfDG/XIrdQcldEx5ykD30lrlbKS6Q=",
|
||||||
|
"pom": "sha256-hqrU5ld1TkOgDfIm3VTIrsHsarZTP1ASGQfkZi3i5fI="
|
||||||
|
},
|
||||||
|
"org/junit/vintage#junit-vintage-engine/5.8.1": {
|
||||||
|
"jar": "sha256-F2tTzRvb+SM+lsiwx6nluGQoL7veukO1zq/e2ymkkVY=",
|
||||||
|
"module": "sha256-nOn6Lk7mp0DWEBAlMEYqcc4PqdLxQYUi5LK9tgcvZ5o=",
|
||||||
|
"pom": "sha256-Ndc3M08dvouMVnZ/oVCKwbVEsB1P5cmXl76QA+5YGxI="
|
||||||
|
},
|
||||||
|
"org/opentest4j#opentest4j/1.2.0": {
|
||||||
|
"jar": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=",
|
||||||
|
"pom": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/7": {
|
||||||
|
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/9": {
|
||||||
|
"pom": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, lib, fetchFromGitHub, writeText, openjdk11_headless, gradle_6
|
{ stdenv, lib, pkgs, fetchFromGitHub, writeText, openjdk11_headless, gradle_6
|
||||||
, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst, libXxf86vm, glib, alsa-lib
|
, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst, libXxf86vm, glib, alsa-lib
|
||||||
, ffmpeg_4-headless, python3, ruby
|
, ffmpeg_4-headless, python3, ruby
|
||||||
, withMedia ? true
|
, withMedia ? true
|
||||||
@ -6,115 +6,80 @@
|
|||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
pname = "openjfx-modular-sdk";
|
||||||
major = "15";
|
major = "15";
|
||||||
update = ".0.1";
|
update = ".0.1";
|
||||||
build = "+1";
|
build = "+1";
|
||||||
repover = "${major}${update}${build}";
|
repover = "${major}${update}${build}";
|
||||||
gradle_ = (gradle_6.override {
|
jdk = openjdk11_headless;
|
||||||
java = openjdk11_headless;
|
gradle = gradle_6;
|
||||||
});
|
|
||||||
|
|
||||||
makePackage = args: stdenv.mkDerivation ({
|
in stdenv.mkDerivation {
|
||||||
version = "${major}${update}${build}";
|
inherit pname;
|
||||||
|
version = "${major}${update}${build}";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "openjdk";
|
owner = "openjdk";
|
||||||
repo = "jfx";
|
repo = "jfx";
|
||||||
rev = repover;
|
rev = repover;
|
||||||
sha256 = "019glq8rhn6amy3n5jc17vi2wpf1pxpmmywvyz1ga8n09w7xscq1";
|
sha256 = "019glq8rhn6amy3n5jc17vi2wpf1pxpmmywvyz1ga8n09w7xscq1";
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4-headless ];
|
|
||||||
nativeBuildInputs = [ gradle_ perl pkg-config cmake gperf python3 ruby ];
|
|
||||||
|
|
||||||
dontUseCmakeConfigure = true;
|
|
||||||
|
|
||||||
config = writeText "gradle.properties" (''
|
|
||||||
CONF = Release
|
|
||||||
JDK_HOME = ${openjdk11_headless.home}
|
|
||||||
'' + args.gradleProperties or "");
|
|
||||||
|
|
||||||
env.NIX_CFLAGS_COMPILE = toString [
|
|
||||||
#avoids errors about deprecation of GTypeDebugFlags, GTimeVal, etc.
|
|
||||||
"-DGLIB_DISABLE_DEPRECATION_WARNINGS"
|
|
||||||
|
|
||||||
# gstreamer workaround for -fno-common toolchains:
|
|
||||||
# ld: gsttypefindelement.o:(.bss._gst_disable_registry_cache+0x0): multiple definition of
|
|
||||||
# `_gst_disable_registry_cache'; gst.o:(.bss._gst_disable_registry_cache+0x0): first defined here
|
|
||||||
"-fcommon"
|
|
||||||
];
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
runHook preBuild
|
|
||||||
|
|
||||||
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
|
||||||
export GRADLE_USER_HOME=$(mktemp -d)
|
|
||||||
ln -s $config gradle.properties
|
|
||||||
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
|
||||||
gradle --no-daemon $gradleFlags sdk
|
|
||||||
|
|
||||||
runHook postBuild
|
|
||||||
'';
|
|
||||||
} // args);
|
|
||||||
|
|
||||||
# Fake build to pre-download deps into fixed-output derivation.
|
|
||||||
# We run nearly full build because I see no other way to download everything that's needed.
|
|
||||||
# Anyone who knows a better way?
|
|
||||||
deps = makePackage {
|
|
||||||
pname = "openjfx-deps";
|
|
||||||
|
|
||||||
# perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
|
|
||||||
installPhase = ''
|
|
||||||
find $GRADLE_USER_HOME -type f -regex '.*/modules.*\.\(jar\|pom\)' \
|
|
||||||
| perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
|
|
||||||
| sh
|
|
||||||
rm -rf $out/tmp
|
|
||||||
'';
|
|
||||||
|
|
||||||
outputHashAlgo = "sha256";
|
|
||||||
outputHashMode = "recursive";
|
|
||||||
outputHash = "sha256-fGLTMM9s/Vn7eMzn6OQR3tL0cGbAYc7c4J4/aW3JvkI=";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
in makePackage {
|
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4-headless ];
|
||||||
pname = "openjfx-modular-sdk";
|
nativeBuildInputs = [ gradle perl pkg-config cmake gperf python3 ruby ];
|
||||||
|
|
||||||
gradleProperties = ''
|
dontUseCmakeConfigure = true;
|
||||||
|
|
||||||
|
config = writeText "gradle.properties" ''
|
||||||
|
CONF = Release
|
||||||
|
JDK_HOME = ${jdk.home}
|
||||||
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
||||||
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preBuild = ''
|
postPatch = ''
|
||||||
swtJar="$(find ${deps} -name org.eclipse.swt\*.jar)"
|
ln -s $config gradle.properties
|
||||||
substituteInPlace build.gradle \
|
|
||||||
--replace 'mavenCentral()' 'mavenLocal(); maven { url uri("${deps}") }' \
|
|
||||||
--replace 'name: SWT_FILE_NAME' "files('$swtJar')"
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
mitmCache = gradle.fetchDeps {
|
||||||
|
attrPath = "openjfx${major}";
|
||||||
|
pkg = pkgs."openjfx${major}".override { withWebKit = true; };
|
||||||
|
data = ./deps.json;
|
||||||
|
};
|
||||||
|
|
||||||
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
||||||
|
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
||||||
|
# avoids errors about deprecation of GTypeDebugFlags, GTimeVal, etc.
|
||||||
|
export NIX_CFLAGS_COMPILE="-DGLIB_DISABLE_DEPRECATION_WARNINGS $NIX_CFLAGS_COMPILE"
|
||||||
|
# gstreamer workaround for -fno-common toolchains:
|
||||||
|
# ld: gsttypefindelement.o:(.bss._gst_disable_registry_cache+0x0): multiple definition of
|
||||||
|
# `_gst_disable_registry_cache'; gst.o:(.bss._gst_disable_registry_cache+0x0): first defined here
|
||||||
|
export NIX_CFLAGS_COMPILE="-fcommon $NIX_CFLAGS_COMPILE"
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = false;
|
||||||
|
|
||||||
|
gradleBuildTask = "sdk";
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
cp -r build/modular-sdk $out
|
cp -r build/modular-sdk $out
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# glib-2.62 deprecations
|
|
||||||
# -fcommon: gstreamer workaround for -fno-common toolchains:
|
|
||||||
# ld: gsttypefindelement.o:(.bss._gst_disable_registry_cache+0x0): multiple definition of
|
|
||||||
# `_gst_disable_registry_cache'; gst.o:(.bss._gst_disable_registry_cache+0x0): first defined here
|
|
||||||
env.NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS -fcommon";
|
|
||||||
|
|
||||||
stripDebugList = [ "." ];
|
stripDebugList = [ "." ];
|
||||||
|
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
# Remove references to bootstrap.
|
# Remove references to bootstrap.
|
||||||
export openjdkOutPath='${openjdk11_headless.outPath}'
|
export openjdkOutPath='${jdk.outPath}'
|
||||||
find "$out" -name \*.so | while read lib; do
|
find "$out" -name \*.so | while read lib; do
|
||||||
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
||||||
patchelf --set-rpath "$new_refs" "$lib"
|
patchelf --set-rpath "$new_refs" "$lib"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
disallowedReferences = [ openjdk11_headless ];
|
disallowedReferences = [ jdk gradle.jdk ];
|
||||||
|
|
||||||
passthru.deps = deps;
|
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "http://openjdk.java.net/projects/openjfx/";
|
homepage = "http://openjdk.java.net/projects/openjfx/";
|
||||||
|
92
pkgs/development/compilers/openjdk/openjfx/15/deps.json
generated
Normal file
92
pkgs/development/compilers/openjdk/openjfx/15/deps.json
generated
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
{
|
||||||
|
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
|
||||||
|
"!version": 1,
|
||||||
|
"https://download.eclipse.org": {
|
||||||
|
"eclipse/updates/4.6/R-4.6.3-201703010400/plugins/org.eclipse.swt.gtk.linux.x86_64_3.105.3.v20170228-0512": {
|
||||||
|
"jar": "sha256-qWM1HV97griQxJlOFY2AVV2uOLAK87jXPzh1wh/zmLw="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://repo.maven.apache.org/maven2": {
|
||||||
|
"com/ibm/icu#icu4j/61.1": {
|
||||||
|
"jar": "sha256-VcmOsYOLKku5oH3Da9N4Uy1k0M3LfO7pFCNoZqfeRGQ=",
|
||||||
|
"pom": "sha256-E7h6QHnOsFUVsZrHoVIDlHB1YB1JQj9xk1ikmACYBWs="
|
||||||
|
},
|
||||||
|
"junit#junit/4.8.2": {
|
||||||
|
"jar": "sha256-oqosO7K3LadsPmpxUx8e79w1BJSBm68rHYDXFG4CD54=",
|
||||||
|
"pom": "sha256-3znTTR9YMLLYqSeQxmtXmDWLCz4BRS3IWzciqIGtkj4="
|
||||||
|
},
|
||||||
|
"net/java#jvnet-parent/3": {
|
||||||
|
"pom": "sha256-MPV4nvo53b+WCVqto/wSYMRWH68vcUaGcXyy3FBJR1o="
|
||||||
|
},
|
||||||
|
"org/abego/treelayout#org.abego.treelayout.core/1.0.3": {
|
||||||
|
"jar": "sha256-+l4xOVw5wufUasoPgfcgYJMWB7L6Qb02A46yy2+5MyY=",
|
||||||
|
"pom": "sha256-o7KyI3lDcDVeeSQzrwEvyZNmfAMxviusrYTbwJrOSgw="
|
||||||
|
},
|
||||||
|
"org/antlr#ST4/4.1": {
|
||||||
|
"jar": "sha256-ixzK7Z7cVc0lXZwZxNjaR1bZtvy0NWcSkrQ0cLFtddg=",
|
||||||
|
"pom": "sha256-cz5r2XyjTMbfk6QkPlEeVnPLm4jHSxiETgQqRdUWmHw="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-master/3.5.2": {
|
||||||
|
"pom": "sha256-QtkaUx6lEA6wm1QaoALDuQjo8oK9c7bi9S83HvEzG9Y="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-runtime/3.5.2": {
|
||||||
|
"jar": "sha256-zj/I7LEPOemjzdy7LONQ0nLZzT0LHhjm/nPDuTichzQ=",
|
||||||
|
"pom": "sha256-RqnCIAu4sSvXEkqnpQl/9JCZkIMpyFGgTLIFFCCqfyU="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-master/4.7.2": {
|
||||||
|
"pom": "sha256-upnLJdI5DzhoDHUChCoO4JWdHmQD4BPM/2mP1YVu6tE="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-runtime/4.7.2": {
|
||||||
|
"jar": "sha256-TFGLh9S9/4tEzYy8GvgW6US2Kj/luAt4FQHPH0dZu8Q=",
|
||||||
|
"pom": "sha256-3AnLqYwl08BuSuxRaIXUw68DBiulX0/mKD/JzxdqYPs="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2": {
|
||||||
|
"pom": "sha256-z56zaUD6xEiBA4wb4/LFjgbmjRq/v9SmjTS72LrFV3E="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2/complete": {
|
||||||
|
"jar": "sha256-aFI4bXl17/KRcdrgAswiMlFRDTXyka4neUjzgaezgLQ="
|
||||||
|
},
|
||||||
|
"org/apache#apache/13": {
|
||||||
|
"pom": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-core/7.7.2": {
|
||||||
|
"jar": "sha256-gUOKydZ4BQxUbSqEEsxyg6XSD9hcNxQhhEfHWBZZT10=",
|
||||||
|
"pom": "sha256-MPuqRu1exVS+3nILqReeEqTnQVHh+IaSBJbYREuwVZE="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-grouping/7.7.2": {
|
||||||
|
"jar": "sha256-nKhrWw/YSbq50xpk7RvP8cdTGrHP1z/E/tJDBmX7rUo=",
|
||||||
|
"pom": "sha256-UezgO9APIm2uObABf5OZPPfXbSju8LQl+MzborrBs3w="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-parent/7.7.2": {
|
||||||
|
"pom": "sha256-fXiTJSgZw4Sx0lvUA6Go85DYUF+VQOHigRcZymjP7zQ="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queries/7.7.2": {
|
||||||
|
"jar": "sha256-n8XsO17OwtKV0/xM+Dc5LfuWntYegaMr0/3SH4DbfHk=",
|
||||||
|
"pom": "sha256-D4rAB9QDQb6gD3/s7m1Ewu7ZXQTi66KEf2CBJJLOcoQ="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queryparser/7.7.2": {
|
||||||
|
"jar": "sha256-v9lKUL8FAf0H5prk9J28FJzjaUoFZrsWTXxui+VeK9Q=",
|
||||||
|
"pom": "sha256-DmVV70KT9yjEqJhOuuNUK+N7KThK/gcQjPy+R/AS3Us="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-sandbox/7.7.2": {
|
||||||
|
"jar": "sha256-dqY72JMAjr7tJJeePyUIXIkJ/0vEEv33iAJfntoKvhE=",
|
||||||
|
"pom": "sha256-zwJCiBB2rdYRwEPZZPtrduPRnAQn7/r/Qhc6ZQ+Bk5s="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-solr-grandparent/7.7.2": {
|
||||||
|
"pom": "sha256-a0oZeEo3uKoSdf5mCEZKHZvSlLVv6WgRIgfkDEKETqc="
|
||||||
|
},
|
||||||
|
"org/glassfish#javax.json/1.0.4": {
|
||||||
|
"jar": "sha256-Dh3sQKHt6WWUElHtqWiu7gUsxPUDeLwxbMSOgVm9vrQ=",
|
||||||
|
"pom": "sha256-a6+Dg/+pi2bqls1b/B7H8teUY7uYrJgFKWSxIcIhLVQ="
|
||||||
|
},
|
||||||
|
"org/glassfish#json/1.0.4": {
|
||||||
|
"pom": "sha256-bXxoQjEV+SFxjZRPhZkktMaFIX7AOkn3BFWossqpcuY="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/7": {
|
||||||
|
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/9": {
|
||||||
|
"pom": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,104 +1,68 @@
|
|||||||
{ stdenv, lib, fetchFromGitHub, writeText, openjdk17_headless, gradle_7
|
{ stdenv, lib, pkgs, fetchFromGitHub, writeText, openjdk17_headless, gradle_7
|
||||||
, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst, libXxf86vm, glib, alsa-lib
|
, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst, libXxf86vm, glib, alsa-lib
|
||||||
, ffmpeg_4-headless, python3, ruby, fetchurl, runCommand
|
, ffmpeg_4-headless, python3, ruby
|
||||||
, withMedia ? true
|
, withMedia ? true
|
||||||
, withWebKit ? false
|
, withWebKit ? false
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
pname = "openjfx-modular-sdk";
|
||||||
major = "17";
|
major = "17";
|
||||||
update = ".0.11";
|
update = ".0.11";
|
||||||
build = "-ga";
|
build = "-ga";
|
||||||
repover = "${major}${update}${build}";
|
repover = "${major}${update}${build}";
|
||||||
gradle_ = (gradle_7.override {
|
jdk = openjdk17_headless;
|
||||||
java = openjdk17_headless;
|
gradle = gradle_7;
|
||||||
});
|
|
||||||
|
|
||||||
icuVersionWithSep = s: "71${s}1";
|
in stdenv.mkDerivation {
|
||||||
icuPath = "download/release-${icuVersionWithSep "-"}/icu4c-${icuVersionWithSep "_"}-data-bin-l.zip";
|
inherit pname;
|
||||||
icuData = fetchurl {
|
version = "${major}${update}${build}";
|
||||||
url = "https://github.com/unicode-org/icu/releases/${icuPath}";
|
|
||||||
hash = "sha256-pVWIy0BkICsthA5mxhR9SJQHleMNnaEcGl/AaLi5qZM=";
|
|
||||||
};
|
|
||||||
icuFakeRepository = runCommand "icu-data-repository" {} ''
|
|
||||||
install -Dm644 ${icuData} $out/${icuPath}
|
|
||||||
'';
|
|
||||||
|
|
||||||
makePackage = args: stdenv.mkDerivation ({
|
src = fetchFromGitHub {
|
||||||
version = "${major}${update}${build}";
|
owner = "openjdk";
|
||||||
|
repo = "jfx${major}u";
|
||||||
src = fetchFromGitHub {
|
rev = repover;
|
||||||
owner = "openjdk";
|
sha256 = "sha256-9VfXk2EfMebMyVKPohPRP2QXRFf8XemUtfY0JtBCHyw=";
|
||||||
repo = "jfx${major}u";
|
|
||||||
rev = repover;
|
|
||||||
sha256 = "sha256-WV8NHlYlt7buGbirLSorLnS2TnyBD17zUquFfwSL3xE=";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4-headless ];
|
|
||||||
nativeBuildInputs = [ gradle_ perl pkg-config cmake gperf python3 ruby ];
|
|
||||||
|
|
||||||
dontUseCmakeConfigure = true;
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
# Add missing includes for gcc-13 for webkit build:
|
|
||||||
sed -e '1i #include <cstdio>' \
|
|
||||||
-i modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/Heap.cpp \
|
|
||||||
modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/IsoSharedPageInlines.h
|
|
||||||
'';
|
|
||||||
|
|
||||||
config = writeText "gradle.properties" (''
|
|
||||||
CONF = Release
|
|
||||||
JDK_HOME = ${openjdk17_headless.home}
|
|
||||||
'' + args.gradleProperties or "");
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
runHook preBuild
|
|
||||||
|
|
||||||
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
|
||||||
export GRADLE_USER_HOME=$(mktemp -d)
|
|
||||||
ln -s $config gradle.properties
|
|
||||||
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
|
||||||
gradle --no-daemon --console=plain $gradleFlags sdk
|
|
||||||
|
|
||||||
runHook postBuild
|
|
||||||
'';
|
|
||||||
} // args);
|
|
||||||
|
|
||||||
# Fake build to pre-download deps into fixed-output derivation.
|
|
||||||
# We run nearly full build because I see no other way to download everything that's needed.
|
|
||||||
# Anyone who knows a better way?
|
|
||||||
deps = makePackage {
|
|
||||||
pname = "openjfx-deps";
|
|
||||||
|
|
||||||
# perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
|
|
||||||
installPhase = ''
|
|
||||||
find $GRADLE_USER_HOME -type f -regex '.*/modules.*\.\(jar\|pom\)' \
|
|
||||||
| perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
|
|
||||||
| sh
|
|
||||||
rm -rf $out/tmp
|
|
||||||
'';
|
|
||||||
|
|
||||||
outputHashAlgo = "sha256";
|
|
||||||
outputHashMode = "recursive";
|
|
||||||
outputHash = "sha256-dV7/U5GpFxhI13smZ587C6cVE4FRNPY0zexZkYK4Yqo=";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
in makePackage {
|
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4-headless ];
|
||||||
pname = "openjfx-modular-sdk";
|
nativeBuildInputs = [ gradle perl pkg-config cmake gperf python3 ruby ];
|
||||||
|
|
||||||
gradleProperties = ''
|
dontUseCmakeConfigure = true;
|
||||||
|
|
||||||
|
config = writeText "gradle.properties" ''
|
||||||
|
CONF = Release
|
||||||
|
JDK_HOME = ${jdk.home}
|
||||||
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
||||||
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
||||||
${lib.optionalString withWebKit "icuRepositoryURL = file://${icuFakeRepository}"}
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preBuild = ''
|
postPatch = ''
|
||||||
swtJar="$(find ${deps} -name org.eclipse.swt\*.jar)"
|
# Add missing includes for gcc-13 for webkit build:
|
||||||
substituteInPlace build.gradle \
|
sed -e '1i #include <cstdio>' \
|
||||||
--replace 'mavenCentral()' 'mavenLocal(); maven { url uri("${deps}") }' \
|
-i modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/Heap.cpp \
|
||||||
--replace 'name: SWT_FILE_NAME' "files('$swtJar')"
|
modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/IsoSharedPageInlines.h
|
||||||
|
|
||||||
|
ln -s $config gradle.properties
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
mitmCache = gradle.fetchDeps {
|
||||||
|
attrPath = "openjfx${major}";
|
||||||
|
pkg = pkgs."openjfx${major}".override { withWebKit = true; };
|
||||||
|
data = ./deps.json;
|
||||||
|
};
|
||||||
|
|
||||||
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
||||||
|
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = false;
|
||||||
|
|
||||||
|
gradleBuildTask = "sdk";
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
cp -r build/modular-sdk $out
|
cp -r build/modular-sdk $out
|
||||||
'';
|
'';
|
||||||
@ -107,16 +71,14 @@ in makePackage {
|
|||||||
|
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
# Remove references to bootstrap.
|
# Remove references to bootstrap.
|
||||||
export openjdkOutPath='${openjdk17_headless.outPath}'
|
export openjdkOutPath='${jdk.outPath}'
|
||||||
find "$out" -name \*.so | while read lib; do
|
find "$out" -name \*.so | while read lib; do
|
||||||
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
||||||
patchelf --set-rpath "$new_refs" "$lib"
|
patchelf --set-rpath "$new_refs" "$lib"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
disallowedReferences = [ openjdk17_headless ];
|
disallowedReferences = [ jdk gradle.jdk ];
|
||||||
|
|
||||||
passthru.deps = deps;
|
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "http://openjdk.java.net/projects/openjfx/";
|
homepage = "http://openjdk.java.net/projects/openjfx/";
|
||||||
|
152
pkgs/development/compilers/openjdk/openjfx/17/deps.json
generated
Normal file
152
pkgs/development/compilers/openjdk/openjfx/17/deps.json
generated
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
{
|
||||||
|
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
|
||||||
|
"!version": 1,
|
||||||
|
"https://download.eclipse.org": {
|
||||||
|
"eclipse/updates/4.6/R-4.6.3-201703010400/plugins/org.eclipse.swt.gtk.linux.x86_64_3.105.3.v20170228-0512": {
|
||||||
|
"jar": "sha256-qWM1HV97griQxJlOFY2AVV2uOLAK87jXPzh1wh/zmLw="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://github.com": {
|
||||||
|
"unicode-org/icu/releases/download/release-71-1/icu4c-71_1-data-bin-l": {
|
||||||
|
"zip": "sha256-pVWIy0BkICsthA5mxhR9SJQHleMNnaEcGl/AaLi5qZM="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://repo.maven.apache.org/maven2": {
|
||||||
|
"com/ibm/icu#icu4j/61.1": {
|
||||||
|
"jar": "sha256-VcmOsYOLKku5oH3Da9N4Uy1k0M3LfO7pFCNoZqfeRGQ=",
|
||||||
|
"pom": "sha256-E7h6QHnOsFUVsZrHoVIDlHB1YB1JQj9xk1ikmACYBWs="
|
||||||
|
},
|
||||||
|
"junit#junit/4.13.2": {
|
||||||
|
"jar": "sha256-jklbY0Rp1k+4rPo0laBly6zIoP/1XOHjEAe+TBbcV9M=",
|
||||||
|
"pom": "sha256-Vptpd+5GA8llwcRsMFj6bpaSkbAWDraWTdCSzYnq3ZQ="
|
||||||
|
},
|
||||||
|
"net/java#jvnet-parent/3": {
|
||||||
|
"pom": "sha256-MPV4nvo53b+WCVqto/wSYMRWH68vcUaGcXyy3FBJR1o="
|
||||||
|
},
|
||||||
|
"org/abego/treelayout#org.abego.treelayout.core/1.0.3": {
|
||||||
|
"jar": "sha256-+l4xOVw5wufUasoPgfcgYJMWB7L6Qb02A46yy2+5MyY=",
|
||||||
|
"pom": "sha256-o7KyI3lDcDVeeSQzrwEvyZNmfAMxviusrYTbwJrOSgw="
|
||||||
|
},
|
||||||
|
"org/antlr#ST4/4.1": {
|
||||||
|
"jar": "sha256-ixzK7Z7cVc0lXZwZxNjaR1bZtvy0NWcSkrQ0cLFtddg=",
|
||||||
|
"pom": "sha256-cz5r2XyjTMbfk6QkPlEeVnPLm4jHSxiETgQqRdUWmHw="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-master/3.5.2": {
|
||||||
|
"pom": "sha256-QtkaUx6lEA6wm1QaoALDuQjo8oK9c7bi9S83HvEzG9Y="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-runtime/3.5.2": {
|
||||||
|
"jar": "sha256-zj/I7LEPOemjzdy7LONQ0nLZzT0LHhjm/nPDuTichzQ=",
|
||||||
|
"pom": "sha256-RqnCIAu4sSvXEkqnpQl/9JCZkIMpyFGgTLIFFCCqfyU="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-master/4.7.2": {
|
||||||
|
"pom": "sha256-upnLJdI5DzhoDHUChCoO4JWdHmQD4BPM/2mP1YVu6tE="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-runtime/4.7.2": {
|
||||||
|
"jar": "sha256-TFGLh9S9/4tEzYy8GvgW6US2Kj/luAt4FQHPH0dZu8Q=",
|
||||||
|
"pom": "sha256-3AnLqYwl08BuSuxRaIXUw68DBiulX0/mKD/JzxdqYPs="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2": {
|
||||||
|
"pom": "sha256-z56zaUD6xEiBA4wb4/LFjgbmjRq/v9SmjTS72LrFV3E="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2/complete": {
|
||||||
|
"jar": "sha256-aFI4bXl17/KRcdrgAswiMlFRDTXyka4neUjzgaezgLQ="
|
||||||
|
},
|
||||||
|
"org/apache#apache/13": {
|
||||||
|
"pom": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-core/7.7.3": {
|
||||||
|
"jar": "sha256-jrAzNcGjxqixiN9012G6qDVplTWCq0QLU0yIRJ6o4N4=",
|
||||||
|
"pom": "sha256-gvilIoHGyLp5dKy6rESzLXbiYAgvP0u+FlwPbkuJFCo="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-grouping/7.7.3": {
|
||||||
|
"jar": "sha256-L1vNY7JXQ9MMMTmGIk0Qf3XFKThxSVQlNRDFfT9nvrg=",
|
||||||
|
"pom": "sha256-HwStk+IETUCP2SXu4K6ktKHvjAdXe0Jme7U2BgKCImU="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-parent/7.7.3": {
|
||||||
|
"pom": "sha256-6PrdU9XwBMQN3SNdQ4ZI5yxyVZn+4VQ+ViTV+1AQcwU="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queries/7.7.3": {
|
||||||
|
"jar": "sha256-PLWS2wpulWnGrMvbiKmtex2nQo28p5Ia0cWlhl1bQiY=",
|
||||||
|
"pom": "sha256-rkBsiiuw12SllERCefRiihl2vQlB551CzmTgmHxYnFA="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queryparser/7.7.3": {
|
||||||
|
"jar": "sha256-F3XJ/o7dlobTt6ZHd4+kTqqW8cwMSZMVCHEz4amDnoQ=",
|
||||||
|
"pom": "sha256-z2klkhWscjC5+tYKXInKDp9bm6rM7dFGlY/76Q9OsNI="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-sandbox/7.7.3": {
|
||||||
|
"jar": "sha256-VfG38J2uKwytMhw00Vw8/FmgIRviM/Yp0EbEK/FwErc=",
|
||||||
|
"pom": "sha256-1vbdxsz1xvymRH1HD1BJ4WN6xje/HbWuDV8WaP34EiI="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-solr-grandparent/7.7.3": {
|
||||||
|
"pom": "sha256-Oig3WAynavNq99/i3B0zT8b/XybRDySJnbd3CtfP2f4="
|
||||||
|
},
|
||||||
|
"org/apiguardian#apiguardian-api/1.1.2": {
|
||||||
|
"jar": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=",
|
||||||
|
"module": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=",
|
||||||
|
"pom": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA="
|
||||||
|
},
|
||||||
|
"org/glassfish#javax.json/1.0.4": {
|
||||||
|
"jar": "sha256-Dh3sQKHt6WWUElHtqWiu7gUsxPUDeLwxbMSOgVm9vrQ=",
|
||||||
|
"pom": "sha256-a6+Dg/+pi2bqls1b/B7H8teUY7uYrJgFKWSxIcIhLVQ="
|
||||||
|
},
|
||||||
|
"org/glassfish#json/1.0.4": {
|
||||||
|
"pom": "sha256-bXxoQjEV+SFxjZRPhZkktMaFIX7AOkn3BFWossqpcuY="
|
||||||
|
},
|
||||||
|
"org/hamcrest#hamcrest-core/1.3": {
|
||||||
|
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
|
||||||
|
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
|
||||||
|
},
|
||||||
|
"org/hamcrest#hamcrest-parent/1.3": {
|
||||||
|
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
|
||||||
|
},
|
||||||
|
"org/junit#junit-bom/5.8.1": {
|
||||||
|
"module": "sha256-a4LLpSoTSxPBmC8M+WIsbUhTcdQLmJJG8xJOOwpbGFQ=",
|
||||||
|
"pom": "sha256-733Ef45KFoZPR3lyjofteFOYGeT7iSdoqdprjvkD+GM="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-api/5.8.1": {
|
||||||
|
"jar": "sha256-zjN0p++6YF4tK2mj/vkBNAMrqz7MPthXmkhxscLEcpw=",
|
||||||
|
"module": "sha256-DWnbwja33Kq0ynNpqlYOmwqbvvf5WIgv+0hTPLunwJ0=",
|
||||||
|
"pom": "sha256-d61+1KYwutH8h0agpuZ1wj+2lAsnq2LMyzTk/Pz+Ob8="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-engine/5.8.1": {
|
||||||
|
"jar": "sha256-Rom8kCJVoZ/pgndoO6MjHAlNEHxUyNNfK2+cl9ImQY4=",
|
||||||
|
"module": "sha256-aHkP7DP5ew7IQM9HrEDuDHLgVvEiyg88ZkZ0M0mTdpk=",
|
||||||
|
"pom": "sha256-qjIKMYpyceMyYsSA/POZZbmobap2Zm63dTQrgOnN1F4="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-params/5.8.1": {
|
||||||
|
"jar": "sha256-OJuNE6jYhy/L1PDrp7LEavxihBn5obKjqfkyQaBqchg=",
|
||||||
|
"module": "sha256-Ek1gPG2AMzZtjKRxY2tEbji5zBvQEPMpVCNYGHr6hl4=",
|
||||||
|
"pom": "sha256-OrrKWfvfJTMg9yRCwQPjnOQDjcEf6MSJ28ScwjoHHws="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter/5.8.1": {
|
||||||
|
"jar": "sha256-jxBJ7iSzShC2DNgQBICZ94HCZYzeIYHoMUlqswqYKYU=",
|
||||||
|
"module": "sha256-LjS6TIWMOM0KNlr//syTKnGWzpOF4utUBZQuWBwV/1w=",
|
||||||
|
"pom": "sha256-rssFDSMtOT9Az/EfjMMPUrZslQpB+IOSXIEULt7l9PU="
|
||||||
|
},
|
||||||
|
"org/junit/platform#junit-platform-commons/1.8.1": {
|
||||||
|
"jar": "sha256-+k+mjIvVTdDLScP8vpsuQvTaa+2+fnzPKgXxoeYJtZM=",
|
||||||
|
"module": "sha256-aY/QVBrLfv/GZZhI/Qx91QEKSfFfDBy6Q+U1gH+Q9ms=",
|
||||||
|
"pom": "sha256-4ZcoLlLnANEriJie3FSJh0aTUC5KqJB6zwgpgBq6bUQ="
|
||||||
|
},
|
||||||
|
"org/junit/platform#junit-platform-engine/1.8.1": {
|
||||||
|
"jar": "sha256-cCho7X6GubRnLt4PHhhekFusqa+rV3RqfGUL48e8oEc=",
|
||||||
|
"module": "sha256-2fQgpkU5o+32D4DfDG/XIrdQcldEx5ykD30lrlbKS6Q=",
|
||||||
|
"pom": "sha256-hqrU5ld1TkOgDfIm3VTIrsHsarZTP1ASGQfkZi3i5fI="
|
||||||
|
},
|
||||||
|
"org/junit/vintage#junit-vintage-engine/5.8.1": {
|
||||||
|
"jar": "sha256-F2tTzRvb+SM+lsiwx6nluGQoL7veukO1zq/e2ymkkVY=",
|
||||||
|
"module": "sha256-nOn6Lk7mp0DWEBAlMEYqcc4PqdLxQYUi5LK9tgcvZ5o=",
|
||||||
|
"pom": "sha256-Ndc3M08dvouMVnZ/oVCKwbVEsB1P5cmXl76QA+5YGxI="
|
||||||
|
},
|
||||||
|
"org/opentest4j#opentest4j/1.2.0": {
|
||||||
|
"jar": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=",
|
||||||
|
"pom": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/7": {
|
||||||
|
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/9": {
|
||||||
|
"pom": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,121 +1,81 @@
|
|||||||
{ stdenv, lib, fetchFromGitHub, fetchpatch, writeText, openjdk17_headless
|
{ stdenv, lib, pkgs, fetchFromGitHub, fetchpatch, writeText
|
||||||
, openjdk19_headless, gradle_7, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst
|
, openjdk19_headless, gradle_7, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst
|
||||||
, libXxf86vm, glib, alsa-lib, ffmpeg_4, python3, ruby, fetchurl, runCommand
|
, libXxf86vm, glib, alsa-lib, ffmpeg_4, python3, ruby
|
||||||
, withMedia ? true
|
, withMedia ? true
|
||||||
, withWebKit ? false
|
, withWebKit ? false
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
pname = "openjfx-modular-sdk";
|
||||||
major = "19";
|
major = "19";
|
||||||
update = ".0.2.1";
|
update = ".0.2.1";
|
||||||
build = "+1";
|
build = "+1";
|
||||||
repover = "${major}${update}${build}";
|
repover = "${major}${update}${build}";
|
||||||
gradle_ = (gradle_7.override {
|
jdk = openjdk19_headless;
|
||||||
# note: gradle does not yet support running on 19
|
gradle = gradle_7;
|
||||||
java = openjdk17_headless;
|
|
||||||
});
|
|
||||||
|
|
||||||
icuVersionWithSep = s: "68${s}2";
|
in stdenv.mkDerivation {
|
||||||
icuPath = "download/release-${icuVersionWithSep "-"}/icu4c-${icuVersionWithSep "."}-data-bin-l.zip";
|
inherit pname;
|
||||||
icuData = fetchurl {
|
version = "${major}${update}${build}";
|
||||||
url = "https://github.com/unicode-org/icu/releases/${icuPath}";
|
|
||||||
hash = "sha256-ieQCLBTNrskuf8j3IUQS3QLIAQzLom/O58muMP363Lw=";
|
|
||||||
};
|
|
||||||
icuFakeRepository = runCommand "icu-data-repository" {} ''
|
|
||||||
install -Dm644 ${icuData} $out/${icuPath}
|
|
||||||
'';
|
|
||||||
|
|
||||||
makePackage = args: stdenv.mkDerivation ({
|
src = fetchFromGitHub {
|
||||||
version = "${major}${update}${build}";
|
owner = "openjdk";
|
||||||
|
repo = "jfx";
|
||||||
src = fetchFromGitHub {
|
rev = repover;
|
||||||
owner = "openjdk";
|
hash = "sha256-A08GhCGpzWlUG1+f6mcjvkJmMNaOReacQKPEmNpUvLs=";
|
||||||
repo = "jfx";
|
|
||||||
rev = repover;
|
|
||||||
hash = "sha256-A08GhCGpzWlUG1+f6mcjvkJmMNaOReacQKPEmNpUvLs=";
|
|
||||||
};
|
|
||||||
|
|
||||||
patches = [
|
|
||||||
# 8295962: Reference to State in Task.java is ambiguous when building with JDK 19
|
|
||||||
(fetchpatch {
|
|
||||||
url = "https://github.com/openjdk/jfx/pull/933/commits/cfaee2a52350eff39dd4352484c892716076d3de.patch";
|
|
||||||
hash = "sha256-hzJMenhvtmHs/6BJj8GfaLp14myV8VCXCLLC8n32yEw=";
|
|
||||||
})
|
|
||||||
# ditto
|
|
||||||
(fetchpatch {
|
|
||||||
url = "https://github.com/openjdk/jfx/pull/933/commits/bd46ce12df0a93a56fe0d58d3653d08e58409b7f.patch";
|
|
||||||
hash = "sha256-o9908uw9vYvULmAh/lbfyHhgxz6jpgPq2fcAltWsYoU=";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
# Add missing includes for gcc-13 for webkit build:
|
|
||||||
sed -e '1i #include <cstdio>' \
|
|
||||||
-i modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/Heap.cpp \
|
|
||||||
modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/IsoSharedPageInlines.h
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4 ];
|
|
||||||
nativeBuildInputs = [ gradle_ perl pkg-config cmake gperf python3 ruby ];
|
|
||||||
|
|
||||||
dontUseCmakeConfigure = true;
|
|
||||||
|
|
||||||
config = writeText "gradle.properties" (''
|
|
||||||
CONF = Release
|
|
||||||
JDK_HOME = ${openjdk19_headless.home}
|
|
||||||
'' + args.gradleProperties or "");
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
runHook preBuild
|
|
||||||
|
|
||||||
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
|
||||||
export GRADLE_USER_HOME=$(mktemp -d)
|
|
||||||
ln -s $config gradle.properties
|
|
||||||
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
|
||||||
gradle --no-daemon --console=plain $gradleFlags sdk
|
|
||||||
|
|
||||||
runHook postBuild
|
|
||||||
'';
|
|
||||||
} // args);
|
|
||||||
|
|
||||||
# Fake build to pre-download deps into fixed-output derivation.
|
|
||||||
# We run nearly full build because I see no other way to download everything that's needed.
|
|
||||||
# Anyone who knows a better way?
|
|
||||||
deps = makePackage {
|
|
||||||
pname = "openjfx-deps";
|
|
||||||
|
|
||||||
# perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
|
|
||||||
installPhase = ''
|
|
||||||
find $GRADLE_USER_HOME -type f -regex '.*/modules.*\.\(jar\|pom\)' \
|
|
||||||
| perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
|
|
||||||
| sh
|
|
||||||
rm -rf $out/tmp
|
|
||||||
'';
|
|
||||||
|
|
||||||
outputHashAlgo = "sha256";
|
|
||||||
outputHashMode = "recursive";
|
|
||||||
# suspiciously the same as for openjfx 17 ...
|
|
||||||
# could they really not have changed any of their dependencies?
|
|
||||||
# or did we miss changing another upstream hash when copy-pasting?
|
|
||||||
outputHash = "sha256-dV7/U5GpFxhI13smZ587C6cVE4FRNPY0zexZkYK4Yqo=";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
in makePackage {
|
patches = [
|
||||||
pname = "openjfx-modular-sdk";
|
# 8295962: Reference to State in Task.java is ambiguous when building with JDK 19
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/openjdk/jfx/pull/933/commits/cfaee2a52350eff39dd4352484c892716076d3de.patch";
|
||||||
|
hash = "sha256-hzJMenhvtmHs/6BJj8GfaLp14myV8VCXCLLC8n32yEw=";
|
||||||
|
})
|
||||||
|
# ditto
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/openjdk/jfx/pull/933/commits/bd46ce12df0a93a56fe0d58d3653d08e58409b7f.patch";
|
||||||
|
hash = "sha256-o9908uw9vYvULmAh/lbfyHhgxz6jpgPq2fcAltWsYoU=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
gradleProperties = ''
|
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4 ];
|
||||||
|
nativeBuildInputs = [ gradle perl pkg-config cmake gperf python3 ruby ];
|
||||||
|
|
||||||
|
dontUseCmakeConfigure = true;
|
||||||
|
|
||||||
|
config = writeText "gradle.properties" ''
|
||||||
|
CONF = Release
|
||||||
|
JDK_HOME = ${jdk.home}
|
||||||
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
||||||
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
||||||
${lib.optionalString withWebKit "icuRepositoryURL = file://${icuFakeRepository}"}
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preBuild = ''
|
postPatch = ''
|
||||||
swtJar="$(find ${deps} -name org.eclipse.swt\*.jar)"
|
# Add missing includes for gcc-13 for webkit build:
|
||||||
substituteInPlace build.gradle \
|
sed -e '1i #include <cstdio>' \
|
||||||
--replace 'mavenCentral()' 'mavenLocal(); maven { url uri("${deps}") }' \
|
-i modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/Heap.cpp \
|
||||||
--replace 'name: SWT_FILE_NAME' "files('$swtJar')"
|
modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/IsoSharedPageInlines.h
|
||||||
|
|
||||||
|
ln -s $config gradle.properties
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
mitmCache = gradle.fetchDeps {
|
||||||
|
attrPath = "openjfx${major}";
|
||||||
|
pkg = pkgs."openjfx${major}".override { withWebKit = true; };
|
||||||
|
data = ./deps.json;
|
||||||
|
};
|
||||||
|
|
||||||
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
||||||
|
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = false;
|
||||||
|
|
||||||
|
gradleBuildTask = "sdk";
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
cp -r build/modular-sdk $out
|
cp -r build/modular-sdk $out
|
||||||
'';
|
'';
|
||||||
@ -124,16 +84,14 @@ in makePackage {
|
|||||||
|
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
# Remove references to bootstrap.
|
# Remove references to bootstrap.
|
||||||
export openjdkOutPath='${openjdk19_headless.outPath}'
|
export openjdkOutPath='${jdk.outPath}'
|
||||||
find "$out" -name \*.so | while read lib; do
|
find "$out" -name \*.so | while read lib; do
|
||||||
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
||||||
patchelf --set-rpath "$new_refs" "$lib"
|
patchelf --set-rpath "$new_refs" "$lib"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
disallowedReferences = [ openjdk17_headless openjdk19_headless ];
|
disallowedReferences = [ jdk gradle.jdk ];
|
||||||
|
|
||||||
passthru.deps = deps;
|
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "https://openjdk.org/projects/openjfx/";
|
homepage = "https://openjdk.org/projects/openjfx/";
|
||||||
|
152
pkgs/development/compilers/openjdk/openjfx/19/deps.json
generated
Normal file
152
pkgs/development/compilers/openjdk/openjfx/19/deps.json
generated
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
{
|
||||||
|
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
|
||||||
|
"!version": 1,
|
||||||
|
"https://download.eclipse.org": {
|
||||||
|
"eclipse/updates/4.6/R-4.6.3-201703010400/plugins/org.eclipse.swt.gtk.linux.x86_64_3.105.3.v20170228-0512": {
|
||||||
|
"jar": "sha256-qWM1HV97griQxJlOFY2AVV2uOLAK87jXPzh1wh/zmLw="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://github.com": {
|
||||||
|
"unicode-org/icu/releases/download/release-68-2/icu4c-68.2-data-bin-l": {
|
||||||
|
"zip": "sha256-ieQCLBTNrskuf8j3IUQS3QLIAQzLom/O58muMP363Lw="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://repo.maven.apache.org/maven2": {
|
||||||
|
"com/ibm/icu#icu4j/61.1": {
|
||||||
|
"jar": "sha256-VcmOsYOLKku5oH3Da9N4Uy1k0M3LfO7pFCNoZqfeRGQ=",
|
||||||
|
"pom": "sha256-E7h6QHnOsFUVsZrHoVIDlHB1YB1JQj9xk1ikmACYBWs="
|
||||||
|
},
|
||||||
|
"junit#junit/4.13.2": {
|
||||||
|
"jar": "sha256-jklbY0Rp1k+4rPo0laBly6zIoP/1XOHjEAe+TBbcV9M=",
|
||||||
|
"pom": "sha256-Vptpd+5GA8llwcRsMFj6bpaSkbAWDraWTdCSzYnq3ZQ="
|
||||||
|
},
|
||||||
|
"net/java#jvnet-parent/3": {
|
||||||
|
"pom": "sha256-MPV4nvo53b+WCVqto/wSYMRWH68vcUaGcXyy3FBJR1o="
|
||||||
|
},
|
||||||
|
"org/abego/treelayout#org.abego.treelayout.core/1.0.3": {
|
||||||
|
"jar": "sha256-+l4xOVw5wufUasoPgfcgYJMWB7L6Qb02A46yy2+5MyY=",
|
||||||
|
"pom": "sha256-o7KyI3lDcDVeeSQzrwEvyZNmfAMxviusrYTbwJrOSgw="
|
||||||
|
},
|
||||||
|
"org/antlr#ST4/4.1": {
|
||||||
|
"jar": "sha256-ixzK7Z7cVc0lXZwZxNjaR1bZtvy0NWcSkrQ0cLFtddg=",
|
||||||
|
"pom": "sha256-cz5r2XyjTMbfk6QkPlEeVnPLm4jHSxiETgQqRdUWmHw="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-master/3.5.2": {
|
||||||
|
"pom": "sha256-QtkaUx6lEA6wm1QaoALDuQjo8oK9c7bi9S83HvEzG9Y="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-runtime/3.5.2": {
|
||||||
|
"jar": "sha256-zj/I7LEPOemjzdy7LONQ0nLZzT0LHhjm/nPDuTichzQ=",
|
||||||
|
"pom": "sha256-RqnCIAu4sSvXEkqnpQl/9JCZkIMpyFGgTLIFFCCqfyU="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-master/4.7.2": {
|
||||||
|
"pom": "sha256-upnLJdI5DzhoDHUChCoO4JWdHmQD4BPM/2mP1YVu6tE="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-runtime/4.7.2": {
|
||||||
|
"jar": "sha256-TFGLh9S9/4tEzYy8GvgW6US2Kj/luAt4FQHPH0dZu8Q=",
|
||||||
|
"pom": "sha256-3AnLqYwl08BuSuxRaIXUw68DBiulX0/mKD/JzxdqYPs="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2": {
|
||||||
|
"pom": "sha256-z56zaUD6xEiBA4wb4/LFjgbmjRq/v9SmjTS72LrFV3E="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2/complete": {
|
||||||
|
"jar": "sha256-aFI4bXl17/KRcdrgAswiMlFRDTXyka4neUjzgaezgLQ="
|
||||||
|
},
|
||||||
|
"org/apache#apache/13": {
|
||||||
|
"pom": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-core/7.7.3": {
|
||||||
|
"jar": "sha256-jrAzNcGjxqixiN9012G6qDVplTWCq0QLU0yIRJ6o4N4=",
|
||||||
|
"pom": "sha256-gvilIoHGyLp5dKy6rESzLXbiYAgvP0u+FlwPbkuJFCo="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-grouping/7.7.3": {
|
||||||
|
"jar": "sha256-L1vNY7JXQ9MMMTmGIk0Qf3XFKThxSVQlNRDFfT9nvrg=",
|
||||||
|
"pom": "sha256-HwStk+IETUCP2SXu4K6ktKHvjAdXe0Jme7U2BgKCImU="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-parent/7.7.3": {
|
||||||
|
"pom": "sha256-6PrdU9XwBMQN3SNdQ4ZI5yxyVZn+4VQ+ViTV+1AQcwU="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queries/7.7.3": {
|
||||||
|
"jar": "sha256-PLWS2wpulWnGrMvbiKmtex2nQo28p5Ia0cWlhl1bQiY=",
|
||||||
|
"pom": "sha256-rkBsiiuw12SllERCefRiihl2vQlB551CzmTgmHxYnFA="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queryparser/7.7.3": {
|
||||||
|
"jar": "sha256-F3XJ/o7dlobTt6ZHd4+kTqqW8cwMSZMVCHEz4amDnoQ=",
|
||||||
|
"pom": "sha256-z2klkhWscjC5+tYKXInKDp9bm6rM7dFGlY/76Q9OsNI="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-sandbox/7.7.3": {
|
||||||
|
"jar": "sha256-VfG38J2uKwytMhw00Vw8/FmgIRviM/Yp0EbEK/FwErc=",
|
||||||
|
"pom": "sha256-1vbdxsz1xvymRH1HD1BJ4WN6xje/HbWuDV8WaP34EiI="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-solr-grandparent/7.7.3": {
|
||||||
|
"pom": "sha256-Oig3WAynavNq99/i3B0zT8b/XybRDySJnbd3CtfP2f4="
|
||||||
|
},
|
||||||
|
"org/apiguardian#apiguardian-api/1.1.2": {
|
||||||
|
"jar": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=",
|
||||||
|
"module": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=",
|
||||||
|
"pom": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA="
|
||||||
|
},
|
||||||
|
"org/glassfish#javax.json/1.0.4": {
|
||||||
|
"jar": "sha256-Dh3sQKHt6WWUElHtqWiu7gUsxPUDeLwxbMSOgVm9vrQ=",
|
||||||
|
"pom": "sha256-a6+Dg/+pi2bqls1b/B7H8teUY7uYrJgFKWSxIcIhLVQ="
|
||||||
|
},
|
||||||
|
"org/glassfish#json/1.0.4": {
|
||||||
|
"pom": "sha256-bXxoQjEV+SFxjZRPhZkktMaFIX7AOkn3BFWossqpcuY="
|
||||||
|
},
|
||||||
|
"org/hamcrest#hamcrest-core/1.3": {
|
||||||
|
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
|
||||||
|
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
|
||||||
|
},
|
||||||
|
"org/hamcrest#hamcrest-parent/1.3": {
|
||||||
|
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
|
||||||
|
},
|
||||||
|
"org/junit#junit-bom/5.8.1": {
|
||||||
|
"module": "sha256-a4LLpSoTSxPBmC8M+WIsbUhTcdQLmJJG8xJOOwpbGFQ=",
|
||||||
|
"pom": "sha256-733Ef45KFoZPR3lyjofteFOYGeT7iSdoqdprjvkD+GM="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-api/5.8.1": {
|
||||||
|
"jar": "sha256-zjN0p++6YF4tK2mj/vkBNAMrqz7MPthXmkhxscLEcpw=",
|
||||||
|
"module": "sha256-DWnbwja33Kq0ynNpqlYOmwqbvvf5WIgv+0hTPLunwJ0=",
|
||||||
|
"pom": "sha256-d61+1KYwutH8h0agpuZ1wj+2lAsnq2LMyzTk/Pz+Ob8="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-engine/5.8.1": {
|
||||||
|
"jar": "sha256-Rom8kCJVoZ/pgndoO6MjHAlNEHxUyNNfK2+cl9ImQY4=",
|
||||||
|
"module": "sha256-aHkP7DP5ew7IQM9HrEDuDHLgVvEiyg88ZkZ0M0mTdpk=",
|
||||||
|
"pom": "sha256-qjIKMYpyceMyYsSA/POZZbmobap2Zm63dTQrgOnN1F4="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-params/5.8.1": {
|
||||||
|
"jar": "sha256-OJuNE6jYhy/L1PDrp7LEavxihBn5obKjqfkyQaBqchg=",
|
||||||
|
"module": "sha256-Ek1gPG2AMzZtjKRxY2tEbji5zBvQEPMpVCNYGHr6hl4=",
|
||||||
|
"pom": "sha256-OrrKWfvfJTMg9yRCwQPjnOQDjcEf6MSJ28ScwjoHHws="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter/5.8.1": {
|
||||||
|
"jar": "sha256-jxBJ7iSzShC2DNgQBICZ94HCZYzeIYHoMUlqswqYKYU=",
|
||||||
|
"module": "sha256-LjS6TIWMOM0KNlr//syTKnGWzpOF4utUBZQuWBwV/1w=",
|
||||||
|
"pom": "sha256-rssFDSMtOT9Az/EfjMMPUrZslQpB+IOSXIEULt7l9PU="
|
||||||
|
},
|
||||||
|
"org/junit/platform#junit-platform-commons/1.8.1": {
|
||||||
|
"jar": "sha256-+k+mjIvVTdDLScP8vpsuQvTaa+2+fnzPKgXxoeYJtZM=",
|
||||||
|
"module": "sha256-aY/QVBrLfv/GZZhI/Qx91QEKSfFfDBy6Q+U1gH+Q9ms=",
|
||||||
|
"pom": "sha256-4ZcoLlLnANEriJie3FSJh0aTUC5KqJB6zwgpgBq6bUQ="
|
||||||
|
},
|
||||||
|
"org/junit/platform#junit-platform-engine/1.8.1": {
|
||||||
|
"jar": "sha256-cCho7X6GubRnLt4PHhhekFusqa+rV3RqfGUL48e8oEc=",
|
||||||
|
"module": "sha256-2fQgpkU5o+32D4DfDG/XIrdQcldEx5ykD30lrlbKS6Q=",
|
||||||
|
"pom": "sha256-hqrU5ld1TkOgDfIm3VTIrsHsarZTP1ASGQfkZi3i5fI="
|
||||||
|
},
|
||||||
|
"org/junit/vintage#junit-vintage-engine/5.8.1": {
|
||||||
|
"jar": "sha256-F2tTzRvb+SM+lsiwx6nluGQoL7veukO1zq/e2ymkkVY=",
|
||||||
|
"module": "sha256-nOn6Lk7mp0DWEBAlMEYqcc4PqdLxQYUi5LK9tgcvZ5o=",
|
||||||
|
"pom": "sha256-Ndc3M08dvouMVnZ/oVCKwbVEsB1P5cmXl76QA+5YGxI="
|
||||||
|
},
|
||||||
|
"org/opentest4j#opentest4j/1.2.0": {
|
||||||
|
"jar": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=",
|
||||||
|
"pom": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/7": {
|
||||||
|
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/9": {
|
||||||
|
"pom": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,108 +1,68 @@
|
|||||||
{ stdenv, lib, fetchFromGitHub, writeText, openjdk17_headless
|
{ stdenv, lib, pkgs, fetchFromGitHub, writeText
|
||||||
, openjdk20_headless, gradle_7, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst
|
, openjdk20_headless, gradle_7, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst
|
||||||
, libXxf86vm, glib, alsa-lib, ffmpeg_4, python3, ruby, fetchurl, runCommand
|
, libXxf86vm, glib, alsa-lib, ffmpeg_4, python3, ruby
|
||||||
, withMedia ? true
|
, withMedia ? true
|
||||||
, withWebKit ? false
|
, withWebKit ? false
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
pname = "openjfx-modular-sdk";
|
||||||
major = "20";
|
major = "20";
|
||||||
update = ".0.2";
|
update = ".0.2";
|
||||||
build = "-ga";
|
build = "-ga";
|
||||||
repover = "${major}${update}${build}";
|
repover = "${major}${update}${build}";
|
||||||
gradle_ = (gradle_7.override {
|
jdk = openjdk20_headless;
|
||||||
# note: gradle does not yet support running on 19
|
gradle = gradle_7;
|
||||||
java = openjdk17_headless;
|
|
||||||
});
|
|
||||||
|
|
||||||
icuVersionWithSep = s: "71${s}1";
|
in stdenv.mkDerivation {
|
||||||
icuPath = "download/release-${icuVersionWithSep "-"}/icu4c-${icuVersionWithSep "_"}-data-bin-l.zip";
|
inherit pname;
|
||||||
icuData = fetchurl {
|
version = "${major}${update}${build}";
|
||||||
url = "https://github.com/unicode-org/icu/releases/${icuPath}";
|
|
||||||
hash = "sha256-pVWIy0BkICsthA5mxhR9SJQHleMNnaEcGl/AaLi5qZM=";
|
|
||||||
};
|
|
||||||
icuFakeRepository = runCommand "icu-data-repository" {} ''
|
|
||||||
install -Dm644 ${icuData} $out/${icuPath}
|
|
||||||
'';
|
|
||||||
|
|
||||||
makePackage = args: stdenv.mkDerivation ({
|
src = fetchFromGitHub {
|
||||||
version = "${major}${update}${build}";
|
owner = "openjdk";
|
||||||
|
repo = "jfx20u";
|
||||||
src = fetchFromGitHub {
|
rev = repover;
|
||||||
owner = "openjdk";
|
hash = "sha256-3Hhz4i8fPU2yowb4roylCXzuO9HkW7ZWF9TMA3HIH9o=";
|
||||||
repo = "jfx20u";
|
|
||||||
rev = repover;
|
|
||||||
hash = "sha256-3Hhz4i8fPU2yowb4roylCXzuO9HkW7ZWF9TMA3HIH9o=";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4 ];
|
|
||||||
nativeBuildInputs = [ gradle_ perl pkg-config cmake gperf python3 ruby ];
|
|
||||||
|
|
||||||
dontUseCmakeConfigure = true;
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
# Add missing includes for gcc-13 for webkit build:
|
|
||||||
sed -e '1i #include <cstdio>' \
|
|
||||||
-i modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/Heap.cpp \
|
|
||||||
modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/IsoSharedPageInlines.h
|
|
||||||
'';
|
|
||||||
|
|
||||||
config = writeText "gradle.properties" (''
|
|
||||||
CONF = Release
|
|
||||||
JDK_HOME = ${openjdk20_headless.home}
|
|
||||||
'' + args.gradleProperties or "");
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
runHook preBuild
|
|
||||||
|
|
||||||
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
|
||||||
export GRADLE_USER_HOME=$(mktemp -d)
|
|
||||||
ln -s $config gradle.properties
|
|
||||||
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
|
||||||
gradle --no-daemon --console=plain $gradleFlags sdk
|
|
||||||
|
|
||||||
runHook postBuild
|
|
||||||
'';
|
|
||||||
} // args);
|
|
||||||
|
|
||||||
# Fake build to pre-download deps into fixed-output derivation.
|
|
||||||
# We run nearly full build because I see no other way to download everything that's needed.
|
|
||||||
# Anyone who knows a better way?
|
|
||||||
deps = makePackage {
|
|
||||||
pname = "openjfx-deps";
|
|
||||||
|
|
||||||
# perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
|
|
||||||
installPhase = ''
|
|
||||||
find $GRADLE_USER_HOME -type f -regex '.*/modules.*\.\(jar\|pom\)' \
|
|
||||||
| perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
|
|
||||||
| sh
|
|
||||||
rm -rf $out/tmp
|
|
||||||
'';
|
|
||||||
|
|
||||||
outputHashAlgo = "sha256";
|
|
||||||
outputHashMode = "recursive";
|
|
||||||
# suspiciously the same as for openjfx 17 ...
|
|
||||||
# could they really not have changed any of their dependencies?
|
|
||||||
# or did we miss changing another upstream hash when copy-pasting?
|
|
||||||
outputHash = "sha256-dV7/U5GpFxhI13smZ587C6cVE4FRNPY0zexZkYK4Yqo=";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
in makePackage {
|
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4 ];
|
||||||
pname = "openjfx-modular-sdk";
|
nativeBuildInputs = [ gradle perl pkg-config cmake gperf python3 ruby ];
|
||||||
|
|
||||||
gradleProperties = ''
|
dontUseCmakeConfigure = true;
|
||||||
|
|
||||||
|
config = writeText "gradle.properties" ''
|
||||||
|
CONF = Release
|
||||||
|
JDK_HOME = ${jdk.home}
|
||||||
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
||||||
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
||||||
${lib.optionalString withWebKit "icuRepositoryURL = file://${icuFakeRepository}"}
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preBuild = ''
|
postPatch = ''
|
||||||
swtJar="$(find ${deps} -name org.eclipse.swt\*.jar)"
|
# Add missing includes for gcc-13 for webkit build:
|
||||||
substituteInPlace build.gradle \
|
sed -e '1i #include <cstdio>' \
|
||||||
--replace 'mavenCentral()' 'mavenLocal(); maven { url uri("${deps}") }' \
|
-i modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/Heap.cpp \
|
||||||
--replace 'name: SWT_FILE_NAME' "files('$swtJar')"
|
modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/IsoSharedPageInlines.h
|
||||||
|
|
||||||
|
ln -s $config gradle.properties
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
mitmCache = gradle.fetchDeps {
|
||||||
|
attrPath = "openjfx${major}";
|
||||||
|
pkg = pkgs."openjfx${major}".override { withWebKit = true; };
|
||||||
|
data = ./deps.json;
|
||||||
|
};
|
||||||
|
|
||||||
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
||||||
|
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = false;
|
||||||
|
|
||||||
|
gradleBuildTask = "sdk";
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
cp -r build/modular-sdk $out
|
cp -r build/modular-sdk $out
|
||||||
'';
|
'';
|
||||||
@ -111,16 +71,14 @@ in makePackage {
|
|||||||
|
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
# Remove references to bootstrap.
|
# Remove references to bootstrap.
|
||||||
export openjdkOutPath='${openjdk20_headless.outPath}'
|
export openjdkOutPath='${jdk.outPath}'
|
||||||
find "$out" -name \*.so | while read lib; do
|
find "$out" -name \*.so | while read lib; do
|
||||||
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
||||||
patchelf --set-rpath "$new_refs" "$lib"
|
patchelf --set-rpath "$new_refs" "$lib"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
disallowedReferences = [ openjdk17_headless openjdk20_headless ];
|
disallowedReferences = [ jdk gradle.jdk ];
|
||||||
|
|
||||||
passthru.deps = deps;
|
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "https://openjdk.org/projects/openjfx/";
|
homepage = "https://openjdk.org/projects/openjfx/";
|
||||||
|
152
pkgs/development/compilers/openjdk/openjfx/20/deps.json
generated
Normal file
152
pkgs/development/compilers/openjdk/openjfx/20/deps.json
generated
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
{
|
||||||
|
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
|
||||||
|
"!version": 1,
|
||||||
|
"https://download.eclipse.org": {
|
||||||
|
"eclipse/updates/4.6/R-4.6.3-201703010400/plugins/org.eclipse.swt.gtk.linux.x86_64_3.105.3.v20170228-0512": {
|
||||||
|
"jar": "sha256-qWM1HV97griQxJlOFY2AVV2uOLAK87jXPzh1wh/zmLw="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://github.com": {
|
||||||
|
"unicode-org/icu/releases/download/release-71-1/icu4c-71_1-data-bin-l": {
|
||||||
|
"zip": "sha256-pVWIy0BkICsthA5mxhR9SJQHleMNnaEcGl/AaLi5qZM="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://repo.maven.apache.org/maven2": {
|
||||||
|
"com/ibm/icu#icu4j/61.1": {
|
||||||
|
"jar": "sha256-VcmOsYOLKku5oH3Da9N4Uy1k0M3LfO7pFCNoZqfeRGQ=",
|
||||||
|
"pom": "sha256-E7h6QHnOsFUVsZrHoVIDlHB1YB1JQj9xk1ikmACYBWs="
|
||||||
|
},
|
||||||
|
"junit#junit/4.13.2": {
|
||||||
|
"jar": "sha256-jklbY0Rp1k+4rPo0laBly6zIoP/1XOHjEAe+TBbcV9M=",
|
||||||
|
"pom": "sha256-Vptpd+5GA8llwcRsMFj6bpaSkbAWDraWTdCSzYnq3ZQ="
|
||||||
|
},
|
||||||
|
"net/java#jvnet-parent/3": {
|
||||||
|
"pom": "sha256-MPV4nvo53b+WCVqto/wSYMRWH68vcUaGcXyy3FBJR1o="
|
||||||
|
},
|
||||||
|
"org/abego/treelayout#org.abego.treelayout.core/1.0.3": {
|
||||||
|
"jar": "sha256-+l4xOVw5wufUasoPgfcgYJMWB7L6Qb02A46yy2+5MyY=",
|
||||||
|
"pom": "sha256-o7KyI3lDcDVeeSQzrwEvyZNmfAMxviusrYTbwJrOSgw="
|
||||||
|
},
|
||||||
|
"org/antlr#ST4/4.1": {
|
||||||
|
"jar": "sha256-ixzK7Z7cVc0lXZwZxNjaR1bZtvy0NWcSkrQ0cLFtddg=",
|
||||||
|
"pom": "sha256-cz5r2XyjTMbfk6QkPlEeVnPLm4jHSxiETgQqRdUWmHw="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-master/3.5.2": {
|
||||||
|
"pom": "sha256-QtkaUx6lEA6wm1QaoALDuQjo8oK9c7bi9S83HvEzG9Y="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-runtime/3.5.2": {
|
||||||
|
"jar": "sha256-zj/I7LEPOemjzdy7LONQ0nLZzT0LHhjm/nPDuTichzQ=",
|
||||||
|
"pom": "sha256-RqnCIAu4sSvXEkqnpQl/9JCZkIMpyFGgTLIFFCCqfyU="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-master/4.7.2": {
|
||||||
|
"pom": "sha256-upnLJdI5DzhoDHUChCoO4JWdHmQD4BPM/2mP1YVu6tE="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-runtime/4.7.2": {
|
||||||
|
"jar": "sha256-TFGLh9S9/4tEzYy8GvgW6US2Kj/luAt4FQHPH0dZu8Q=",
|
||||||
|
"pom": "sha256-3AnLqYwl08BuSuxRaIXUw68DBiulX0/mKD/JzxdqYPs="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2": {
|
||||||
|
"pom": "sha256-z56zaUD6xEiBA4wb4/LFjgbmjRq/v9SmjTS72LrFV3E="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2/complete": {
|
||||||
|
"jar": "sha256-aFI4bXl17/KRcdrgAswiMlFRDTXyka4neUjzgaezgLQ="
|
||||||
|
},
|
||||||
|
"org/apache#apache/13": {
|
||||||
|
"pom": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-core/7.7.3": {
|
||||||
|
"jar": "sha256-jrAzNcGjxqixiN9012G6qDVplTWCq0QLU0yIRJ6o4N4=",
|
||||||
|
"pom": "sha256-gvilIoHGyLp5dKy6rESzLXbiYAgvP0u+FlwPbkuJFCo="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-grouping/7.7.3": {
|
||||||
|
"jar": "sha256-L1vNY7JXQ9MMMTmGIk0Qf3XFKThxSVQlNRDFfT9nvrg=",
|
||||||
|
"pom": "sha256-HwStk+IETUCP2SXu4K6ktKHvjAdXe0Jme7U2BgKCImU="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-parent/7.7.3": {
|
||||||
|
"pom": "sha256-6PrdU9XwBMQN3SNdQ4ZI5yxyVZn+4VQ+ViTV+1AQcwU="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queries/7.7.3": {
|
||||||
|
"jar": "sha256-PLWS2wpulWnGrMvbiKmtex2nQo28p5Ia0cWlhl1bQiY=",
|
||||||
|
"pom": "sha256-rkBsiiuw12SllERCefRiihl2vQlB551CzmTgmHxYnFA="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queryparser/7.7.3": {
|
||||||
|
"jar": "sha256-F3XJ/o7dlobTt6ZHd4+kTqqW8cwMSZMVCHEz4amDnoQ=",
|
||||||
|
"pom": "sha256-z2klkhWscjC5+tYKXInKDp9bm6rM7dFGlY/76Q9OsNI="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-sandbox/7.7.3": {
|
||||||
|
"jar": "sha256-VfG38J2uKwytMhw00Vw8/FmgIRviM/Yp0EbEK/FwErc=",
|
||||||
|
"pom": "sha256-1vbdxsz1xvymRH1HD1BJ4WN6xje/HbWuDV8WaP34EiI="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-solr-grandparent/7.7.3": {
|
||||||
|
"pom": "sha256-Oig3WAynavNq99/i3B0zT8b/XybRDySJnbd3CtfP2f4="
|
||||||
|
},
|
||||||
|
"org/apiguardian#apiguardian-api/1.1.2": {
|
||||||
|
"jar": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=",
|
||||||
|
"module": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=",
|
||||||
|
"pom": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA="
|
||||||
|
},
|
||||||
|
"org/glassfish#javax.json/1.0.4": {
|
||||||
|
"jar": "sha256-Dh3sQKHt6WWUElHtqWiu7gUsxPUDeLwxbMSOgVm9vrQ=",
|
||||||
|
"pom": "sha256-a6+Dg/+pi2bqls1b/B7H8teUY7uYrJgFKWSxIcIhLVQ="
|
||||||
|
},
|
||||||
|
"org/glassfish#json/1.0.4": {
|
||||||
|
"pom": "sha256-bXxoQjEV+SFxjZRPhZkktMaFIX7AOkn3BFWossqpcuY="
|
||||||
|
},
|
||||||
|
"org/hamcrest#hamcrest-core/1.3": {
|
||||||
|
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
|
||||||
|
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
|
||||||
|
},
|
||||||
|
"org/hamcrest#hamcrest-parent/1.3": {
|
||||||
|
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
|
||||||
|
},
|
||||||
|
"org/junit#junit-bom/5.8.1": {
|
||||||
|
"module": "sha256-a4LLpSoTSxPBmC8M+WIsbUhTcdQLmJJG8xJOOwpbGFQ=",
|
||||||
|
"pom": "sha256-733Ef45KFoZPR3lyjofteFOYGeT7iSdoqdprjvkD+GM="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-api/5.8.1": {
|
||||||
|
"jar": "sha256-zjN0p++6YF4tK2mj/vkBNAMrqz7MPthXmkhxscLEcpw=",
|
||||||
|
"module": "sha256-DWnbwja33Kq0ynNpqlYOmwqbvvf5WIgv+0hTPLunwJ0=",
|
||||||
|
"pom": "sha256-d61+1KYwutH8h0agpuZ1wj+2lAsnq2LMyzTk/Pz+Ob8="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-engine/5.8.1": {
|
||||||
|
"jar": "sha256-Rom8kCJVoZ/pgndoO6MjHAlNEHxUyNNfK2+cl9ImQY4=",
|
||||||
|
"module": "sha256-aHkP7DP5ew7IQM9HrEDuDHLgVvEiyg88ZkZ0M0mTdpk=",
|
||||||
|
"pom": "sha256-qjIKMYpyceMyYsSA/POZZbmobap2Zm63dTQrgOnN1F4="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-params/5.8.1": {
|
||||||
|
"jar": "sha256-OJuNE6jYhy/L1PDrp7LEavxihBn5obKjqfkyQaBqchg=",
|
||||||
|
"module": "sha256-Ek1gPG2AMzZtjKRxY2tEbji5zBvQEPMpVCNYGHr6hl4=",
|
||||||
|
"pom": "sha256-OrrKWfvfJTMg9yRCwQPjnOQDjcEf6MSJ28ScwjoHHws="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter/5.8.1": {
|
||||||
|
"jar": "sha256-jxBJ7iSzShC2DNgQBICZ94HCZYzeIYHoMUlqswqYKYU=",
|
||||||
|
"module": "sha256-LjS6TIWMOM0KNlr//syTKnGWzpOF4utUBZQuWBwV/1w=",
|
||||||
|
"pom": "sha256-rssFDSMtOT9Az/EfjMMPUrZslQpB+IOSXIEULt7l9PU="
|
||||||
|
},
|
||||||
|
"org/junit/platform#junit-platform-commons/1.8.1": {
|
||||||
|
"jar": "sha256-+k+mjIvVTdDLScP8vpsuQvTaa+2+fnzPKgXxoeYJtZM=",
|
||||||
|
"module": "sha256-aY/QVBrLfv/GZZhI/Qx91QEKSfFfDBy6Q+U1gH+Q9ms=",
|
||||||
|
"pom": "sha256-4ZcoLlLnANEriJie3FSJh0aTUC5KqJB6zwgpgBq6bUQ="
|
||||||
|
},
|
||||||
|
"org/junit/platform#junit-platform-engine/1.8.1": {
|
||||||
|
"jar": "sha256-cCho7X6GubRnLt4PHhhekFusqa+rV3RqfGUL48e8oEc=",
|
||||||
|
"module": "sha256-2fQgpkU5o+32D4DfDG/XIrdQcldEx5ykD30lrlbKS6Q=",
|
||||||
|
"pom": "sha256-hqrU5ld1TkOgDfIm3VTIrsHsarZTP1ASGQfkZi3i5fI="
|
||||||
|
},
|
||||||
|
"org/junit/vintage#junit-vintage-engine/5.8.1": {
|
||||||
|
"jar": "sha256-F2tTzRvb+SM+lsiwx6nluGQoL7veukO1zq/e2ymkkVY=",
|
||||||
|
"module": "sha256-nOn6Lk7mp0DWEBAlMEYqcc4PqdLxQYUi5LK9tgcvZ5o=",
|
||||||
|
"pom": "sha256-Ndc3M08dvouMVnZ/oVCKwbVEsB1P5cmXl76QA+5YGxI="
|
||||||
|
},
|
||||||
|
"org/opentest4j#opentest4j/1.2.0": {
|
||||||
|
"jar": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=",
|
||||||
|
"pom": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/7": {
|
||||||
|
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/9": {
|
||||||
|
"pom": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,108 +1,68 @@
|
|||||||
{ stdenv, lib, fetchFromGitHub, writeText, openjdk17_headless
|
{ stdenv, lib, pkgs, fetchFromGitHub, writeText
|
||||||
, openjdk21_headless, gradle_7, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst
|
, openjdk21_headless, gradle_7, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst
|
||||||
, libXxf86vm, glib, alsa-lib, ffmpeg_4, python3, ruby, fetchurl, runCommand
|
, libXxf86vm, glib, alsa-lib, ffmpeg_4, python3, ruby
|
||||||
, withMedia ? true
|
, withMedia ? true
|
||||||
, withWebKit ? false
|
, withWebKit ? false
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
pname = "openjfx-modular-sdk";
|
||||||
major = "21";
|
major = "21";
|
||||||
update = ".0.3";
|
update = ".0.3";
|
||||||
build = "-ga";
|
build = "-ga";
|
||||||
repover = "${major}${update}${build}";
|
repover = "${major}${update}${build}";
|
||||||
gradle_ = (gradle_7.override {
|
jdk = openjdk21_headless;
|
||||||
# note: gradle does not yet support running on 19
|
gradle = gradle_7;
|
||||||
java = openjdk17_headless;
|
|
||||||
});
|
|
||||||
|
|
||||||
icuVersionWithSep = s: "73${s}1";
|
in stdenv.mkDerivation {
|
||||||
icuPath = "download/release-${icuVersionWithSep "-"}/icu4c-${icuVersionWithSep "_"}-data-bin-l.zip";
|
inherit pname;
|
||||||
icuData = fetchurl {
|
version = "${major}${update}${build}";
|
||||||
url = "https://github.com/unicode-org/icu/releases/${icuPath}";
|
|
||||||
hash = "sha256-QDgpjuAqDDiRcYXvj/Tr3pyLVSx3f9A+TfbGtLGCXiA=";
|
|
||||||
};
|
|
||||||
icuFakeRepository = runCommand "icu-data-repository" {} ''
|
|
||||||
install -Dm644 ${icuData} $out/${icuPath}
|
|
||||||
'';
|
|
||||||
|
|
||||||
makePackage = args: stdenv.mkDerivation ({
|
src = fetchFromGitHub {
|
||||||
version = "${major}${update}${build}";
|
owner = "openjdk";
|
||||||
|
repo = "jfx21u";
|
||||||
src = fetchFromGitHub {
|
rev = repover;
|
||||||
owner = "openjdk";
|
hash = "sha256-7z0GIbkQwG9mXY9dssaicqaKpMo3FkNEpyAvkswoQQ4=";
|
||||||
repo = "jfx21u";
|
|
||||||
rev = repover;
|
|
||||||
hash = "sha256-7z0GIbkQwG9mXY9dssaicqaKpMo3FkNEpyAvkswoQQ4=";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4 ];
|
|
||||||
nativeBuildInputs = [ gradle_ perl pkg-config cmake gperf python3 ruby ];
|
|
||||||
|
|
||||||
dontUseCmakeConfigure = true;
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
# Add missing includes for gcc-13 for webkit build:
|
|
||||||
sed -e '1i #include <cstdio>' \
|
|
||||||
-i modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/Heap.cpp \
|
|
||||||
modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/IsoSharedPageInlines.h
|
|
||||||
'';
|
|
||||||
|
|
||||||
config = writeText "gradle.properties" (''
|
|
||||||
CONF = Release
|
|
||||||
JDK_HOME = ${openjdk21_headless.home}
|
|
||||||
'' + args.gradleProperties or "");
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
runHook preBuild
|
|
||||||
|
|
||||||
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
|
||||||
export GRADLE_USER_HOME=$(mktemp -d)
|
|
||||||
ln -s $config gradle.properties
|
|
||||||
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
|
||||||
gradle --no-daemon --console=plain $gradleFlags sdk
|
|
||||||
|
|
||||||
runHook postBuild
|
|
||||||
'';
|
|
||||||
} // args);
|
|
||||||
|
|
||||||
# Fake build to pre-download deps into fixed-output derivation.
|
|
||||||
# We run nearly full build because I see no other way to download everything that's needed.
|
|
||||||
# Anyone who knows a better way?
|
|
||||||
deps = makePackage {
|
|
||||||
pname = "openjfx-deps";
|
|
||||||
|
|
||||||
# perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
|
|
||||||
installPhase = ''
|
|
||||||
find $GRADLE_USER_HOME -type f -regex '.*/modules.*\.\(jar\|pom\)' \
|
|
||||||
| perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
|
|
||||||
| sh
|
|
||||||
rm -rf $out/tmp
|
|
||||||
'';
|
|
||||||
|
|
||||||
outputHashAlgo = "sha256";
|
|
||||||
outputHashMode = "recursive";
|
|
||||||
# suspiciously the same as for openjfx 17 ...
|
|
||||||
# could they really not have changed any of their dependencies?
|
|
||||||
# or did we miss changing another upstream hash when copy-pasting?
|
|
||||||
outputHash = "sha256-dV7/U5GpFxhI13smZ587C6cVE4FRNPY0zexZkYK4Yqo=";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
in makePackage {
|
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4 ];
|
||||||
pname = "openjfx-modular-sdk";
|
nativeBuildInputs = [ gradle perl pkg-config cmake gperf python3 ruby ];
|
||||||
|
|
||||||
gradleProperties = ''
|
dontUseCmakeConfigure = true;
|
||||||
|
|
||||||
|
config = writeText "gradle.properties" ''
|
||||||
|
CONF = Release
|
||||||
|
JDK_HOME = ${jdk.home}
|
||||||
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
||||||
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
||||||
${lib.optionalString withWebKit "icuRepositoryURL = file://${icuFakeRepository}"}
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preBuild = ''
|
postPatch = ''
|
||||||
swtJar="$(find ${deps} -name org.eclipse.swt\*.jar)"
|
# Add missing includes for gcc-13 for webkit build:
|
||||||
substituteInPlace build.gradle \
|
sed -e '1i #include <cstdio>' \
|
||||||
--replace 'mavenCentral()' 'mavenLocal(); maven { url uri("${deps}") }' \
|
-i modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/Heap.cpp \
|
||||||
--replace 'name: SWT_FILE_NAME' "files('$swtJar')"
|
modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/IsoSharedPageInlines.h
|
||||||
|
|
||||||
|
ln -s $config gradle.properties
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
mitmCache = gradle.fetchDeps {
|
||||||
|
attrPath = "openjfx${major}";
|
||||||
|
pkg = pkgs."openjfx${major}".override { withWebKit = true; };
|
||||||
|
data = ./deps.json;
|
||||||
|
};
|
||||||
|
|
||||||
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
||||||
|
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = false;
|
||||||
|
|
||||||
|
gradleBuildTask = "sdk";
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
cp -r build/modular-sdk $out
|
cp -r build/modular-sdk $out
|
||||||
'';
|
'';
|
||||||
@ -111,16 +71,14 @@ in makePackage {
|
|||||||
|
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
# Remove references to bootstrap.
|
# Remove references to bootstrap.
|
||||||
export openjdkOutPath='${openjdk21_headless.outPath}'
|
export openjdkOutPath='${jdk.outPath}'
|
||||||
find "$out" -name \*.so | while read lib; do
|
find "$out" -name \*.so | while read lib; do
|
||||||
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
||||||
patchelf --set-rpath "$new_refs" "$lib"
|
patchelf --set-rpath "$new_refs" "$lib"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
disallowedReferences = [ openjdk17_headless openjdk21_headless ];
|
disallowedReferences = [ jdk gradle.jdk ];
|
||||||
|
|
||||||
passthru.deps = deps;
|
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "https://openjdk.org/projects/openjfx/";
|
homepage = "https://openjdk.org/projects/openjfx/";
|
||||||
|
152
pkgs/development/compilers/openjdk/openjfx/21/deps.json
generated
Normal file
152
pkgs/development/compilers/openjdk/openjfx/21/deps.json
generated
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
{
|
||||||
|
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
|
||||||
|
"!version": 1,
|
||||||
|
"https://download.eclipse.org": {
|
||||||
|
"eclipse/updates/4.6/R-4.6.3-201703010400/plugins/org.eclipse.swt.gtk.linux.x86_64_3.105.3.v20170228-0512": {
|
||||||
|
"jar": "sha256-qWM1HV97griQxJlOFY2AVV2uOLAK87jXPzh1wh/zmLw="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://github.com": {
|
||||||
|
"unicode-org/icu/releases/download/release-73-1/icu4c-73_1-data-bin-l": {
|
||||||
|
"zip": "sha256-QDgpjuAqDDiRcYXvj/Tr3pyLVSx3f9A+TfbGtLGCXiA="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://repo.maven.apache.org/maven2": {
|
||||||
|
"com/ibm/icu#icu4j/61.1": {
|
||||||
|
"jar": "sha256-VcmOsYOLKku5oH3Da9N4Uy1k0M3LfO7pFCNoZqfeRGQ=",
|
||||||
|
"pom": "sha256-E7h6QHnOsFUVsZrHoVIDlHB1YB1JQj9xk1ikmACYBWs="
|
||||||
|
},
|
||||||
|
"junit#junit/4.13.2": {
|
||||||
|
"jar": "sha256-jklbY0Rp1k+4rPo0laBly6zIoP/1XOHjEAe+TBbcV9M=",
|
||||||
|
"pom": "sha256-Vptpd+5GA8llwcRsMFj6bpaSkbAWDraWTdCSzYnq3ZQ="
|
||||||
|
},
|
||||||
|
"net/java#jvnet-parent/3": {
|
||||||
|
"pom": "sha256-MPV4nvo53b+WCVqto/wSYMRWH68vcUaGcXyy3FBJR1o="
|
||||||
|
},
|
||||||
|
"org/abego/treelayout#org.abego.treelayout.core/1.0.3": {
|
||||||
|
"jar": "sha256-+l4xOVw5wufUasoPgfcgYJMWB7L6Qb02A46yy2+5MyY=",
|
||||||
|
"pom": "sha256-o7KyI3lDcDVeeSQzrwEvyZNmfAMxviusrYTbwJrOSgw="
|
||||||
|
},
|
||||||
|
"org/antlr#ST4/4.1": {
|
||||||
|
"jar": "sha256-ixzK7Z7cVc0lXZwZxNjaR1bZtvy0NWcSkrQ0cLFtddg=",
|
||||||
|
"pom": "sha256-cz5r2XyjTMbfk6QkPlEeVnPLm4jHSxiETgQqRdUWmHw="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-master/3.5.2": {
|
||||||
|
"pom": "sha256-QtkaUx6lEA6wm1QaoALDuQjo8oK9c7bi9S83HvEzG9Y="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-runtime/3.5.2": {
|
||||||
|
"jar": "sha256-zj/I7LEPOemjzdy7LONQ0nLZzT0LHhjm/nPDuTichzQ=",
|
||||||
|
"pom": "sha256-RqnCIAu4sSvXEkqnpQl/9JCZkIMpyFGgTLIFFCCqfyU="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-master/4.7.2": {
|
||||||
|
"pom": "sha256-upnLJdI5DzhoDHUChCoO4JWdHmQD4BPM/2mP1YVu6tE="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-runtime/4.7.2": {
|
||||||
|
"jar": "sha256-TFGLh9S9/4tEzYy8GvgW6US2Kj/luAt4FQHPH0dZu8Q=",
|
||||||
|
"pom": "sha256-3AnLqYwl08BuSuxRaIXUw68DBiulX0/mKD/JzxdqYPs="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2": {
|
||||||
|
"pom": "sha256-z56zaUD6xEiBA4wb4/LFjgbmjRq/v9SmjTS72LrFV3E="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2/complete": {
|
||||||
|
"jar": "sha256-aFI4bXl17/KRcdrgAswiMlFRDTXyka4neUjzgaezgLQ="
|
||||||
|
},
|
||||||
|
"org/apache#apache/13": {
|
||||||
|
"pom": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-core/7.7.3": {
|
||||||
|
"jar": "sha256-jrAzNcGjxqixiN9012G6qDVplTWCq0QLU0yIRJ6o4N4=",
|
||||||
|
"pom": "sha256-gvilIoHGyLp5dKy6rESzLXbiYAgvP0u+FlwPbkuJFCo="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-grouping/7.7.3": {
|
||||||
|
"jar": "sha256-L1vNY7JXQ9MMMTmGIk0Qf3XFKThxSVQlNRDFfT9nvrg=",
|
||||||
|
"pom": "sha256-HwStk+IETUCP2SXu4K6ktKHvjAdXe0Jme7U2BgKCImU="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-parent/7.7.3": {
|
||||||
|
"pom": "sha256-6PrdU9XwBMQN3SNdQ4ZI5yxyVZn+4VQ+ViTV+1AQcwU="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queries/7.7.3": {
|
||||||
|
"jar": "sha256-PLWS2wpulWnGrMvbiKmtex2nQo28p5Ia0cWlhl1bQiY=",
|
||||||
|
"pom": "sha256-rkBsiiuw12SllERCefRiihl2vQlB551CzmTgmHxYnFA="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queryparser/7.7.3": {
|
||||||
|
"jar": "sha256-F3XJ/o7dlobTt6ZHd4+kTqqW8cwMSZMVCHEz4amDnoQ=",
|
||||||
|
"pom": "sha256-z2klkhWscjC5+tYKXInKDp9bm6rM7dFGlY/76Q9OsNI="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-sandbox/7.7.3": {
|
||||||
|
"jar": "sha256-VfG38J2uKwytMhw00Vw8/FmgIRviM/Yp0EbEK/FwErc=",
|
||||||
|
"pom": "sha256-1vbdxsz1xvymRH1HD1BJ4WN6xje/HbWuDV8WaP34EiI="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-solr-grandparent/7.7.3": {
|
||||||
|
"pom": "sha256-Oig3WAynavNq99/i3B0zT8b/XybRDySJnbd3CtfP2f4="
|
||||||
|
},
|
||||||
|
"org/apiguardian#apiguardian-api/1.1.2": {
|
||||||
|
"jar": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=",
|
||||||
|
"module": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=",
|
||||||
|
"pom": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA="
|
||||||
|
},
|
||||||
|
"org/glassfish#javax.json/1.0.4": {
|
||||||
|
"jar": "sha256-Dh3sQKHt6WWUElHtqWiu7gUsxPUDeLwxbMSOgVm9vrQ=",
|
||||||
|
"pom": "sha256-a6+Dg/+pi2bqls1b/B7H8teUY7uYrJgFKWSxIcIhLVQ="
|
||||||
|
},
|
||||||
|
"org/glassfish#json/1.0.4": {
|
||||||
|
"pom": "sha256-bXxoQjEV+SFxjZRPhZkktMaFIX7AOkn3BFWossqpcuY="
|
||||||
|
},
|
||||||
|
"org/hamcrest#hamcrest-core/1.3": {
|
||||||
|
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
|
||||||
|
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
|
||||||
|
},
|
||||||
|
"org/hamcrest#hamcrest-parent/1.3": {
|
||||||
|
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
|
||||||
|
},
|
||||||
|
"org/junit#junit-bom/5.8.1": {
|
||||||
|
"module": "sha256-a4LLpSoTSxPBmC8M+WIsbUhTcdQLmJJG8xJOOwpbGFQ=",
|
||||||
|
"pom": "sha256-733Ef45KFoZPR3lyjofteFOYGeT7iSdoqdprjvkD+GM="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-api/5.8.1": {
|
||||||
|
"jar": "sha256-zjN0p++6YF4tK2mj/vkBNAMrqz7MPthXmkhxscLEcpw=",
|
||||||
|
"module": "sha256-DWnbwja33Kq0ynNpqlYOmwqbvvf5WIgv+0hTPLunwJ0=",
|
||||||
|
"pom": "sha256-d61+1KYwutH8h0agpuZ1wj+2lAsnq2LMyzTk/Pz+Ob8="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-engine/5.8.1": {
|
||||||
|
"jar": "sha256-Rom8kCJVoZ/pgndoO6MjHAlNEHxUyNNfK2+cl9ImQY4=",
|
||||||
|
"module": "sha256-aHkP7DP5ew7IQM9HrEDuDHLgVvEiyg88ZkZ0M0mTdpk=",
|
||||||
|
"pom": "sha256-qjIKMYpyceMyYsSA/POZZbmobap2Zm63dTQrgOnN1F4="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-params/5.8.1": {
|
||||||
|
"jar": "sha256-OJuNE6jYhy/L1PDrp7LEavxihBn5obKjqfkyQaBqchg=",
|
||||||
|
"module": "sha256-Ek1gPG2AMzZtjKRxY2tEbji5zBvQEPMpVCNYGHr6hl4=",
|
||||||
|
"pom": "sha256-OrrKWfvfJTMg9yRCwQPjnOQDjcEf6MSJ28ScwjoHHws="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter/5.8.1": {
|
||||||
|
"jar": "sha256-jxBJ7iSzShC2DNgQBICZ94HCZYzeIYHoMUlqswqYKYU=",
|
||||||
|
"module": "sha256-LjS6TIWMOM0KNlr//syTKnGWzpOF4utUBZQuWBwV/1w=",
|
||||||
|
"pom": "sha256-rssFDSMtOT9Az/EfjMMPUrZslQpB+IOSXIEULt7l9PU="
|
||||||
|
},
|
||||||
|
"org/junit/platform#junit-platform-commons/1.8.1": {
|
||||||
|
"jar": "sha256-+k+mjIvVTdDLScP8vpsuQvTaa+2+fnzPKgXxoeYJtZM=",
|
||||||
|
"module": "sha256-aY/QVBrLfv/GZZhI/Qx91QEKSfFfDBy6Q+U1gH+Q9ms=",
|
||||||
|
"pom": "sha256-4ZcoLlLnANEriJie3FSJh0aTUC5KqJB6zwgpgBq6bUQ="
|
||||||
|
},
|
||||||
|
"org/junit/platform#junit-platform-engine/1.8.1": {
|
||||||
|
"jar": "sha256-cCho7X6GubRnLt4PHhhekFusqa+rV3RqfGUL48e8oEc=",
|
||||||
|
"module": "sha256-2fQgpkU5o+32D4DfDG/XIrdQcldEx5ykD30lrlbKS6Q=",
|
||||||
|
"pom": "sha256-hqrU5ld1TkOgDfIm3VTIrsHsarZTP1ASGQfkZi3i5fI="
|
||||||
|
},
|
||||||
|
"org/junit/vintage#junit-vintage-engine/5.8.1": {
|
||||||
|
"jar": "sha256-F2tTzRvb+SM+lsiwx6nluGQoL7veukO1zq/e2ymkkVY=",
|
||||||
|
"module": "sha256-nOn6Lk7mp0DWEBAlMEYqcc4PqdLxQYUi5LK9tgcvZ5o=",
|
||||||
|
"pom": "sha256-Ndc3M08dvouMVnZ/oVCKwbVEsB1P5cmXl76QA+5YGxI="
|
||||||
|
},
|
||||||
|
"org/opentest4j#opentest4j/1.2.0": {
|
||||||
|
"jar": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=",
|
||||||
|
"pom": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/7": {
|
||||||
|
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/9": {
|
||||||
|
"pom": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +1,7 @@
|
|||||||
{ stdenv
|
{ stdenv
|
||||||
, lib
|
, lib
|
||||||
|
, pkgs
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, fetchurl
|
|
||||||
, runCommand
|
|
||||||
, writeText
|
, writeText
|
||||||
, openjdk21_headless
|
, openjdk21_headless
|
||||||
, gradle
|
, gradle
|
||||||
@ -24,90 +23,57 @@
|
|||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
pname = "openjfx-modular-sdk";
|
||||||
major = "22";
|
major = "22";
|
||||||
update = ".0.1";
|
update = ".0.1";
|
||||||
build = "-ga";
|
build = "-ga";
|
||||||
repover = "${major}${update}${build}";
|
repover = "${major}${update}${build}";
|
||||||
|
jdk = openjdk21_headless;
|
||||||
|
|
||||||
icuVersionWithSep = s: "73${s}1";
|
in stdenv.mkDerivation {
|
||||||
icuPath = "download/release-${icuVersionWithSep "-"}/icu4c-${icuVersionWithSep "_"}-data-bin-l.zip";
|
inherit pname;
|
||||||
icuData = fetchurl {
|
version = "${major}${update}${build}";
|
||||||
url = "https://github.com/unicode-org/icu/releases/${icuPath}";
|
|
||||||
hash = "sha256-QDgpjuAqDDiRcYXvj/Tr3pyLVSx3f9A+TfbGtLGCXiA=";
|
|
||||||
};
|
|
||||||
icuFakeRepository = runCommand "icu-data-repository" {} ''
|
|
||||||
install -Dm644 ${icuData} $out/${icuPath}
|
|
||||||
'';
|
|
||||||
|
|
||||||
makePackage = args: stdenv.mkDerivation ({
|
src = fetchFromGitHub {
|
||||||
version = "${major}${update}${build}";
|
owner = "openjdk";
|
||||||
|
repo = "jfx22u";
|
||||||
src = fetchFromGitHub {
|
rev = repover;
|
||||||
owner = "openjdk";
|
hash = "sha256-VoEufSO+LciUCvoAM86MG1iMjCA3FSb60Ik4OP2Rk/Q=";
|
||||||
repo = "jfx22u";
|
|
||||||
rev = repover;
|
|
||||||
hash = "sha256-VoEufSO+LciUCvoAM86MG1iMjCA3FSb60Ik4OP2Rk/Q=";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4 ];
|
|
||||||
nativeBuildInputs = [ gradle perl pkg-config cmake gperf python3 ruby ];
|
|
||||||
|
|
||||||
dontUseCmakeConfigure = true;
|
|
||||||
|
|
||||||
config = writeText "gradle.properties" (''
|
|
||||||
CONF = Release
|
|
||||||
JDK_HOME = ${openjdk21_headless.home}
|
|
||||||
'' + args.gradleProperties or "");
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
runHook preBuild
|
|
||||||
|
|
||||||
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
|
||||||
export GRADLE_USER_HOME=$(mktemp -d)
|
|
||||||
ln -s $config gradle.properties
|
|
||||||
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
|
||||||
gradle --no-daemon --console=plain $gradleFlags sdk
|
|
||||||
|
|
||||||
runHook postBuild
|
|
||||||
'';
|
|
||||||
} // args);
|
|
||||||
|
|
||||||
# Fake build to pre-download deps into fixed-output derivation.
|
|
||||||
# We run nearly full build because I see no other way to download everything that's needed.
|
|
||||||
# Anyone who knows a better way?
|
|
||||||
deps = makePackage {
|
|
||||||
pname = "openjfx-deps";
|
|
||||||
|
|
||||||
# perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
|
|
||||||
installPhase = ''
|
|
||||||
find $GRADLE_USER_HOME -type f -regex '.*/modules.*\.\(jar\|pom\)' \
|
|
||||||
| perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
|
|
||||||
| sh
|
|
||||||
rm -rf $out/tmp
|
|
||||||
'';
|
|
||||||
|
|
||||||
outputHashAlgo = "sha256";
|
|
||||||
outputHashMode = "recursive";
|
|
||||||
outputHash = "sha256-2I7LvYcudlB4DKJ/wEiTjY6nICUxUY52euosUqOA+Bs=";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
in
|
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4 ];
|
||||||
makePackage {
|
nativeBuildInputs = [ gradle perl pkg-config cmake gperf python3 ruby ];
|
||||||
pname = "openjfx-modular-sdk";
|
|
||||||
|
|
||||||
gradleProperties = ''
|
dontUseCmakeConfigure = true;
|
||||||
|
|
||||||
|
config = writeText "gradle.properties" ''
|
||||||
|
CONF = Release
|
||||||
|
JDK_HOME = ${jdk.home}
|
||||||
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
COMPILE_MEDIA = ${lib.boolToString withMedia}
|
||||||
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
COMPILE_WEBKIT = ${lib.boolToString withWebKit}
|
||||||
${lib.optionalString withWebKit "icuRepositoryURL = file://${icuFakeRepository}"}
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preBuild = ''
|
postPatch = ''
|
||||||
swtJar="$(find ${deps} -name org.eclipse.swt\*.jar)"
|
ln -s $config gradle.properties
|
||||||
substituteInPlace build.gradle \
|
|
||||||
--replace 'mavenCentral()' 'mavenLocal(); maven { url uri("${deps}") }' \
|
|
||||||
--replace 'name: SWT_FILE_NAME' "files('$swtJar')"
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
mitmCache = gradle.fetchDeps {
|
||||||
|
attrPath = "openjfx${major}";
|
||||||
|
pkg = pkgs."openjfx${major}".override { withWebKit = true; };
|
||||||
|
data = ./deps.json;
|
||||||
|
};
|
||||||
|
|
||||||
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
|
||||||
|
export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE"
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = false;
|
||||||
|
|
||||||
|
gradleBuildTask = "sdk";
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
cp -r build/modular-sdk $out
|
cp -r build/modular-sdk $out
|
||||||
'';
|
'';
|
||||||
@ -116,16 +82,14 @@ makePackage {
|
|||||||
|
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
# Remove references to bootstrap.
|
# Remove references to bootstrap.
|
||||||
export openjdkOutPath='${openjdk21_headless.outPath}'
|
export openjdkOutPath='${jdk.outPath}'
|
||||||
find "$out" -name \*.so | while read lib; do
|
find "$out" -name \*.so | while read lib; do
|
||||||
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')"
|
||||||
patchelf --set-rpath "$new_refs" "$lib"
|
patchelf --set-rpath "$new_refs" "$lib"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
disallowedReferences = [ openjdk21_headless openjdk21_headless ];
|
disallowedReferences = [ jdk gradle.jdk ];
|
||||||
|
|
||||||
passthru.deps = deps;
|
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "https://openjdk.org/projects/openjfx/";
|
homepage = "https://openjdk.org/projects/openjfx/";
|
||||||
|
152
pkgs/development/compilers/openjdk/openjfx/22/deps.json
generated
Normal file
152
pkgs/development/compilers/openjdk/openjfx/22/deps.json
generated
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
{
|
||||||
|
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
|
||||||
|
"!version": 1,
|
||||||
|
"https://download.eclipse.org": {
|
||||||
|
"eclipse/updates/4.30/R-4.30-202312010110/plugins/org.eclipse.swt.gtk.linux.x86_64_3.124.200.v20231113-1355": {
|
||||||
|
"jar": "sha256-Q048o4oWnZ9Y33AxXiSxbxEeayfbWOf1HoxtoLS4SIs="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://github.com": {
|
||||||
|
"unicode-org/icu/releases/download/release-73-1/icu4c-73_1-data-bin-l": {
|
||||||
|
"zip": "sha256-QDgpjuAqDDiRcYXvj/Tr3pyLVSx3f9A+TfbGtLGCXiA="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https://repo.maven.apache.org/maven2": {
|
||||||
|
"com/ibm/icu#icu4j/61.1": {
|
||||||
|
"jar": "sha256-VcmOsYOLKku5oH3Da9N4Uy1k0M3LfO7pFCNoZqfeRGQ=",
|
||||||
|
"pom": "sha256-E7h6QHnOsFUVsZrHoVIDlHB1YB1JQj9xk1ikmACYBWs="
|
||||||
|
},
|
||||||
|
"junit#junit/4.13.2": {
|
||||||
|
"jar": "sha256-jklbY0Rp1k+4rPo0laBly6zIoP/1XOHjEAe+TBbcV9M=",
|
||||||
|
"pom": "sha256-Vptpd+5GA8llwcRsMFj6bpaSkbAWDraWTdCSzYnq3ZQ="
|
||||||
|
},
|
||||||
|
"net/java#jvnet-parent/3": {
|
||||||
|
"pom": "sha256-MPV4nvo53b+WCVqto/wSYMRWH68vcUaGcXyy3FBJR1o="
|
||||||
|
},
|
||||||
|
"org/abego/treelayout#org.abego.treelayout.core/1.0.3": {
|
||||||
|
"jar": "sha256-+l4xOVw5wufUasoPgfcgYJMWB7L6Qb02A46yy2+5MyY=",
|
||||||
|
"pom": "sha256-o7KyI3lDcDVeeSQzrwEvyZNmfAMxviusrYTbwJrOSgw="
|
||||||
|
},
|
||||||
|
"org/antlr#ST4/4.1": {
|
||||||
|
"jar": "sha256-ixzK7Z7cVc0lXZwZxNjaR1bZtvy0NWcSkrQ0cLFtddg=",
|
||||||
|
"pom": "sha256-cz5r2XyjTMbfk6QkPlEeVnPLm4jHSxiETgQqRdUWmHw="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-master/3.5.2": {
|
||||||
|
"pom": "sha256-QtkaUx6lEA6wm1QaoALDuQjo8oK9c7bi9S83HvEzG9Y="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr-runtime/3.5.2": {
|
||||||
|
"jar": "sha256-zj/I7LEPOemjzdy7LONQ0nLZzT0LHhjm/nPDuTichzQ=",
|
||||||
|
"pom": "sha256-RqnCIAu4sSvXEkqnpQl/9JCZkIMpyFGgTLIFFCCqfyU="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-master/4.7.2": {
|
||||||
|
"pom": "sha256-upnLJdI5DzhoDHUChCoO4JWdHmQD4BPM/2mP1YVu6tE="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4-runtime/4.7.2": {
|
||||||
|
"jar": "sha256-TFGLh9S9/4tEzYy8GvgW6US2Kj/luAt4FQHPH0dZu8Q=",
|
||||||
|
"pom": "sha256-3AnLqYwl08BuSuxRaIXUw68DBiulX0/mKD/JzxdqYPs="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2": {
|
||||||
|
"pom": "sha256-z56zaUD6xEiBA4wb4/LFjgbmjRq/v9SmjTS72LrFV3E="
|
||||||
|
},
|
||||||
|
"org/antlr#antlr4/4.7.2/complete": {
|
||||||
|
"jar": "sha256-aFI4bXl17/KRcdrgAswiMlFRDTXyka4neUjzgaezgLQ="
|
||||||
|
},
|
||||||
|
"org/apache#apache/13": {
|
||||||
|
"pom": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-core/7.7.3": {
|
||||||
|
"jar": "sha256-jrAzNcGjxqixiN9012G6qDVplTWCq0QLU0yIRJ6o4N4=",
|
||||||
|
"pom": "sha256-gvilIoHGyLp5dKy6rESzLXbiYAgvP0u+FlwPbkuJFCo="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-grouping/7.7.3": {
|
||||||
|
"jar": "sha256-L1vNY7JXQ9MMMTmGIk0Qf3XFKThxSVQlNRDFfT9nvrg=",
|
||||||
|
"pom": "sha256-HwStk+IETUCP2SXu4K6ktKHvjAdXe0Jme7U2BgKCImU="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-parent/7.7.3": {
|
||||||
|
"pom": "sha256-6PrdU9XwBMQN3SNdQ4ZI5yxyVZn+4VQ+ViTV+1AQcwU="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queries/7.7.3": {
|
||||||
|
"jar": "sha256-PLWS2wpulWnGrMvbiKmtex2nQo28p5Ia0cWlhl1bQiY=",
|
||||||
|
"pom": "sha256-rkBsiiuw12SllERCefRiihl2vQlB551CzmTgmHxYnFA="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-queryparser/7.7.3": {
|
||||||
|
"jar": "sha256-F3XJ/o7dlobTt6ZHd4+kTqqW8cwMSZMVCHEz4amDnoQ=",
|
||||||
|
"pom": "sha256-z2klkhWscjC5+tYKXInKDp9bm6rM7dFGlY/76Q9OsNI="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-sandbox/7.7.3": {
|
||||||
|
"jar": "sha256-VfG38J2uKwytMhw00Vw8/FmgIRviM/Yp0EbEK/FwErc=",
|
||||||
|
"pom": "sha256-1vbdxsz1xvymRH1HD1BJ4WN6xje/HbWuDV8WaP34EiI="
|
||||||
|
},
|
||||||
|
"org/apache/lucene#lucene-solr-grandparent/7.7.3": {
|
||||||
|
"pom": "sha256-Oig3WAynavNq99/i3B0zT8b/XybRDySJnbd3CtfP2f4="
|
||||||
|
},
|
||||||
|
"org/apiguardian#apiguardian-api/1.1.2": {
|
||||||
|
"jar": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=",
|
||||||
|
"module": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=",
|
||||||
|
"pom": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA="
|
||||||
|
},
|
||||||
|
"org/glassfish#javax.json/1.0.4": {
|
||||||
|
"jar": "sha256-Dh3sQKHt6WWUElHtqWiu7gUsxPUDeLwxbMSOgVm9vrQ=",
|
||||||
|
"pom": "sha256-a6+Dg/+pi2bqls1b/B7H8teUY7uYrJgFKWSxIcIhLVQ="
|
||||||
|
},
|
||||||
|
"org/glassfish#json/1.0.4": {
|
||||||
|
"pom": "sha256-bXxoQjEV+SFxjZRPhZkktMaFIX7AOkn3BFWossqpcuY="
|
||||||
|
},
|
||||||
|
"org/hamcrest#hamcrest-core/1.3": {
|
||||||
|
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
|
||||||
|
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
|
||||||
|
},
|
||||||
|
"org/hamcrest#hamcrest-parent/1.3": {
|
||||||
|
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
|
||||||
|
},
|
||||||
|
"org/junit#junit-bom/5.8.1": {
|
||||||
|
"module": "sha256-a4LLpSoTSxPBmC8M+WIsbUhTcdQLmJJG8xJOOwpbGFQ=",
|
||||||
|
"pom": "sha256-733Ef45KFoZPR3lyjofteFOYGeT7iSdoqdprjvkD+GM="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-api/5.8.1": {
|
||||||
|
"jar": "sha256-zjN0p++6YF4tK2mj/vkBNAMrqz7MPthXmkhxscLEcpw=",
|
||||||
|
"module": "sha256-DWnbwja33Kq0ynNpqlYOmwqbvvf5WIgv+0hTPLunwJ0=",
|
||||||
|
"pom": "sha256-d61+1KYwutH8h0agpuZ1wj+2lAsnq2LMyzTk/Pz+Ob8="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-engine/5.8.1": {
|
||||||
|
"jar": "sha256-Rom8kCJVoZ/pgndoO6MjHAlNEHxUyNNfK2+cl9ImQY4=",
|
||||||
|
"module": "sha256-aHkP7DP5ew7IQM9HrEDuDHLgVvEiyg88ZkZ0M0mTdpk=",
|
||||||
|
"pom": "sha256-qjIKMYpyceMyYsSA/POZZbmobap2Zm63dTQrgOnN1F4="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter-params/5.8.1": {
|
||||||
|
"jar": "sha256-OJuNE6jYhy/L1PDrp7LEavxihBn5obKjqfkyQaBqchg=",
|
||||||
|
"module": "sha256-Ek1gPG2AMzZtjKRxY2tEbji5zBvQEPMpVCNYGHr6hl4=",
|
||||||
|
"pom": "sha256-OrrKWfvfJTMg9yRCwQPjnOQDjcEf6MSJ28ScwjoHHws="
|
||||||
|
},
|
||||||
|
"org/junit/jupiter#junit-jupiter/5.8.1": {
|
||||||
|
"jar": "sha256-jxBJ7iSzShC2DNgQBICZ94HCZYzeIYHoMUlqswqYKYU=",
|
||||||
|
"module": "sha256-LjS6TIWMOM0KNlr//syTKnGWzpOF4utUBZQuWBwV/1w=",
|
||||||
|
"pom": "sha256-rssFDSMtOT9Az/EfjMMPUrZslQpB+IOSXIEULt7l9PU="
|
||||||
|
},
|
||||||
|
"org/junit/platform#junit-platform-commons/1.8.1": {
|
||||||
|
"jar": "sha256-+k+mjIvVTdDLScP8vpsuQvTaa+2+fnzPKgXxoeYJtZM=",
|
||||||
|
"module": "sha256-aY/QVBrLfv/GZZhI/Qx91QEKSfFfDBy6Q+U1gH+Q9ms=",
|
||||||
|
"pom": "sha256-4ZcoLlLnANEriJie3FSJh0aTUC5KqJB6zwgpgBq6bUQ="
|
||||||
|
},
|
||||||
|
"org/junit/platform#junit-platform-engine/1.8.1": {
|
||||||
|
"jar": "sha256-cCho7X6GubRnLt4PHhhekFusqa+rV3RqfGUL48e8oEc=",
|
||||||
|
"module": "sha256-2fQgpkU5o+32D4DfDG/XIrdQcldEx5ykD30lrlbKS6Q=",
|
||||||
|
"pom": "sha256-hqrU5ld1TkOgDfIm3VTIrsHsarZTP1ASGQfkZi3i5fI="
|
||||||
|
},
|
||||||
|
"org/junit/vintage#junit-vintage-engine/5.8.1": {
|
||||||
|
"jar": "sha256-F2tTzRvb+SM+lsiwx6nluGQoL7veukO1zq/e2ymkkVY=",
|
||||||
|
"module": "sha256-nOn6Lk7mp0DWEBAlMEYqcc4PqdLxQYUi5LK9tgcvZ5o=",
|
||||||
|
"pom": "sha256-Ndc3M08dvouMVnZ/oVCKwbVEsB1P5cmXl76QA+5YGxI="
|
||||||
|
},
|
||||||
|
"org/opentest4j#opentest4j/1.2.0": {
|
||||||
|
"jar": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=",
|
||||||
|
"pom": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/7": {
|
||||||
|
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
|
||||||
|
},
|
||||||
|
"org/sonatype/oss#oss-parent/9": {
|
||||||
|
"pom": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user