From 3305d6668ca59282cd01e908437570e6d6423ffd Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 18 Aug 2020 08:19:08 -0500 Subject: gn: Add r-minimal-2 and some R packages --- gn/packages/statistics.scm | 151 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 150 insertions(+), 1 deletion(-) (limited to 'gn/packages') diff --git a/gn/packages/statistics.scm b/gn/packages/statistics.scm index e910df4..73194fb 100644 --- a/gn/packages/statistics.scm +++ b/gn/packages/statistics.scm @@ -12,7 +12,9 @@ #:use-module (gnu packages python) #:use-module (gnu packages python-science) #:use-module (gnu packages python-xyz) - #:use-module (gnu packages statistics)) + #:use-module (gnu packages statistics) + #:use-module (gnu packages texinfo) + #:use-module (srfi srfi-1)) (define-public r-hmisc-3 (package @@ -148,3 +150,150 @@ traits (CTL). The additional correlation information obtained can be combined with QTL information to perform de novo reconstruction of interaction networks.") (license license:gpl3))) + +;; r-with-tests is private so we inherit from r-minimal. +(define r-with-tests-2 + (package + (inherit r-minimal) + (name "r-with-tests") + (version "2.15.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/base" + "/R-" (version-major version) + "/R-" version ".tar.gz")) + (sha256 + (base32 + "1mjmq95s5nrwppbzic6lzanjq65j3sxg85l1q09c0fxdin7s70y5")))) + (arguments + (substitute-keyword-arguments (package-arguments r-minimal) + ((#:tests? _ #t) #t) + ((#:configure-flags cf) + `(cons* "--with-system-zlib" + "--with-system-bzlib" + "--with-system-pcre" + (delete "--without-recommended-packages" ,cf))) + ((#:phases phases) + `(modify-phases ,phases + ;; We can only use some of 'build-reproducibly with this older version. + (replace 'build-reproducibly + (lambda _ + ;; 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" + "doc/manual/Makefile.in") + (("R_GZIPCMD\\)" line) + (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. + + ;; Similarly, the "srcfilecopy" procedure records the current + ;; time. We change both of them to respect SOURCE_DATE_EPOCH. +; (substitute* "src/library/base/R/srcfile.R" +; (("timestamp <- (timestamp.*|file.mtime.*)" _ time) +; (string-append "timestamp <- \ +;as.POSIXct(if (\"\" != Sys.getenv(\"SOURCE_DATE_EPOCH\")) {\ +; as.numeric(Sys.getenv(\"SOURCE_DATE_EPOCH\"))\ +;} else { " time "}, origin=\"1970-01-01\")\n"))) + + ;; This library is installed using "install_package_description", + ;; so we need to pass the "builtStamp" argument. + ;(substitute* "src/library/tools/Makefile.in" + ; (("(install_package_description\\(.*\"')\\)\"" line prefix) + ; (string-append prefix ", builtStamp='1970-01-01')\""))) + + (substitute* "src/library/Recommended/Makefile.in" + (("INSTALL_OPTS =" m) + (string-append m " --built-timestamp=1970-01-01" m))) + + ;; R bundles an older version of help2man, which does not respect + ;; SOURCE_DATE_EPOCH. We cannot just use the latest help2man, + ;; because that breaks a test. + (with-fluids ((%default-port-encoding "ISO-8859-1")) + (substitute* "tools/help2man.pl" + (("my \\$date = strftime \"%B %Y\", localtime" line) + (string-append line " 1")))) + #t)))))) + (native-inputs + `(("texinfo" ,texinfo-4) + ,@(alist-delete "texinfo" (package-native-inputs r-minimal)))) + (properties '((release-date "2013-03-01"))))) + +(define-public r-minimal-2 + (package + (inherit r-with-tests-2) + (name "r-minimal") + (arguments + (substitute-keyword-arguments (package-arguments r-with-tests-2) + ((#:tests? _ #f) #f) + ((#:configure-flags flags) + ;; Do not build the recommended packages. The build system creates + ;; random temporary directories and embeds their names in some + ;; package files. We build these packages with the r-build-system + ;; instead. + `(cons* "--without-recommended-packages" ,flags)))))) + +(define-public r-2-lattice + (package + (inherit r-lattice) + (name "r-lattice") + (version "0.20-31") + (source + (origin + (method url-fetch) + (uri (cran-uri "lattice" version)) + (sha256 + (base32 + "1b3m3rg1zd8ssk5jjswk5y93js89vh6939kfajh6i6wphndxigb1")))) + (build-system r-build-system) + (arguments + `(#:r ,r-minimal-2)))) + +(define-public r-2-matrix + (package + (inherit r-matrix) + (name "r-matrix") + (version "1.2-0") + (source + (origin + (method url-fetch) + (uri (cran-uri "Matrix" version)) + (sha256 + (base32 + "0ywz213p6cpwnklxd81hzdyxjzagaj6cn32ycc5rcnhxy30d7kk5")))) + (arguments + `(#:r ,r-minimal-2)) + (propagated-inputs + `(("r-lattice" ,r-2-lattice))))) + +(define-public r-2-survival + (package + (inherit r-survival) + (name "r-survival") + (version "2.41-3") + (source + (origin + (method url-fetch) + (uri (cran-uri "survival" version)) + (sha256 + (base32 + "07cnr0hnki6ybbjll54l4s5lllhk19vni5f8m0mvsfp99ls7qygk")))) + (arguments + `(#:r ,r-minimal-2)) + (propagated-inputs + `(("r-matrix" ,r-2-matrix))))) -- cgit v1.2.3