Merge branch 'develop' of https://github.com/scalability-llnl/spack into issues/gcc

Conflicts:
	var/spack/packages/gcc/package.py

GCC : removed dependency on libelf. Removed isl variant
This commit is contained in:
Massimiliano Culpo 2015-10-22 15:53:44 +02:00
commit f475ec4ce6
42 changed files with 523 additions and 88 deletions

View File

@ -1,5 +1,5 @@
Spack ![image](share/spack/logo/spack-logo-text-64.png "Spack")
=========== ============
Spack is a package management tool designed to support multiple Spack is a package management tool designed to support multiple
versions and configurations of software on a wide variety of platforms versions and configurations of software on a wide variety of platforms
@ -13,7 +13,7 @@ can coexist on the same system.
Most importantly, Spack is simple. It offers a simple spec syntax so Most importantly, Spack is simple. It offers a simple spec syntax so
that users can specify versions and configuration options that users can specify versions and configuration options
concisely. Spack is also simple for package authors: package files are concisely. Spack is also simple for package authors: package files are
writtin in pure Python, and specs allow package authors to write a written in pure Python, and specs allow package authors to write a
single build script for many different builds of the same package. single build script for many different builds of the same package.
See the See the
@ -62,21 +62,9 @@ latest stable release.
Authors Authors
---------------- ----------------
Spack was written by Todd Gamblin, tgamblin@llnl.gov. Many thanks go to Spack's [contributors](https://github.com/scalability-llnl/spack/graphs/contributors).
Significant contributions were also made by: Spack was originally written by Todd Gamblin, tgamblin@llnl.gov.
* David Beckingsale
* David Boehme
* Alfredo Gimenez
* Luc Jaulmes
* Matt Legendre
* Greg Lee
* Adam Moody
* Saravan Pantham
* Joachim Protze
* Bob Robey
* Justin Too
Release Release
---------------- ----------------

View File

@ -118,7 +118,7 @@ def main():
# If the user asked for it, don't check ssl certs. # If the user asked for it, don't check ssl certs.
if args.insecure: if args.insecure:
tty.warn("You asked for --insecure, which does not check SSL certificates or checksums.") tty.warn("You asked for --insecure, which does not check SSL certificates.")
spack.curl.add_default_arg('-k') spack.curl.add_default_arg('-k')
# Try to load the particular command asked for and run it # Try to load the particular command asked for and run it

View File

@ -149,7 +149,7 @@
# Theme options are theme-specific and customize the look and feel of a theme # Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the # further. For a list of options available for each theme, see the
# documentation. # documentation.
#html_theme_options = [('show_copyright', False)] html_theme_options = { 'logo_only' : True }
# Add any paths that contain custom themes here, relative to this directory. # Add any paths that contain custom themes here, relative to this directory.
html_theme_path = ["_themes"] html_theme_path = ["_themes"]
@ -163,12 +163,12 @@
# The name of an image file (relative to this directory) to place at the top # The name of an image file (relative to this directory) to place at the top
# of the sidebar. # of the sidebar.
#html_logo = None html_logo = '../../../share/spack/logo/spack-logo-white-text-48.png'
# The name of an image file (within the static path) to use as favicon of the # The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large. # pixels large.
#html_favicon = None html_favicon = '../../../share/spack/logo/favicon.ico'
# Add any paths that contain custom static files (such as style sheets) here, # Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files, # relative to this directory. They are copied after the builtin static files,

View File

