Hi Guix,

attached is a patch to add the statistics software R.

The test suite fails when using `guix build' but it's passing when run
in `guix environment --pure r' (where LANG is "en_GB.UTF-8").  Judging
from the error message I suspect that the failure is locale-related, but
I was not able to fix this by adding a build phase before `check'.

Do you have any ideas how to fix the test suite?

The patch also includes the definition of a new mirror for the R package
repository CRAN.

~~ Ricardo

>From d2839cb8b65049990964bdfd20c890db5a8e453b Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus <ricardo.wur...@mdc-berlin.de>
Date: Thu, 12 Feb 2015 12:58:11 +0100
Subject: [PATCH] gnu: Add R.

* gnu/packages/statistics.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it
* guix/download.scm (%mirrors): Add CRAN mirrors.
---
 gnu-system.am               |   1 +
 gnu/packages/statistics.scm | 124 ++++++++++++++++++++++++++++++++++++++++++++
 guix/download.scm           |  10 ++++
 3 files changed, 135 insertions(+)
 create mode 100644 gnu/packages/statistics.scm

diff --git a/gnu-system.am b/gnu-system.am
index 1a68b8b..0348bf1 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -257,6 +257,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/socat.scm			\
   gnu/packages/ssh.scm				\
   gnu/packages/stalonetray.scm			\
+  gnu/packages/statistics.scm			\
   gnu/packages/swig.scm				\
   gnu/packages/sxiv.scm				\
   gnu/packages/synergy.scm			\
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
new file mode 100644
index 0000000..a0527bf
--- /dev/null
+++ b/gnu/packages/statistics.scm
@@ -0,0 +1,124 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Ricardo Wurmus <rek...@elephly.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages statistics)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages java)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages which)
+  #:use-module (gnu packages xorg))
+
+(define-public r
+  (package
+    (name "r")
+    (version "3.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cran/src/base/R-"
+                                  (version-prefix version 1) "/R-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0ypsm11c7n49pgh2ricyhhpfhas3famscdazzdp2zq70rapm1ldw"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(;; Tests fail probably because of locale issues:
+       ;; > tm <- seq(as.POSIXct("2012-06-01 06:00"), by = "6 hours", length.out = 24)
+       ;; Error in as.POSIXlt.character(x, tz, ...) :
+       ;;   character string is not in a standard unambiguous format
+       #:tests? #f
+       #:phases
+       ;; XXX This phase doesn't fix the tests.
+       (alist-cons-before
+        'check 'install-locales
+        (lambda _
+          ;; A bunch of tests require the availability of a UTF-8
+          ;; locale and otherwise fail.  Give them what they want.
+          (setenv "LOCPATH" (getcwd))
+          (setenv "LANG" "en_US.UTF-8")
+          (zero? (system* "localedef" "--no-archive"
+                          "--prefix" (getcwd) "-i" "en_US"
+                          "-f" "UTF-8" "./en_US.UTF-8")))
+        %standard-phases)
+       #:configure-flags
+       '("--with-blas"
+         "--with-lapack"
+         "--with-cairo"
+         "--with-libpng"
+         "--with-jpeglib"
+         "--with-libtiff"
+         "--with-ICU"
+         "--enable-R-shlib"
+         "--enable-BLAS-shlib"
+         "--with-system-zlib"
+         "--with-system-bzlib"
+         "--with-system-pcre"
+         "--with-system-tre"
+         "--with-system-xz")))  
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("atlas" ,atlas) ; --with-blas
+       ("bzip2" ,bzip2)
+       ("cairo" ,cairo)
+       ("gfortran" ,gfortran-4.8)
+       ("icu4c" ,icu4c)
+       ("icedtea6" ,icedtea6)
+       ("lapack" ,lapack)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libtiff" ,libtiff)
+       ("libxt" ,libxt)
+       ("pcre" ,pcre)
+       ("perl" ,perl)
+       ("readline" ,readline)
+       ("texlive" ,texlive) ; needed to make vignettes
+       ("texinfo" ,texinfo) ; for building HTML manuals
+       ("which" ,which) ; for tests/Examples/base-Ex.R
+       ("xz" ,xz)
+       ("zlib" ,zlib)))
+    (home-page "http://www.r-project.org/";)
+    (synopsis "Language and environment for statistical computing and graphics")
+    (description
+     "R is a language and environment for statistical computing and graphics.
+R is similar to the award-winning S system, which was developed at Bell
+Laboratories by John Chambers et al.  It provides a wide variety of
+statistical and graphical techniques (linear and nonlinear modelling,
+statistical tests, time series analysis, classification, clustering, ...).
+
+R is designed as a true computer language with control-flow constructions for
+iteration and alternation, and it allows users to add additional functionality
+by defining new functions.  For computationally intensive tasks, C, C++ and
+Fortran code can be linked and called at run time.")
+    (license license:gpl3+)))
diff --git a/guix/download.scm b/guix/download.scm
index 9a18975..d87d02e 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -164,6 +164,16 @@
        "ftp://ftp.nara.wide.ad.jp/pub/CPAN/";
        "http://mirrors.163.com/cpan/";
        "ftp://cpan.mirror.ac.za/";)
+      (cran
+       ;; Arbitrary mirrors from http://cran.r-project.org/mirrors.html
+       ;; This one automatically redirects to servers worldwide
+       "http://cran.rstudio.com/";
+       "http://cran.univ-lyon1.fr/";
+       "http://cran.r-mirror.de/";
+       "http://cran.ism.ac.jp/";
+       "http://cran.stat.auckland.ac.nz/";
+       "http://cran.mirror.ac.za/";
+       "http://cran.csie.ntu.edu.tw/";)
       (imagemagick
        ;; from http://www.imagemagick.org/script/download.php
        ;; (without mirrors that are unavailable or not up to date)
-- 
2.1.0

Reply via email to