Merge pull request #1000 from glennpj/new_R
Add version 3.3.0 of R and extensions
This commit is contained in:
commit
0fbd2fe224
6 changed files with 79 additions and 45 deletions
|
@ -22,30 +22,25 @@
|
||||||
# License along with this program; if not, write to the Free Software
|
# License along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
##############################################################################
|
##############################################################################
|
||||||
import functools
|
|
||||||
import glob
|
|
||||||
import inspect
|
|
||||||
import os
|
import os
|
||||||
import re
|
|
||||||
from contextlib import closing
|
|
||||||
|
|
||||||
import spack
|
|
||||||
from llnl.util.lang import match_predicate
|
|
||||||
from spack import *
|
from spack import *
|
||||||
from spack.util.environment import *
|
from spack.util.environment import *
|
||||||
|
|
||||||
|
|
||||||
class R(Package):
|
class R(Package):
|
||||||
"""
|
"""R is 'GNU S', a freely available language and environment for
|
||||||
R is 'GNU S', a freely available language and environment for statistical computing and graphics which provides a
|
statistical computing and graphics which provides a wide variety of
|
||||||
wide variety of statistical and graphical techniques: linear and nonlinear modelling, statistical tests, time series
|
statistical and graphical techniques: linear and nonlinear modelling,
|
||||||
analysis, classification, clustering, etc. Please consult the R project homepage for further information.
|
statistical tests, time series analysis, classification, clustering, etc.
|
||||||
"""
|
Please consult the R project homepage for further information."""
|
||||||
|
|
||||||
homepage = "https://www.r-project.org"
|
homepage = "https://www.r-project.org"
|
||||||
url = "http://cran.cnr.berkeley.edu/src/base/R-3/R-3.1.2.tar.gz"
|
url = "http://cran.cnr.berkeley.edu/src/base/R-3/R-3.1.2.tar.gz"
|
||||||
|
|
||||||
extendable = True
|
extendable = True
|
||||||
|
|
||||||
|
version('3.3.0', '5a7506c8813432d1621c9725e86baf7a')
|
||||||
version('3.2.3', '1ba3dac113efab69e706902810cc2970')
|
version('3.2.3', '1ba3dac113efab69e706902810cc2970')
|
||||||
version('3.2.2', '57cef5c2e210a5454da1979562a10e5b')
|
version('3.2.2', '57cef5c2e210a5454da1979562a10e5b')
|
||||||
version('3.2.1', 'c2aac8b40f84e08e7f8c9068de9239a3')
|
version('3.2.1', 'c2aac8b40f84e08e7f8c9068de9239a3')
|
||||||
|
@ -53,7 +48,8 @@ class R(Package):
|
||||||
version('3.1.3', '53a85b884925aa6b5811dfc361d73fc4')
|
version('3.1.3', '53a85b884925aa6b5811dfc361d73fc4')
|
||||||
version('3.1.2', '3af29ec06704cbd08d4ba8d69250ae74')
|
version('3.1.2', '3af29ec06704cbd08d4ba8d69250ae74')
|
||||||
|
|
||||||
variant('external-lapack', default=False, description='Links to externally installed BLAS/LAPACK')
|
variant('external-lapack', default=False,
|
||||||
|
description='Links to externally installed BLAS/LAPACK')
|
||||||
|
|
||||||
# Virtual dependencies
|
# Virtual dependencies
|
||||||
depends_on('blas', when='+external-lapack')
|
depends_on('blas', when='+external-lapack')
|
||||||
|
@ -65,6 +61,7 @@ class R(Package):
|
||||||
depends_on('icu')
|
depends_on('icu')
|
||||||
depends_on('glib')
|
depends_on('glib')
|
||||||
depends_on('zlib')
|
depends_on('zlib')
|
||||||
|
depends_on('bzip2')
|
||||||
depends_on('libtiff')
|
depends_on('libtiff')
|
||||||
depends_on('jpeg')
|
depends_on('jpeg')
|
||||||
depends_on('cairo')
|
depends_on('cairo')
|
||||||
|
@ -72,18 +69,21 @@ class R(Package):
|
||||||
depends_on('freetype')
|
depends_on('freetype')
|
||||||
depends_on('tcl')
|
depends_on('tcl')
|
||||||
depends_on('tk')
|
depends_on('tk')
|
||||||
|
depends_on('curl')
|
||||||
|
depends_on('pcre')
|
||||||
|
depends_on('jdk')
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
rlibdir = join_path(prefix, 'rlib')
|
rlibdir = join_path(prefix, 'rlib')
|
||||||
options = ['--prefix=%s' % prefix,
|
configure_args = ['--prefix=%s' % prefix,
|
||||||
'--libdir=%s' % rlibdir,
|
'--libdir=%s' % rlibdir,
|
||||||
'--enable-R-shlib',
|
'--enable-R-shlib',
|
||||||
'--enable-BLAS-shlib',
|
'--enable-BLAS-shlib',
|
||||||
'--enable-R-framework=no']
|
'--enable-R-framework=no']
|
||||||
if '+external-lapack' in spec:
|
if '+external-lapack' in spec:
|
||||||
options.extend(['--with-blas', '--with-lapack'])
|
configure_args.extend(['--with-blas', '--with-lapack'])
|
||||||
|
|
||||||
configure(*options)
|
configure(*configure_args)
|
||||||
make()
|
make()
|
||||||
make('install')
|
make('install')
|
||||||
|
|
||||||
|
@ -106,25 +106,24 @@ def setup_dependent_environment(self, spack_env, run_env, extension_spec):
|
||||||
r_libs_path = ':'.join(r_libs_path)
|
r_libs_path = ':'.join(r_libs_path)
|
||||||
spack_env.set('R_LIBS', r_libs_path)
|
spack_env.set('R_LIBS', r_libs_path)
|
||||||
|
|
||||||
# For run time environment set only the path for extension_spec and prepend it to R_LIBS
|
# For run time environment set only the path for extension_spec and
|
||||||
|
# prepend it to R_LIBS
|
||||||
if extension_spec.package.extends(self.spec):
|
if extension_spec.package.extends(self.spec):
|
||||||
run_env.prepend_path('R_LIBS', os.path.join(extension_spec.prefix, self.r_lib_dir))
|
run_env.prepend_path('R_LIBS', os.path.join(
|
||||||
|
extension_spec.prefix, self.r_lib_dir))
|
||||||
|
|
||||||
def setup_dependent_package(self, module, ext_spec):
|
def setup_dependent_package(self, module, ext_spec):
|
||||||
"""
|
"""Called before R modules' install() methods. In most cases,
|
||||||
Called before R modules' install() methods.
|
extensions will only need to have one line:
|
||||||
|
R('CMD', 'INSTALL', '--library=%s' % self.module.r_lib_dir, '%s' %
|
||||||
In most cases, extensions will only need to have one line::
|
self.stage.source_path)"""
|
||||||
|
|
||||||
R('CMD', 'INSTALL', '--library=%s' % self.module.r_lib_dir, '%s' % self.stage.archive_file)
|
|
||||||
"""
|
|
||||||
# R extension builds can have a global R executable function
|
# R extension builds can have a global R executable function
|
||||||
module.R = Executable(join_path(self.spec.prefix.bin, 'R'))
|
module.R = Executable(join_path(self.spec.prefix.bin, 'R'))
|
||||||
|
|
||||||
# Add variable for library directry
|
# Add variable for library directry
|
||||||
module.r_lib_dir = os.path.join(ext_spec.prefix, self.r_lib_dir)
|
module.r_lib_dir = os.path.join(ext_spec.prefix, self.r_lib_dir)
|
||||||
|
|
||||||
# Make the site packages directory for extensions, if it does not exist already.
|
# Make the site packages directory for extensions, if it does not exist
|
||||||
|
# already.
|
||||||
if ext_spec.package.is_extension:
|
if ext_spec.package.is_extension:
|
||||||
mkdirp(module.r_lib_dir)
|
mkdirp(module.r_lib_dir)
|
||||||
|
|
|
@ -29,6 +29,7 @@ class Pcre(Package):
|
||||||
"""The PCRE package contains Perl Compatible Regular Expression
|
"""The PCRE package contains Perl Compatible Regular Expression
|
||||||
libraries. These are useful for implementing regular expression
|
libraries. These are useful for implementing regular expression
|
||||||
pattern matching using the same syntax and semantics as Perl 5."""
|
pattern matching using the same syntax and semantics as Perl 5."""
|
||||||
|
|
||||||
homepage = "http://www.pcre.org"""
|
homepage = "http://www.pcre.org"""
|
||||||
url = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.bz2"
|
url = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.bz2"
|
||||||
|
|
||||||
|
@ -37,7 +38,15 @@ class Pcre(Package):
|
||||||
|
|
||||||
patch("intel.patch")
|
patch("intel.patch")
|
||||||
|
|
||||||
|
variant('utf', default=True,
|
||||||
|
description='Enable support for UTF-8/16/32, '
|
||||||
|
'incompatible with EBCDIC.')
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
configure("--prefix=%s" % prefix)
|
configure_args = ['--prefix=%s' % prefix]
|
||||||
|
if '+utf' in spec:
|
||||||
|
configure_args.append('--enable-utf')
|
||||||
|
|
||||||
|
configure(*configure_args)
|
||||||
make()
|
make()
|
||||||
make("install")
|
make("install")
|
||||||
|
|
|
@ -24,15 +24,33 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
from spack import *
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
class RBiocgenerics(Package):
|
class RBiocgenerics(Package):
|
||||||
"""S4 generic functions needed by many Bioconductor packages."""
|
"""S4 generic functions needed by many Bioconductor packages."""
|
||||||
|
|
||||||
homepage = 'https://www.bioconductor.org/packages/release/bioc/html/BiocGenerics.html'
|
homepage = 'https://bioconductor.org/packages/BiocGenerics/'
|
||||||
url = "https://www.bioconductor.org/packages/release/bioc/src/contrib/BiocGenerics_0.16.1.tar.gz"
|
version('bioc-3.3',
|
||||||
|
git='https://github.com/Bioconductor-mirror/BiocGenerics.git',
|
||||||
version('0.16.1', 'c2148ffd86fc6f1f819c7f68eb2c744f', expand=False)
|
branch='release-3.3')
|
||||||
|
version('bioc-3.2',
|
||||||
|
git='https://github.com/Bioconductor-mirror/BiocGenerics.git',
|
||||||
|
branch='release-3.2')
|
||||||
|
|
||||||
extends('R')
|
extends('R')
|
||||||
|
|
||||||
|
def validate(self, spec):
|
||||||
|
"""
|
||||||
|
Checks that the version of R is appropriate for the Bioconductor
|
||||||
|
version.
|
||||||
|
"""
|
||||||
|
if spec.satisfies('@bioc-3.3'):
|
||||||
|
if not spec.satisfies('^R@3.3.0:3.3.9'):
|
||||||
|
raise InstallError('Must use R-3.3 for Bioconductor-3.3')
|
||||||
|
elif spec.satisfies('@bioc-3.2'):
|
||||||
|
if not spec.satisfies('^R@3.2.0:3.2.9'):
|
||||||
|
raise InstallError('Must use R-3.2 for Bioconductor-3.2')
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
R('CMD', 'INSTALL', '--library=%s' % self.module.r_lib_dir, '%s' % self.stage.archive_file)
|
self.validate(spec)
|
||||||
|
R('CMD', 'INSTALL', '--library=%s' %
|
||||||
|
self.module.r_lib_dir, '%s' % self.stage.source_path)
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
from spack import *
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
class RAbind(Package):
|
class RAbind(Package):
|
||||||
"""Combine multidimensional arrays into a single array. This is a
|
"""Combine multidimensional arrays into a single array. This is a
|
||||||
generalization of 'cbind' and 'rbind'. Works with vectors, matrices, and
|
generalization of 'cbind' and 'rbind'. Works with vectors, matrices, and
|
||||||
|
@ -32,11 +33,12 @@ class RAbind(Package):
|
||||||
|
|
||||||
homepage = "https://cran.r-project.org/"
|
homepage = "https://cran.r-project.org/"
|
||||||
url = "https://cran.r-project.org/src/contrib/abind_1.4-3.tar.gz"
|
url = "https://cran.r-project.org/src/contrib/abind_1.4-3.tar.gz"
|
||||||
|
list_url = "https://cran.r-project.org/src/contrib/Archive/abind"
|
||||||
|
|
||||||
version('1.4-3', '10fcf80c677b991bf263d38be35a1fc5', expand=False)
|
version('1.4-3', '10fcf80c677b991bf263d38be35a1fc5')
|
||||||
|
|
||||||
extends('R')
|
extends('R')
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
|
R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir),
|
||||||
R('CMD', 'INSTALL', '--library=%s' % self.module.r_lib_dir, '%s' % self.stage.archive_file)
|
self.stage.source_path)
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
from spack import *
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
class RFilehash(Package):
|
class RFilehash(Package):
|
||||||
"""Implements a simple key-value style database where character string keys
|
"""Implements a simple key-value style database where character string keys
|
||||||
are associated with data values that are stored on the disk. A simple
|
are associated with data values that are stored on the disk. A simple
|
||||||
|
@ -37,10 +38,12 @@ class RFilehash(Package):
|
||||||
|
|
||||||
homepage = 'https://cran.r-project.org/'
|
homepage = 'https://cran.r-project.org/'
|
||||||
url = "https://cran.r-project.org/src/contrib/filehash_2.3.tar.gz"
|
url = "https://cran.r-project.org/src/contrib/filehash_2.3.tar.gz"
|
||||||
|
list_url = "https://cran.r-project.org/src/contrib/Archive/filehash"
|
||||||
|
|
||||||
version('2.3', '01fffafe09b148ccadc9814c103bdc2f', expand=False)
|
version('2.3', '01fffafe09b148ccadc9814c103bdc2f')
|
||||||
|
|
||||||
extends('R')
|
extends('R')
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
R('CMD', 'INSTALL', '--library=%s' % self.module.r_lib_dir, '%s' % self.stage.archive_file)
|
R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir),
|
||||||
|
self.stage.source_path)
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
from spack import *
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
class RMagic(Package):
|
class RMagic(Package):
|
||||||
"""A collection of efficient, vectorized algorithms for the creation and
|
"""A collection of efficient, vectorized algorithms for the creation and
|
||||||
investigation of magic squares and hypercubes, including a variety of
|
investigation of magic squares and hypercubes, including a variety of
|
||||||
|
@ -32,12 +33,14 @@ class RMagic(Package):
|
||||||
|
|
||||||
homepage = "https://cran.r-project.org/"
|
homepage = "https://cran.r-project.org/"
|
||||||
url = "https://cran.r-project.org/src/contrib/magic_1.5-6.tar.gz"
|
url = "https://cran.r-project.org/src/contrib/magic_1.5-6.tar.gz"
|
||||||
|
list_url = "https://cran.r-project.org/src/contrib/Archive/magic"
|
||||||
|
|
||||||
version('1.5-6', 'a68e5ced253b2196af842e1fc84fd029', expand=False)
|
version('1.5-6', 'a68e5ced253b2196af842e1fc84fd029')
|
||||||
|
|
||||||
extends('R')
|
extends('R')
|
||||||
|
|
||||||
depends_on('r-abind')
|
depends_on('r-abind')
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
R('CMD', 'INSTALL', '--library=%s' % self.module.r_lib_dir, '%s' % self.stage.archive_file)
|
R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir),
|
||||||
|
self.stage.source_path)
|
||||||
|
|
Loading…
Reference in a new issue