@ -33,8 +33,7 @@
from StringIO import StringIO from StringIO import StringIO
from llnl.util.tty import terminal_size from llnl.util.tty import terminal_size
from llnl.util.tty.color import clen from llnl.util.tty.color import clen, cextra
class ColumnConfig: class ColumnConfig:
def __init__(self, cols): def __init__(self, cols):
@ -42,7 +41,6 @@ def __init__(self, cols):
self.line_length = 0 self.line_length = 0
self.valid = True self.valid = True
self.widths = [0] * cols # does not include ansi colors self.widths = [0] * cols # does not include ansi colors
self.cwidths = [0] * cols # includes ansi colors
def __repr__(self): def __repr__(self):
attrs = [(a,getattr(self, a)) for a in dir(self) if not a.startswith("__")] attrs = [(a,getattr(self, a)) for a in dir(self) if not a.startswith("__")]
@ -66,8 +64,6 @@ def config_variable_cols(elts, console_width, padding, cols=0):
# Get a bound on the most columns we could possibly have. # Get a bound on the most columns we could possibly have.
# 'clen' ignores length of ansi color sequences. # 'clen' ignores length of ansi color sequences.
lengths = [clen(e) for e in elts] lengths = [clen(e) for e in elts]
clengths = [len(e) for e in elts]
max_cols = max(1, console_width / (min(lengths) + padding)) max_cols = max(1, console_width / (min(lengths) + padding))
max_cols = min(len(elts), max_cols) max_cols = min(len(elts), max_cols)
@ -85,7 +81,6 @@ def config_variable_cols(elts, console_width, padding, cols=0):
if conf.widths[col] < (length + p): if conf.widths[col] < (length + p):
conf.line_length += length + p - conf.widths[col] conf.line_length += length + p - conf.widths[col]
conf.widths[col] = length + p conf.widths[col] = length + p
conf.cwidths[col] = clengths[i] + p
conf.valid = (conf.line_length < console_width) conf.valid = (conf.line_length < console_width)
try: try:
@ -118,7 +113,6 @@ def config_uniform_cols(elts, console_width, padding, cols=0):
config = ColumnConfig(cols) config = ColumnConfig(cols)
config.widths = [max_len] * cols config.widths = [max_len] * cols
config.cwidths = [max_clen] * cols
return config return config
@ -147,9 +141,6 @@ def colify(elts, **options):
method=<string> Method to use to fit columns. Options are variable or uniform. method=<string> Method to use to fit columns. Options are variable or uniform.
Variable-width columns are tighter, uniform columns are all the Variable-width columns are tighter, uniform columns are all the
same width and fit less data on the screen. same width and fit less data on the screen.
len=<func> Function to use for calculating string length.
Useful for ignoring ansi color. Default is 'len'.
""" """
# Get keyword arguments or set defaults # Get keyword arguments or set defaults
cols = options.pop("cols", 0) cols = options.pop("cols", 0)
@ -199,9 +190,6 @@ def colify(elts, **options):
raise ValueError("method must be one of: " + allowed_methods) raise ValueError("method must be one of: " + allowed_methods)
cols = config.cols cols = config.cols
formats = ["%%-%ds" % width for width in config.cwidths[:-1]]
formats.append("%s") # last column has no trailing space
rows = (len(elts) + cols - 1) / cols rows = (len(elts) + cols - 1) / cols
rows_last_col = len(elts) % rows rows_last_col = len(elts) % rows
@ -209,7 +197,9 @@ def colify(elts, **options):
output.write(" " * indent) output.write(" " * indent)
for col in xrange(cols): for col in xrange(cols):
elt = col * rows + row elt = col * rows + row
output.write(formats[col] % elts[elt]) width = config.widths[col] + cextra(elts[elt])
fmt = '%%-%ds' % width
output.write(fmt % elts[elt])
output.write("\n") output.write("\n")
row += 1 row += 1

View File

@ -158,6 +158,11 @@ def clen(string):
return len(re.sub(r'\033[^m]*m', '', string)) return len(re.sub(r'\033[^m]*m', '', string))
def cextra(string):
""""Length of extra color characters in a string"""
return len(''.join(re.findall(r'\033[^m]*m', string)))
def cwrite(string, stream=sys.stdout, color=None): def cwrite(string, stream=sys.stdout, color=None):
"""Replace all color expressions in string with ANSI control """Replace all color expressions in string with ANSI control
codes and write the result to the stream. If color is codes and write the result to the stream. If color is

View File

@ -27,24 +27,26 @@
from llnl.util.filesystem import * from llnl.util.filesystem import *
# This lives in $prefix/lib/spack/spack/__file__ # This lives in $prefix/lib/spack/spack/__file__
prefix = ancestor(__file__, 4) spack_root = ancestor(__file__, 4)
# The spack script itself # The spack script itself
spack_file = join_path(prefix, "bin", "spack") spack_file = join_path(spack_root, "bin", "spack")
# spack directory hierarchy # spack directory hierarchy
etc_path = join_path(prefix, "etc") lib_path = join_path(spack_root, "lib", "spack")
lib_path = join_path(prefix, "lib", "spack")
build_env_path = join_path(lib_path, "env") build_env_path = join_path(lib_path, "env")
module_path = join_path(lib_path, "spack") module_path = join_path(lib_path, "spack")
compilers_path = join_path(module_path, "compilers") compilers_path = join_path(module_path, "compilers")
test_path = join_path(module_path, "test") test_path = join_path(module_path, "test")
hooks_path = join_path(module_path, "hooks") hooks_path = join_path(module_path, "hooks")
var_path = join_path(prefix, "var", "spack") var_path = join_path(spack_root, "var", "spack")
stage_path = join_path(var_path, "stage") stage_path = join_path(var_path, "stage")
share_path = join_path(spack_root, "share", "spack")
prefix = spack_root
opt_path = join_path(prefix, "opt") opt_path = join_path(prefix, "opt")
install_path = join_path(opt_path, "spack") install_path = join_path(opt_path, "spack")
share_path = join_path(prefix, "share", "spack") etc_path = join_path(prefix, "etc")
# #
# Set up the packages database. # Set up the packages database.

View File

