configuration/packages/buildJosmPlugin.nix
2023-08-16 21:06:33 -07:00

77 lines
2.6 KiB
Nix

{ fetchsvn
, fetchurl
, lib
, stdenv
# Dependencies
, ant
, jdk
, josm
}:
{ pluginName ? args.pname, ... } @ args:
# Modeled after https://josm.openstreetmap.de/wiki/DevelopersGuide/DevelopingPlugins
let
inherit (lib) versionOlder warnIf;
josmVersion = "18721";
josmLegacyRev = "36079";
in
warnIf (versionOlder josmVersion josm.version) "JOSM plugin build environment ${josmVersion} is behind ${josm.version}"
stdenv.mkDerivation
(args // {
srcJosmLegacy = fetchsvn {
url = "https://josm.openstreetmap.de/osmsvn/applications/editors/josm";
rev = josmLegacyRev;
ignoreExternals = true;
sha256 = "sha256-1sL7tldjWvCYFfwAgbj/XPCow42CD/ezouY2PUBYF74=";
};
srcJosmCore = fetchsvn {
url = "https://josm.openstreetmap.de/svn/trunk";
rev = josmVersion;
ignoreExternals = true;
sha256 = "sha256-t9XtVyYUeQG8GCo3F6EqliRC7z8XljDNBqo3dmt31w0=";
};
srcJosmCoreDist = fetchurl {
url = "https://josm.openstreetmap.de/download/josm-snapshot-${josmVersion}.jar";
hash = "sha256-nc6itoblAzP064xTTF8q990TiRX3+zf5uk+enS+C5Jo=";
};
unpackPhase = ''
cp --no-preserve=mode --recursive --reflink=auto $srcJosmLegacy josm
cp --no-preserve=mode --recursive --reflink=auto $srcJosmCore josm/core
mkdir josm/core/dist && ln --symbolic $srcJosmCoreDist josm/core/dist/josm-custom.jar
ln --symbolic josm/core/tools josm/plugins/00_core_tools
cp --no-preserve=mode --recursive --reflink=auto $src josm/plugins/${pluginName}
'';
patches = [
(builtins.toFile "offline.patch" ''
--- a/josm/plugins/build-common.xml
+++ b/josm/plugins/build-common.xml
@@ -115 +115 @@
- <target name="compile" depends="init, pre-compile, resolve-tools" unless="skip-compile">
+ <target name="compile" depends="init, pre-compile" unless="skip-compile">
@@ -118 +117,0 @@
- <path refid="errorprone_javac.classpath"/>
@@ -135 +133,0 @@
- <compilerarg pathref="errorprone.classpath"/>
@@ -138 +135,0 @@
- <compilerarg value="-Xplugin:ErrorProne -Xep:StringSplitter:OFF -Xep:ReferenceEquality:OFF -Xep:InsecureCryptoUsage:OFF -Xep:FutureReturnValueIgnored:OFF -Xep:JdkObsolete:OFF -Xep:EqualsHashCode:OFF -Xep:JavaUtilDate:OFF -Xep:DoNotCallSuggester:OFF -Xep:BanSerializableRead:OFF -Xep:RestrictedApiChecker:OFF"/>
'')
];
nativeBuildInputs = [ ant jdk ];
buildPhase = ''
cd josm/plugins/${pluginName}
ant
'';
installPhase = ''
install -D -t $out/share/JOSM/plugins /build/josm/dist/${pluginName}.jar
'';
})