gnu: r-minimal: Fix remaining reproducibility problems.
Fixes <https://bugs.gnu.org/25598>. * gnu/packages/statistics.scm (r-minimal)[arguments]: Add remaining reproducibility fixes to "build-reproducibly" phase.
This commit is contained in:
parent
2d7c4ae3ee
commit
60c9190e21
|
@ -134,11 +134,44 @@ be output in text, PostScript, PDF or HTML.")
|
||||||
#t))
|
#t))
|
||||||
(add-after 'unpack 'build-reproducibly
|
(add-after 'unpack 'build-reproducibly
|
||||||
(lambda _
|
(lambda _
|
||||||
;; Ensure that gzipped files are reproducible
|
;; The documentation contains time stamps to demonstrate
|
||||||
|
;; documentation generation in different phases.
|
||||||
|
(substitute* "src/library/tools/man/Rd2HTML.Rd"
|
||||||
|
(("\\\\%Y-\\\\%m-\\\\%d at \\\\%H:\\\\%M:\\\\%S")
|
||||||
|
"(removed for reproducibility)"))
|
||||||
|
|
||||||
|
;; Remove timestamp from tracing environment. This fixes
|
||||||
|
;; reproducibility of "methods.rd{b,x}".
|
||||||
|
(substitute* "src/library/methods/R/trace.R"
|
||||||
|
(("dateCreated = Sys.time\\(\\)")
|
||||||
|
"dateCreated = as.POSIXct(\"1970-1-1 00:00:00\", tz = \"UTC\")"))
|
||||||
|
|
||||||
|
;; Ensure that gzipped files are reproducible.
|
||||||
(substitute* '("src/library/grDevices/Makefile.in"
|
(substitute* '("src/library/grDevices/Makefile.in"
|
||||||
"doc/manual/Makefile.in")
|
"doc/manual/Makefile.in")
|
||||||
(("R_GZIPCMD\\)" line)
|
(("R_GZIPCMD\\)" line)
|
||||||
(string-append line " -n")))
|
(string-append line " -n")))
|
||||||
|
|
||||||
|
;; The "srcfile" procedure in "src/library/base/R/srcfile.R"
|
||||||
|
;; queries the mtime of a given file and records it in an object.
|
||||||
|
;; This is acceptable at runtime to detect stale source files,
|
||||||
|
;; but it destroys reproducibility at build time.
|
||||||
|
;;
|
||||||
|
;; Instead of disabling this feature, which may have unexpected
|
||||||
|
;; consequences, we reset the mtime of generated files before
|
||||||
|
;; passing them to the "srcfile" procedure.
|
||||||
|
(substitute* "src/library/Makefile.in"
|
||||||
|
(("@\\(cd base && \\$\\(MAKE\\) mkdesc\\)" line)
|
||||||
|
(string-append line "\n find $(top_builddir)/library/tools | xargs touch -d '1970-01-01'; \n"))
|
||||||
|
(("@\\$\\(MAKE\\) Rdobjects" line)
|
||||||
|
(string-append "@find $(srcdir)/tools | xargs touch -d '1970-01-01'; \n "
|
||||||
|
line)))
|
||||||
|
(substitute* "src/library/tools/Makefile.in"
|
||||||
|
(("@\\$\\(INSTALL_DATA\\) all.R \\$\\(top_builddir\\)/library/\\$\\(pkg\\)/R/\\$\\(pkg\\)" line)
|
||||||
|
(string-append
|
||||||
|
line
|
||||||
|
"\n find $(srcdir)/$(pkg) $(top_builddir)/library/$(pkg) | xargs touch -d \"1970-01-01\"; \n")))
|
||||||
|
|
||||||
;; This library is installed using "install_package_description",
|
;; This library is installed using "install_package_description",
|
||||||
;; so we need to pass the "builtStamp" argument.
|
;; so we need to pass the "builtStamp" argument.
|
||||||
(substitute* "src/library/tools/Makefile.in"
|
(substitute* "src/library/tools/Makefile.in"
|
||||||
|
|
Loading…
Reference in New Issue