@ -65,11 +65,21 @@ def print_text_info(pkg):
print "None" print "None"
else: else:
pad = padder(pkg.variants, 4) pad = padder(pkg.variants, 4)
maxv = max(len(v) for v in sorted(pkg.variants))
fmt = "%%-%ss%%-10s%%s" % (maxv + 4)
print " " + fmt % ('Name', 'Default', 'Description')
print
for name in sorted(pkg.variants): for name in sorted(pkg.variants):
v = pkg.variants[name] v = pkg.variants[name]
print " %s%s" % ( default = 'on' if v.default else 'off'
pad(('+' if v.default else '-') + name + ':'),
"\n".join(textwrap.wrap(v.description))) lines = textwrap.wrap(v.description)
lines[1:] = [" " + (" " * maxv) + l for l in lines[1:]]
desc = "\n".join(lines)
print " " + fmt % (name, default, desc)
print print
print "Dependencies:" print "Dependencies:"

View File

@ -187,14 +187,9 @@ def hidden_file_paths(self):
def relative_path_for_spec(self, spec): def relative_path_for_spec(self, spec):
_check_concrete(spec) _check_concrete(spec)
enabled_variants = ( dir_name = "%s-%s-%s" % (
'-' + v.name for v in spec.variants.values()
if v.enabled)
dir_name = "%s-%s%s-%s" % (
spec.name, spec.name,
spec.version, spec.version,
''.join(enabled_variants),
spec.dag_hash(self.hash_len)) spec.dag_hash(self.hash_len))
path = join_path( path = join_path(

View File

@ -438,9 +438,16 @@ def stage(self):
raise ValueError("Can only get a stage for a concrete package.") raise ValueError("Can only get a stage for a concrete package.")
if self._stage is None: if self._stage is None:
# Construct a mirror path (TODO: get this out of package.py)
mp = spack.mirror.mirror_archive_path(self.spec) mp = spack.mirror.mirror_archive_path(self.spec)
self._stage = Stage(
self.fetcher, mirror_path=mp, name=self.spec.short_spec) # Construct a path where the stage should build..
s = self.spec
stage_name = "%s-%s-%s" % (s.name, s.version, s.dag_hash())
# Build the stage
self._stage = Stage(self.fetcher, mirror_path=mp, name=stage_name)
return self._stage return self._stage

BIN
share/spack/logo/favicon.ico Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,15 @@
from spack import *
class Activeharmony(Package):
"""Active Harmony: a framework for auto-tuning (the automated search for values to improve the performance of a target application)."""
homepage = "http://www.dyninst.org/harmony"
url = "http://www.dyninst.org/sites/default/files/downloads/harmony/ah-4.5.tar.gz"
version('4.5', 'caee5b864716d376e2c25d739251b2a9')
def install(self, spec, prefix):
make("CFLAGS=-O3")
make("install", 'PREFIX=%s' % prefix)
from spack import *

View File

@ -10,8 +10,20 @@ class Binutils(Package):
version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e') version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e')
version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764') version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764')
def install(self, spec, prefix): variant('libiberty', default=False, description='Also install libiberty.')
configure("--prefix=%s" % prefix)
def install(self, spec, prefix):
configure_args = [
'--prefix=%s' % prefix,
'--disable-dependency-tracking',
'--enable-interwork',
'--enable-multilib',
'--enable-64-bit-bfd',
'--enable-targets=all']
if '+libiberty' in spec:
configure_args.append('--enable-install-libiberty')
configure(*configure_args)
make() make()
make("install") make("install")

View File

@ -14,6 +14,10 @@ class Boost(Package):
list_url = "http://sourceforge.net/projects/boost/files/boost/" list_url = "http://sourceforge.net/projects/boost/files/boost/"
list_depth = 2 list_depth = 2
version('1.59.0', '6aa9a5c6a4ca1016edd0ed1178e3cb87')
version('1.58.0', 'b8839650e61e9c1c0a89f371dd475546')
version('1.57.0', '1be49befbdd9a5ce9def2983ba3e7b76')
version('1.56.0', 'a744cf167b05d72335f27c88115f211d')
version('1.55.0', 'd6eef4b4cacb2183f2bf265a5a03a354') version('1.55.0', 'd6eef4b4cacb2183f2bf265a5a03a354')
version('1.54.0', '15cb8c0803064faef0c4ddf5bc5ca279') version('1.54.0', '15cb8c0803064faef0c4ddf5bc5ca279')
version('1.53.0', 'a00d22605d5dbcfb4c9936a9b35bc4c2') version('1.53.0', 'a00d22605d5dbcfb4c9936a9b35bc4c2')

View File

