diff options
author | Matthew Scott Krafczyk <krafczyk.matthew@gmail.com> | 2017-04-07 13:17:19 -0500 |
---|---|---|
committer | Adam J. Stewart <ajstewart426@gmail.com> | 2017-04-07 13:17:19 -0500 |
commit | 7c4ed0a70acb2c860d93b6606e41bf3eaae6a774 (patch) | |
tree | b07c73eda3e337d9cde2467071bb5b4bca9fa1c8 /var | |
parent | c6777ddf743e1bfa215c3448cb6744f4274f71e4 (diff) | |
download | spack-7c4ed0a70acb2c860d93b6606e41bf3eaae6a774.tar.gz spack-7c4ed0a70acb2c860d93b6606e41bf3eaae6a774.tar.bz2 spack-7c4ed0a70acb2c860d93b6606e41bf3eaae6a774.tar.xz spack-7c4ed0a70acb2c860d93b6606e41bf3eaae6a774.zip |
Add the rockstar package (#3680)
* Add the rockstar package
* Add rockstar to yt.
* Correct signature of prep_yt.
* Correct rockstar package installation process
Needed to change the way the necessary prefixes are found as well as
how the completed package is copied.
There should probably be a way to do the copying in a more 'spack' way.
* Add license
* Add description.
* Set no hdf5 variant as default.
* Use copy_tree for copying files
* Use MakefilePackage
* Address concerns from @adamjstewart
* Fix flake8 errors.
Diffstat (limited to 'var')
3 files changed, 90 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py index 30ce507a9f..ff50c269a2 100644 --- a/var/spack/repos/builtin/packages/py-yt/package.py +++ b/var/spack/repos/builtin/packages/py-yt/package.py @@ -57,6 +57,7 @@ class PyYt(PythonPackage): variant("astropy", default=True, description="enable astropy support") variant("h5py", default=True, description="enable h5py support") variant("scipy", default=True, description="enable scipy support") + variant("rockstar", default=False, description="enable rockstar support") depends_on("py-astropy", type=('build', 'run'), when="+astropy") depends_on("py-cython", type=('build', 'run')) @@ -67,8 +68,15 @@ class PyYt(PythonPackage): depends_on("py-scipy", type=('build', 'run'), when="+scipy") depends_on("py-setuptools", type="build") depends_on("py-sympy", type=('build', 'run')) + depends_on("rockstar@yt", type=('build', 'run'), when="+rockstar") depends_on("python @2.7:2.999,3.4:") + @run_before('install') + def prep_yt(self): + if '+rockstar' in self.spec: + with open('rockstar.cfg', 'w') as rockstar_cfg: + rockstar_cfg.write(self.spec['rockstar'].prefix) + @run_after('install') def check_install(self): # The Python interpreter path can be too long for this diff --git a/var/spack/repos/builtin/packages/rockstar/adjust_buildscript.patch b/var/spack/repos/builtin/packages/rockstar/adjust_buildscript.patch new file mode 100644 index 0000000000..e9a18e4ee4 --- /dev/null +++ b/var/spack/repos/builtin/packages/rockstar/adjust_buildscript.patch @@ -0,0 +1,13 @@ +diff --git a/Makefile b/Makefile +index fafba4b..a21ef9e 100644 +--- a/Makefile ++++ b/Makefile +@@ -6,7 +6,7 @@ PROFFLAGS = -lm -g -pg -O2 -std=c99 + CC = gcc + CFILES = rockstar.c check_syscalls.c fof.c groupies.c subhalo_metric.c potential.c nfw.c jacobi.c fun_times.c interleaving.c universe_time.c hubble.c integrate.c distance.c config_vars.c config.c bounds.c inthash.c io/read_config.c client.c server.c merger.c inet/socket.c inet/rsocket.c inet/address.c io/meta_io.c io/io_internal.c io/io_ascii.c io/stringparse.c io/io_gadget.c io/io_generic.c io/io_art.c io/io_tipsy.c io/io_bgc2.c io/io_util.c io/io_arepo.c io/io_hdf5.c + DIST_FLAGS = +-HDF5_FLAGS = -DH5_USE_16_API -lhdf5 -DENABLE_HDF5 -I/opt/local/include -L/opt/local/lib ++HDF5_FLAGS = -DH5_USE_16_API -lhdf5 -DENABLE_HDF5 -I$(HDF5_INC_DIR) -L$(HDF5_LIB_DIR) + + all: + @make reg EXTRA_FLAGS="$(OFLAGS)" diff --git a/var/spack/repos/builtin/packages/rockstar/package.py b/var/spack/repos/builtin/packages/rockstar/package.py new file mode 100644 index 0000000000..5903b2c18b --- /dev/null +++ b/var/spack/repos/builtin/packages/rockstar/package.py @@ -0,0 +1,69 @@ +############################################################################## +# 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 +############################################################################## + +import os +from spack import * +from distutils.dir_util import copy_tree + + +class Rockstar(MakefilePackage): + """The Rockstar Halo Finder""" + + homepage = "https://bitbucket.org/gfcstanford/rockstar" + url = "https://bitbucket.org/gfcstanford/rockstar" + + version('develop', git='https://bitbucket.org/gfcstanford/rockstar.git') + version('yt', hg='https://bitbucket.org/MatthewTurk/rockstar') + + variant('hdf5', description='Build rockstar with HDF5 support', default=False) + + patch('adjust_buildscript.patch') + + depends_on('hdf5', when='+hdf5') + + def build(self, spec, prefix): + # Set environment appropriately for HDF5 + if '+hdf5' in spec: + os.environ['HDF5_INC_DIR'] = spec['hdf5'].prefix.include + os.environ['HDF5_LIB_DIR'] = spec['hdf5'].prefix.lib + + # Build depending on whether hdf5 is to be used + if '+hdf5' in spec: + make('with_hdf5') + else: + make() + + # Build rockstar library + make('lib') + + def install(self, spec, prefix): + # Install all files and directories + copy_tree(".", prefix) + + mkdir(prefix.bin) + mkdir(prefix.lib) + + install('rockstar', join_path(prefix.bin, 'rockstar')) + install('librockstar.so', join_path(prefix.lib, 'librockstar.so')) |