gnu: mono: Make build reproducible.
authorDanny Milosavljevic <dannym@scratchpost.org>
Mon, 26 Nov 2018 23:23:03 +0000 (00:23 +0100)
committerDanny Milosavljevic <dannym@scratchpost.org>
Mon, 26 Nov 2018 23:36:47 +0000 (00:36 +0100)
* gnu/packages/patches/mono-mdoc-timestamping.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/mono.scm (mono)[source]: Use patch.
[arguments]<#:phases>[make-reproducible]: New phase.
<#:phases>[set-env]: Set SOURCE_DATE_EPOCH.

gnu/local.mk
gnu/packages/mono.scm
gnu/packages/patches/mono-mdoc-timestamping.patch [new file with mode: 0644]

index 23af3f6..250c773 100644 (file)
@@ -972,6 +972,7 @@ dist_patch_DATA =                                           \
   %D%/packages/patches/module-init-tools-moduledir.patch       \
   %D%/packages/patches/monero-use-system-miniupnpc.patch                       \
   %D%/packages/patches/mongodb-support-unknown-linux-distributions.patch       \
+  %D%/packages/patches/mono-mdoc-timestamping.patch            \
   %D%/packages/patches/mozjs17-aarch64-support.patch           \
   %D%/packages/patches/mozjs24-aarch64-support.patch           \
   %D%/packages/patches/mozjs38-pkg-config-version.patch                \
index 8ab449d..17f90fe 100644 (file)
@@ -41,7 +41,8 @@
                     ".tar.bz2"))
               (sha256
                (base32
-                "0jibyvyv2jy8dq5ij0j00iq3v74r0y90dcjc3dkspcfbnn37cphn"))))
+                "0jibyvyv2jy8dq5ij0j00iq3v74r0y90dcjc3dkspcfbnn37cphn"))
+              (patches (search-patches "mono-mdoc-timestamping.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-reproducible
+           (lambda _
+             (substitute* "mono/mini/Makefile.in"
+              (("build_date = [^;]*;")
+               "build_date = (void*) 0;"))
+             #t))
          (add-after 'unpack 'set-env
            (lambda _ ;;* (#:key inputs #:allow-other-keys)
              ;; all tests under mcs/class fail trying to access $HOME
              (setenv "HOME" "/tmp")
+             ;; ZIP files have "DOS time" which starts in Jan 1980.
+             (setenv "SOURCE_DATE_EPOCH" "315532800")
              #t))
          (add-after 'unpack 'fix-includes
            (lambda _
diff --git a/gnu/packages/patches/mono-mdoc-timestamping.patch b/gnu/packages/patches/mono-mdoc-timestamping.patch
new file mode 100644 (file)
index 0000000..d5191a9
--- /dev/null
@@ -0,0 +1,15 @@
+--- mono-4.4.1/mcs/class/monodoc/Monodoc/storage/ZipStorage.cs.orig    2018-11-26 22:16:25.008879747 +0100
++++ mono-4.4.1/mcs/class/monodoc/Monodoc/storage/ZipStorage.cs 2018-11-26 22:21:53.969770985 +0100
+@@ -74,6 +74,12 @@
+                               id = GetNewCode ();
+                       ZipEntry entry = new ZipEntry (id);
++                      var SOURCE_DATE_EPOCH_string = Environment.GetEnvironmentVariable("SOURCE_DATE_EPOCH");
++                      if (SOURCE_DATE_EPOCH_string != null)
++                      {
++                              var SOURCE_DATE_EPOCH = Convert.ToInt64(SOURCE_DATE_EPOCH_string);
++                              entry.DateTime = new DateTime(SOURCE_DATE_EPOCH, DateTimeKind.Utc);
++                      }
+                       zipOutput.PutNextEntry (entry);
+               }