@ -0,0 +1,16 @@
--- Makefile 2015-02-26 10:50:00.000000000 -0800
+++ Makefile.new 2015-07-29 18:03:59.891357399 -0700
@@ -22,10 +22,10 @@
#
INC =
-GCC_PREFIX = $(shell dirname `which gcc`)
+GCC_PREFIX =
GCC_SUFFIX =
-CC = $(GCC_PREFIX)/gcc$(GCC_SUFFIX)
-CPP = $(GCC_PREFIX)/g++$(GCC_SUFFIX)
+CC = cc
+CPP = c++
CXX = $(CPP)
HEADERS = $(wildcard *.h)
BOWTIE_MM = 1

View File

@ -0,0 +1,24 @@
from spack import *
from glob import glob
class Bowtie2(Package):
"""Description"""
homepage = "bowtie-bio.sourceforge.net/bowtie2/index.shtml"
version('2.2.5','51fa97a862d248d7ee660efc1147c75f', url = "http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/2.2.5/bowtie2-2.2.5-source.zip")
patch('bowtie2-2.5.patch',when='@2.2.5', level=0)
def install(self, spec, prefix):
make()
mkdirp(prefix.bin)
for bow in glob("bowtie2*"):
install(bow, prefix.bin)
# install('bowtie2',prefix.bin)
# install('bowtie2-align-l',prefix.bin)
# install('bowtie2-align-s',prefix.bin)
# install('bowtie2-build',prefix.bin)
# install('bowtie2-build-l',prefix.bin)
# install('bowtie2-build-s',prefix.bin)
# install('bowtie2-inspect',prefix.bin)
# install('bowtie2-inspect-l',prefix.bin)
# install('bowtie2-inspect-s',prefix.bin)

View File

@ -22,8 +22,10 @@ def install(self, spec, prefix):
bzip2_exe = join_path(prefix.bin, 'bzip2') bzip2_exe = join_path(prefix.bin, 'bzip2')
install('bzip2-shared', bzip2_exe) install('bzip2-shared', bzip2_exe)
for libfile in glob('libbz2.so*'): for i, libfile in enumerate(glob('libbz2.so*')):
install(libfile, prefix.lib) install(libfile, prefix.lib)
if i == 0:
symlink(join_path(prefix.lib, libfile), join_path(prefix.lib, 'libbz2.so'))
bunzip2 = join_path(prefix.bin, 'bunzip2') bunzip2 = join_path(prefix.bin, 'bunzip2')
remove(bunzip2) remove(bunzip2)

View File

@ -0,0 +1,25 @@
#------------------------------------------------------------------------------
# Author: Justin Too <justin@doubleotoo.com>
# Date: September 11, 2015
#------------------------------------------------------------------------------
from spack import *
class Doxygen(Package):
"""Doxygen is the de facto standard tool for generating documentation
from annotated C++ sources, but it also supports other popular programming
languages such as C, Objective-C, C#, PHP, Java, Python, IDL (Corba,
Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some extent D..
"""
homepage = "http://www.stack.nl/~dimitri/doxygen/"
url = "http://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.10.src.tar.gz"
version('1.8.10', '79767ccd986f12a0f949015efb5f058f')
depends_on("cmake@2.8.12:")
def install(self, spec, prefix):
cmake('.', *std_cmake_args)
make()
make("install")

View File

@ -0,0 +1,18 @@
from spack import *
class Fish(Package):
"""fish is a smart and user-friendly command line shell for OS X, Linux, and
the rest of the family.
"""
homepage = "http://fishshell.com/"
url = "http://fishshell.com/files/2.2.0/fish-2.2.0.tar.gz"
list_url = homepage
version('2.2.0', 'a76339fd14ce2ec229283c53e805faac48c3e99d9e3ede9d82c0554acfc7b77a')
def install(self, spec, prefix):
configure('--prefix=%s' % prefix)
make()
make("install")

View File

@ -47,17 +47,15 @@ class Gcc(Package):
version('4.5.4', '27e459c2566b8209ab064570e1b378f7') version('4.5.4', '27e459c2566b8209ab064570e1b378f7')
variant('binutils', default=False, description='Add a dependency on binutils') variant('binutils', default=False, description='Add a dependency on binutils')
variant('libelf', default=False, description='Add a dependency on libelf')
variant('isl', default=True, description='Add a dependency on isl')
depends_on("mpfr") depends_on("mpfr")
depends_on("gmp") depends_on("gmp")
depends_on("mpc") # when @4.5: depends_on("mpc") # when @4.5:
depends_on("libelf", when='+libelf') depends_on("libelf")
depends_on("binutils",when="+binutils") depends_on("binutils~libiberty", when="+binutils")
# Save these until we can do optional deps. # Save these until we can do optional deps.
depends_on("isl", when='@5.0:+isl') depends_on("isl", when='@5.0:')
#depends_on("ppl") #depends_on("ppl")
#depends_on("cloog") #depends_on("cloog")

View File

