Skip to content

Commit 02692cf

Browse files
mvnd: init at 1.0.2 (#337151)
2 parents 7d3f1b4 + d64c6bd commit 02692cf

File tree

2 files changed

+115
-0
lines changed

2 files changed

+115
-0
lines changed

maintainers/maintainer-list.nix

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15906,6 +15906,12 @@
1590615906
email = "[email protected]";
1590715907
name = "Nathaniel Brough";
1590815908
};
15909+
nathanregner = {
15910+
email = "[email protected]";
15911+
github = "nathanregner";
15912+
githubId = 9659564;
15913+
name = "Nathan Regner";
15914+
};
1590915915
nathanruiz = {
1591015916
email = "[email protected]";
1591115917
github = "nathanruiz";

pkgs/by-name/mv/mvnd/package.nix

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
{
2+
darwin,
3+
fetchFromGitHub,
4+
graalvmCEPackages,
5+
installShellFiles,
6+
lib,
7+
makeWrapper,
8+
maven,
9+
mvnd,
10+
nix-update-script,
11+
runCommand,
12+
stdenv,
13+
testers,
14+
}:
15+
16+
let
17+
platformMap = {
18+
aarch64-darwin = "darwin-aarch64";
19+
aarch64-linux = "linux-aarch64";
20+
x86_64-darwin = "darwin-amd64";
21+
x86_64-linux = "linux-amd64";
22+
};
23+
in
24+
25+
maven.buildMavenPackage rec {
26+
pname = "mvnd";
27+
version = "1.0.2";
28+
src = fetchFromGitHub {
29+
owner = "apache";
30+
repo = "maven-mvnd";
31+
rev = version;
32+
sha256 = "sha256-c1jD7m4cOdPWQEoaUMcNap2zvvX7H9VaWQv8JSgAnRU=";
33+
};
34+
35+
# need graalvm at build-time for the `native-image` tool
36+
mvnJdk = graalvmCEPackages.graalvm-ce;
37+
mvnHash = "sha256-Bx0XSnpHNxNX07uVPc18py9qbnG5b3b7J4vs44ty034=";
38+
39+
nativeBuildInputs = [
40+
graalvmCEPackages.graalvm-ce
41+
installShellFiles
42+
makeWrapper
43+
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.apple_sdk_11_0.frameworks.Foundation ];
44+
45+
mvnDepsParameters = mvnParameters;
46+
mvnParameters = lib.concatStringsSep " " [
47+
"-Dmaven.buildNumber.skip=true" # skip build number generation; requires a git repository
48+
"-Drat.skip=true" # skip license checks; they require manaul approval and should have already been run upstream
49+
"-Dspotless.skip=true" # skip formatting checks
50+
51+
# skip tests that fail in the sandbox
52+
"-pl"
53+
"!integration-tests"
54+
"-Dtest=!org.mvndaemon.mvnd.client.OsUtilsTest,!org.mvndaemon.mvnd.cache.impl.CacheFactoryTest"
55+
"-Dsurefire.failIfNoSpecifiedTests=false"
56+
57+
"-Pnative"
58+
# propagate linker args required by the darwin build
59+
# see `buildGraalvmNativeImage`
60+
''-Dgraalvm-native-static-opt="-H:-CheckToolchain $(export -p | sed -n 's/^declare -x \([^=]\+\)=.*$/ -E\1/p' | tr -d \\n)"''
61+
];
62+
63+
installPhase = ''
64+
runHook preInstall
65+
66+
mkdir -p $out/bin
67+
mkdir -p $out/mvnd-home
68+
69+
cp -r dist/target/maven-mvnd-${version}-${platformMap.${stdenv.system}}/* $out/mvnd-home
70+
makeWrapper $out/mvnd-home/bin/mvnd $out/bin/mvnd \
71+
--set-default MVND_HOME $out/mvnd-home
72+
73+
installShellCompletion --cmd mvnd \
74+
--bash $out/mvnd-home/bin/mvnd-bash-completion.bash
75+
76+
runHook postInstall
77+
'';
78+
79+
passthru =
80+
{
81+
updateScript = nix-update-script { };
82+
}
83+
// (lib.optionalAttrs (!stdenv.hostPlatform.isDarwin) {
84+
tests.version = testers.testVersion {
85+
# `java` or `JAVA_HOME` is required to run mvnd
86+
# presumably the user already has a JDK installed if they're using maven; don't pull in an unnecessary runtime dependency
87+
package =
88+
runCommand "mvnd"
89+
{
90+
inherit version;
91+
nativeBuildInputs = [ makeWrapper ];
92+
}
93+
''
94+
mkdir -p $out/bin
95+
makeWrapper ${mvnd}/bin/mvnd $out/bin/mvnd \
96+
--suffix PATH : ${lib.makeBinPath [ mvnJdk ]}
97+
'';
98+
};
99+
});
100+
101+
meta = {
102+
description = "The Apache Maven Daemon";
103+
homepage = "https://maven.apache.org/";
104+
license = lib.licenses.asl20;
105+
platforms = lib.platforms.unix;
106+
maintainers = with lib.maintainers; [ nathanregner ];
107+
mainProgram = "mvnd";
108+
};
109+
}

0 commit comments

Comments
 (0)