Use strip-nondeterminism to fix JAR timestamps
authorKeith Packard <keithp@keithp.com>
Sun, 3 Feb 2019 20:48:45 +0000 (12:48 -0800)
committerKeith Packard <keithp@keithp.com>
Sun, 3 Feb 2019 21:02:57 +0000 (13:02 -0800)
.jar files are just zip files, and contain dates. These will cause the
build to be non-reproducible. Use strip-nondeterminism to smash all of
these back to a fixed value.

Signed-off-by: Keith Packard <keithp@keithp.com>
altoslib/Makefile.am
altosui/Makefile.am
altosuilib/Makefile.am
configure.ac
map-server/altos-mapd/Makefile.am
map-server/altos-mapj/Makefile.am
micropeak/Makefile.am
telegps/Makefile.am

index 447830e547f242175702bd16c7612e5d0202431c..dfae0f6968d9a6140ef7bc4ca383ed7bd1ae610d 100644 (file)
@@ -207,3 +207,6 @@ bin:
 
 $(JAR): classaltoslib.stamp
        jar cf $@ -C bin org
 
 $(JAR): classaltoslib.stamp
        jar cf $@ -C bin org
+if STRIP_NONDETERMINISM
+       $(STRIP_NONDETERMINISM) $@
+endif
index 7cc1f4ea0dc462e9124b53fc9726b5ef4be66fbf..eec15786cc3d57d405f9352e509783a1179da319 100644 (file)
@@ -255,12 +255,18 @@ $(JAR): classaltosui.stamp Manifest.txt $(JAVA_ICONS) $(ALTOSLIB_CLASS) $(ALTOSU
                $(ICONJAR) \
                -C classes altosui \
                -C ../libaltos libaltosJNI
                $(ICONJAR) \
                -C classes altosui \
                -C ../libaltos libaltosJNI
+if STRIP_NONDETERMINISM
+       $(STRIP_NONDETERMINISM) $@
+endif
 
 $(FATJAR): classaltosui.stamp Manifest-fat.txt $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS) $(FREETTS_CLASS) $(JFREECHART_CLASS) $(JCOMMON_CLASS) $(LIBALTOS) $(JAVA_ICONS)
        jar cfm $@ Manifest-fat.txt \
                $(ICONJAR) \
                -C classes altosui \
                -C ../libaltos libaltosJNI
 
 $(FATJAR): classaltosui.stamp Manifest-fat.txt $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS) $(FREETTS_CLASS) $(JFREECHART_CLASS) $(JCOMMON_CLASS) $(LIBALTOS) $(JAVA_ICONS)
        jar cfm $@ Manifest-fat.txt \
                $(ICONJAR) \
                -C classes altosui \
                -C ../libaltos libaltosJNI
+if STRIP_NONDETERMINISM
+       $(STRIP_NONDETERMINISM) $@
+endif
 
 Manifest.txt: Makefile
        echo 'Main-Class: altosui.AltosUI' > $@
 
 Manifest.txt: Makefile
        echo 'Main-Class: altosui.AltosUI' > $@
index c00144f8cfb9ef99b745669ec315699aac0b7aaa..3b2e49d448094556e2010ff4a88a7475cfcaa1b6 100644 (file)
@@ -101,3 +101,6 @@ $(JAVAROOT):
 
 $(JAR): classaltosuilib.stamp $(ICONS)
        jar cf $@ $(ICONJAR) -C $(JAVAROOT) .
 
 $(JAR): classaltosuilib.stamp $(ICONS)
        jar cf $@ $(ICONJAR) -C $(JAVAROOT) .
+if STRIP_NONDETERMINISM
+       $(STRIP_NONDETERMINISM) $@
+endif
index 466f5369ad7dbf0b9cc6816840434fa972c39202..a2d84ce689dc7ed7ca0a45abd3c637e8ffe8b669 100644 (file)
@@ -395,6 +395,25 @@ if test "x$HAVE_ASCIIDOCTOR_PDF" = "xno"; then
 fi
 AM_CONDITIONAL([ASCIIDOCTOR_PDF], [test x$HAVE_ASCIIDOCTOR_PDF != xno])
 
 fi
 AM_CONDITIONAL([ASCIIDOCTOR_PDF], [test x$HAVE_ASCIIDOCTOR_PDF != xno])
 