@ -0,0 +1,21 @@
import os
from spack import *
class Gflags(Package):
"""The gflags package contains a C++ library that implements
commandline flags processing. It includes built-in support for
standard types such as string and the ability to define flags
in the source file in which they are used. Online documentation
available at: https://gflags.github.io/gflags/"""
homepage = "https://gflags.github.io/gflags"
url = "https://github.com/gflags/gflags/archive/v2.1.2.tar.gz"
version('2.1.2', 'ac432de923f9de1e9780b5254884599f')
def install(self, spec, prefix):
cmake("-DCMAKE_INSTALL_PREFIX=" + prefix,
"-DBUILD_SHARED_LIBS=ON")
make()
make("test")
make("install")

View File

@ -0,0 +1,19 @@
from spack import *
class Glm(Package):
"""
OpenGL Mathematics (GLM) is a header only C++ mathematics library for graphics software based on
the OpenGL Shading Language (GLSL) specification.
"""
homepage = "https://github.com/g-truc/glm"
url = "https://github.com/g-truc/glm/archive/0.9.7.1.tar.gz"
version('0.9.7.1', '61af6639cdf652d1cdd7117190afced8')
def install(self, spec, prefix):
with working_dir('spack-build', create=True):
cmake('..', *std_cmake_args)
make()
make("install")

View File

@ -0,0 +1,15 @@
import os
from spack import *
class Glog(Package):
"""C++ implementation of the Google logging module."""
homepage = "https://github.com/google/glog"
url = "https://github.com/google/glog/archive/v0.3.3.tar.gz"
version('0.3.3', 'c1f86af27bd9c73186730aa957607ed0')
def install(self, spec, prefix):
configure("--prefix=" + prefix)
make()
make("install")

View File

@ -11,6 +11,7 @@ class Hdf5(Package):
list_url = "http://www.hdfgroup.org/ftp/HDF5/releases" list_url = "http://www.hdfgroup.org/ftp/HDF5/releases"
list_depth = 3 list_depth = 3
version('1.8.15', '03cccb5b33dbe975fdcd8ae9dc021f24')
version('1.8.13', 'c03426e9e77d7766944654280b467289') version('1.8.13', 'c03426e9e77d7766944654280b467289')
depends_on("mpi") depends_on("mpi")

View File

@ -0,0 +1,29 @@
import os
import glob
from spack import *
class Leveldb(Package):
"""LevelDB is a fast key-value storage library written at Google
that provides an ordered mapping from string keys to string values."""
homepage = "https://github.com/google/leveldb"
url = "https://github.com/google/leveldb/archive/v1.18.tar.gz"
version('1.18', '73770de34a2a5ab34498d2e05b2b7fa0')
depends_on("snappy")
def install(self, spec, prefix):
make()
mkdirp(prefix.include)
mkdirp(prefix.lib)
cp = which('cp')
# cp --preserve=links libleveldb.* prefix/lib
args = glob.glob('libleveldb.*')
args.append(prefix + '/lib')
cp('--preserve=links', *args)
cp('-r', 'include/leveldb', prefix + '/include')

View File

@ -6,11 +6,12 @@ class Libffi(Package):
to call any function specified by a call interface description at to call any function specified by a call interface description at
run time.""" run time."""
homepage = "https://sourceware.org/libffi/" homepage = "https://sourceware.org/libffi/"
url = "ftp://sourceware.org/pub/libffi/libffi-3.1.tar.gz"
version('3.1', 'f5898b29bbfd70502831a212d9249d10') version('3.2.1','83b89587607e3eb65c70d361f13bab43',url = "ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz")
#version('3.1', 'f5898b29bbfd70502831a212d9249d10',url = "ftp://sourceware.org/pub/libffi/libffi-3.1.tar.gz") # Has a bug $(lib64) instead of ${lib64} in libffi.pc
def install(self, spec, prefix): def install(self, spec, prefix):
configure("--prefix=%s" % prefix) configure("--prefix=%s" % prefix)
make() make()
make("install") make("install")

View File

@ -10,7 +10,7 @@ class Libxcb(Package):
url = "http://xcb.freedesktop.org/dist/libxcb-1.11.tar.gz" url = "http://xcb.freedesktop.org/dist/libxcb-1.11.tar.gz"
version('1.11', '1698dd837d7e6e94d029dbe8b3a82deb') version('1.11', '1698dd837d7e6e94d029dbe8b3a82deb')
version('1.11.1', '118623c15a96b08622603a71d8789bf3')
depends_on("python") depends_on("python")
depends_on("xcb-proto") depends_on("xcb-proto")

View File

