[PATCH v1]: gnu: Add R.

2015-02-13 Thread Ricardo Wurmus
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 000..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
+ 

Re: [PATCH v1]: gnu: Add R.

2015-02-13 Thread Ricardo Wurmus

Ricardo Wurmus writes:

 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?

Thanks to effa` on IRC I was able to fix it by setting the TZ variable.

Attached is the updated patch.

~~ Ricardo

From 79df400084e15de6388c832ae3d1791e5d0c8519 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 | 112 
 guix/download.scm   |  10 
 3 files changed, 123 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 000..ff49b83
--- /dev/null
+++ b/gnu/packages/statistics.scm
@@ -0,0 +1,112 @@
+;;; 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
+ `(#:phases
+   (alist-cons-before
+'check 'set-timezone
+;; Some tests require the timezone to be set.
+(lambda _ (setenv TZ UTC))
+%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/;)
+   

Re: [PATCH v1]: gnu: Add R.

2015-02-13 Thread Ludovic Courtès
Ricardo Wurmus ricardo.wur...@mdc-berlin.de skribis:

 +(inputs
 + `((atlas ,atlas) ; --with-blas
 +   (bzip2 ,bzip2)

Unless used for libbz2, move it to ‘native-inputs’.

 +   (perl ,perl)

Likewise.

 +   (texlive ,texlive) ; needed to make vignettes
 +   (texinfo ,texinfo) ; for building HTML manuals
 +   (which ,which) ; for tests/Examples/base-Ex.R

These 3 are definitely native inputs.

 +   (xz ,xz)

Most likely native input.

 +(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

‘guix lint’ should propose you a synopsis and description; could you use
them?

The rest LGTM.

Thanks for the good work!

Ludo’.