+AC_ARG_WITH([strip-nondeterminism],
+           [AS_HELP_STRING([--with-strip-nondeterminism],
+                           [Name of non-deterministic build data stripping tool])],
+           [],
+           [with_strip_nondeterminism=auto])
+
+if test "x$with_strip_nondeterminism" != "xno"; then
+       if test "x$with_strip_nondeterminism" = "xauto"; then
+               with_strip_nondeterminism="strip-nondeterminism"
+               AC_CHECK_PROG([HAVE_STRIP_NONDETERMINISM],[$with_strip_nondeterminism], yes, no)
+       else
+               HAVE_STRIP_NONDETERMINISM=yes
+       fi
+else
+       HAVE_STRIP_NONDETERMINISM=no
+fi
+AM_CONDITIONAL([STRIP_NONDETERMINISM], [test x$HAVE_STRIP_NONDETERMINISM != xno])
+AC_SUBST(STRIP_NONDETERMINISM, "$with_strip_nondeterminism")
+
 PKG_CHECK_MODULES([JANSSON], [jansson])
 
 AC_ARG_WITH([readline],
 PKG_CHECK_MODULES([JANSSON], [jansson])
 
 AC_ARG_WITH([readline],
@@ -572,6 +591,7 @@ echo "    STlink support..............: ${HAVE_STLINK}"
 echo "    Newlib-nano support.........: ${NEWLIB_NANO}"
 echo "    i386 and amd64 libaltos.....: ${MULTI_ARCH}"
 echo "    install shared mime info....: ${INSTALL_SHARED_MIME_INFO}"
 echo "    Newlib-nano support.........: ${NEWLIB_NANO}"
 echo "    i386 and amd64 libaltos.....: ${MULTI_ARCH}"
 echo "    install shared mime info....: ${INSTALL_SHARED_MIME_INFO}"
+echo "    Strip jar timestamps........: ${STRIP_NONDETERMINISM}"
 echo ""
 echo "  Java"
 echo "    freetts.....................: ${FREETTS}"
 echo ""
 echo "  Java"
 echo "    freetts.....................: ${FREETTS}"
index 39f67536c2fb43bb0baa2eb30a192704f4642c24..315a33d523c7ad9bb31c3a350e0b65ff96fa8a24 100644 (file)
@@ -42,12 +42,18 @@ classes/altosmapd:
 $(JAR): classaltosmapd.stamp Manifest.txt $(ALTOSLIB_CLASS)
        jar cfm $@ Manifest.txt \
                -C classes altosmapd
 $(JAR): classaltosmapd.stamp Manifest.txt $(ALTOSLIB_CLASS)
        jar cfm $@ Manifest.txt \
                -C classes altosmapd
+if STRIP_NONDETERMINISM
+       $(STRIP_NONDETERMINISM) $@
+endif
 
 altosmapddir=$(datadir)/java
 
 $(FATJAR): classaltosmapd.stamp Manifest-fat.txt $(ALTOSLIB_CLASS)
        jar cfm $@ Manifest-fat.txt \
                -C classes altosmapd
 
 altosmapddir=$(datadir)/java
 
 $(FATJAR): classaltosmapd.stamp Manifest-fat.txt $(ALTOSLIB_CLASS)
        jar cfm $@ Manifest-fat.txt \
                -C classes altosmapd
+if STRIP_NONDETERMINISM
+       $(STRIP_NONDETERMINISM) $@
+endif
 
 altos-mapd: Makefile
        echo "#!/bin/sh" > $@
 
 altos-mapd: Makefile
        echo "#!/bin/sh" > $@
index f447adb629d52d24836ff4704942e464702a2ebb..98d4f170d828d326d6e072ea9d68d99a66fd538b 100644 (file)
@@ -31,12 +31,18 @@ classes/altosmap:
 $(JAR): classaltosmap.stamp Manifest.txt $(ALTOSLIB_CLASS)
        jar cfm $@ Manifest.txt \
                -C classes altosmap
 $(JAR): classaltosmap.stamp Manifest.txt $(ALTOSLIB_CLASS)
        jar cfm $@ Manifest.txt \
                -C classes altosmap
+if STRIP_NONDETERMINISM
+       $(STRIP_NONDETERMINISM) $@
+endif
 
 altosmapdir=$(datadir)/java
 
 $(FATJAR): classaltosmap.stamp Manifest-fat.txt $(ALTOSLIB_CLASS)
        jar cfm $@ Manifest-fat.txt \
                -C classes altosmap
 
 altosmapdir=$(datadir)/java
 
 $(FATJAR): classaltosmap.stamp Manifest-fat.txt $(ALTOSLIB_CLASS)
        jar cfm $@ Manifest-fat.txt \
                -C classes altosmap
+if STRIP_NONDETERMINISM
+       $(STRIP_NONDETERMINISM) $@
+endif
 
 altos-mapj: Makefile
        echo "#!/bin/sh" > $@
 
 altos-mapj: Makefile
        echo "#!/bin/sh" > $@
index f01c5c9f6d276f16d5a174945c95b1d39d065799..7e9b490d326a2bc367226d521ac802233a72ebe0 100644 (file)
@@ -222,12 +222,18 @@ $(JAR): classmicropeak.stamp Manifest.txt $(JAVA_ICONS) $(ALTOSLIB_CLASS) $(ALTO
                $(ICONJAR) \
                -C classes org \
                -C ../libaltos libaltosJNI
                $(ICONJAR) \
                -C classes org \
                -C ../libaltos libaltosJNI
+if STRIP_NONDETERMINISM
+       $(STRIP_NONDETERMINISM) $@
+endif
 
 $(FATJAR): classmicropeak.stamp Manifest-fat.txt $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS) $(JFREECHART_CLASS) $(JCOMMON_CLASS) $(JAVA_ICONS)
        jar cfm $@ Manifest-fat.txt \
                $(ICONJAR) \
                -C classes org \
                -C ../libaltos libaltosJNI
 
 $(FATJAR): classmicropeak.stamp Manifest-fat.txt $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS) $(JFREECHART_CLASS) $(JCOMMON_CLASS) $(JAVA_ICONS)
        jar cfm $@ Manifest-fat.txt \
                $(ICONJAR) \
                -C classes org \
                -C ../libaltos libaltosJNI
+if STRIP_NONDETERMINISM
+       $(STRIP_NONDETERMINISM) $@
+endif
 
 classaltosui.stamp: $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS)
 
 
 classaltosui.stamp: $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS)
 