@ -0,0 +1,39 @@
import os
from spack import *
class Lmdb(Package):
"""Read-only mirror of official repo on openldap.org. Issues and
pull requests here are ignored. Use OpenLDAP ITS for issues.
http://www.openldap.org/software/repo.html"""
homepage = "http://www.openldap.org/software/repo.html"
url = "https://github.com/LMDB/lmdb/archive/LMDB_0.9.16.tar.gz"
version('0.9.16', '0de89730b8f3f5711c2b3a4ba517b648')
def install(self, spec, prefix):
os.chdir('libraries/liblmdb')
make()
mkdirp(prefix.bin)
mkdirp(prefix + '/man/man1')
mkdirp(prefix.lib)
mkdirp(prefix.include)
bins = ['mdb_stat', 'mdb_copy', 'mdb_dump', 'mdb_load']
for f in bins:
install(f, prefix.bin)
mans = ['mdb_stat.1', 'mdb_copy.1', 'mdb_dump.1', 'mdb_load.1']
for f in mans:
install(f, prefix + '/man/man1')
libs = ['liblmdb.a', 'liblmdb.so']
for f in libs:
install(f, prefix.lib)
includes = ['lmdb.h']
for f in includes:
install(f, prefix.include)

View File

@ -0,0 +1,15 @@
from spack import *
class Matio(Package):
"""matio is an C library for reading and writing Matlab MAT files"""
homepage = "http://sourceforge.net/projects/matio/"
url = "http://downloads.sourceforge.net/project/matio/matio/1.5.2/matio-1.5.2.tar.gz"
version('1.5.2', '85b007b99916c63791f28398f6a4c6f1')
def install(self, spec, prefix):
configure('--prefix=%s' % prefix)
make()
make("install")

View File

@ -33,10 +33,15 @@ class Mpich(Package):
list_url = "http://www.mpich.org/static/downloads/" list_url = "http://www.mpich.org/static/downloads/"
list_depth = 2 list_depth = 2
version('3.1.4', '2ab544607986486562e076b83937bba2')
version('3.1.3', '93cb17f91ac758cbf9174ecb03563778')
version('3.1.2', '7fbf4b81dcb74b07ae85939d1ceee7f1')
version('3.1.1', '40dc408b1e03cc36d80209baaa2d32b7')
version('3.1', '5643dd176499bfb7d25079aaff25f2ec')
version('3.0.4', '9c5d5d4fe1e17dd12153f40bc5b6dbc0') version('3.0.4', '9c5d5d4fe1e17dd12153f40bc5b6dbc0')
provides('mpi@:3', when='@3:') provides('mpi@:3.0', when='@3:')
provides('mpi@:1', when='@1:') provides('mpi@:1.3', when='@1:')
def setup_dependent_environment(self, module, spec, dep_spec): def setup_dependent_environment(self, module, spec, dep_spec):
"""For dependencies, make mpicc's use spack wrapper.""" """For dependencies, make mpicc's use spack wrapper."""

View File

@ -0,0 +1,28 @@
from spack import *
class Ncdu(Package):
"""
Ncdu is a disk usage analyzer with an ncurses interface. It is designed
to find space hogs on a remote server where you don't have an entire
gaphical setup available, but it is a useful tool even on regular desktop
systems. Ncdu aims to be fast, simple and easy to use, and should be able
to run in any minimal POSIX-like environment with ncurses installed.
"""
homepage = "http://dev.yorhel.nl/ncdu"
url = "http://dev.yorhel.nl/download/ncdu-1.11.tar.gz"
version('1.11', '9e44240a5356b029f05f0e70a63c4d12')
version('1.10', '7535decc8d54eca811493e82d4bfab2d')
version('1.9' , '93258079db897d28bb8890e2db89b1fb')
version('1.8' , '94d7a821f8a0d7ba8ef3dd926226f7d5')
version('1.7' , '172047c29d232724cc62e773e82e592a')
depends_on("ncurses")
def install(self, spec, prefix):
configure('--prefix=%s' % prefix,
'--with-ncurses=%s' % spec['ncurses'])
make()
make("install")

View File

@ -0,0 +1,25 @@
diff -Nur netcdf-4.3.3/CMakeLists.txt netcdf-4.3.3.mpi/CMakeLists.txt
--- netcdf-4.3.3/CMakeLists.txt 2015-02-12 16:44:35.000000000 -0500
+++ netcdf-4.3.3.mpi/CMakeLists.txt 2015-10-14 16:44:41.176300658 -0400
@@ -753,6 +753,7 @@
SET(USE_PARALLEL OFF CACHE BOOL "")
MESSAGE(STATUS "Cannot find HDF5 library built with parallel support. Disabling parallel build.")
ELSE()
+ FIND_PACKAGE(MPI REQUIRED)
SET(USE_PARALLEL ON CACHE BOOL "")
SET(STATUS_PARALLEL "ON")
ENDIF()
diff -Nur netcdf-4.3.3/liblib/CMakeLists.txt netcdf-4.3.3.mpi/liblib/CMakeLists.txt
--- netcdf-4.3.3/liblib/CMakeLists.txt 2015-02-12 16:44:35.000000000 -0500
+++ netcdf-4.3.3.mpi/liblib/CMakeLists.txt 2015-10-14 16:44:57.757793634 -0400
@@ -71,6 +71,10 @@
SET(TLL_LIBS ${TLL_LIBS} ${CURL_LIBRARY})
ENDIF()
+IF(USE_PARALLEL)
+ SET(TLL_LIBS ${TLL_LIBS} ${MPI_C_LIBRARIES})
+ENDIF()
+
IF(USE_HDF4)
SET(TLL_LIBS ${TLL_LIBS} ${HDF4_LIBRARIES})
ENDIF()

