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