From 411bbcca3b34c6f11586570d2e1982718713cc74 Mon Sep 17 00:00:00 2001 From: TomaSajt <62384384+TomaSajt@users.noreply.github.com> Date: Sun, 10 Mar 2024 12:18:11 +0100 Subject: [PATCH] mkgmap{,-splitter}: make deterministic add missing phase hook calls --- pkgs/applications/misc/mkgmap/build.xml.patch | 19 +----- pkgs/applications/misc/mkgmap/default.nix | 61 +++++++++++++------ .../misc/mkgmap/ignore-impure-test.patch | 20 ++++++ .../misc/mkgmap/splitter/build.xml.patch | 18 +----- .../misc/mkgmap/splitter/default.nix | 52 +++++++++++----- 5 files changed, 102 insertions(+), 68 deletions(-) create mode 100644 pkgs/applications/misc/mkgmap/ignore-impure-test.patch diff --git a/pkgs/applications/misc/mkgmap/build.xml.patch b/pkgs/applications/misc/mkgmap/build.xml.patch index 2aced4452062..567c0d5586f8 100644 --- a/pkgs/applications/misc/mkgmap/build.xml.patch +++ b/pkgs/applications/misc/mkgmap/build.xml.patch @@ -1,14 +1,6 @@ --- a/build.xml (revision 4555) +++ a/build.xml (working copy) -@@ -222,13 +222,13 @@ - - - -- -- -+ -+ - +@@ -228,7 +228,7 @@ @@ -35,12 +27,3 @@ -@@ -351,7 +351,7 @@ - ignoreerrors="true"/> - - -- - - diff --git a/pkgs/applications/misc/mkgmap/default.nix b/pkgs/applications/misc/mkgmap/default.nix index 5648e34d8461..03405506052b 100644 --- a/pkgs/applications/misc/mkgmap/default.nix +++ b/pkgs/applications/misc/mkgmap/default.nix @@ -1,7 +1,7 @@ -{ lib, stdenv +{ lib +, stdenv , fetchurl , fetchsvn -, substituteAll , jdk , jre , ant @@ -24,14 +24,24 @@ stdenv.mkDerivation rec { }; patches = [ - (substituteAll { - # Disable automatic download of dependencies - src = ./build.xml.patch; - inherit version; - }) + # Disable automatic download of dependencies + ./build.xml.patch + ./ignore-impure-test.patch ]; postPatch = with deps; '' + # Fix the output jar timestamps for reproducibility + substituteInPlace build.xml \ + --replace-fail ' build/classes/mkgmap-version.properties << EOF + svn.version=${version} + build.timestamp=unknown + EOF + + # Put pre-fetched dependencies into the right place mkdir -p lib/compile cp ${fastutil} lib/compile/${fastutil.name} cp ${osmpbf} lib/compile/${osmpbf.name} @@ -53,36 +63,51 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ jdk ant makeWrapper ]; - buildPhase = "ant"; + buildPhase = '' + runHook preBuild + ant + runHook postBuild + ''; inherit doCheck; - checkPhase = "ant test"; + checkPhase = '' + runHook preCheck + ant test + runHook postCheck + ''; installPhase = '' + runHook preInstall + install -Dm644 dist/mkgmap.jar -t $out/share/java/mkgmap install -Dm644 dist/doc/mkgmap.1 -t $out/share/man/man1 cp -r dist/lib/ $out/share/java/mkgmap/ makeWrapper ${jre}/bin/java $out/bin/mkgmap \ --add-flags "-jar $out/share/java/mkgmap/mkgmap.jar" - '' + lib.optionalString withExamples '' - mkdir -p $out/share/mkgmap - cp -r dist/examples $out/share/mkgmap/ + + ${lib.optionalString withExamples '' + mkdir -p $out/share/mkgmap + cp -r dist/examples $out/share/mkgmap/ + ''} + + runHook postInstall ''; passthru.updateScript = [ ./update.sh "mkgmap" meta.downloadPage ]; meta = with lib; { description = "Create maps for Garmin GPS devices from OpenStreetMap (OSM) data"; - homepage = "https://www.mkgmap.org.uk/"; downloadPage = "https://www.mkgmap.org.uk/download/mkgmap.html"; - sourceProvenance = with sourceTypes; [ - fromSource - binaryBytecode # deps - ]; + homepage = "https://www.mkgmap.org.uk/"; license = licenses.gpl2Only; + mainProgram = "mkgmap"; maintainers = with maintainers; [ sikmir ]; platforms = platforms.all; - mainProgram = "mkgmap"; + sourceProvenance = with sourceTypes; [ + fromSource + binaryBytecode # deps + ]; }; + } diff --git a/pkgs/applications/misc/mkgmap/ignore-impure-test.patch b/pkgs/applications/misc/mkgmap/ignore-impure-test.patch new file mode 100644 index 000000000000..1ed2f7092f08 --- /dev/null +++ b/pkgs/applications/misc/mkgmap/ignore-impure-test.patch @@ -0,0 +1,20 @@ +diff --git a/test/uk/me/parabola/imgfmt/app/srt/SrtCollatorTest.java b/test/uk/me/parabola/imgfmt/app/srt/SrtCollatorTest.java +index e1e4ac7..954b918 100644 +--- a/test/uk/me/parabola/imgfmt/app/srt/SrtCollatorTest.java ++++ b/test/uk/me/parabola/imgfmt/app/srt/SrtCollatorTest.java +@@ -17,6 +17,7 @@ import java.text.Collator; + import uk.me.parabola.mkgmap.srt.SrtTextReader; + + import org.junit.Before; ++import org.junit.Ignore; + import org.junit.Test; + + import static org.junit.Assert.*; +@@ -111,6 +112,7 @@ public class SrtCollatorTest { + * meant to be identical to the java one. + */ + @Test ++ @Ignore + public void testJavaRules() { + Collator collator = Collator.getInstance(); + diff --git a/pkgs/applications/misc/mkgmap/splitter/build.xml.patch b/pkgs/applications/misc/mkgmap/splitter/build.xml.patch index a028dbef0314..1fb0a14ef4c3 100644 --- a/pkgs/applications/misc/mkgmap/splitter/build.xml.patch +++ b/pkgs/applications/misc/mkgmap/splitter/build.xml.patch @@ -1,13 +1,6 @@ --- a/build.xml (revision 597) +++ a/build.xml (working copy) -@@ -207,12 +207,12 @@ - - - -- -- -+ -+ +@@ -212,7 +212,7 @@ @@ -25,15 +18,6 @@ -@@ -261,7 +261,7 @@ - - - -- -+ - - - @@ -324,7 +324,7 @@ diff --git a/pkgs/applications/misc/mkgmap/splitter/default.nix b/pkgs/applications/misc/mkgmap/splitter/default.nix index d9b886cbe2b3..010b140e9bf9 100644 --- a/pkgs/applications/misc/mkgmap/splitter/default.nix +++ b/pkgs/applications/misc/mkgmap/splitter/default.nix @@ -1,7 +1,7 @@ -{ lib, stdenv +{ lib +, stdenv , fetchurl , fetchsvn -, substituteAll , jdk , jre , ant @@ -23,17 +23,25 @@ stdenv.mkDerivation rec { }; patches = [ - (substituteAll { - # Disable automatic download of dependencies - src = ./build.xml.patch; - inherit version; - }) - + # Disable automatic download of dependencies + ./build.xml.patch # Fix func.SolverAndProblemGeneratorTest test ./fix-failing-test.patch ]; postPatch = with deps; '' + # Fix the output jar timestamps for reproducibility + substituteInPlace build.xml \ + --replace-fail ' build/classes/splitter-version.properties << EOF + svn.version=${version} + build.timestamp=unknown + EOF + + # Put pre-fetched dependencies into the right place mkdir -p lib/compile cp ${fastutil} lib/compile/${fastutil.name} cp ${osmpbf} lib/compile/${osmpbf.name} @@ -52,32 +60,46 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ jdk ant makeWrapper ]; - buildPhase = "ant"; + buildPhase = '' + runHook preBuild + ant + runHook postBuild + ''; inherit doCheck; - checkPhase = "ant run.tests && ant run.func-tests"; + checkPhase = '' + runHook preCheck + ant run.tests + ant run.func-tests + runHook postCheck + ''; installPhase = '' + runHook preInstall + install -Dm644 dist/splitter.jar -t $out/share/java/splitter install -Dm644 doc/splitter.1 -t $out/share/man/man1 cp -r dist/lib/ $out/share/java/splitter/ makeWrapper ${jre}/bin/java $out/bin/splitter \ --add-flags "-jar $out/share/java/splitter/splitter.jar" + + runHook postInstall ''; passthru.updateScript = [ ../update.sh "mkgmap-splitter" meta.downloadPage ]; meta = with lib; { description = "Utility for splitting OpenStreetMap maps into tiles"; - homepage = "https://www.mkgmap.org.uk/"; downloadPage = "https://www.mkgmap.org.uk/download/splitter.html"; - sourceProvenance = with sourceTypes; [ - fromSource - binaryBytecode # deps - ]; + homepage = "https://www.mkgmap.org.uk/"; license = licenses.gpl2Only; + mainProgram = "splitter"; maintainers = with maintainers; [ sikmir ]; platforms = platforms.all; + sourceProvenance = with sourceTypes; [ + fromSource + binaryBytecode # deps + ]; }; }