index 3443b288142d9b28ee407a94440aaee2e8fae301..ae1e83e919414fa458616c11de956adc8abe4172 100644 (file)
@@ -227,12 +227,18 @@ $(JAR): classtelegps.stamp Manifest.txt $(JAVA_ICONS) $(ALTOSLIB_CLASS) $(ALTOSU
                $(ICONJAR) \
                -C classes org \
                -C ../libaltos libaltosJNI
                $(ICONJAR) \
                -C classes org \
                -C ../libaltos libaltosJNI
+if STRIP_NONDETERMINISM
+       $(STRIP_NONDETERMINISM) $@
+endif
 
 $(FATJAR): classtelegps.stamp Manifest-fat.txt $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS) $(JFREECHART_CLASS) $(JCOMMON_CLASS) $(JAVA_ICONS)
        jar cfm $@ Manifest-fat.txt \
                $(ICONJAR) \
                -C classes org \
                -C ../libaltos libaltosJNI
 
 $(FATJAR): classtelegps.stamp Manifest-fat.txt $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS) $(JFREECHART_CLASS) $(JCOMMON_CLASS) $(JAVA_ICONS)
        jar cfm $@ Manifest-fat.txt \
                $(ICONJAR) \
                -C classes org \
                -C ../libaltos libaltosJNI
+if STRIP_NONDETERMINISM
+       $(STRIP_NONDETERMINISM) $@
+endif
 
 libaltos.so: build-libaltos
        -rm -f "$@"
 
 libaltos.so: build-libaltos
        -rm -f "$@"