Merge pull request #18 in SCALE/spack from develop_add_ompss to develop
* commit 'e011b767fafc1c7287db1cfd254266171e4e382f': Converting Luc's packages to the new version format. Addind missing dependency nanos->extrae necessary for traces Added Paraver and dependencies, restricted Extrae to OpenMPI 1.6 Adding Extrae and OmpSs with some of their dependencies, hwloc and PAPI. Extrae does not compile for latest versions of any MPI implementation. first try for ompss build script Allow per-version URLs instead of one single URL per package.
This commit is contained in:
commit
2f21ca64e0
@ -119,9 +119,8 @@ def caller_locals():
|
||||
|
||||
|
||||
def get_calling_package_name():
|
||||
"""Make sure that the caller is a class definition, and return
|
||||
the module's name. This is useful for getting the name of
|
||||
spack packages from inside a relation function.
|
||||
"""Make sure that the caller is a class definition, and return the
|
||||
module's name.
|
||||
"""
|
||||
stack = inspect.stack()
|
||||
try:
|
||||
@ -144,8 +143,9 @@ def get_calling_package_name():
|
||||
def attr_required(obj, attr_name):
|
||||
"""Ensure that a class has a required attribute."""
|
||||
if not hasattr(obj, attr_name):
|
||||
tty.die("No required attribute '%s' in class '%s'"
|
||||
% (attr_name, obj.__class__.__name__))
|
||||
raise RequiredAttributeError(
|
||||
"No required attribute '%s' in class '%s'"
|
||||
% (attr_name, obj.__class__.__name__))
|
||||
|
||||
|
||||
def attr_setdefault(obj, name, value):
|
||||
@ -259,3 +259,8 @@ def in_function(function_name):
|
||||
return False
|
||||
finally:
|
||||
del stack
|
||||
|
||||
|
||||
class RequiredAttributeError(ValueError):
|
||||
def __init__(self, message):
|
||||
super(RequiredAttributeError, self).__init__(message)
|
||||
|
@ -32,7 +32,7 @@
|
||||
# TODO: maybe this should be separated out and should go in build_environment.py?
|
||||
# TODO: it's not clear where all the stuff that needs to be included in packages
|
||||
# should live. This file is overloaded for spack core vs. for packages.
|
||||
__all__ = ['Package', 'when', 'provides', 'depends_on',
|
||||
__all__ = ['Package', 'when', 'provides', 'depends_on', 'version',
|
||||
'patch', 'Version', 'working_dir', 'which', 'Executable',
|
||||
'filter_file', 'change_sed_delimiter']
|
||||
|
||||
@ -146,6 +146,6 @@
|
||||
#
|
||||
from llnl.util.filesystem import working_dir
|
||||
from spack.package import Package
|
||||
from spack.relations import depends_on, provides, patch
|
||||
from spack.relations import *
|
||||
from spack.multimethod import when
|
||||
from spack.version import Version
|
||||
|
@ -70,7 +70,7 @@ class ${class_name}(Package):
|
||||
homepage = "http://www.example.com"
|
||||
url = "${url}"
|
||||
|
||||
versions = ${versions}
|
||||
${versions}
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# FIXME: Modify the configure line to suit your build system here.
|
||||
@ -114,13 +114,11 @@ def __call__(self, stage):
|
||||
self.configure = '%s\n # %s' % (autotools, cmake)
|
||||
|
||||
|
||||
def make_version_dict(ver_hash_tuples):
|
||||
max_len = max(len(str(v)) for v,hfg in ver_hash_tuples)
|
||||
width = max_len + 2
|
||||
format = "%-" + str(width) + "s : '%s',"
|
||||
sep = '\n '
|
||||
return '{ ' + sep.join(format % ("'%s'" % v, h)
|
||||
for v, h in ver_hash_tuples) + ' }'
|
||||
def make_version_calls(ver_hash_tuples):
|
||||
"""Adds a version() call to the package for each version found."""
|
||||
max_len = max(len(str(v)) for v, h in ver_hash_tuples)
|
||||
format = " version(%%-%ds, '%%s')" % (max_len + 2)
|
||||
return '\n'.join(format % ("'%s'" % v, h) for v, h in ver_hash_tuples)
|
||||
|
||||
|
||||
def get_name():
|
||||
@ -195,7 +193,7 @@ def create(parser, args):
|
||||
configure=guesser.configure,
|
||||
class_name=mod_to_class(name),
|
||||
url=url,
|
||||
versions=make_version_dict(ver_hash_tuples)))
|
||||
versions=make_version_calls(ver_hash_tuples)))
|
||||
|
||||
# If everything checks out, go ahead and edit.
|
||||
spack.editor(pkg_path)
|
||||
|
@ -44,7 +44,7 @@ class ${class_name}(Package):
|
||||
homepage = "http://www.example.com"
|
||||
url = "http://www.example.com/${name}-1.0.tar.gz"
|
||||
|
||||
versions = { '1.0' : '0123456789abcdef0123456789abcdef' }
|
||||
version('1.0', '0123456789abcdef0123456789abcdef')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
|
@ -72,7 +72,7 @@ def concretize_version(self, spec):
|
||||
if valid_versions:
|
||||
spec.versions = ver([valid_versions[-1]])
|
||||
else:
|
||||
spec.versions = ver([pkg.default_version])
|
||||
raise NoValidVerionError(spec)
|
||||
|
||||
|
||||
def concretize_architecture(self, spec):
|
||||
@ -158,3 +158,11 @@ def __init__(self, compiler_spec):
|
||||
super(UnavailableCompilerVersionError, self).__init__(
|
||||
"No available compiler version matches '%s'" % compiler_spec,
|
||||
"Run 'spack compilers' to see available compiler Options.")
|
||||
|
||||
|
||||
class NoValidVerionError(spack.error.SpackError):
|
||||
"""Raised when there is no available version for a package that
|
||||
satisfies a spec."""
|
||||
def __init__(self, spec):
|
||||
super(NoValidVerionError, self).__init__(
|
||||
"No available version of %s matches '%s'" % (spec.name, spec.versions))
|
||||
|
@ -296,9 +296,12 @@ class SomePackage(Package):
|
||||
"""
|
||||
|
||||
#
|
||||
# These variables are defaults for the various relations defined on
|
||||
# packages. Subclasses will have their own versions of these.
|
||||
# These variables are defaults for the various "relations".
|
||||
#
|
||||
"""Map of information about Versions of this package.
|
||||
Map goes: Version -> VersionDescriptor"""
|
||||
versions = {}
|
||||
|
||||
"""Specs of dependency packages, keyed by name."""
|
||||
dependencies = {}
|
||||
|
||||
@ -317,16 +320,10 @@ class SomePackage(Package):
|
||||
"""By default we build in parallel. Subclasses can override this."""
|
||||
parallel = True
|
||||
|
||||
"""Dirty hack for forcing packages with uninterpretable URLs
|
||||
TODO: get rid of this.
|
||||
"""
|
||||
force_url = False
|
||||
|
||||
|
||||
def __init__(self, spec):
|
||||
# These attributes are required for all packages.
|
||||
attr_required(self.__class__, 'homepage')
|
||||
attr_required(self.__class__, 'url')
|
||||
|
||||
# this determines how the package should be built.
|
||||
self.spec = spec
|
||||
@ -337,24 +334,32 @@ def __init__(self, spec):
|
||||
if '.' in self.name:
|
||||
self.name = self.name[self.name.rindex('.') + 1:]
|
||||
|
||||
# Make sure URL is an allowed type
|
||||
validate_package_url(self.url)
|
||||
|
||||
# patch up the URL with a new version if the spec version is concrete
|
||||
if self.spec.versions.concrete:
|
||||
self.url = self.url_for_version(self.spec.version)
|
||||
|
||||
# This is set by scraping a web page.
|
||||
self._available_versions = None
|
||||
|
||||
# versions should be a dict from version to checksum, for safe versions
|
||||
# of this package. If it's not present, make it an empty dict.
|
||||
if not hasattr(self, 'versions'):
|
||||
self.versions = {}
|
||||
# Sanity check some required variables that could be
|
||||
# overridden by package authors.
|
||||
def sanity_check_dict(attr_name):
|
||||
if not hasattr(self, attr_name):
|
||||
raise PackageError("Package %s must define %s" % attr_name)
|
||||
|
||||
if not isinstance(self.versions, dict):
|
||||
raise ValueError("versions attribute of package %s must be a dict!"
|
||||
% self.name)
|
||||
attr = getattr(self, attr_name)
|
||||
if not isinstance(attr, dict):
|
||||
raise PackageError("Package %s has non-dict %s attribute!"
|
||||
% (self.name, attr_name))
|
||||
sanity_check_dict('versions')
|
||||
sanity_check_dict('dependencies')
|
||||
sanity_check_dict('conflicted')
|
||||
sanity_check_dict('patches')
|
||||
|
||||
# Check versions in the versions dict.
|
||||
for v in self.versions:
|
||||
assert(isinstance(v, Version))
|
||||
|
||||
# Check version descriptors
|
||||
for v in sorted(self.versions):
|
||||
vdesc = self.versions[v]
|
||||
assert(isinstance(vdesc, spack.relations.VersionDescriptor))
|
||||
|
||||
# Version-ize the keys in versions dict
|
||||
try:
|
||||
@ -366,6 +371,10 @@ def __init__(self, spec):
|
||||
# stage used to build this package.
|
||||
self._stage = None
|
||||
|
||||
# patch up self.url based on the actual version
|
||||
if self.spec.concrete:
|
||||
self.url = self.url_for_version(self.version)
|
||||
|
||||
# Set a default list URL (place to find available versions)
|
||||
if not hasattr(self, 'list_url'):
|
||||
self.list_url = None
|
||||
@ -374,18 +383,6 @@ def __init__(self, spec):
|
||||
self.list_depth = 1
|
||||
|
||||
|
||||
@property
|
||||
def default_version(self):
|
||||
"""Get the version in the default URL for this package,
|
||||
or fails."""
|
||||
try:
|
||||
return url.parse_version(self.__class__.url)
|
||||
except UndetectableVersionError:
|
||||
raise PackageError(
|
||||
"Couldn't extract a default version from %s." % self.url,
|
||||
" You must specify it explicitly in the package file.")
|
||||
|
||||
|
||||
@property
|
||||
def version(self):
|
||||
if not self.spec.concrete:
|
||||
@ -514,16 +511,50 @@ def url_version(self, version):
|
||||
override this, e.g. for boost versions where you need to ensure that there
|
||||
are _'s in the download URL.
|
||||
"""
|
||||
if self.force_url:
|
||||
return self.default_version
|
||||
return str(version)
|
||||
|
||||
|
||||
def url_for_version(self, version):
|
||||
"""Gives a URL that you can download a new version of this package from."""
|
||||
if self.force_url:
|
||||
return self.url
|
||||
return url.substitute_version(self.__class__.url, self.url_version(version))
|
||||
"""Returns a URL that you can download a new version of this package from."""
|
||||
if not isinstance(version, Version):
|
||||
version = Version(version)
|
||||
|
||||
def nearest_url(version):
|
||||
"""Finds the URL for the next lowest version with a URL.
|
||||
If there is no lower version with a URL, uses the
|
||||
package url property. If that isn't there, uses a
|
||||
*higher* URL, and if that isn't there raises an error.
|
||||
"""
|
||||
url = getattr(self, 'url', None)
|
||||
for v in sorted(self.versions):
|
||||
if v > version and url:
|
||||
break
|
||||
if self.versions[v].url:
|
||||
url = self.versions[v].url
|
||||
if not url:
|
||||
raise PackageVersionError(v)
|
||||
return url
|
||||
|
||||
if version in self.versions:
|
||||
vdesc = self.versions[version]
|
||||
if not vdesc.url:
|
||||
base_url = nearest_url(version)
|
||||
vdesc.url = url.substitute_version(
|
||||
base_url, self.url_version(version))
|
||||
return vdesc.url
|
||||
else:
|
||||
return nearest_url(version)
|
||||
|
||||
|
||||
@property
|
||||
def default_url(self):
|
||||
if self.concrete:
|
||||
return self.url_for_version(self.version)
|
||||
else:
|
||||
url = getattr(self, 'url', None)
|
||||
if url:
|
||||
return url
|
||||
|
||||
|
||||
|
||||
def remove_prefix(self):
|
||||
@ -548,7 +579,7 @@ def do_fetch(self):
|
||||
self.stage.fetch()
|
||||
|
||||
if spack.do_checksum and self.version in self.versions:
|
||||
digest = self.versions[self.version]
|
||||
digest = self.versions[self.version].checksum
|
||||
self.stage.check(digest)
|
||||
tty.msg("Checksum passed for %s@%s" % (self.name, self.version))
|
||||
|
||||
@ -779,6 +810,9 @@ def do_clean_dist(self):
|
||||
|
||||
|
||||
def fetch_available_versions(self):
|
||||
if not hasattr(self, 'url'):
|
||||
raise VersionFetchError(self.__class__)
|
||||
|
||||
# If not, then try to fetch using list_url
|
||||
if not self._available_versions:
|
||||
try:
|
||||
@ -865,7 +899,6 @@ def print_pkg(message):
|
||||
print message
|
||||
|
||||
|
||||
|
||||
class FetchError(spack.error.SpackError):
|
||||
"""Raised when something goes wrong during fetch."""
|
||||
def __init__(self, message, long_msg=None):
|
||||
@ -889,3 +922,19 @@ class InvalidPackageDependencyError(PackageError):
|
||||
its dependencies."""
|
||||
def __init__(self, message):
|
||||
super(InvalidPackageDependencyError, self).__init__(message)
|
||||
|
||||
|
||||
class PackageVersionError(PackageError):
|
||||
"""Raised when a version URL cannot automatically be determined."""
|
||||
def __init__(self, version):
|
||||
super(PackageVersionError, self).__init__(
|
||||
"Cannot determine a URL automatically for version %s." % version,
|
||||
"Please provide a url for this version in the package.py file.")
|
||||
|
||||
|
||||
class VersionFetchError(PackageError):
|
||||
"""Raised when a version URL cannot automatically be determined."""
|
||||
def __init__(self, cls):
|
||||
super(VersionFetchError, self).__init__(
|
||||
"Cannot fetch version for package %s " % cls.__name__ +
|
||||
"because it does not define a default url.")
|
||||
|
@ -68,6 +68,8 @@ class Mpileaks(Package):
|
||||
spack install mpileaks ^mvapich
|
||||
spack install mpileaks ^mpich
|
||||
"""
|
||||
__all__ = [ 'depends_on', 'provides', 'patch', 'version' ]
|
||||
|
||||
import re
|
||||
import inspect
|
||||
import importlib
|
||||
@ -77,14 +79,38 @@ class Mpileaks(Package):
|
||||
import spack
|
||||
import spack.spec
|
||||
import spack.error
|
||||
import spack.url
|
||||
|
||||
from spack.version import Version
|
||||
from spack.patch import Patch
|
||||
from spack.spec import Spec, parse_anonymous_spec
|
||||
|
||||
|
||||
"""Adds a dependencies local variable in the locals of
|
||||
the calling class, based on args. """
|
||||
class VersionDescriptor(object):
|
||||
"""A VersionDescriptor contains information to describe a
|
||||
particular version of a package. That currently includes a URL
|
||||
for the version along with a checksum."""
|
||||
def __init__(self, checksum, url):
|
||||
self.checksum = checksum
|
||||
self.url = url
|
||||
|
||||
|
||||
def version(ver, checksum, **kwargs):
|
||||
"""Adds a version and associated metadata to the package."""
|
||||
pkg = caller_locals()
|
||||
|
||||
versions = pkg.setdefault('versions', {})
|
||||
patches = pkg.setdefault('patches', {})
|
||||
|
||||
ver = Version(ver)
|
||||
url = kwargs.get('url', None)
|
||||
|
||||
versions[ver] = VersionDescriptor(checksum, url)
|
||||
|
||||
|
||||
def depends_on(*specs):
|
||||
"""Adds a dependencies local variable in the locals of
|
||||
the calling class, based on args. """
|
||||
pkg = get_calling_package_name()
|
||||
|
||||
dependencies = caller_locals().setdefault('dependencies', {})
|
||||
|
@ -29,19 +29,35 @@
|
||||
|
||||
import spack
|
||||
import spack.url as url
|
||||
from spack.packages import PackageDB
|
||||
|
||||
|
||||
class PackageSanityTest(unittest.TestCase):
|
||||
|
||||
def test_get_all_packages(self):
|
||||
"""Get all packages once and make sure that works."""
|
||||
def check_db(self):
|
||||
"""Get all packages in a DB to make sure they work."""
|
||||
for name in spack.db.all_package_names():
|
||||
spack.db.get(name)
|
||||
|
||||
|
||||
def test_get_all_packages(self):
|
||||
"""Get all packages once and make sure that works."""
|
||||
self.check_db()
|
||||
|
||||
|
||||
def test_get_all_mock_packages(self):
|
||||
"""Get the mock packages once each too."""
|
||||
tmp = spack.db
|
||||
spack.db = PackageDB(spack.mock_packages_path)
|
||||
self.check_db()
|
||||
spack.db = tmp
|
||||
|
||||
|
||||
def test_url_versions(self):
|
||||
"""Ensure that url_for_version does the right thing for at least the
|
||||
default version of each package.
|
||||
"""
|
||||
"""Check URLs for regular packages, if they are explicitly defined."""
|
||||
for pkg in spack.db.all_packages():
|
||||
v = url.parse_version(pkg.url)
|
||||
self.assertEqual(pkg.url, pkg.url_for_version(v))
|
||||
for v, vdesc in pkg.versions.items():
|
||||
if vdesc.url:
|
||||
# If there is a url for the version check it.
|
||||
v_url = pkg.url_for_version(v)
|
||||
self.assertEqual(vdesc.url, v_url)
|
||||
|
@ -82,12 +82,16 @@ def parse_version_string_with_indices(path):
|
||||
"""Try to extract a version string from a filename or URL. This is taken
|
||||
largely from Homebrew's Version class."""
|
||||
|
||||
if os.path.isdir(path):
|
||||
stem = os.path.basename(path)
|
||||
elif re.search(r'((?:sourceforge.net|sf.net)/.*)/download$', path):
|
||||
stem = comp.stem(os.path.dirname(path))
|
||||
else:
|
||||
stem = comp.stem(path)
|
||||
# Strip off sourceforge download stuffix.
|
||||
if re.search(r'((?:sourceforge.net|sf.net)/.*)/download$', path):
|
||||
path = os.path.dirname(path)
|
||||
|
||||
# Strip archive extension
|
||||
path = comp.strip_extension(path)
|
||||
|
||||
# Take basename to avoid including parent dirs in version name
|
||||
# Remember the offset of the stem in the full path.
|
||||
stem = os.path.basename(path)
|
||||
|
||||
version_types = [
|
||||
# GitHub tarballs, e.g. v1.2.3
|
||||
@ -137,10 +141,10 @@ def parse_version_string_with_indices(path):
|
||||
(r'_((\d+\.)+\d+[a-z]?)[.]orig$', stem),
|
||||
|
||||
# e.g. http://www.openssl.org/source/openssl-0.9.8s.tar.gz
|
||||
(r'-([^-]+)', stem),
|
||||
(r'-([^-]+(-alpha|-beta)?)', stem),
|
||||
|
||||
# e.g. astyle_1.23_macosx.tar.gz
|
||||
(r'_([^_]+)', stem),
|
||||
(r'_([^_]+(_alpha|_beta)?)', stem),
|
||||
|
||||
# e.g. http://mirrors.jenkins-ci.org/war/1.486/jenkins.war
|
||||
(r'\/(\d\.\d+)\/', path),
|
||||
@ -152,7 +156,9 @@ def parse_version_string_with_indices(path):
|
||||
regex, match_string = vtype[:2]
|
||||
match = re.search(regex, match_string)
|
||||
if match and match.group(1) is not None:
|
||||
return match.group(1), match.start(1), match.end(1)
|
||||
version = match.group(1)
|
||||
start = path.index(version)
|
||||
return version, start, start+len(version)
|
||||
|
||||
raise UndetectableVersionError(path)
|
||||
|
||||
|
@ -48,7 +48,7 @@ def decompressor_for(path):
|
||||
return tar
|
||||
|
||||
|
||||
def stem(path):
|
||||
def strip_extension(path):
|
||||
"""Get the part of a path that does not include its compressed
|
||||
type extension."""
|
||||
for type in ALLOWED_ARCHIVE_TYPES:
|
||||
|
@ -181,7 +181,7 @@ def a_or_n(seg):
|
||||
|
||||
# Add possible alpha or beta indicator at the end of each segemnt
|
||||
# We treat these specially b/c they're so common.
|
||||
wc += '[ab]?)?' * (len(segments) - 1)
|
||||
wc += '(?:[a-z]|alpha|beta)?)?' * (len(segments) - 1)
|
||||
return wc
|
||||
|
||||
|
||||
|
@ -28,9 +28,9 @@ class Callpath(Package):
|
||||
homepage = "https://github.com/tgamblin/callpath"
|
||||
url = "http://github.com/tgamblin/callpath-1.0.tar.gz"
|
||||
|
||||
versions = { 0.8 : 'foobarbaz',
|
||||
0.9 : 'foobarbaz',
|
||||
1.0 : 'foobarbaz' }
|
||||
version(0.8, 'foobarbaz')
|
||||
version(0.9, 'foobarbaz')
|
||||
version(1.0, 'foobarbaz')
|
||||
|
||||
depends_on("dyninst")
|
||||
depends_on("mpi")
|
||||
|
@ -28,7 +28,7 @@ class DirectMpich(Package):
|
||||
homepage = "http://www.example.com"
|
||||
url = "http://www.example.com/direct_mpich-1.0.tar.gz"
|
||||
|
||||
versions = { 1.0 : 'foobarbaz' }
|
||||
version('1.0', 'foobarbaz')
|
||||
|
||||
depends_on('mpich')
|
||||
|
||||
|
@ -29,9 +29,8 @@ class Dyninst(Package):
|
||||
url = "http://www.dyninst.org/sites/default/files/downloads/dyninst/8.1.2/DyninstAPI-8.1.2.tgz"
|
||||
list_url = "http://www.dyninst.org/downloads/dyninst-8.x"
|
||||
|
||||
versions = {
|
||||
'8.1.2' : 'bf03b33375afa66fe0efa46ce3f4b17a',
|
||||
'8.1.1' : '1f8743e3a5662b25ce64a7edf647e77d' }
|
||||
version('8.1.2', 'bf03b33375afa66fe0efa46ce3f4b17a')
|
||||
version('8.1.1', '1f8743e3a5662b25ce64a7edf647e77d')
|
||||
|
||||
depends_on("libelf")
|
||||
depends_on("libdwarf")
|
||||
|
@ -27,7 +27,8 @@
|
||||
class Fake(Package):
|
||||
homepage = "http://www.fake-spack-example.org"
|
||||
url = "http://www.fake-spack-example.org/downloads/fake-1.0.tar.gz"
|
||||
versions = { '1.0' : 'foobarbaz' }
|
||||
|
||||
version('1.0', 'foobarbaz')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
pass
|
||||
|
@ -32,7 +32,7 @@ class IndirectMpich(Package):
|
||||
homepage = "http://www.example.com"
|
||||
url = "http://www.example.com/indirect_mpich-1.0.tar.gz"
|
||||
|
||||
versions = { 1.0 : 'foobarbaz' }
|
||||
version(1.0, 'foobarbaz')
|
||||
|
||||
depends_on('mpi')
|
||||
depends_on('direct_mpich')
|
||||
|
@ -33,10 +33,10 @@ class Libdwarf(Package):
|
||||
url = "http://www.prevanders.net/libdwarf-20130729.tar.gz"
|
||||
list_url = homepage
|
||||
|
||||
versions = { 20130729 : "64b42692e947d5180e162e46c689dfbf",
|
||||
20130207 : 'foobarbaz',
|
||||
20111030 : 'foobarbaz',
|
||||
20070703 : 'foobarbaz' }
|
||||
version(20130729, "64b42692e947d5180e162e46c689dfbf")
|
||||
version(20130207, 'foobarbaz')
|
||||
version(20111030, 'foobarbaz')
|
||||
version(20070703, 'foobarbaz')
|
||||
|
||||
depends_on("libelf")
|
||||
|
||||
|
@ -28,9 +28,9 @@ class Libelf(Package):
|
||||
homepage = "http://www.mr511.de/software/english.html"
|
||||
url = "http://www.mr511.de/software/libelf-0.8.13.tar.gz"
|
||||
|
||||
versions = {'0.8.13' : '4136d7b4c04df68b686570afa26988ac',
|
||||
'0.8.12' : 'e21f8273d9f5f6d43a59878dc274fec7',
|
||||
'0.8.10' : '9db4d36c283d9790d8fa7df1f4d7b4d9' }
|
||||
version('0.8.13', '4136d7b4c04df68b686570afa26988ac')
|
||||
version('0.8.12', 'e21f8273d9f5f6d43a59878dc274fec7')
|
||||
version('0.8.10', '9db4d36c283d9790d8fa7df1f4d7b4d9')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix,
|
||||
|
@ -30,11 +30,11 @@ class Mpich(Package):
|
||||
list_url = "http://www.mpich.org/static/downloads/"
|
||||
list_depth = 2
|
||||
|
||||
versions = { '3.0.4' : '9c5d5d4fe1e17dd12153f40bc5b6dbc0',
|
||||
'3.0.3' : 'foobarbaz',
|
||||
'3.0.2' : 'foobarbaz',
|
||||
'3.0.1' : 'foobarbaz',
|
||||
'3.0' : 'foobarbaz' }
|
||||
version('3.0.4', '9c5d5d4fe1e17dd12153f40bc5b6dbc0')
|
||||
version('3.0.3', 'foobarbaz')
|
||||
version('3.0.2', 'foobarbaz')
|
||||
version('3.0.1', 'foobarbaz')
|
||||
version('3.0', 'foobarbaz')
|
||||
|
||||
provides('mpi@:3', when='@3:')
|
||||
provides('mpi@:1', when='@1:')
|
||||
|
@ -30,12 +30,12 @@ class Mpich2(Package):
|
||||
list_url = "http://www.mpich.org/static/downloads/"
|
||||
list_depth = 2
|
||||
|
||||
versions = { '1.5' : '9c5d5d4fe1e17dd12153f40bc5b6dbc0',
|
||||
'1.4' : 'foobarbaz',
|
||||
'1.3' : 'foobarbaz',
|
||||
'1.2' : 'foobarbaz',
|
||||
'1.1' : 'foobarbaz',
|
||||
'1.0' : 'foobarbaz' }
|
||||
version('1.5', '9c5d5d4fe1e17dd12153f40bc5b6dbc0')
|
||||
version('1.4', 'foobarbaz')
|
||||
version('1.3', 'foobarbaz')
|
||||
version('1.2', 'foobarbaz')
|
||||
version('1.1', 'foobarbaz')
|
||||
version('1.0', 'foobarbaz')
|
||||
|
||||
provides('mpi@:2.0')
|
||||
provides('mpi@:2.1', when='@1.1:')
|
||||
|
@ -28,10 +28,10 @@ class Mpileaks(Package):
|
||||
homepage = "http://www.llnl.gov"
|
||||
url = "http://www.llnl.gov/mpileaks-1.0.tar.gz"
|
||||
|
||||
versions = { 1.0 : 'foobarbaz',
|
||||
2.1 : 'foobarbaz',
|
||||
2.2 : 'foobarbaz',
|
||||
2.3 : 'foobarbaz' }
|
||||
version(1.0, 'foobarbaz')
|
||||
version(2.1, 'foobarbaz')
|
||||
version(2.2, 'foobarbaz')
|
||||
version(2.3, 'foobarbaz')
|
||||
|
||||
depends_on("mpi")
|
||||
depends_on("callpath")
|
||||
|
@ -30,7 +30,7 @@ class TrivialInstallTestPackage(Package):
|
||||
homepage = "http://www.example.com/trivial_install"
|
||||
url = "http://www.unit-test-should-replace-this-url/trivial_install-1.0.tar.gz"
|
||||
|
||||
versions = { '1.0' : 'foobarbaz' }
|
||||
version('1.0', 'foobarbaz')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure('--prefix=%s' % prefix)
|
||||
|
@ -30,7 +30,7 @@ class Zmpi(Package):
|
||||
homepage = "http://www.spack-fake-zmpi.org"
|
||||
url = "http://www.spack-fake-zmpi.org/downloads/zmpi-1.0.tar.gz"
|
||||
|
||||
versions = { '1.0' : 'foobarbaz' }
|
||||
version('1.0', 'foobarbaz')
|
||||
|
||||
provides('mpi@:10.0')
|
||||
depends_on('fake')
|
||||
|
@ -11,17 +11,15 @@ class Samrai(Package):
|
||||
url = "https://computation-rnd.llnl.gov/SAMRAI/download/SAMRAI-v3.7.3.tar.gz"
|
||||
list_url = homepage
|
||||
|
||||
versions = {
|
||||
'3.7.3' : '12d574eacadf8c9a70f1bb4cd1a69df6',
|
||||
'3.7.2' : 'f6a716f171c9fdbf3cb12f71fa6e2737',
|
||||
'3.6.3-beta' : 'ef0510bf2893042daedaca434e5ec6ce',
|
||||
'3.5.2-beta' : 'd072d9d681eeb9ada15ce91bea784274',
|
||||
'3.5.0-beta' : '1ad18a319fc573e12e2b1fbb6f6b0a19',
|
||||
'3.4.1-beta' : '00814cbee2cb76bf8302aff56bbb385b',
|
||||
'3.3.3-beta' : '1db3241d3e1cab913dc310d736c34388',
|
||||
'3.3.2-beta' : 'e598a085dab979498fcb6c110c4dd26c',
|
||||
'2.4.4' : '04fb048ed0efe7c531ac10c81cc5f6ac',
|
||||
}
|
||||
version('3.7.3', '12d574eacadf8c9a70f1bb4cd1a69df6')
|
||||
version('3.7.2', 'f6a716f171c9fdbf3cb12f71fa6e2737')
|
||||
version('3.6.3-beta', 'ef0510bf2893042daedaca434e5ec6ce')
|
||||
version('3.5.2-beta', 'd072d9d681eeb9ada15ce91bea784274')
|
||||
version('3.5.0-beta', '1ad18a319fc573e12e2b1fbb6f6b0a19')
|
||||
version('3.4.1-beta', '00814cbee2cb76bf8302aff56bbb385b')
|
||||
version('3.3.3-beta', '1db3241d3e1cab913dc310d736c34388')
|
||||
version('3.3.2-beta', 'e598a085dab979498fcb6c110c4dd26c')
|
||||
version('2.4.4', '04fb048ed0efe7c531ac10c81cc5f6ac')
|
||||
|
||||
depends_on("mpi")
|
||||
depends_on("zlib")
|
||||
|
@ -14,32 +14,31 @@ class Boost(Package):
|
||||
list_url = "http://sourceforge.net/projects/boost/files/boost/"
|
||||
list_depth = 2
|
||||
|
||||
versions = {
|
||||
'1.55.0' : 'd6eef4b4cacb2183f2bf265a5a03a354',
|
||||
'1.54.0' : '15cb8c0803064faef0c4ddf5bc5ca279',
|
||||
'1.53.0' : 'a00d22605d5dbcfb4c9936a9b35bc4c2',
|
||||
'1.52.0' : '3a855e0f919107e0ca4de4d84ad3f750',
|
||||
'1.51.0' : '4b6bd483b692fd138aef84ed2c8eb679',
|
||||
'1.50.0' : '52dd00be775e689f55a987baebccc462',
|
||||
'1.49.0' : '0d202cb811f934282dea64856a175698',
|
||||
'1.48.0' : 'd1e9a7a7f532bb031a3c175d86688d95',
|
||||
'1.47.0' : 'a2dc343f7bc7f83f8941e47ed4a18200',
|
||||
'1.46.1' : '7375679575f4c8db605d426fc721d506',
|
||||
'1.46.0' : '37b12f1702319b73876b0097982087e0',
|
||||
'1.45.0' : 'd405c606354789d0426bc07bea617e58',
|
||||
'1.44.0' : 'f02578f5218f217a9f20e9c30e119c6a',
|
||||
'1.43.0' : 'dd49767bfb726b0c774f7db0cef91ed1',
|
||||
'1.42.0' : '7bf3b4eb841b62ffb0ade2b82218ebe6',
|
||||
'1.41.0' : '8bb65e133907db727a2a825c5400d0a6',
|
||||
'1.40.0' : 'ec3875caeac8c52c7c129802a8483bd7',
|
||||
'1.39.0' : 'a17281fd88c48e0d866e1a12deecbcc0',
|
||||
'1.38.0' : '5eca2116d39d61382b8f8235915cb267',
|
||||
'1.37.0' : '8d9f990bfb7e83769fa5f1d6f065bc92',
|
||||
'1.36.0' : '328bfec66c312150e4c2a78dcecb504b',
|
||||
'1.35.0' : 'dce952a7214e72d6597516bcac84048b',
|
||||
'1.34.1' : '2d938467e8a448a2c9763e0a9f8ca7e5',
|
||||
'1.34.0' : 'ed5b9291ffad776f8757a916e1726ad0'
|
||||
}
|
||||
version('1.55.0', 'd6eef4b4cacb2183f2bf265a5a03a354')
|
||||
version('1.54.0', '15cb8c0803064faef0c4ddf5bc5ca279')
|
||||
version('1.53.0', 'a00d22605d5dbcfb4c9936a9b35bc4c2')
|
||||
version('1.52.0', '3a855e0f919107e0ca4de4d84ad3f750')
|
||||
version('1.51.0', '4b6bd483b692fd138aef84ed2c8eb679')
|
||||
version('1.50.0', '52dd00be775e689f55a987baebccc462')
|
||||
version('1.49.0', '0d202cb811f934282dea64856a175698')
|
||||
version('1.48.0', 'd1e9a7a7f532bb031a3c175d86688d95')
|
||||
version('1.47.0', 'a2dc343f7bc7f83f8941e47ed4a18200')
|
||||
version('1.46.1', '7375679575f4c8db605d426fc721d506')
|
||||
version('1.46.0', '37b12f1702319b73876b0097982087e0')
|
||||
version('1.45.0', 'd405c606354789d0426bc07bea617e58')
|
||||
version('1.44.0', 'f02578f5218f217a9f20e9c30e119c6a')
|
||||
version('1.43.0', 'dd49767bfb726b0c774f7db0cef91ed1')
|
||||
version('1.42.0', '7bf3b4eb841b62ffb0ade2b82218ebe6')
|
||||
version('1.41.0', '8bb65e133907db727a2a825c5400d0a6')
|
||||
version('1.40.0', 'ec3875caeac8c52c7c129802a8483bd7')
|
||||
version('1.39.0', 'a17281fd88c48e0d866e1a12deecbcc0')
|
||||
version('1.38.0', '5eca2116d39d61382b8f8235915cb267')
|
||||
version('1.37.0', '8d9f990bfb7e83769fa5f1d6f065bc92')
|
||||
version('1.36.0', '328bfec66c312150e4c2a78dcecb504b')
|
||||
version('1.35.0', 'dce952a7214e72d6597516bcac84048b')
|
||||
version('1.34.1', '2d938467e8a448a2c9763e0a9f8ca7e5')
|
||||
version('1.34.0', 'ed5b9291ffad776f8757a916e1726ad0')
|
||||
|
||||
|
||||
def url_for_version(self, version):
|
||||
"""Handle Boost's weird URLs, which write the version two different ways."""
|
||||
|
@ -27,7 +27,8 @@
|
||||
class Cmake(Package):
|
||||
homepage = 'https://www.cmake.org'
|
||||
url = 'http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz'
|
||||
versions = { '2.8.10.2' : '097278785da7182ec0aea8769d06860c' }
|
||||
|
||||
version('2.8.10.2', '097278785da7182ec0aea8769d06860c')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure('--prefix=' + prefix,
|
||||
|
@ -29,8 +29,8 @@ class Dyninst(Package):
|
||||
url = "http://www.dyninst.org/sites/default/files/downloads/dyninst/8.1.2/DyninstAPI-8.1.2.tgz"
|
||||
list_url = "http://www.dyninst.org/downloads/dyninst-8.x"
|
||||
|
||||
versions = {'8.1.2' : 'bf03b33375afa66fe0efa46ce3f4b17a',
|
||||
'8.1.1' : '1f8743e3a5662b25ce64a7edf647e77d' }
|
||||
version('8.1.2', 'bf03b33375afa66fe0efa46ce3f4b17a')
|
||||
version('8.1.1', '1f8743e3a5662b25ce64a7edf647e77d')
|
||||
|
||||
depends_on("libelf")
|
||||
depends_on("libdwarf")
|
||||
|
38
var/spack/packages/extrae/package.py
Normal file
38
var/spack/packages/extrae/package.py
Normal file
@ -0,0 +1,38 @@
|
||||
from spack import *
|
||||
|
||||
class Extrae(Package):
|
||||
"""Extrae is the package devoted to generate tracefiles which can
|
||||
be analyzed later by Paraver. Extrae is a tool that uses
|
||||
different interposition mechanisms to inject probes into the
|
||||
target application so as to gather information regarding the
|
||||
application performance. The Extrae instrumentation package can
|
||||
instrument the MPI programin model, and the following parallel
|
||||
programming models either alone or in conjunction with MPI :
|
||||
OpenMP, CUDA, OpenCL, pthread, OmpSs"""
|
||||
homepage = "http://www.bsc.es/computer-sciences/extrae"
|
||||
url = "http://www.bsc.es/ssl/apps/performanceTools/files/extrae-2.5.1.tar.bz2"
|
||||
version('2.5.1', '422376b9c68243bd36a8a73fa62de106')
|
||||
|
||||
#depends_on("mpi")
|
||||
depends_on("openmpi@:1.6")
|
||||
depends_on("dyninst")
|
||||
depends_on("libunwind")
|
||||
depends_on("boost")
|
||||
depends_on("libdwarf")
|
||||
depends_on("papi")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
if 'openmpi' in spec:
|
||||
mpi = spec['openmpi']
|
||||
#if spec.satisfies('@2.5.1') and spec.satisfies('^openmpi@1.6.5'):
|
||||
# tty.error("Some headers conflict when using OpenMPI 1.6.5. Please use 1.6 instead.")
|
||||
elif 'mpich' in spec:
|
||||
mpi = spec['mpich']
|
||||
elif 'mvapich2' in spec:
|
||||
mpi = spec['mvapich2']
|
||||
|
||||
configure("--prefix=%s" % prefix, "--with-mpi=%s" % mpi.prefix, "--with-unwind=%s" % spec['libunwind'].prefix, "--with-dyninst=%s" % spec['dyninst'].prefix, "--with-boost=%s" % spec['boost'].prefix, "--with-dwarf=%s" % spec['libdwarf'].prefix, "--with-papi=%s" % spec['papi'].prefix, "--with-dyninst-headers=%s" % spec['dyninst'].prefix.include, "--with-dyninst-libs=%s" % spec['dyninst'].prefix.lib)
|
||||
|
||||
make()
|
||||
make("install", parallel=False)
|
||||
|
@ -5,7 +5,7 @@ class Graphlib(Package):
|
||||
homepage = "http://https://github.com/lee218llnl/graphlib"
|
||||
url = "https://github.com/lee218llnl/graphlib/archive/v2.0.0.tar.gz"
|
||||
|
||||
versions = { '2.0.0' : '43c6df84f1d38ba5a5dce0ae19371a70', }
|
||||
version('2.0.0', '43c6df84f1d38ba5a5dce0ae19371a70')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
cmake(".", *std_cmake_args)
|
||||
|
@ -11,10 +11,10 @@ class Hdf5(Package):
|
||||
list_url = "http://www.hdfgroup.org/ftp/HDF5/releases"
|
||||
list_depth = 3
|
||||
|
||||
versions = { '1.8.13' : 'c03426e9e77d7766944654280b467289', }
|
||||
version('1.8.13', 'c03426e9e77d7766944654280b467289')
|
||||
|
||||
depends_on("mpi")
|
||||
depends_on("zlib")
|
||||
depends_on("zlib")
|
||||
|
||||
# TODO: currently hard-coded to use OpenMPI
|
||||
def install(self, spec, prefix):
|
||||
|
25
var/spack/packages/hwloc/package.py
Normal file
25
var/spack/packages/hwloc/package.py
Normal file
@ -0,0 +1,25 @@
|
||||
from spack import *
|
||||
|
||||
class Hwloc(Package):
|
||||
"""The Portable Hardware Locality (hwloc) software package
|
||||
provides a portable abstraction (across OS, versions,
|
||||
architectures, ...) of the hierarchical topology of modern
|
||||
architectures, including NUMA memory nodes, sockets, shared
|
||||
caches, cores and simultaneous multithreading. It also gathers
|
||||
various system attributes such as cache and memory information
|
||||
as well as the locality of I/O devices such as network
|
||||
interfaces, InfiniBand HCAs or GPUs. It primarily aims at
|
||||
helping applications with gathering information about modern
|
||||
computing hardware so as to exploit it accordingly and
|
||||
efficiently."""
|
||||
homepage = "http://www.open-mpi.org/projects/hwloc/"
|
||||
url = "http://www.open-mpi.org/software/hwloc/v1.9/downloads/hwloc-1.9.tar.gz"
|
||||
|
||||
version('1.9', '1f9f9155682fe8946a97c08896109508')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
|
||||
make()
|
||||
make("install")
|
||||
|
@ -28,7 +28,7 @@ class Launchmon(Package):
|
||||
homepage = "http://sourceforge.net/projects/launchmon"
|
||||
url = "http://downloads.sourceforge.net/project/launchmon/launchmon/1.0.1%20release/launchmon-1.0.1.tar.gz"
|
||||
|
||||
versions = { '1.0.1' : '2f12465803409fd07f91174a4389eb2b' }
|
||||
version('1.0.1', '2f12465803409fd07f91174a4389eb2b')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure(
|
||||
|
@ -44,9 +44,9 @@ class Libdwarf(Package):
|
||||
url = "http://www.prevanders.net/libdwarf-20130729.tar.gz"
|
||||
list_url = homepage
|
||||
|
||||
versions = { '20130729' : '4cc5e48693f7b93b7aa0261e63c0e21d',
|
||||
'20130207' : '64b42692e947d5180e162e46c689dfbf',
|
||||
'20130126' : 'ded74a5e90edb5a12aac3c29d260c5db' }
|
||||
version('20130729', '4cc5e48693f7b93b7aa0261e63c0e21d')
|
||||
version('20130207', '64b42692e947d5180e162e46c689dfbf')
|
||||
version('20130126', 'ded74a5e90edb5a12aac3c29d260c5db')
|
||||
|
||||
depends_on("libelf")
|
||||
|
||||
|
@ -33,8 +33,8 @@ class Libelf(Package):
|
||||
homepage = "http://www.mr511.de/software/english.html"
|
||||
url = "http://www.mr511.de/software/libelf-0.8.13.tar.gz"
|
||||
|
||||
versions = { '0.8.13' : '4136d7b4c04df68b686570afa26988ac',
|
||||
'0.8.12' : 'e21f8273d9f5f6d43a59878dc274fec7', }
|
||||
version('0.8.13', '4136d7b4c04df68b686570afa26988ac')
|
||||
version('0.8.12', 'e21f8273d9f5f6d43a59878dc274fec7')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=" + prefix,
|
||||
|
@ -11,18 +11,17 @@ class Libevent(Package):
|
||||
url = "https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz"
|
||||
list_url = "http://libevent.org/old-releases.html"
|
||||
|
||||
versions = {
|
||||
'2.0.21' : 'b2405cc9ebf264aa47ff615d9de527a2',
|
||||
'2.0.20' : '94270cdee32c0cd0aa9f4ee6ede27e8e',
|
||||
'2.0.19' : '91111579769f46055b0a438f5cc59572',
|
||||
'2.0.18' : 'aa1ce9bc0dee7b8084f6855765f2c86a',
|
||||
'2.0.17' : 'dad64aaaaff16b5fbec25160c06fee9a',
|
||||
'2.0.16' : '899efcffccdb3d5111419df76e7dc8df',
|
||||
'2.0.15' : '2643abe7ba242df15c08b2cc14ec8759',
|
||||
'2.0.14' : 'cac0f379da35d3b98f83ac16fcfe1df4',
|
||||
'2.0.13' : 'af786b4b3f790c9d3279792edf7867fc',
|
||||
'2.0.12' : '42986228baf95e325778ed328a93e070',
|
||||
}
|
||||
version('2.0.21', 'b2405cc9ebf264aa47ff615d9de527a2')
|
||||
version('2.0.20', '94270cdee32c0cd0aa9f4ee6ede27e8e')
|
||||
version('2.0.19', '91111579769f46055b0a438f5cc59572')
|
||||
version('2.0.18', 'aa1ce9bc0dee7b8084f6855765f2c86a')
|
||||
version('2.0.17', 'dad64aaaaff16b5fbec25160c06fee9a')
|
||||
version('2.0.16', '899efcffccdb3d5111419df76e7dc8df')
|
||||
version('2.0.15', '2643abe7ba242df15c08b2cc14ec8759')
|
||||
version('2.0.14', 'cac0f379da35d3b98f83ac16fcfe1df4')
|
||||
version('2.0.13', 'af786b4b3f790c9d3279792edf7867fc')
|
||||
version('2.0.12', '42986228baf95e325778ed328a93e070')
|
||||
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
|
@ -28,7 +28,7 @@ class Libunwind(Package):
|
||||
homepage = "http://www.nongnu.org/libunwind/"
|
||||
url = "http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz"
|
||||
|
||||
versions = { '1.1' : 'fb4ea2f6fbbe45bf032cd36e586883ce' }
|
||||
version('1.1', 'fb4ea2f6fbbe45bf032cd36e586883ce')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=" + prefix)
|
||||
|
@ -32,7 +32,7 @@ class Mpich(Package):
|
||||
list_url = "http://www.mpich.org/static/downloads/"
|
||||
list_depth = 2
|
||||
|
||||
versions = { '3.0.4' : '9c5d5d4fe1e17dd12153f40bc5b6dbc0' }
|
||||
version('3.0.4', '9c5d5d4fe1e17dd12153f40bc5b6dbc0')
|
||||
|
||||
provides('mpi@:3', when='@3:')
|
||||
provides('mpi@:1', when='@1:')
|
||||
|
@ -5,8 +5,9 @@ class Mrnet(Package):
|
||||
homepage = "http://paradyn.org/mrnet"
|
||||
url = "ftp://ftp.cs.wisc.edu/paradyn/mrnet/mrnet_4.0.0.tar.gz"
|
||||
|
||||
versions = { '4.0.0' : 'd00301c078cba57ef68613be32ceea2f', }
|
||||
versions = { '4.1.0' : '5a248298b395b329e2371bf25366115c', }
|
||||
version('4.0.0', 'd00301c078cba57ef68613be32ceea2f')
|
||||
version('4.1.0', '5a248298b395b329e2371bf25366115c')
|
||||
|
||||
parallel = False
|
||||
|
||||
depends_on("boost")
|
||||
|
@ -2,16 +2,15 @@
|
||||
|
||||
class Mvapich2(Package):
|
||||
"""mvapich2 is an MPI implmenetation for infiniband networks."""
|
||||
|
||||
homepage = "http://mvapich.cse.ohio-state.edu/"
|
||||
url = "http://mvapich.cse.ohio-state.edu/download/mvapich2/mv2/mvapich2-1.9.tgz"
|
||||
|
||||
versions = { '1.9' : '5dc58ed08fd3142c260b70fe297e127c', }
|
||||
version('1.9', '5dc58ed08fd3142c260b70fe297e127c',
|
||||
url="http://mvapich.cse.ohio-state.edu/download/mvapich2/mv2/mvapich2-1.9.tgz")
|
||||
version('2.0', '9fbb68a4111a8b6338e476dc657388b4',
|
||||
url='http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.0.tar.gz')
|
||||
|
||||
provides('mpi@:1', when='@1.9:')
|
||||
|
||||
patch('ad_lustre_rwcontig_open_source.patch', when='@1.9:')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure(
|
||||
"--prefix=" + prefix,
|
||||
|
@ -8,14 +8,12 @@ class Ncurses(Package):
|
||||
"""
|
||||
|
||||
homepage = "http://invisible-island.net/ncurses/ncurses.html"
|
||||
url = "http://invisible-island.net/datafiles/release/ncurses.tar.gz"
|
||||
|
||||
versions = { 'stable' : '8cb9c412e5f2d96bc6f459aa8c6282a1' }
|
||||
version('5.9', '8cb9c412e5f2d96bc6f459aa8c6282a1',
|
||||
url='http://invisible-island.net/datafiles/release/ncurses.tar.gz')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
make()
|
||||
make("install")
|
||||
|
||||
def url_for_version(self, version):
|
||||
return "http://invisible-island.net/datafiles/release/ncurses.tar.gz"
|
||||
|
49
var/spack/packages/ompss/package.py
Normal file
49
var/spack/packages/ompss/package.py
Normal file
@ -0,0 +1,49 @@
|
||||
from spack import *
|
||||
import os
|
||||
import glob
|
||||
|
||||
# working config lines for ompss 14.06 :
|
||||
#./nanox-0.7/config.log: $ ./configure --prefix=/usr/gapps/exmatex/ompss --with-mcc=/usr/gapps/exmatex/ompss/ --with-hwloc=/usr
|
||||
#./mcxx-1.99.2/config.log: $ ./configure --prefix=/usr/gapps/exmatex/ompss --with-nanox=/usr/gapps/exmatex/ompss --enable-ompss --with-mpi=/opt/mvapich2-intel-shmem-1.7 --enable-tl-openmp-profile --enable-tl-openmp-intel
|
||||
|
||||
class Ompss(Package):
|
||||
"""OmpSs is an effort to integrate features from the StarSs
|
||||
programming model developed by BSC into a single programming
|
||||
model. In particular, our objective is to extend OpenMP with
|
||||
new directives to support asynchronous parallelism and
|
||||
heterogeneity (devices like GPUs). However, it can also be
|
||||
understood as new directives extending other accelerator based
|
||||
APIs like CUDA or OpenCL. Our OmpSs environment is built on top
|
||||
of our Mercurium compiler and Nanos++ runtime system."""
|
||||
homepage = "http://pm.bsc.es/"
|
||||
url = "http://pm.bsc.es/sites/default/files/ftp/ompss/releases/ompss-14.06.tar.gz"
|
||||
version('14.06', '99be5dce74c0d7eea42636d26af47b4181ae2e11')
|
||||
|
||||
# all dependencies are optional, really
|
||||
depends_on("mpi")
|
||||
#depends_on("openmp")
|
||||
depends_on("hwloc")
|
||||
depends_on("extrae")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
if 'openmpi' in spec:
|
||||
mpi = spec['openmpi']
|
||||
elif 'mpich' in spec:
|
||||
mpi = spec['mpich']
|
||||
elif 'mvapich' in spec:
|
||||
mpi = spec['mvapich']
|
||||
|
||||
openmp_options = ["--enable-tl-openmp-profile"]
|
||||
if spec.satisfies('%intel'):
|
||||
openmp_options.append( "--enable-tl-openmp-intel" )
|
||||
|
||||
os.chdir(glob.glob('./nanox-*').pop())
|
||||
configure("--prefix=%s" % prefix, "--with-mcc=%s" % prefix, "--with-extrae=%s" % spec['extrae'].prefix, "--with-hwloc=%s" % spec['hwloc'].prefix)
|
||||
make()
|
||||
make("install")
|
||||
|
||||
os.chdir(glob.glob('../mcxx-*').pop())
|
||||
configure("--prefix=%s" % prefix, "--with-nanox=%s" % prefix, "--enable-ompss", "--with-mpi=%s" % mpi.prefix, *openmp_options)
|
||||
make()
|
||||
make("install")
|
||||
|
@ -12,7 +12,7 @@ class Openmpi(Package):
|
||||
homepage = "http://www.open-mpi.org"
|
||||
url = "http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.5.tar.bz2"
|
||||
|
||||
versions = { '1.6.5' : '03aed2a4aa4d0b27196962a2a65fc475', }
|
||||
version('1.6.5', '03aed2a4aa4d0b27196962a2a65fc475')
|
||||
|
||||
provides('mpi@:2')
|
||||
|
||||
|
35
var/spack/packages/papi/package.py
Normal file
35
var/spack/packages/papi/package.py
Normal file
@ -0,0 +1,35 @@
|
||||
from spack import *
|
||||
import os
|
||||
|
||||
class Papi(Package):
|
||||
"""PAPI provides the tool designer and application engineer with a
|
||||
consistent interface and methodology for use of the performance
|
||||
counter hardware found in most major microprocessors. PAPI
|
||||
enables software engineers to see, in near real time, the
|
||||
relation between software performance and processor events. In
|
||||
addition Component PAPI provides access to a collection of
|
||||
components that expose performance measurement opportunites
|
||||
across the hardware and software stack."""
|
||||
homepage = "http://icl.cs.utk.edu/papi/index.html"
|
||||
url = "http://icl.cs.utk.edu/projects/papi/downloads/papi-5.3.0.tar.gz"
|
||||
|
||||
version('5.3.0', '367961dd0ab426e5ae367c2713924ffb')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
os.chdir("src/")
|
||||
|
||||
configure_args=["--prefix=%s" % prefix]
|
||||
|
||||
# need to force consistency in the use of compilers
|
||||
if spec.satisfies('%gcc'):
|
||||
configure_args.append('CC=gcc')
|
||||
configure_args.append('MPICH_CC=gcc')
|
||||
if spec.satisfies('%intel'):
|
||||
configure_args.append('CC=icc')
|
||||
configure_args.append('MPICH_CC=icc')
|
||||
|
||||
configure(*configure_args)
|
||||
|
||||
make()
|
||||
make("install")
|
||||
|
41
var/spack/packages/paraver/package.py
Normal file
41
var/spack/packages/paraver/package.py
Normal file
@ -0,0 +1,41 @@
|
||||
from spack import *
|
||||
import os
|
||||
|
||||
class Paraver(Package):
|
||||
""""A very powerful performance visualization and analysis tool
|
||||
based on traces that can be used to analyse any information that
|
||||
is expressed on its input trace format. Traces for parallel MPI,
|
||||
OpenMP and other programs can be genereated with Extrae."""
|
||||
homepage = "http://www.bsc.es/computer-sciences/performance-tools/paraver"
|
||||
url = "http://www.bsc.es/ssl/apps/performanceTools/files/paraver-sources-4.5.2.tar.gz"
|
||||
|
||||
version('4.5.2', 'ea463dd494519395c99ebae294edee17')
|
||||
|
||||
depends_on("boost")
|
||||
#depends_on("extrae")
|
||||
depends_on("wx")
|
||||
depends_on("wxpropgrid")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
os.chdir("ptools_common_files")
|
||||
configure("--prefix=%s" % prefix)
|
||||
make()
|
||||
make("install")
|
||||
|
||||
os.chdir("../paraver-kernel")
|
||||
#"--with-extrae=%s" % spec['extrae'].prefix,
|
||||
configure("--prefix=%s" % prefix, "--with-ptools-common-files=%s" % prefix, "--with-boost=%s" % spec['boost'].prefix, "--with-boost-serialization=boost_serialization")
|
||||
make()
|
||||
make("install")
|
||||
|
||||
os.chdir("../paraver-toolset")
|
||||
configure("--prefix=%s" % prefix)
|
||||
make()
|
||||
make("install")
|
||||
|
||||
os.chdir("../wxparaver")
|
||||
#"--with-extrae=%s" % spec['extrae'].prefix,
|
||||
configure("--prefix=%s" % prefix, "--with-paraver=%s" % prefix, "--with-boost=%s" % spec['boost'].prefix, "--with-boost-serialization=boost_serialization", "--with-wxdir=%s" % spec['wx'].prefix.bin)
|
||||
make()
|
||||
make("install")
|
||||
|
@ -8,7 +8,7 @@ class Parmetis(Package):
|
||||
homepage = "http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview"
|
||||
url = "http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/parmetis-4.0.3.tar.gz"
|
||||
|
||||
versions = { '4.0.3' : 'f69c479586bf6bb7aff6a9bc0c739628', }
|
||||
version('4.0.3', 'f69c479586bf6bb7aff6a9bc0c739628')
|
||||
|
||||
depends_on('mpi')
|
||||
|
||||
|
@ -30,7 +30,7 @@ class PmgrCollective(Package):
|
||||
homepage = "http://www.sourceforge.net/projects/pmgrcollective"
|
||||
url = "http://downloads.sourceforge.net/project/pmgrcollective/pmgrcollective/PMGR_COLLECTIVE-1.0/pmgr_collective-1.0.tgz"
|
||||
|
||||
versions = { '1.0' : '0384d008774274cc3fc7b4d810dfd07e' }
|
||||
version('1.0', '0384d008774274cc3fc7b4d810dfd07e')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
make('PREFIX="' + prefix + '"')
|
||||
|
@ -30,7 +30,7 @@ class Scr(Package):
|
||||
|
||||
depends_on("mpi")
|
||||
|
||||
versions = { '1.1-7' : 'a5930e9ab27d1b7049447c2fd7734ebd' }
|
||||
version('1.1-7', 'a5930e9ab27d1b7049447c2fd7734ebd')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=" + prefix,
|
||||
|
@ -29,7 +29,7 @@ class Spindle(Package):
|
||||
url = "https://github.com/hpc/Spindle/archive/v0.8.1.tar.gz"
|
||||
list_url = "https://github.com/hpc/Spindle/releases"
|
||||
|
||||
versions = {'0.8.1' : 'f11793a6b9d8df2cd231fccb2857d912' }
|
||||
version('0.8.1', 'f11793a6b9d8df2cd231fccb2857d912')
|
||||
|
||||
depends_on("launchmon")
|
||||
|
||||
|
@ -5,8 +5,8 @@ class Stat(Package):
|
||||
homepage = "http://paradyn.org/STAT/STAT.html"
|
||||
url = "https://github.com/lee218llnl/stat/archive/v2.0.0.tar.gz"
|
||||
|
||||
versions = { '2.0.0' : 'c7494210b0ba26b577171b92838e1a9b', }
|
||||
versions = { '2.1.0' : 'ece26beaf057aa9134d62adcdda1ba91', }
|
||||
version('2.0.0', 'c7494210b0ba26b577171b92838e1a9b')
|
||||
version('2.1.0', 'ece26beaf057aa9134d62adcdda1ba91')
|
||||
|
||||
depends_on('libdwarf')
|
||||
depends_on('dyninst')
|
||||
|
@ -10,7 +10,8 @@ class Tau(Package):
|
||||
homepage = "http://www.cs.uoregon.edu/research/tau"
|
||||
url = "http://www.cs.uoregon.edu/research/paracomp/tau/tauprofile/dist/tau-2.23.1.tar.gz"
|
||||
|
||||
versions = { '2.23.1' : '6593b47ae1e7a838e632652f0426fe72', }
|
||||
version('2.23.1', '6593b47ae1e7a838e632652f0426fe72')
|
||||
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# TAU isn't happy with directories that have '@' in the path. Sigh.
|
||||
|
@ -10,7 +10,7 @@ class Tmux(Package):
|
||||
homepage = "http://tmux.sourceforge.net"
|
||||
url = "http://downloads.sourceforge.net/project/tmux/tmux/tmux-1.9/tmux-1.9a.tar.gz"
|
||||
|
||||
versions = { '1.9a' : 'b07601711f96f1d260b390513b509a2d', }
|
||||
version('1.9a', 'b07601711f96f1d260b390513b509a2d')
|
||||
|
||||
depends_on('libevent')
|
||||
depends_on('ncurses')
|
||||
|
@ -13,19 +13,17 @@ class Vim(Package):
|
||||
url = "ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2"
|
||||
list_url = "http://ftp.vim.org/pub/vim/unix/"
|
||||
|
||||
versions = {
|
||||
'7.4' : '607e135c559be642f210094ad023dc65',
|
||||
'7.3' : '5b9510a17074e2b37d8bb38ae09edbf2',
|
||||
'7.2' : 'f0901284b338e448bfd79ccca0041254',
|
||||
'7.1' : '44c6b4914f38d6f9aa959640b89da329',
|
||||
'7.0' : '4ca69757678272f718b1041c810d82d8',
|
||||
'6.4' : '774c14d93ce58674b3b2c880edd12d77',
|
||||
'6.3' : '821fda8f14d674346b87e3ef9cb96389',
|
||||
'6.2' : 'c49d360bbd069d00e2a57804f2a123d9',
|
||||
'6.1.405' : 'd220ff58f2c72ed606e6d0297c2f2a7c',
|
||||
'6.1' : '7fd0f915adc7c0dab89772884268b030',
|
||||
'6.0' : '9d9ca84d489af6b3f54639dd97af3774',
|
||||
}
|
||||
version('7.4', '607e135c559be642f210094ad023dc65')
|
||||
version('7.3', '5b9510a17074e2b37d8bb38ae09edbf2')
|
||||
version('7.2', 'f0901284b338e448bfd79ccca0041254')
|
||||
version('7.1', '44c6b4914f38d6f9aa959640b89da329')
|
||||
version('7.0', '4ca69757678272f718b1041c810d82d8')
|
||||
version('6.4', '774c14d93ce58674b3b2c880edd12d77')
|
||||
version('6.3', '821fda8f14d674346b87e3ef9cb96389')
|
||||
version('6.2', 'c49d360bbd069d00e2a57804f2a123d9')
|
||||
version('6.1.405', 'd220ff58f2c72ed606e6d0297c2f2a7c')
|
||||
version('6.1', '7fd0f915adc7c0dab89772884268b030')
|
||||
version('6.0', '9d9ca84d489af6b3f54639dd97af3774')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
|
24
var/spack/packages/wx/package.py
Normal file
24
var/spack/packages/wx/package.py
Normal file
@ -0,0 +1,24 @@
|
||||
from spack import *
|
||||
|
||||
class Wx(Package):
|
||||
"""wxWidgets is a C++ library that lets developers create
|
||||
applications for Windows, Mac OS X, Linux and other platforms
|
||||
with a single code base. It has popular language bindings for
|
||||
Python, Perl, Ruby and many other languages, and unlike other
|
||||
cross-platform toolkits, wxWidgets gives applications a truly
|
||||
native look and feel because it uses the platform's native API
|
||||
rather than emulating the GUI. It's also extensive, free,
|
||||
open-source and mature."""
|
||||
homepage = "http://www.wxwidgets.org/"
|
||||
|
||||
version('2.8.12', '2fa39da14bc06ea86fe902579fedc5b1',
|
||||
url="https://sourceforge.net/projects/wxwindows/files/2.8.12/wxWidgets-2.8.12.tar.gz")
|
||||
version('3.0.1', 'dad1f1cd9d4c370cbc22700dc492da31',
|
||||
url="https://sourceforge.net/projects/wxwindows/files/3.0.1/wxWidgets-3.0.1.tar.bz2")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix, "--enable-unicode", "--disable-precomp-headers")
|
||||
|
||||
make(parallel=False)
|
||||
make("install")
|
||||
|
20
var/spack/packages/wxpropgrid/package.py
Normal file
20
var/spack/packages/wxpropgrid/package.py
Normal file
@ -0,0 +1,20 @@
|
||||
from spack import *
|
||||
|
||||
class Wxpropgrid(Package):
|
||||
"""wxPropertyGrid is a property sheet control for wxWidgets. In
|
||||
other words, it is a specialized two-column grid for editing
|
||||
properties such as strings, numbers, flagsets, string arrays,
|
||||
and colours."""
|
||||
homepage = "http://wxpropgrid.sourceforge.net/"
|
||||
url = "http://prdownloads.sourceforge.net/wxpropgrid/wxpropgrid-1.4.15-src.tar.gz"
|
||||
|
||||
version('1.4.15', 'f44b5cd6fd60718bacfabbf7994f1e93')
|
||||
|
||||
depends_on("wx")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix, "--with-wxdir=%s" % spec['wx'].prefix.bin, "--enable-unicode")
|
||||
|
||||
make()
|
||||
make("install")
|
||||
|
@ -9,7 +9,7 @@ class Zlib(Package):
|
||||
homepage = "http://zlib.net"
|
||||
url = "http://zlib.net/zlib-1.2.8.tar.gz"
|
||||
|
||||
versions = { '1.2.8' : '44d667c142d7cda120332623eab69f40', }
|
||||
version('1.2.8', '44d667c142d7cda120332623eab69f40')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
|
Loading…
Reference in New Issue
Block a user