Compare commits

...

13 Commits

Author SHA1 Message Date
Matthew Krafczyk
81424dce5c Merge branch 'workaround/yt-py-pillow' into yt-dev-working-branch 2017-01-17 15:32:30 -06:00
Matthew Krafczyk
65be1a93f1 Merge branch 'update/yt-rockstar' into yt-dev-working-branch 2017-01-17 15:31:49 -06:00
Matthew Krafczyk
e2d4dadf33 Merge branch 'update/dev-yt' into yt-dev-working-branch 2017-01-17 15:31:14 -06:00
Matthew Krafczyk
67bfb782ef Merge branch 'new-package/rockstar' into yt-dev-working-branch 2017-01-17 15:30:59 -06:00
Matthew Krafczyk
40cbe69897 Fix installation of rockstar. 2017-01-17 15:28:57 -06:00
Matthew Krafczyk
fa39273e1f Correct how rockstar prefix is found and written to file 2017-01-16 12:04:52 -05:00
Matthew Krafczyk
ef32f3880f Add rockstar support to py-yt package 2017-01-16 12:04:51 -05:00
Matthew Krafczyk
31f7a01a9d 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.
2017-01-16 11:29:37 -05:00
Matthew Krafczyk
d74309a7b7 Correct how rockstar prefix is found and written to file 2017-01-16 11:29:37 -05:00
Matthew Krafczyk
190bd6ca65 Create rockstar package
rockstar is a halo finding algorithm
2017-01-16 11:29:37 -05:00
Matthew Krafczyk
209eb83d0d Add a +devmode variant to yt
When specifying +devmode when installing yt, a link to the source
directory will be used instead of creating an egg. This eases the
development process as changes you make in the yt source directory will
be instantly available when building the package as a diy.
2017-01-16 11:26:26 -05:00
Matthew Krafczyk
f10c3ca55e Add py-pillow explicit dependency 2017-01-16 11:25:45 -05:00
Matthew Krafczyk
dcab47cdc0 Add -d and -j options to diy
Also add -j to the common arguments
2017-01-16 11:16:36 -05:00
6 changed files with 95 additions and 5 deletions

View File

@@ -105,3 +105,7 @@ def _specs(self, **kwargs):
_arguments['very_long'] = Args(
'-L', '--very-long', action='store_true',
help='Show full dependency hashes as well as versions.')
_arguments['jobs'] = Args(
'-j', '--jobs', action='store', type=int, dest="jobs",
help="Explicitly set number of make jobs. Default is #cpus.")

View File

@@ -38,6 +38,10 @@
def setup_parser(subparser):
arguments.add_common_arguments(subparser, ['jobs'])
subparser.add_argument(
'-d', '--source-path', dest='source_path', default=None,
help="Path to the source directory. Defaults to the current directory")
subparser.add_argument(
'-i', '--ignore-dependencies', action='store_true', dest='ignore_deps',
help="Do not try to install dependencies of requested packages.")
@@ -62,6 +66,10 @@ def diy(self, args):
if not args.spec:
tty.die("spack diy requires a package spec argument.")
if args.jobs is not None:
if args.jobs <= 0:
tty.die("The -j option must be a positive integer!")
specs = spack.cmd.parse_specs(args.spec)
if len(specs) > 1:
tty.die("spack diy only takes one spec.")
@@ -91,13 +99,19 @@ def diy(self, args):
tty.msg("Uninstall or try adding a version suffix for this DIY build.")
sys.exit(1)
source_path = args.source_path
if source_path is None:
source_path = os.getcwd()
source_path = os.path.abspath(source_path)
# Forces the build to run out of the current directory.
package.stage = DIYStage(os.getcwd())
package.stage = DIYStage(source_path)
# TODO: make this an argument, not a global.
spack.do_checksum = False
package.do_install(
make_jobs=args.jobs,
keep_prefix=args.keep_prefix,
install_deps=not args.ignore_deps,
verbose=not args.quiet,

View File

@@ -54,9 +54,7 @@ def setup_parser(subparser):
Alternatively one can decide to install only the package or only
the dependencies."""
)
subparser.add_argument(
'-j', '--jobs', action='store', type=int,
help="Explicitly set number of make jobs. Default is #cpus.")
arguments.add_common_arguments(subparser, ['jobs'])
subparser.add_argument(
'--keep-prefix', action='store_true', dest='keep_prefix',
help="Don't remove the install prefix if installation fails.")

View File

@@ -23,9 +23,9 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
import os
from spack import *
class PyYt(Package):
"""Volumetric Data Analysis
@@ -53,6 +53,8 @@ class PyYt(Package):
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("devmode", default=False, description="enable development mode")
variant("rockstar", default=False, description="enable rockstar support")
extends("python")
@@ -65,9 +67,21 @@ class PyYt(Package):
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("py-pillow", type=('build', 'run'))
depends_on("python @2.7:2.999,3.4:")
def install(self, spec, prefix):
if '+devmode' in spec:
setup_py("develop", "--prefix=%s" % prefix)
else:
setup_py("install", "--prefix=%s" % prefix)
if '+rockstar' in spec:
if os.path.exists('rockstar.cfg'):
os.remove('rockstar.cfg')
rockstar_cfg = open('rockstar.cfg', 'w')
rockstar_cfg.write(spec.get_dependency('rockstar').spec.prefix)
rockstar_cfg.close()
setup_py("install", "--prefix=%s" % prefix)
self.check_install(spec, prefix)

View File

@@ -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)"

View File

@@ -0,0 +1,47 @@
import os
import shutil
from spack import *
class Rockstar(Package):
"""Description"""
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')
patch('adjust_buildscript.patch')
depends_on('hdf5', when='+hdf5')
def install(self, spec, prefix):
# Set environment appropriately for HDF5
if '+hdf5' in spec:
os.environ['HDF5_INC_DIR'] = spec.get_dependency('hdf5').spec.prefix+"/include"
os.environ['HDF5_LIB_DIR'] = spec.get_dependency('hdf5').spec.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')
# Install all files and directories
for filename in os.listdir('.'):
if filename != "." and filename != "..":
if os.path.isdir(filename):
shutil.copytree(join_path(".",filename), join_path(prefix, filename))
else:
install(filename, join_path(prefix, filename))
mkdir(prefix.bin)
mkdir(prefix.lib)
install('rockstar', join_path(prefix.bin, 'rockstar'))
install('librockstar.so', join_path(prefix.lib, 'librockstar.so'))