diff options
-rw-r--r-- | etc/spack/modules.yaml | 2 | ||||
-rw-r--r-- | lib/spack/docs/packaging_guide.rst | 43 | ||||
-rw-r--r-- | lib/spack/spack/concretize.py | 6 | ||||
-rw-r--r-- | lib/spack/spack/fetch_strategy.py | 9 | ||||
-rw-r--r-- | lib/spack/spack/test/versions.py | 3 | ||||
-rw-r--r-- | lib/spack/spack/version.py | 8 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/R/package.py | 24 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/dealii/package.py | 200 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/libxml2/package.py | 6 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/r-assertthat/package.py | 43 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/r-dplyr/package.py | 50 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/r-lazyeval/package.py | 43 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/r-lubridate/package.py | 47 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/r-tibble/package.py | 46 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/r-tidyr/package.py | 49 |
15 files changed, 470 insertions, 109 deletions
diff --git a/etc/spack/modules.yaml b/etc/spack/modules.yaml index 5f31cdd5c0..9ae54a2d09 100644 --- a/etc/spack/modules.yaml +++ b/etc/spack/modules.yaml @@ -13,6 +13,8 @@ modules: - PATH man: - MANPATH + share/man: + - MANPATH lib: - LIBRARY_PATH - LD_LIBRARY_PATH diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 72559e47ce..0f549e2957 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -568,7 +568,7 @@ The package author is responsible for coming up with a sensible name for each version to be fetched from a repository. For example, if you're fetching from a tag like ``v1.0``, you might call that ``1.0``. If you're fetching a nameless git commit or an older subversion -revision, you might give the commit an intuitive name, like ``dev`` +revision, you might give the commit an intuitive name, like ``develop`` for a development version, or ``some-fancy-new-feature`` if you want to be more specific. @@ -578,6 +578,17 @@ branches move forward over time and you aren't guaranteed to get the same thing every time you fetch a particular version. Life isn't always simple, though, so this is not strictly enforced. +When fetching from from the branch corresponding to the development version +(often called ``master``,``trunk`` or ``dev``), it is recommended to +call this version ``develop``. Spack has special treatment for this version so + that ``@develop`` will satisfy dependencies like +``depends_on(abc, when="@x.y.z:")``. In other words, ``@develop`` is +greater than any other version. The rationale is that certain features or +options first appear in the development branch. Therefore if a package author +wants to keep the package on the bleeding edge and provide support for new +features, it is advised to use ``develop`` for such a version which will +greatly simplify writing dependencies and version-related conditionals. + In some future release, Spack may support extrapolating repository versions as it does for tarball URLs, but currently this is not supported. @@ -593,6 +604,7 @@ Git fetching is enabled with the following parameters to ``version``: * ``tag``: name of a tag to fetch. * ``branch``: name of a branch to fetch. * ``commit``: SHA hash (or prefix) of a commit to fetch. + * ``submodules``: Also fetch submodules when checking out this repository. Only one of ``tag``, ``branch``, or ``commit`` can be used at a time. @@ -603,7 +615,7 @@ Default branch class Example(Package): ... - version('dev', git='https://github.com/example-project/example.git') + version('develop', git='https://github.com/example-project/example.git') This is not recommended, as the contents of the default branch change over time. @@ -649,6 +661,17 @@ Commits could just use the abbreviated commit hash. It's up to the package author to decide what makes the most sense. +Submodules + + You can supply ``submodules=True`` to cause Spack to fetch submodules + along with the repository at fetch time. + + .. code-block:: python + + version('1.0.1', git='https://github.com/example-project/example.git', + tag='v1.0.1', submdoules=True) + + Installing ^^^^^^^^^^^^^^ @@ -676,7 +699,7 @@ Default .. code-block:: python - version('hg-head', hg='https://jay.grs.rwth-aachen.de/hg/example') + version('develop', hg='https://jay.grs.rwth-aachen.de/hg/example') Note that this is not recommended; try to fetch a particular revision instead. @@ -708,7 +731,7 @@ Fetching the head .. code-block:: python - version('svn-head', svn='https://outreach.scidac.gov/svn/libmonitor/trunk') + version('develop', svn='https://outreach.scidac.gov/svn/libmonitor/trunk') This is not recommended, as the head will move forward over time. @@ -718,7 +741,7 @@ Fetching a revision .. code-block:: python - version('svn-head', svn='https://outreach.scidac.gov/svn/libmonitor/trunk', + version('develop', svn='https://outreach.scidac.gov/svn/libmonitor/trunk', revision=128) Subversion branches are handled as part of the directory structure, so @@ -2712,15 +2735,15 @@ build process will start from scratch. ``spack purge`` ~~~~~~~~~~~~~~~~~ -Cleans up all of Spack's temporary and cached files. This can be used to -recover disk space if temporary files from interrupted or failed installs -accumulate in the staging area. +Cleans up all of Spack's temporary and cached files. This can be used to +recover disk space if temporary files from interrupted or failed installs +accumulate in the staging area. When called with ``--stage`` or ``--all`` (or without arguments, in which case -the default is ``--all``) this removes all staged files; this is equivalent to +the default is ``--all``) this removes all staged files; this is equivalent to running ``spack clean`` for every package you have fetched or staged. -When called with ``--cache`` or ``--all`` this will clear all resources +When called with ``--cache`` or ``--all`` this will clear all resources :ref:`cached <caching>` during installs. Keeping the stage directory on success diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index f792008c49..d9992a5680 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -166,7 +166,11 @@ class DefaultConcretizer(object): valid_versions.sort(key=prefer_key, reverse=True) if valid_versions: - spec.versions = ver([valid_versions[0]]) + # Disregard @develop and take the next valid version + if ver(valid_versions[0]) == ver('develop') and len(valid_versions) > 1: + spec.versions = ver([valid_versions[1]]) + else: + spec.versions = ver([valid_versions[0]]) else: # We don't know of any SAFE versions that match the given # spec. Grab the spec's versions and grab the highest diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index 38133ee0ca..bcb33bd0e6 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -366,8 +366,8 @@ class CacheURLFetchStrategy(URLFetchStrategy): try: self.check() except ChecksumError: - # Future fetchers will assume they don't need to download if the - # file remains + # Future fetchers will assume they don't need to + # download if the file remains os.remove(self.archive_file) raise @@ -517,6 +517,7 @@ class GitFetchStrategy(VCSFetchStrategy): super(GitFetchStrategy, self).__init__( 'git', 'tag', 'branch', 'commit', **forwarded_args) self._git = None + self.submodules = kwargs.get('submodules', False) @property def git_version(self): @@ -595,6 +596,10 @@ class GitFetchStrategy(VCSFetchStrategy): self.git('pull', '--tags', ignore_errors=1) self.git('checkout', self.tag) + # Init submodules if the user asked for them. + if self.submodules: + self.git('submodule', 'update', '--init') + def archive(self, destination): super(GitFetchStrategy, self).archive(destination, exclude='.git') diff --git a/lib/spack/spack/test/versions.py b/lib/spack/spack/test/versions.py index a3a328fb14..41d72e7c34 100644 --- a/lib/spack/spack/test/versions.py +++ b/lib/spack/spack/test/versions.py @@ -92,6 +92,9 @@ class VersionsTest(unittest.TestCase): self.assert_ver_eq('1.0', '1.0') self.assert_ver_lt('1.0', '2.0') self.assert_ver_gt('2.0', '1.0') + self.assert_ver_eq('develop', 'develop') + self.assert_ver_lt('1.0', 'develop') + self.assert_ver_gt('develop', '1.0') def test_three_segments(self): self.assert_ver_eq('2.0.1', '2.0.1') diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index 6839643941..6f6c83b3d8 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -236,6 +236,14 @@ class Version(object): if self.version == other.version: return False + # dev is __gt__ than anything but itself. + if other.string == 'develop': + return True + + # If lhs is dev then it can't be < than anything + if self.string == 'develop': + return False + for a, b in zip(self.version, other.version): if a == b: continue diff --git a/var/spack/repos/builtin/packages/R/package.py b/var/spack/repos/builtin/packages/R/package.py index 001dde5329..07bb6b6b03 100644 --- a/var/spack/repos/builtin/packages/R/package.py +++ b/var/spack/repos/builtin/packages/R/package.py @@ -40,6 +40,7 @@ class R(Package): extendable = True + version('3.3.1', 'f50a659738b73036e2f5635adbd229c5') version('3.3.0', '5a7506c8813432d1621c9725e86baf7a') version('3.2.3', '1ba3dac113efab69e706902810cc2970') version('3.2.2', '57cef5c2e210a5454da1979562a10e5b') @@ -87,6 +88,29 @@ class R(Package): make() make('install') + self.filter_compilers(spec, prefix) + + def filter_compilers(self, spec, prefix): + """Run after install to tell the configuration files and Makefiles + to use the compilers that Spack built the package with. + + If this isn't done, they'll have CC and CXX set to Spack's generic + cc and c++. We want them to be bound to whatever compiler + they were built with.""" + + etcdir = join_path(prefix, 'rlib', 'R', 'etc') + + kwargs = {'ignore_absent': True, 'backup': False, 'string': True} + + filter_file(env['CC'], self.compiler.cc, + join_path(etcdir, 'Makeconf'), **kwargs) + filter_file(env['CXX'], self.compiler.cxx, + join_path(etcdir, 'Makeconf'), **kwargs) + filter_file(env['F77'], self.compiler.f77, + join_path(etcdir, 'Makeconf'), **kwargs) + filter_file(env['FC'], self.compiler.fc, + join_path(etcdir, 'Makeconf'), **kwargs) + # ======================================================================== # Set up environment to make install easy for R extensions. # ======================================================================== diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 068dbec10a..e7984466ba 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -37,7 +37,7 @@ class Dealii(Package): version('8.3.0', 'fc6cdcb16309ef4bea338a4f014de6fa') version('8.2.1', '71c728dbec14f371297cd405776ccf08') version('8.1.0', 'aa8fadc2ce5eb674f44f997461bf668d') - version('dev', git='https://github.com/dealii/dealii.git') + version('develop', git='https://github.com/dealii/dealii.git') variant('mpi', default=True, description='Compile with MPI') variant('arpack', default=True, description='Compile with Arpack and PArpack (only with MPI)') @@ -73,20 +73,21 @@ class Dealii(Package): depends_on("doxygen+graphviz", when='+doc') depends_on("graphviz", when='+doc') depends_on("gsl", when='@8.5.0:+gsl') - depends_on("gsl", when='@dev+gsl') depends_on("hdf5+mpi", when='+hdf5+mpi') depends_on("metis@5:", when='+metis') depends_on("netcdf+mpi", when="+netcdf+mpi") depends_on("netcdf-cxx", when='+netcdf+mpi') depends_on("oce", when='+oce') depends_on("p4est", when='+p4est+mpi') - depends_on("petsc@:3.6.4+mpi", when='+petsc+mpi') # FIXME: update after 3.7 is supported upstream. # NOQA: ignore=E501 - depends_on("slepc@:3.6.3", when='+slepc+petsc+mpi') + depends_on("petsc+mpi", when='@8.5.0:+petsc+mpi') + depends_on("slepc", when='@8.5.0:+slepc+petsc+mpi') + depends_on("petsc@:3.6.4+mpi", when='@:8.4.1+petsc+mpi') + depends_on("slepc@:3.6.3", when='@:8.4.1+slepc+petsc+mpi') depends_on("trilinos", when='+trilinos+mpi') # developer dependnecies - depends_on("numdiff", when='@dev') - depends_on("astyle@2.04", when='@dev') + depends_on("numdiff", when='@develop') + depends_on("astyle@2.04", when='@develop') def install(self, spec, prefix): options = [] @@ -119,6 +120,16 @@ class Dealii(Package): '-DZLIB_DIR=%s' % spec['zlib'].prefix ]) + # Set directory structure: + if spec.satisfies('@:8.2.1'): + options.extend(['-DDEAL_II_COMPONENT_COMPAT_FILES=OFF']) + else: + options.extend([ + '-DDEAL_II_EXAMPLES_RELDIR=share/deal.II/examples', + '-DDEAL_II_DOCREADME_RELDIR=share/deal.II/', + '-DDEAL_II_DOCHTML_RELDIR=share/deal.II/doc' + ]) + # MPI if '+mpi' in spec: options.extend([ @@ -193,115 +204,118 @@ class Dealii(Package): ]) cmake('.', *options) - make() - make("test") + if self.run_tests: + make("test") make("install") # run some MPI examples with different solvers from PETSc and Trilinos - env['DEAL_II_DIR'] = prefix - print('=====================================') - print('============ EXAMPLES ===============') - print('=====================================') - # take bare-bones step-3 - print('=====================================') - print('============ Step-3 =================') - print('=====================================') - with working_dir('examples/step-3'): - cmake('.') - make('release') - make('run', parallel=False) - - # An example which uses Metis + PETSc - # FIXME: switch step-18 to MPI - with working_dir('examples/step-18'): + if self.run_tests: + env['DEAL_II_DIR'] = prefix print('=====================================') - print('============= Step-18 ===============') + print('============ EXAMPLES ===============') print('=====================================') - # list the number of cycles to speed up - filter_file(r'(end_time = 10;)', ('end_time = 3;'), 'step-18.cc') - if '^petsc' in spec and '^metis' in spec: - cmake('.') - make('release') - make('run', parallel=False) - - # take step-40 which can use both PETSc and Trilinos - # FIXME: switch step-40 to MPI run - with working_dir('examples/step-40'): + # take bare-bones step-3 print('=====================================') - print('========== Step-40 PETSc ============') + print('============ Step-3 =================') print('=====================================') - # list the number of cycles to speed up - filter_file(r'(const unsigned int n_cycles = 8;)', - ('const unsigned int n_cycles = 2;'), 'step-40.cc') - cmake('.') - if '^petsc' in spec: + with working_dir('examples/step-3'): + cmake('.') make('release') make('run', parallel=False) - print('=====================================') - print('========= Step-40 Trilinos ==========') - print('=====================================') - # change Linear Algebra to Trilinos - # The below filter_file should be different for versions - # before and after 8.4.0 - if spec.satisfies('@8.4.0:') or spec.satisfies('@dev'): - filter_file(r'(\/\/ #define FORCE_USE_OF_TRILINOS.*)', - ('#define FORCE_USE_OF_TRILINOS'), 'step-40.cc') - else: - filter_file(r'(#define USE_PETSC_LA.*)', - ('// #define USE_PETSC_LA'), 'step-40.cc') - if '^trilinos+hypre' in spec: - make('release') - make('run', parallel=False) + # An example which uses Metis + PETSc + # FIXME: switch step-18 to MPI + with working_dir('examples/step-18'): + print('=====================================') + print('============= Step-18 ===============') + print('=====================================') + # list the number of cycles to speed up + filter_file(r'(end_time = 10;)', ('end_time = 3;'), + 'step-18.cc') + if '^petsc' in spec and '^metis' in spec: + cmake('.') + make('release') + make('run', parallel=False) - # the rest of the tests on step 40 only works for - # dealii version 8.4.0 and after - if spec.satisfies('@8.4.0:') or spec.satisfies('@dev'): + # take step-40 which can use both PETSc and Trilinos + # FIXME: switch step-40 to MPI run + with working_dir('examples/step-40'): print('=====================================') - print('=== Step-40 Trilinos SuperluDist ====') + print('========== Step-40 PETSc ============') print('=====================================') - # change to direct solvers - filter_file(r'(LA::SolverCG solver\(solver_control\);)', ('TrilinosWrappers::SolverDirect::AdditionalData data(false,"Amesos_Superludist"); TrilinosWrappers::SolverDirect solver(solver_control,data);'), 'step-40.cc') # NOQA: ignore=E501 - filter_file(r'(LA::MPI::PreconditionAMG preconditioner;)', - (''), 'step-40.cc') - filter_file(r'(LA::MPI::PreconditionAMG::AdditionalData data;)', # NOQA: ignore=E501 - (''), 'step-40.cc') - filter_file(r'(preconditioner.initialize\(system_matrix, data\);)', # NOQA: ignore=E501 - (''), 'step-40.cc') - filter_file(r'(solver\.solve \(system_matrix, completely_distributed_solution, system_rhs,)', ('solver.solve (system_matrix, completely_distributed_solution, system_rhs);'), 'step-40.cc') # NOQA: ignore=E501 - filter_file(r'(preconditioner\);)', (''), 'step-40.cc') - if '^trilinos+superlu-dist' in spec: + # list the number of cycles to speed up + filter_file(r'(const unsigned int n_cycles = 8;)', + ('const unsigned int n_cycles = 2;'), 'step-40.cc') + cmake('.') + if '^petsc' in spec: make('release') - make('run', paralle=False) + make('run', parallel=False) print('=====================================') - print('====== Step-40 Trilinos MUMPS =======') + print('========= Step-40 Trilinos ==========') print('=====================================') - # switch to Mumps - filter_file(r'(Amesos_Superludist)', - ('Amesos_Mumps'), 'step-40.cc') - if '^trilinos+mumps' in spec: + # change Linear Algebra to Trilinos + # The below filter_file should be different for versions + # before and after 8.4.0 + if spec.satisfies('@8.4.0:'): + filter_file(r'(\/\/ #define FORCE_USE_OF_TRILINOS.*)', + ('#define FORCE_USE_OF_TRILINOS'), + 'step-40.cc') + else: + filter_file(r'(#define USE_PETSC_LA.*)', + ('// #define USE_PETSC_LA'), 'step-40.cc') + if '^trilinos+hypre' in spec: make('release') make('run', parallel=False) - print('=====================================') - print('============ Step-36 ================') - print('=====================================') - with working_dir('examples/step-36'): - if 'slepc' in spec: - cmake('.') - make('release') - make('run', parallel=False) + # the rest of the tests on step 40 only works for + # dealii version 8.4.0 and after + if spec.satisfies('@8.4.0:'): + print('=====================================') + print('=== Step-40 Trilinos SuperluDist ====') + print('=====================================') + # change to direct solvers + filter_file(r'(LA::SolverCG solver\(solver_control\);)', ('TrilinosWrappers::SolverDirect::AdditionalData data(false,"Amesos_Superludist"); TrilinosWrappers::SolverDirect solver(solver_control,data);'), 'step-40.cc') # NOQA: ignore=E501 + filter_file(r'(LA::MPI::PreconditionAMG preconditioner;)', + (''), 'step-40.cc') + filter_file(r'(LA::MPI::PreconditionAMG::AdditionalData data;)', # NOQA: ignore=E501 + (''), 'step-40.cc') + filter_file(r'(preconditioner.initialize\(system_matrix, data\);)', # NOQA: ignore=E501 + (''), 'step-40.cc') + filter_file(r'(solver\.solve \(system_matrix, completely_distributed_solution, system_rhs,)', ('solver.solve (system_matrix, completely_distributed_solution, system_rhs);'), 'step-40.cc') # NOQA: ignore=E501 + filter_file(r'(preconditioner\);)', (''), 'step-40.cc') + if '^trilinos+superlu-dist' in spec: + make('release') + make('run', paralle=False) - print('=====================================') - print('============ Step-54 ================') - print('=====================================') - with working_dir('examples/step-54'): - if 'oce' in spec: - cmake('.') - make('release') - make('run', parallel=False) + print('=====================================') + print('====== Step-40 Trilinos MUMPS =======') + print('=====================================') + # switch to Mumps + filter_file(r'(Amesos_Superludist)', + ('Amesos_Mumps'), 'step-40.cc') + if '^trilinos+mumps' in spec: + make('release') + make('run', parallel=False) + + print('=====================================') + print('============ Step-36 ================') + print('=====================================') + with working_dir('examples/step-36'): + if 'slepc' in spec: + cmake('.') + make('release') + make('run', parallel=False) + + print('=====================================') + print('============ Step-54 ================') + print('=====================================') + with working_dir('examples/step-54'): + if 'oce' in spec: + cmake('.') + make('release') + make('run', parallel=False) def setup_environment(self, spack_env, env): env.set('DEAL_II_DIR', self.prefix) diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index baaa2fc83d..a6dabd2c05 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -23,7 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os + class Libxml2(Package): """Libxml2 is the XML C parser and toolkit developed for the Gnome @@ -42,8 +42,8 @@ class Libxml2(Package): def install(self, spec, prefix): if '+python' in spec: - site_packages_dir = os.path.join(prefix, 'lib/python%s.%s/site-packages' %(spec['python'].version[:2])) - python_args = ["--with-python=%s" % spec['python'].prefix, "--with-python-install-dir=%s" % site_packages_dir] + python_args = ["--with-python=%s" % spec['python'].prefix, + "--with-python-install-dir=%s" % site_packages_dir] else: python_args = ["--without-python"] diff --git a/var/spack/repos/builtin/packages/r-assertthat/package.py b/var/spack/repos/builtin/packages/r-assertthat/package.py new file mode 100644 index 0000000000..4070b6fe8d --- /dev/null +++ b/var/spack/repos/builtin/packages/r-assertthat/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program 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 terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RAssertthat(Package): + """assertthat is an extension to stopifnot() that makes it easy to declare + the pre and post conditions that you code should satisfy, while also + producing friendly error messages so that your users know what they've done + wrong.""" + + homepage = "https://cran.r-project.org/web/packages/assertthat/index.html" + url = "https://cran.r-project.org/src/contrib/assertthat_0.1.tar.gz" + + version('0.1', '59f9d7f7c00077ea54d763b78eeb5798') + + extends('R') + + def install(self, spec, prefix): + R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir), + self.stage.source_path) diff --git a/var/spack/repos/builtin/packages/r-dplyr/package.py b/var/spack/repos/builtin/packages/r-dplyr/package.py new file mode 100644 index 0000000000..b065e0b817 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-dplyr/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program 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 terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RDplyr(Package): + """A fast, consistent tool for working with data frame like objects, both + in memory and out of memory.""" + + homepage = "https://github.com/hadley/dplyr" + url = "https://cran.r-project.org/src/contrib/dplyr_0.5.0.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/dplyr" + + version('0.5.0', '1fcafcacca70806eea2e6d465cdb94ef') + + extends('R') + depends_on('r-assertthat') + depends_on('r-R6') + depends_on('r-rcpp') + depends_on('r-tibble') + depends_on('r-magrittr') + depends_on('r-lazyeval') + depends_on('r-dbi') + depends_on('r-bh') + + def install(self, spec, prefix): + R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir), + self.stage.source_path) diff --git a/var/spack/repos/builtin/packages/r-lazyeval/package.py b/var/spack/repos/builtin/packages/r-lazyeval/package.py new file mode 100644 index 0000000000..f80fb4d272 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-lazyeval/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program 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 terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RLazyeval(Package): + """An alternative approach to non-standard evaluation using formulas. + Provides a full implementation of LISP style 'quasiquotation', making it + easier to generate code with other code.""" + + homepage = "https://cran.r-project.org/web/packages/lazyeval/index.html" + url = "https://cran.r-project.org/src/contrib/lazyeval_0.2.0.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/lazyeval" + + version('0.2.0', 'df1daac908dcf02ae7e12f4335b1b13b') + + extends('R') + + def install(self, spec, prefix): + R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir), + self.stage.source_path) diff --git a/var/spack/repos/builtin/packages/r-lubridate/package.py b/var/spack/repos/builtin/packages/r-lubridate/package.py new file mode 100644 index 0000000000..88576911f0 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-lubridate/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program 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 terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RLubridate(Package): + """Functions to work with date-times and timespans: fast and user friendly + parsing of date-time data, extraction and updating of components of a + date-time (years, months, days, hours, minutes, and seconds), algebraic + manipulation on date-time and timespan objects. The 'lubridate' package has + a consistent and memorable syntax that makes working with dates easy and + fun.""" + + homepage = "https://cran.r-project.org/web/packages/lubridate/index.html" + url = "https://cran.r-project.org/src/contrib/lubridate_1.5.6.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/lubridate" + + version('1.5.6', 'a5dc44817548ee219d26a10bae92e611') + + extends('R') + depends_on('r-stringr') + + def install(self, spec, prefix): + R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir), + self.stage.source_path) diff --git a/var/spack/repos/builtin/packages/r-tibble/package.py b/var/spack/repos/builtin/packages/r-tibble/package.py new file mode 100644 index 0000000000..837c3df603 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-tibble/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program 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 terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RTibble(Package): + """Provides a 'tbl_df' class that offers better checking and printing + capabilities than traditional data frames.""" + + homepage = "https://github.com/hadley/tibble" + url = "https://cran.r-project.org/src/contrib/tibble_1.1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/tibble" + + version('1.1', '2fe9f806109d0b7fadafb1ffafea4cb8') + + extends('R') + + depends_on('r-assertthat') + depends_on('r-lazyeval') + depends_on('r-rcpp') + + def install(self, spec, prefix): + R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir), + self.stage.source_path) diff --git a/var/spack/repos/builtin/packages/r-tidyr/package.py b/var/spack/repos/builtin/packages/r-tidyr/package.py new file mode 100644 index 0000000000..2db7b174c2 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-tidyr/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program 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 terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RTidyr(Package): + """An evolution of 'reshape2'. It's designed specifically for data tidying + (not general reshaping or aggregating) and works well with 'dplyr' data + pipelines.""" + + homepage = "https://github.com/hadley/tidyr" + url = "https://cran.r-project.org/src/contrib/tidyr_0.5.1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/tidyr" + + version('0.5.1', '3cadc869510c054ed93d374ab44120bd') + + extends('R') + depends_on('r-tibble') + depends_on('r-dplyr') + depends_on('r-stringi') + depends_on('r-lazyeval') + depends_on('r-magrittr') + depends_on('r-rcpp') + + def install(self, spec, prefix): + R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir), + self.stage.source_path) |