rops: init at 0.1.4 (#364869)
[NixPkgs.git] / pkgs / applications / misc / mkgmap / splitter / default.nix
blobc16b97f4a7e9d199a2eca85747f0f777a6b73178
1 { lib
2 , stdenv
3 , fetchurl
4 , fetchsvn
5 , jdk
6 , jre
7 , ant
8 , makeWrapper
9 , stripJavaArchivesHook
10 , doCheck ? true
12 let
13   deps = import ../deps.nix { inherit fetchurl; };
14   testInputs = import ./testinputs.nix { inherit fetchurl; };
16 stdenv.mkDerivation rec {
17   pname = "splitter";
18   version = "654";
20   src = fetchsvn {
21     url = "https://svn.mkgmap.org.uk/mkgmap/splitter/trunk";
22     rev = version;
23     sha256 = "sha256-y/pl8kIQ6fiF541ho72LMgJFWJdkUBqPToQGCGmmcfg=";
24   };
26   patches = [
27     # Disable automatic download of dependencies
28     ./build.xml.patch
29     # Fix func.SolverAndProblemGeneratorTest test
30     ./fix-failing-test.patch
31   ];
33   postPatch = with deps; ''
34     # Manually create version properties file for reproducibility
35     mkdir -p build/classes
36     cat > build/classes/splitter-version.properties << EOF
37       svn.version=${version}
38       build.timestamp=unknown
39     EOF
41     # Put pre-fetched dependencies into the right place
42     mkdir -p lib/compile
43     cp ${fastutil} lib/compile/${fastutil.name}
44     cp ${osmpbf} lib/compile/${osmpbf.name}
45     cp ${protobuf} lib/compile/${protobuf.name}
46     cp ${xpp3} lib/compile/${xpp3.name}
47   '' + lib.optionalString doCheck ''
48     mkdir -p lib/test
49     cp ${junit} lib/test/${junit.name}
50     cp ${hamcrest-core} lib/test/${hamcrest-core.name}
52     mkdir -p test/resources/in/osm
53     ${lib.concatMapStringsSep "\n" (res: ''
54       cp ${res} test/resources/in/${builtins.replaceStrings [ "__" ] [ "/" ] res.name}
55     '') testInputs}
56   '';
58   nativeBuildInputs = [ jdk ant makeWrapper stripJavaArchivesHook ];
60   buildPhase = ''
61     runHook preBuild
62     ant
63     runHook postBuild
64   '';
66   inherit doCheck;
68   checkPhase = ''
69     runHook preCheck
70     ant run.tests
71     ant run.func-tests
72     runHook postCheck
73   '';
75   installPhase = ''
76     runHook preInstall
78     install -Dm644 dist/splitter.jar -t $out/share/java/splitter
79     install -Dm644 doc/splitter.1 -t $out/share/man/man1
80     cp -r dist/lib/ $out/share/java/splitter/
81     makeWrapper ${jre}/bin/java $out/bin/splitter \
82       --add-flags "-jar $out/share/java/splitter/splitter.jar"
84     runHook postInstall
85   '';
87   passthru.updateScript = [ ../update.sh "mkgmap-splitter" meta.downloadPage ];
89   meta = with lib; {
90     description = "Utility for splitting OpenStreetMap maps into tiles";
91     downloadPage = "https://www.mkgmap.org.uk/download/splitter.html";
92     homepage = "https://www.mkgmap.org.uk/";
93     license = licenses.gpl2Only;
94     mainProgram = "splitter";
95     maintainers = with maintainers; [ sikmir ];
96     platforms = platforms.all;
97     sourceProvenance = with sourceTypes; [
98       fromSource
99       binaryBytecode # deps
100     ];
101   };