blob: 1cfc2178590f36bb4b8500091f5ce288fa2829d1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
{
lib,
stdenv,
fetchFromGitHub,
writeShellScript,
nix-update,
gradle,
jdk21,
jre_minimal,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "jspecify";
version = "1.0.0";
src = fetchFromGitHub {
owner = "jspecify";
repo = "jspecify";
tag = "v${finalAttrs.version}";
hash = "sha256-WgVRaGm9lYhMeMM6QWUezXtUsXkaK/iPt1gj2koWNu8=";
};
nativeBuildInputs = [
gradle
jdk21
];
mitmCache = gradle.fetchDeps {
inherit (finalAttrs) pname;
data = ./deps.json;
};
# JSpecify's build.gradle reads JAVA_VERSION (defaults to 11). Pin it so Gradle's
# toolchain machinery resolves to the JDK we provide instead of trying
# to auto-download one.
env.JAVA_VERSION = lib.versions.major jdk21.version;
gradleBuildTask = "assemble";
doCheck = true;
installPhase = ''
runHook preInstall
install -Dm644 build/libs/jspecify-${finalAttrs.version}.jar \
$out/share/java/jspecify-${finalAttrs.version}.jar
runHook postInstall
'';
passthru.updateScript = writeShellScript "update-jspecify" ''
${lib.getExe nix-update} jspecify
$(nix-build -A jspecify.mitmCache.updateScript)
'';
meta = {
homepage = "https://jspecify.dev";
description = "Standard Annotations for Java Static Analysis";
license = lib.licenses.asl20;
sourceProvenance = with lib.sourceTypes; [ fromSource ];
inherit (jre_minimal.meta) platforms;
maintainers = with lib.maintainers; [ msgilligan ];
};
})
|