View File

@ -10,19 +10,18 @@ class Netcdf(Package):
version('4.3.3', '5fbd0e108a54bd82cb5702a73f56d2ae') version('4.3.3', '5fbd0e108a54bd82cb5702a73f56d2ae')
patch('netcdf-4.3.3-mpi.patch')
# Dependencies: # Dependencies:
# >HDF5 # >HDF5
depends_on("hdf5") depends_on("hdf5")
def install(self, spec, prefix): def install(self, spec, prefix):
configure( with working_dir('spack-build', create=True):
"--prefix=%s" % prefix, cmake('..',
"--disable-dap", # Disable DAP. "-DCMAKE_INSTALL_PREFIX:PATH=%s" % prefix,
"--disable-shared", # Don't build shared libraries (use static libs). "-DENABLE_DAP:BOOL=OFF", # Disable DAP.
"CPPFLAGS=-I%s/include" % spec['hdf5'].prefix, # Link HDF5's include dir. "-DBUILD_SHARED_LIBS:BOOL=OFF") # Don't build shared libraries (use static libs).
"LDFLAGS=-L%s/lib" % spec['hdf5'].prefix) # Link HDF5's lib dir.
make()
make("install") make("install")
# Check the newly installed netcdf package. Currently disabled.
# make("check")

View File

@ -11,15 +11,19 @@ class Openmpi(Package):
homepage = "http://www.open-mpi.org" homepage = "http://www.open-mpi.org"
version('1.8.2', 'ab538ed8e328079d566fc797792e016e', version('1.10.0', '280cf952de68369cebaca886c5ce0304',
url='http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.2.tar.gz') url = "http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.0.tar.bz2")
version('1.8.8', '0dab8e602372da1425e9242ae37faf8c',
url = 'http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.8.tar.bz2')
version('1.6.5', '03aed2a4aa4d0b27196962a2a65fc475', version('1.6.5', '03aed2a4aa4d0b27196962a2a65fc475',
url = "http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.5.tar.bz2") url = "http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.5.tar.bz2")
patch('ad_lustre_rwcontig_open_source.patch', when="@1.6.5") patch('ad_lustre_rwcontig_open_source.patch', when="@1.6.5")
patch('llnl-platforms.patch', when="@1.6.5") patch('llnl-platforms.patch', when="@1.6.5")
provides('mpi@:2') provides('mpi@:2.2', when='@1.6.5') # Open MPI 1.6.5 supports MPI-2.2
provides('mpi@:3.0', when='@1.8.8') # Open MPI 1.8.8 supports MPI-3.0
provides('mpi@:3.0', when='@1.10.0') # Open MPI 1.10.0 supports MPI-3.0
def install(self, spec, prefix): def install(self, spec, prefix):
config_args = ["--prefix=%s" % prefix] config_args = ["--prefix=%s" % prefix]

View File

@ -0,0 +1,16 @@
import os
from spack import *
class Protobuf(Package):
"""Google's data interchange format."""
homepage = "https://developers.google.com/protocol-buffers"
url = "https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.bz2"
version('2.5.0', 'a72001a9067a4c2c4e0e836d0f92ece4')
def install(self, spec, prefix):
configure("--prefix=" + prefix)
make()
make("check")
make("install")

View File

@ -0,0 +1,18 @@
from spack import *
class Samtools(Package):
"""SAM Tools provide various utilities for manipulating alignments in the SAM format,
including sorting, merging, indexing and generating
alignments in a per-position format"""
homepage = "www.htslib.org"
version('1.2','988ec4c3058a6ceda36503eebecd4122',url = "https://github.com/samtools/samtools/releases/download/1.2/samtools-1.2.tar.bz2")
depends_on("zlib")
depends_on("mpc")
parallel=False
patch("samtools1.2.patch",level=0)
def install(self, spec, prefix):
make("prefix=%s" % prefix, "install")

View File

@ -0,0 +1,20 @@
--- Makefile 2015-02-03 08:27:34.000000000 -0800
+++ Makefile.new 2015-07-21 10:38:27.881406892 -0700
@@ -26,7 +26,7 @@
CFLAGS = -g -Wall -O2
LDFLAGS =
LDLIBS =
-DFLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_CURSES_LIB=1
+DFLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_CURSES_LIB=0
LOBJS= bam_aux.o bam.o bam_import.o sam.o \
sam_header.o bam_plbuf.o
AOBJS= bam_index.o bam_plcmd.o sam_view.o \
@@ -37,7 +37,7 @@
faidx.o stats.o stats_isize.o bam_flags.o bam_split.o \
bam_tview.o bam_tview_curses.o bam_tview_html.o bam_lpileup.o
INCLUDES= -I. -I$(HTSDIR)
-LIBCURSES= -lcurses # -lXCurses
+#LIBCURSES= -lcurses # -lXCurses
prefix = /usr/local
exec_prefix = $(prefix)

View File

@ -28,12 +28,14 @@ class Scr(Package):
"""SCR caches checkpoint data in storage on the compute nodes of a """SCR caches checkpoint data in storage on the compute nodes of a
Linux cluster to provide a fast, scalable checkpoint/restart Linux cluster to provide a fast, scalable checkpoint/restart
capability for MPI codes""" capability for MPI codes"""
homepage = "https://computation.llnl.gov/project/scr/" homepage = "https://computation.llnl.gov/project/scr/"
url = "http://downloads.sourceforge.net/project/scalablecr/releases/scr-1.1-7.tar.gz"
depends_on("mpi") depends_on("mpi")
# depends_on("dtcmp")
version('1.1-7', 'a5930e9ab27d1b7049447c2fd7734ebd') version('1.1-7', 'a5930e9ab27d1b7049447c2fd7734ebd', url='http://downloads.sourceforge.net/project/scalablecr/releases/scr-1.1-7.tar.gz')
version('1.1.8', '6a0f11ad18e27fcfc00a271ff587b06e', url='https://github.com/hpc/scr/releases/download/v1.1.8/scr-1.1.8.tar.gz')
def install(self, spec, prefix): def install(self, spec, prefix):
configure("--prefix=" + prefix, configure("--prefix=" + prefix,

View File

@ -0,0 +1,15 @@
import os
from spack import *
class Snappy(Package):
"""A fast compressor/decompressor: https://code.google.com/p/snappy"""
homepage = "https://code.google.com/p/snappy"
url = "https://github.com/google/snappy/releases/download/1.1.3/snappy-1.1.3.tar.gz"
version('1.1.3', '7358c82f133dc77798e4c2062a749b73')
def install(self, spec, prefix):
configure("--prefix=" + prefix)
make()
make("install")

View File

@ -38,6 +38,8 @@ class Swig(Package):
version('3.0.2', '62f9b0d010cef36a13a010dc530d0d41') version('3.0.2', '62f9b0d010cef36a13a010dc530d0d41')
depends_on('pcre')
def install(self, spec, prefix): def install(self, spec, prefix):
configure("--prefix=%s" % prefix) configure("--prefix=%s" % prefix)
make() make()

View File

@ -0,0 +1,50 @@
from spack import *
class Trilinos(Package):
"""
The Trilinos Project is an effort to develop algorithms and enabling technologies within an object-oriented
software framework for the solution of large-scale, complex multi-physics engineering and scientific problems.
A unique design feature of Trilinos is its focus on packages.
"""
homepage = "https://trilinos.org/"
url = "http://trilinos.csbsju.edu/download/files/trilinos-12.2.1-Source.tar.gz"
version('12.2.1', '6161926ea247863c690e927687f83be9')
version('12.0.1', 'bd99741d047471e127b8296b2ec08017')
version('11.14.3', '2f4f83f8333e4233c57d0f01c4b57426')
version('11.14.2', 'a43590cf896c677890d75bfe75bc6254')
version('11.14.1', '40febc57f76668be8b6a77b7607bb67f')
variant('mpi', default=True, description='Add a dependency on MPI and enables MPI dependent packages')
# Everything should be compiled with -fpic
depends_on('blas')
depends_on('lapack')
depends_on('boost')
depends_on('netcdf')
depends_on('matio')
depends_on('glm')
depends_on('swig')
depends_on('mpi', when='+mpi')
def install(self, spec, prefix):
options = [
'-DTrilinos_ENABLE_ALL_PACKAGES:BOOL=ON',
'-DTrilinos_ENABLE_TESTS:BOOL=OFF',
'-DTrilinos_ENABLE_EXAMPLES:BOOL=OFF',
'-DBUILD_SHARED_LIBS:BOOL=ON',
'-DBLAS_LIBRARY_DIRS:PATH=%s' % spec['blas'].prefix,
'-DLAPACK_LIBRARY_DIRS:PATH=%s' % spec['lapack'].prefix
]
if '+mpi' in spec:
mpi_options = ['-DTPL_ENABLE_MPI:BOOL=ON']
options.extend(mpi_options)
# -DCMAKE_INSTALL_PREFIX and all the likes...
options.extend(std_cmake_args)
with working_dir('spack-build', create=True):
cmake('..', *options)
make()
make('install')