at 24.05-pre 2.0 kB view raw
1{ lib 2, stdenv 3, fetchFromGitHub 4, emptyDirectory 5, writeText 6, makeWrapper 7, gradle 8, jdk20 9, llvmPackages 10}: 11 12let 13 gradleInit = writeText "init.gradle" '' 14 logger.lifecycle 'Replacing Maven repositories with empty directory...' 15 gradle.projectsLoaded { 16 rootProject.allprojects { 17 buildscript { 18 repositories { 19 clear() 20 maven { url '${emptyDirectory}' } 21 } 22 } 23 repositories { 24 clear() 25 maven { url '${emptyDirectory}' } 26 } 27 } 28 } 29 settingsEvaluated { settings -> 30 settings.pluginManagement { 31 repositories { 32 maven { url '${emptyDirectory}' } 33 } 34 } 35 } 36 ''; 37in 38 39stdenv.mkDerivation { 40 pname = "jextract"; 41 version = "unstable-2023-04-14"; 42 43 src = fetchFromGitHub { 44 owner = "openjdk"; 45 repo = "jextract"; 46 rev = "cf3afe9ca71592c8ebb32f219707285dd1d5b28a"; 47 hash = "sha256-8qRD1Xg39vxtFAdguD8XvkQ8u7YzFU55MhyyJozVffo="; 48 }; 49 50 nativeBuildInputs = [ 51 gradle 52 makeWrapper 53 ]; 54 55 env = { 56 ORG_GRADLE_PROJECT_llvm_home = llvmPackages.libclang.lib; 57 ORG_GRADLE_PROJECT_jdk20_home = jdk20; 58 }; 59 60 buildPhase = '' 61 runHook preBuild 62 63 export GRADLE_USER_HOME=$(mktemp -d) 64 gradle --console plain --init-script "${gradleInit}" assemble 65 66 runHook postBuild 67 ''; 68 69 doCheck = true; 70 71 checkPhase = '' 72 runHook preCheck 73 gradle --console plain --init-script "${gradleInit}" verify 74 runHook postCheck 75 ''; 76 77 installPhase = '' 78 runHook preInstall 79 80 mkdir -p $out/opt/ 81 cp -r ./build/jextract $out/opt/jextract 82 83 runHook postInstall 84 ''; 85 86 postFixup = '' 87 makeWrapper "$out/opt/jextract/bin/jextract" "$out/bin/jextract" 88 ''; 89 90 meta = with lib; { 91 description = "A tool which mechanically generates Java bindings from a native library headers"; 92 homepage = "https://github.com/openjdk/jextract"; 93 license = licenses.gpl2Only; 94 maintainers = with maintainers; [ sharzy ]; 95 }; 96}