Merge branch 'develop' into correct-cc
This commit is contained in:
commit
611537eaed
14
lib/spack/env/cc
vendored
14
lib/spack/env/cc
vendored
@ -86,22 +86,22 @@ done
|
|||||||
#
|
#
|
||||||
command=$(basename "$0")
|
command=$(basename "$0")
|
||||||
case "$command" in
|
case "$command" in
|
||||||
cc|gcc|c89|c99|clang|xlc)
|
cc|c89|c99|gcc|clang|icc|pgcc|xlc)
|
||||||
command="$SPACK_CC"
|
command="$SPACK_CC"
|
||||||
language="C"
|
language="C"
|
||||||
;;
|
;;
|
||||||
c++|CC|g++|clang++|xlC)
|
c++|CC|g++|clang++|icpc|pgCC|xlc++)
|
||||||
command="$SPACK_CXX"
|
command="$SPACK_CXX"
|
||||||
language="C++"
|
language="C++"
|
||||||
;;
|
;;
|
||||||
f77|xlf)
|
f90|fc|f95|gfortran|ifort|pgf90|xlf90)
|
||||||
command="$SPACK_F77"
|
|
||||||
language="Fortran 77"
|
|
||||||
;;
|
|
||||||
fc|f90|f95|xlf90)
|
|
||||||
command="$SPACK_FC"
|
command="$SPACK_FC"
|
||||||
language="Fortran 90"
|
language="Fortran 90"
|
||||||
;;
|
;;
|
||||||
|
f77|gfortran|ifort|pgf77|xlf)
|
||||||
|
command="$SPACK_F77"
|
||||||
|
language="Fortran 77"
|
||||||
|
;;
|
||||||
cpp)
|
cpp)
|
||||||
mode=cpp
|
mode=cpp
|
||||||
;;
|
;;
|
||||||
|
1
lib/spack/env/clang/clang
vendored
Symbolic link
1
lib/spack/env/clang/clang
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/clang/clang++
vendored
Symbolic link
1
lib/spack/env/clang/clang++
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/gcc/g++
vendored
Symbolic link
1
lib/spack/env/gcc/g++
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/gcc/gcc
vendored
Symbolic link
1
lib/spack/env/gcc/gcc
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/gcc/gfortran
vendored
Symbolic link
1
lib/spack/env/gcc/gfortran
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/intel/icc
vendored
Symbolic link
1
lib/spack/env/intel/icc
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/intel/icpc
vendored
Symbolic link
1
lib/spack/env/intel/icpc
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/intel/ifort
vendored
Symbolic link
1
lib/spack/env/intel/ifort
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/pgi/case-insensitive/pgCC
vendored
Symbolic link
1
lib/spack/env/pgi/case-insensitive/pgCC
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../cc
|
1
lib/spack/env/pgi/pgcc
vendored
Symbolic link
1
lib/spack/env/pgi/pgcc
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/pgi/pgf77
vendored
Symbolic link
1
lib/spack/env/pgi/pgf77
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/pgi/pgf90
vendored
Symbolic link
1
lib/spack/env/pgi/pgf90
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/xl/xlc
vendored
Symbolic link
1
lib/spack/env/xl/xlc
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/xl/xlc++
vendored
Symbolic link
1
lib/spack/env/xl/xlc++
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/xl/xlf
vendored
Symbolic link
1
lib/spack/env/xl/xlf
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/xl/xlf90
vendored
Symbolic link
1
lib/spack/env/xl/xlf90
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
3
lib/spack/external/pyqver2.py
vendored
3
lib/spack/external/pyqver2.py
vendored
@ -30,7 +30,8 @@
|
|||||||
StandardModules = {
|
StandardModules = {
|
||||||
"__future__": (2, 1),
|
"__future__": (2, 1),
|
||||||
"abc": (2, 6),
|
"abc": (2, 6),
|
||||||
"argparse": (2, 7),
|
# skip argparse now that it's in lib/spack/external
|
||||||
|
# "argparse": (2, 7),
|
||||||
"ast": (2, 6),
|
"ast": (2, 6),
|
||||||
"atexit": (2, 0),
|
"atexit": (2, 0),
|
||||||
"bz2": (2, 3),
|
"bz2": (2, 3),
|
||||||
|
@ -88,10 +88,14 @@ def set_compiler_environment_variables(pkg):
|
|||||||
compiler = pkg.compiler
|
compiler = pkg.compiler
|
||||||
|
|
||||||
# Set compiler variables used by CMake and autotools
|
# Set compiler variables used by CMake and autotools
|
||||||
os.environ['CC'] = join_path(spack.build_env_path, 'cc')
|
assert all(key in pkg.compiler.link_paths
|
||||||
os.environ['CXX'] = join_path(spack.build_env_path, 'c++')
|
for key in ('cc', 'cxx', 'f77', 'fc'))
|
||||||
os.environ['F77'] = join_path(spack.build_env_path, 'f77')
|
|
||||||
os.environ['FC'] = join_path(spack.build_env_path, 'f90')
|
link_dir = spack.build_env_path
|
||||||
|
os.environ['CC'] = join_path(link_dir, pkg.compiler.link_paths['cc'])
|
||||||
|
os.environ['CXX'] = join_path(link_dir, pkg.compiler.link_paths['cxx'])
|
||||||
|
os.environ['F77'] = join_path(link_dir, pkg.compiler.link_paths['f77'])
|
||||||
|
os.environ['FC'] = join_path(link_dir, pkg.compiler.link_paths['fc'])
|
||||||
|
|
||||||
# Set SPACK compiler variables so that our wrapper knows what to call
|
# Set SPACK compiler variables so that our wrapper knows what to call
|
||||||
if compiler.cc:
|
if compiler.cc:
|
||||||
@ -110,11 +114,23 @@ def set_build_environment_variables(pkg):
|
|||||||
"""This ensures a clean install environment when we build packages.
|
"""This ensures a clean install environment when we build packages.
|
||||||
"""
|
"""
|
||||||
# Add spack build environment path with compiler wrappers first in
|
# Add spack build environment path with compiler wrappers first in
|
||||||
# the path. We handle case sensitivity conflicts like "CC" and
|
# the path. We add both spack.env_path, which includes default
|
||||||
# "cc" by putting one in the <build_env_path>/case-insensitive
|
# wrappers (cc, c++, f77, f90), AND a subdirectory containing
|
||||||
|
# compiler-specific symlinks. The latter ensures that builds that
|
||||||
|
# are sensitive to the *name* of the compiler see the right name
|
||||||
|
# when we're building wtih the wrappers.
|
||||||
|
#
|
||||||
|
# Conflicts on case-insensitive systems (like "CC" and "cc") are
|
||||||
|
# handled by putting one in the <build_env_path>/case-insensitive
|
||||||
# directory. Add that to the path too.
|
# directory. Add that to the path too.
|
||||||
env_paths = [spack.build_env_path,
|
env_paths = []
|
||||||
join_path(spack.build_env_path, 'case-insensitive')]
|
def add_env_path(path):
|
||||||
|
env_paths.append(path)
|
||||||
|
ci = join_path(path, 'case-insensitive')
|
||||||
|
if os.path.isdir(ci): env_paths.append(ci)
|
||||||
|
add_env_path(spack.build_env_path)
|
||||||
|
add_env_path(join_path(spack.build_env_path, pkg.compiler.name))
|
||||||
|
|
||||||
path_put_first("PATH", env_paths)
|
path_put_first("PATH", env_paths)
|
||||||
path_set(SPACK_ENV_PATH, env_paths)
|
path_set(SPACK_ENV_PATH, env_paths)
|
||||||
|
|
||||||
|
@ -54,7 +54,9 @@ def extensions(parser, args):
|
|||||||
if not args.spec:
|
if not args.spec:
|
||||||
tty.die("extensions requires a package spec.")
|
tty.die("extensions requires a package spec.")
|
||||||
|
|
||||||
|
#
|
||||||
# Checks
|
# Checks
|
||||||
|
#
|
||||||
spec = spack.cmd.parse_specs(args.spec)
|
spec = spack.cmd.parse_specs(args.spec)
|
||||||
if len(spec) > 1:
|
if len(spec) > 1:
|
||||||
tty.die("Can only list extensions for one package.")
|
tty.die("Can only list extensions for one package.")
|
||||||
@ -70,7 +72,9 @@ def extensions(parser, args):
|
|||||||
if not args.mode:
|
if not args.mode:
|
||||||
args.mode = 'short'
|
args.mode = 'short'
|
||||||
|
|
||||||
|
#
|
||||||
# List package names of extensions
|
# List package names of extensions
|
||||||
|
#
|
||||||
extensions = spack.db.extensions_for(spec)
|
extensions = spack.db.extensions_for(spec)
|
||||||
if not extensions:
|
if not extensions:
|
||||||
tty.msg("%s has no extensions." % spec.cshort_spec)
|
tty.msg("%s has no extensions." % spec.cshort_spec)
|
||||||
@ -79,7 +83,9 @@ def extensions(parser, args):
|
|||||||
tty.msg("%d extensions:" % len(extensions))
|
tty.msg("%d extensions:" % len(extensions))
|
||||||
colify(ext.name for ext in extensions)
|
colify(ext.name for ext in extensions)
|
||||||
|
|
||||||
|
#
|
||||||
# List specs of installed extensions.
|
# List specs of installed extensions.
|
||||||
|
#
|
||||||
installed = [s.spec for s in spack.installed_db.installed_extensions_for(spec)]
|
installed = [s.spec for s in spack.installed_db.installed_extensions_for(spec)]
|
||||||
print
|
print
|
||||||
if not installed:
|
if not installed:
|
||||||
@ -88,7 +94,9 @@ def extensions(parser, args):
|
|||||||
tty.msg("%d installed:" % len(installed))
|
tty.msg("%d installed:" % len(installed))
|
||||||
spack.cmd.find.display_specs(installed, mode=args.mode)
|
spack.cmd.find.display_specs(installed, mode=args.mode)
|
||||||
|
|
||||||
|
#
|
||||||
# List specs of activated extensions.
|
# List specs of activated extensions.
|
||||||
|
#
|
||||||
activated = spack.install_layout.extension_map(spec)
|
activated = spack.install_layout.extension_map(spec)
|
||||||
print
|
print
|
||||||
if not activated:
|
if not activated:
|
||||||
|
@ -33,10 +33,13 @@ def setup_parser(subparser):
|
|||||||
subparser.add_argument(
|
subparser.add_argument(
|
||||||
'-n', '--no-checksum', action='store_true', dest='no_checksum',
|
'-n', '--no-checksum', action='store_true', dest='no_checksum',
|
||||||
help="Do not check packages against checksum")
|
help="Do not check packages against checksum")
|
||||||
|
subparser.add_argument(
|
||||||
|
'-m', '--missing', action='store_true', help="Also fetch all missing dependencies")
|
||||||
|
subparser.add_argument(
|
||||||
|
'-D', '--dependencies', action='store_true', help="Also fetch all dependencies")
|
||||||
subparser.add_argument(
|
subparser.add_argument(
|
||||||
'packages', nargs=argparse.REMAINDER, help="specs of packages to fetch")
|
'packages', nargs=argparse.REMAINDER, help="specs of packages to fetch")
|
||||||
|
|
||||||
|
|
||||||
def fetch(parser, args):
|
def fetch(parser, args):
|
||||||
if not args.packages:
|
if not args.packages:
|
||||||
tty.die("fetch requires at least one package argument")
|
tty.die("fetch requires at least one package argument")
|
||||||
@ -46,5 +49,13 @@ def fetch(parser, args):
|
|||||||
|
|
||||||
specs = spack.cmd.parse_specs(args.packages, concretize=True)
|
specs = spack.cmd.parse_specs(args.packages, concretize=True)
|
||||||
for spec in specs:
|
for spec in specs:
|
||||||
|
if args.missing or args.dependencies:
|
||||||
|
to_fetch = set()
|
||||||
|
for s in spec.traverse():
|
||||||
|
package = spack.db.get(s)
|
||||||
|
if args.missing and package.installed:
|
||||||
|
continue
|
||||||
|
package.do_fetch()
|
||||||
|
|
||||||
package = spack.db.get(spec)
|
package = spack.db.get(spec)
|
||||||
package.do_fetch()
|
package.do_fetch()
|
||||||
|
@ -54,6 +54,8 @@ def setup_parser(subparser):
|
|||||||
'specs', nargs=argparse.REMAINDER, help="Specs of packages to put in mirror")
|
'specs', nargs=argparse.REMAINDER, help="Specs of packages to put in mirror")
|
||||||
create_parser.add_argument(
|
create_parser.add_argument(
|
||||||
'-f', '--file', help="File with specs of packages to put in mirror.")
|
'-f', '--file', help="File with specs of packages to put in mirror.")
|
||||||
|
create_parser.add_argument(
|
||||||
|
'-D', '--dependencies', action='store_true', help="Also fetch all dependencies")
|
||||||
create_parser.add_argument(
|
create_parser.add_argument(
|
||||||
'-o', '--one-version-per-spec', action='store_const', const=1, default=0,
|
'-o', '--one-version-per-spec', action='store_const', const=1, default=0,
|
||||||
help="Only fetch one 'preferred' version per spec, not all known versions.")
|
help="Only fetch one 'preferred' version per spec, not all known versions.")
|
||||||
@ -118,7 +120,7 @@ def mirror_create(args):
|
|||||||
"""Create a directory to be used as a spack mirror, and fill it with
|
"""Create a directory to be used as a spack mirror, and fill it with
|
||||||
package archives."""
|
package archives."""
|
||||||
# try to parse specs from the command line first.
|
# try to parse specs from the command line first.
|
||||||
specs = spack.cmd.parse_specs(args.specs)
|
specs = spack.cmd.parse_specs(args.specs, concretize=True)
|
||||||
|
|
||||||
# If there is a file, parse each line as a spec and add it to the list.
|
# If there is a file, parse each line as a spec and add it to the list.
|
||||||
if args.file:
|
if args.file:
|
||||||
@ -131,6 +133,14 @@ def mirror_create(args):
|
|||||||
specs = [Spec(n) for n in spack.db.all_package_names()]
|
specs = [Spec(n) for n in spack.db.all_package_names()]
|
||||||
specs.sort(key=lambda s: s.format("$_$@").lower())
|
specs.sort(key=lambda s: s.format("$_$@").lower())
|
||||||
|
|
||||||
|
if args.dependencies:
|
||||||
|
new_specs = set()
|
||||||
|
for spec in specs:
|
||||||
|
spec.concretize()
|
||||||
|
for s in spec.traverse():
|
||||||
|
new_specs.add(s)
|
||||||
|
specs = list(new_specs)
|
||||||
|
|
||||||
# Default name for directory is spack-mirror-<DATESTAMP>
|
# Default name for directory is spack-mirror-<DATESTAMP>
|
||||||
directory = args.directory
|
directory = args.directory
|
||||||
if not directory:
|
if not directory:
|
||||||
|
@ -31,6 +31,8 @@
|
|||||||
import spack
|
import spack
|
||||||
|
|
||||||
def setup_parser(subparser):
|
def setup_parser(subparser):
|
||||||
|
subparser.add_argument(
|
||||||
|
'-c', dest='python_command', help='Command to execute.')
|
||||||
subparser.add_argument(
|
subparser.add_argument(
|
||||||
'python_args', nargs=argparse.REMAINDER, help="File to run plus arguments.")
|
'python_args', nargs=argparse.REMAINDER, help="File to run plus arguments.")
|
||||||
|
|
||||||
@ -38,7 +40,8 @@ def setup_parser(subparser):
|
|||||||
|
|
||||||
def python(parser, args):
|
def python(parser, args):
|
||||||
# Fake a main python shell by setting __name__ to __main__.
|
# Fake a main python shell by setting __name__ to __main__.
|
||||||
console = code.InteractiveConsole({'__name__' : '__main__'})
|
console = code.InteractiveConsole({'__name__' : '__main__',
|
||||||
|
'spack' : spack})
|
||||||
|
|
||||||
if "PYTHONSTARTUP" in os.environ:
|
if "PYTHONSTARTUP" in os.environ:
|
||||||
startup_file = os.environ["PYTHONSTARTUP"]
|
startup_file = os.environ["PYTHONSTARTUP"]
|
||||||
@ -47,7 +50,10 @@ def python(parser, args):
|
|||||||
console.runsource(startup.read(), startup_file, 'exec')
|
console.runsource(startup.read(), startup_file, 'exec')
|
||||||
|
|
||||||
python_args = args.python_args
|
python_args = args.python_args
|
||||||
if python_args:
|
python_command = args.python_command
|
||||||
|
if python_command:
|
||||||
|
console.runsource(python_command)
|
||||||
|
elif python_args:
|
||||||
sys.argv = python_args
|
sys.argv = python_args
|
||||||
with open(python_args[0]) as file:
|
with open(python_args[0]) as file:
|
||||||
console.runsource(file.read(), python_args[0], 'exec')
|
console.runsource(file.read(), python_args[0], 'exec')
|
||||||
|
@ -42,9 +42,9 @@ def setup_parser(subparser):
|
|||||||
help="Remove regardless of whether other packages depend on this one.")
|
help="Remove regardless of whether other packages depend on this one.")
|
||||||
subparser.add_argument(
|
subparser.add_argument(
|
||||||
'-a', '--all', action='store_true', dest='all',
|
'-a', '--all', action='store_true', dest='all',
|
||||||
help="USE CAREFULLY. Remove ALL installed packages that match each supplied spec. " +
|
help="USE CAREFULLY. Remove ALL installed packages that match each " +
|
||||||
"i.e., if you say uninstall libelf, ALL versions of libelf are uninstalled. " +
|
"supplied spec. i.e., if you say uninstall libelf, ALL versions of " +
|
||||||
"This is both useful and dangerous, like rm -r.")
|
"libelf are uninstalled. This is both useful and dangerous, like rm -r.")
|
||||||
subparser.add_argument(
|
subparser.add_argument(
|
||||||
'packages', nargs=argparse.REMAINDER, help="specs of packages to uninstall")
|
'packages', nargs=argparse.REMAINDER, help="specs of packages to uninstall")
|
||||||
|
|
||||||
@ -81,7 +81,8 @@ def uninstall(parser, args):
|
|||||||
pkgs.append(s.package)
|
pkgs.append(s.package)
|
||||||
|
|
||||||
except spack.packages.UnknownPackageError, e:
|
except spack.packages.UnknownPackageError, e:
|
||||||
# The package.py file has gone away -- but still want to uninstall.
|
# The package.py file has gone away -- but still want to
|
||||||
|
# uninstall.
|
||||||
spack.Package(s).do_uninstall(force=True)
|
spack.Package(s).do_uninstall(force=True)
|
||||||
|
|
||||||
# Sort packages to be uninstalled by the number of installed dependents
|
# Sort packages to be uninstalled by the number of installed dependents
|
||||||
|
@ -37,6 +37,12 @@ class Clang(Compiler):
|
|||||||
# Subclasses use possible names of Fortran 90 compiler
|
# Subclasses use possible names of Fortran 90 compiler
|
||||||
fc_names = []
|
fc_names = []
|
||||||
|
|
||||||
|
# Named wrapper links within spack.build_env_path
|
||||||
|
link_paths = { 'cc' : 'clang/clang',
|
||||||
|
'cxx' : 'clang/clang++',
|
||||||
|
# Use default wrappers for fortran, in case provided in compilers.yaml
|
||||||
|
'f77' : 'f77',
|
||||||
|
'fc' : 'f90' }
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def default_version(self, comp):
|
def default_version(self, comp):
|
||||||
|
@ -42,6 +42,12 @@ class Gcc(Compiler):
|
|||||||
# MacPorts builds gcc versions with prefixes and -mp-X.Y suffixes.
|
# MacPorts builds gcc versions with prefixes and -mp-X.Y suffixes.
|
||||||
suffixes = [r'-mp-\d\.\d']
|
suffixes = [r'-mp-\d\.\d']
|
||||||
|
|
||||||
|
# Named wrapper links within spack.build_env_path
|
||||||
|
link_paths = {'cc' : 'gcc/gcc',
|
||||||
|
'cxx' : 'gcc/g++',
|
||||||
|
'f77' : 'gcc/gfortran',
|
||||||
|
'fc' : 'gcc/gfortran' }
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cxx11_flag(self):
|
def cxx11_flag(self):
|
||||||
if self.version < ver('4.3'):
|
if self.version < ver('4.3'):
|
||||||
|
@ -37,6 +37,12 @@ class Intel(Compiler):
|
|||||||
# Subclasses use possible names of Fortran 90 compiler
|
# Subclasses use possible names of Fortran 90 compiler
|
||||||
fc_names = ['ifort']
|
fc_names = ['ifort']
|
||||||
|
|
||||||
|
# Named wrapper links within spack.build_env_path
|
||||||
|
link_paths = { 'cc' : 'intel/icc',
|
||||||
|
'cxx' : 'intel/icpc',
|
||||||
|
'f77' : 'intel/ifort',
|
||||||
|
'fc' : 'intel/ifort' }
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cxx11_flag(self):
|
def cxx11_flag(self):
|
||||||
if self.version < ver('11.1'):
|
if self.version < ver('11.1'):
|
||||||
|
@ -37,6 +37,12 @@ class Pgi(Compiler):
|
|||||||
# Subclasses use possible names of Fortran 90 compiler
|
# Subclasses use possible names of Fortran 90 compiler
|
||||||
fc_names = ['pgf95', 'pgf90']
|
fc_names = ['pgf95', 'pgf90']
|
||||||
|
|
||||||
|
# Named wrapper links within spack.build_env_path
|
||||||
|
link_paths = { 'cc' : 'pgi/pgcc',
|
||||||
|
'cxx' : 'pgi/case-insensitive/pgCC',
|
||||||
|
'f77' : 'pgi/pgf77',
|
||||||
|
'fc' : 'pgi/pgf90' }
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def default_version(cls, comp):
|
def default_version(cls, comp):
|
||||||
"""The '-V' option works for all the PGI compilers.
|
"""The '-V' option works for all the PGI compilers.
|
||||||
|
@ -38,6 +38,12 @@ class Xl(Compiler):
|
|||||||
# Subclasses use possible names of Fortran 90 compiler
|
# Subclasses use possible names of Fortran 90 compiler
|
||||||
fc_names = ['xlf90','xlf90_r','xlf95','xlf95_r','xlf2003','xlf2003_r','xlf2008','xlf2008_r']
|
fc_names = ['xlf90','xlf90_r','xlf95','xlf95_r','xlf2003','xlf2003_r','xlf2008','xlf2008_r']
|
||||||
|
|
||||||
|
# Named wrapper links within spack.build_env_path
|
||||||
|
link_paths = { 'cc' : 'xl/xlc',
|
||||||
|
'cxx' : 'xl/xlc++',
|
||||||
|
'f77' : 'xl/xlf',
|
||||||
|
'fc' : 'xl/xlf90' }
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cxx11_flag(self):
|
def cxx11_flag(self):
|
||||||
if self.version < ver('13.1'):
|
if self.version < ver('13.1'):
|
||||||
|
@ -54,6 +54,7 @@
|
|||||||
from spack.version import Version
|
from spack.version import Version
|
||||||
from spack.spec import Spec
|
from spack.spec import Spec
|
||||||
from spack.error import SpackError
|
from spack.error import SpackError
|
||||||
|
from spack.packages import UnknownPackageError
|
||||||
|
|
||||||
# DB goes in this directory underneath the root
|
# DB goes in this directory underneath the root
|
||||||
_db_dirname = '.spack-db'
|
_db_dirname = '.spack-db'
|
||||||
|
@ -27,9 +27,7 @@
|
|||||||
|
|
||||||
|
|
||||||
def pre_uninstall(pkg):
|
def pre_uninstall(pkg):
|
||||||
# Need to do this b/c uninstall does not automatically do it.
|
assert(pkg.spec.concrete)
|
||||||
# TODO: store full graph info in stored .spec file.
|
|
||||||
pkg.spec.normalize()
|
|
||||||
|
|
||||||
if pkg.is_extension:
|
if pkg.is_extension:
|
||||||
if pkg.activated:
|
if pkg.activated:
|
||||||
|
@ -146,7 +146,7 @@ def create(path, specs, **kwargs):
|
|||||||
stage = None
|
stage = None
|
||||||
try:
|
try:
|
||||||
# create a subdirectory for the current package@version
|
# create a subdirectory for the current package@version
|
||||||
archive_path = os.path.abspath(join_path(path, mirror_archive_path(spec)))
|
archive_path = os.path.abspath(join_path(mirror_root, mirror_archive_path(spec)))
|
||||||
subdir = os.path.dirname(archive_path)
|
subdir = os.path.dirname(archive_path)
|
||||||
mkdirp(subdir)
|
mkdirp(subdir)
|
||||||
|
|
||||||
|
@ -487,7 +487,13 @@ def extendee_spec(self):
|
|||||||
if name == dep.name:
|
if name == dep.name:
|
||||||
return dep
|
return dep
|
||||||
|
|
||||||
# Otherwise return the spec from the extends() directive
|
# if the spec is concrete already, then it extends something
|
||||||
|
# that is an *optional* dependency, and the dep isn't there.
|
||||||
|
if self.spec._concrete:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
# If it's not concrete, then return the spec from the
|
||||||
|
# extends() directive since that is all we know so far.
|
||||||
spec, kwargs = self.extendees[name]
|
spec, kwargs = self.extendees[name]
|
||||||
return spec
|
return spec
|
||||||
|
|
||||||
@ -497,18 +503,28 @@ def extendee_args(self):
|
|||||||
"""Spec of the extendee of this package, or None if it is not an extension."""
|
"""Spec of the extendee of this package, or None if it is not an extension."""
|
||||||
if not self.extendees:
|
if not self.extendees:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
# TODO: allow multiple extendees.
|
||||||
name = next(iter(self.extendees))
|
name = next(iter(self.extendees))
|
||||||
return self.extendees[name][1]
|
return self.extendees[name][1]
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_extension(self):
|
def is_extension(self):
|
||||||
return len(self.extendees) > 0
|
# if it is concrete, it's only an extension if it actually
|
||||||
|
# dependes on the extendee.
|
||||||
|
if self.spec._concrete:
|
||||||
|
return self.extendee_spec is not None
|
||||||
|
else:
|
||||||
|
# If not, then it's an extension if it *could* be an extension
|
||||||
|
return bool(self.extendees)
|
||||||
|
|
||||||
|
|
||||||
def extends(self, spec):
|
def extends(self, spec):
|
||||||
return (spec.name in self.extendees and
|
if not spec.name in self.extendees:
|
||||||
spec.satisfies(self.extendees[spec.name][0]))
|
return False
|
||||||
|
s = self.extendee_spec
|
||||||
|
return s and s.satisfies(spec)
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -63,10 +63,6 @@ def check_python_versions(self, *files):
|
|||||||
all_issues = {}
|
all_issues = {}
|
||||||
|
|
||||||
for fn in files:
|
for fn in files:
|
||||||
if fn != '/Users/gamblin2/src/spack/var/spack/packages/vim/package.py':
|
|
||||||
continue
|
|
||||||
print fn
|
|
||||||
|
|
||||||
with open(fn) as pyfile:
|
with open(fn) as pyfile:
|
||||||
versions = pyqver2.get_versions(pyfile.read())
|
versions = pyqver2.get_versions(pyfile.read())
|
||||||
for ver, reasons in versions.items():
|
for ver, reasons in versions.items():
|
||||||
|
@ -56,6 +56,12 @@
|
|||||||
# spack dotfiles.
|
# spack dotfiles.
|
||||||
########################################################################
|
########################################################################
|
||||||
function spack {
|
function spack {
|
||||||
|
# save raw arguments into an array before butchering them
|
||||||
|
args=()
|
||||||
|
for a in "$@"; do
|
||||||
|
# yup, this is awful, blame bash2 compat
|
||||||
|
args=("${args[@]}" "$a")
|
||||||
|
done
|
||||||
# accumulate initial flags for main spack command
|
# accumulate initial flags for main spack command
|
||||||
_sp_flags=""
|
_sp_flags=""
|
||||||
while [[ "$1" =~ ^- ]]; do
|
while [[ "$1" =~ ^- ]]; do
|
||||||
@ -116,7 +122,7 @@ function spack {
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
command spack $_sp_flags $_sp_subcommand $_sp_spec
|
command spack "${args[@]}"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@ -167,8 +173,8 @@ fi
|
|||||||
#
|
#
|
||||||
_sp_share_dir=$(cd "$(dirname $_sp_source_file)" && pwd)
|
_sp_share_dir=$(cd "$(dirname $_sp_source_file)" && pwd)
|
||||||
_sp_prefix=$(cd "$(dirname $(dirname $_sp_share_dir))" && pwd)
|
_sp_prefix=$(cd "$(dirname $(dirname $_sp_share_dir))" && pwd)
|
||||||
|
_spack_pathadd PATH "${_sp_prefix%/}/bin"
|
||||||
|
|
||||||
# TODO: fix SYS_TYPE to something non-LLNL-specific
|
_sp_sys_type=$(spack-python -c 'print(spack.architecture.sys_type())')
|
||||||
_spack_pathadd DK_NODE "$_sp_share_dir/dotkit/$SYS_TYPE"
|
_spack_pathadd DK_NODE "${_sp_share_dir%/}/dotkit/$_sp_sys_type"
|
||||||
_spack_pathadd MODULEPATH "$_sp_share_dir/modules/$SYS_TYPE"
|
_spack_pathadd MODULEPATH "${_sp_share_dir%/}/modules/$_sp_sys_type"
|
||||||
_spack_pathadd PATH "$_sp_prefix/bin"
|
|
||||||
|
52
var/spack/packages/binutils/binutilskrell-2.24.patch
Normal file
52
var/spack/packages/binutils/binutilskrell-2.24.patch
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
--- binutils-2.24/libiberty/Makefile.in 2013-11-04 10:33:40.000000000 -0500
|
||||||
|
+++ binutils-2.24-fixes/libiberty/Makefile.in 2014-10-17 16:22:31.413655000 -0400
|
||||||
|
@@ -66,6 +66,7 @@
|
||||||
|
MAKEOVERRIDES =
|
||||||
|
|
||||||
|
TARGETLIB = ./libiberty.a
|
||||||
|
+TARGETLIBPIC = ./libiberty_pic.a
|
||||||
|
TESTLIB = ./testlib.a
|
||||||
|
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
@@ -355,27 +356,27 @@
|
||||||
|
# since it will be passed the multilib flags.
|
||||||
|
MULTIOSDIR = `$(CC) $(CFLAGS) -print-multi-os-directory`
|
||||||
|
install_to_libdir: all
|
||||||
|
- if test -n "${target_header_dir}"; then \
|
||||||
|
- ${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \
|
||||||
|
- $(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n; \
|
||||||
|
- ( cd $(DESTDIR)$(libdir)/$(MULTIOSDIR) ; chmod 644 $(TARGETLIB)n ;$(RANLIB) $(TARGETLIB)n ); \
|
||||||
|
- mv -f $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB); \
|
||||||
|
- case "${target_header_dir}" in \
|
||||||
|
- /*) thd=${target_header_dir};; \
|
||||||
|
- *) thd=${includedir}/${target_header_dir};; \
|
||||||
|
- esac; \
|
||||||
|
- ${mkinstalldirs} $(DESTDIR)$${thd}; \
|
||||||
|
- for h in ${INSTALLED_HEADERS}; do \
|
||||||
|
- ${INSTALL_DATA} $$h $(DESTDIR)$${thd}; \
|
||||||
|
- done; \
|
||||||
|
- fi
|
||||||
|
+ ${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \
|
||||||
|
+ $(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n; \
|
||||||
|
+ $(INSTALL_DATA) pic/$(TARGETLIB) $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIBPIC)n; \
|
||||||
|
+ ( cd $(DESTDIR)$(libdir)/$(MULTIOSDIR) ; chmod 644 $(TARGETLIB)n ;$(RANLIB) $(TARGETLIB)n ); \
|
||||||
|
+ ( cd $(DESTDIR)$(libdir)/$(MULTIOSDIR) ; chmod 644 $(TARGETLIBPIC)n ;$(RANLIB) $(TARGETLIBPIC)n ); \
|
||||||
|
+ mv -f $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB); \
|
||||||
|
+ mv -f $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIBPIC)n $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIBPIC); \
|
||||||
|
+ ${mkinstalldirs} $(DESTDIR)$${includedir}; \
|
||||||
|
+ for h in ${INSTALLED_HEADERS}; do \
|
||||||
|
+ ${INSTALL_DATA} $$h $(DESTDIR)$${includedir}; \
|
||||||
|
+ done;
|
||||||
|
@$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install
|
||||||
|
|
||||||
|
install_to_tooldir: all
|
||||||
|
${mkinstalldirs} $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)
|
||||||
|
$(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIB)n
|
||||||
|
+ $(INSTALL_DATA) pic/$(TARGETLIB) $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIBPIC)n
|
||||||
|
( cd $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR) ; chmod 644 $(TARGETLIB)n; $(RANLIB) $(TARGETLIB)n )
|
||||||
|
+ ( cd $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR) ; chmod 644 $(TARGETLIBPIC)n; $(RANLIB) $(TARGETLIBPIC)n )
|
||||||
|
mv -f $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIB)n $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIB)
|
||||||
|
+ mv -f $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIBPIC)n $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIBPIC)
|
||||||
|
@$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install
|
||||||
|
|
||||||
|
# required-list was used when building a shared bfd/opcodes/libiberty
|
@ -3,12 +3,15 @@
|
|||||||
class Binutils(Package):
|
class Binutils(Package):
|
||||||
"""GNU binutils, which contain the linker, assembler, objdump and others"""
|
"""GNU binutils, which contain the linker, assembler, objdump and others"""
|
||||||
homepage = "http://www.gnu.org/software/binutils/"
|
homepage = "http://www.gnu.org/software/binutils/"
|
||||||
url = "ftp://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.bz2"
|
|
||||||
|
|
||||||
version('2.25', 'd9f3303f802a5b6b0bb73a335ab89d66')
|
version('2.25', 'd9f3303f802a5b6b0bb73a335ab89d66',url="ftp://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.bz2")
|
||||||
version('2.24', 'e0f71a7b2ddab0f8612336ac81d9636b')
|
version('2.24', 'e0f71a7b2ddab0f8612336ac81d9636b',url="ftp://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.bz2")
|
||||||
version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e')
|
version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e',url="ftp://ftp.gnu.org/gnu/binutils/binutils-2.23.2.tar.bz2")
|
||||||
version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764')
|
version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764',url="ftp://ftp.gnu.org/gnu/binutils/binutils-2.20.1.tar.bz2")
|
||||||
|
|
||||||
|
# Add a patch that creates binutils libiberty_pic.a which is preferred by OpenSpeedShop and cbtf-krell
|
||||||
|
variant('krellpatch', default=False, description="build with openspeedshop based patch.")
|
||||||
|
patch('binutilskrell-2.24.patch', when='@2.24+krellpatch')
|
||||||
|
|
||||||
variant('libiberty', default=False, description='Also install libiberty.')
|
variant('libiberty', default=False, description='Also install libiberty.')
|
||||||
|
|
||||||
|
66
var/spack/packages/cbtf-argonavis/package.py
Normal file
66
var/spack/packages/cbtf-argonavis/package.py
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
################################################################################
|
||||||
|
# Copyright (c) 2015 Krell Institute. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under
|
||||||
|
# the terms of the GNU General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 2 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
# details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along with
|
||||||
|
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||||
|
# Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
class CbtfArgonavis(Package):
|
||||||
|
"""CBTF Argo Navis project contains the CUDA collector and supporting
|
||||||
|
libraries that was done as a result of a DOE SBIR grant."""
|
||||||
|
homepage = "http://sourceforge.net/p/cbtf/wiki/Home/"
|
||||||
|
|
||||||
|
# Mirror access template example
|
||||||
|
#url = "file:/g/g24/jeg/cbtf-argonavis-1.5.tar.gz"
|
||||||
|
#version('1.5', '1f7f6512f55409ed2135cfceabe26b82')
|
||||||
|
|
||||||
|
version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf-argonavis/cbtf-argonavis')
|
||||||
|
|
||||||
|
depends_on("cmake@3.0.2:")
|
||||||
|
depends_on("papi")
|
||||||
|
depends_on("cbtf")
|
||||||
|
depends_on("cbtf-krell")
|
||||||
|
depends_on("cuda")
|
||||||
|
|
||||||
|
parallel = False
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
|
||||||
|
# Look for package installation information in the cbtf and cbtf-krell prefixes
|
||||||
|
cmake_prefix_path = join_path(spec['cbtf'].prefix) + ':' + join_path(spec['cbtf-krell'].prefix)
|
||||||
|
|
||||||
|
# FIXME, hard coded for testing purposes, we will alter when the external package feature is available
|
||||||
|
cuda_prefix_path = "/usr/local/cudatoolkit-6.0"
|
||||||
|
cupti_prefix_path = "/usr/local/cudatoolkit-6.0/extras/CUPTI"
|
||||||
|
|
||||||
|
|
||||||
|
with working_dir('CUDA'):
|
||||||
|
with working_dir('build', create=True):
|
||||||
|
cmake('..',
|
||||||
|
'-DCMAKE_INSTALL_PREFIX=%s' % prefix,
|
||||||
|
'-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64,
|
||||||
|
'-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
|
||||||
|
'-DCUDA_INSTALL_PATH=%s' % cuda_prefix_path,
|
||||||
|
'-DCUDA_ROOT=%s' % cuda_prefix_path,
|
||||||
|
'-DCUPTI_ROOT=%s' % cupti_prefix_path,
|
||||||
|
'-DCUDA_DIR=%s' % cuda_prefix_path,
|
||||||
|
'-DPAPI_ROOT=%s' % spec['papi'].prefix,
|
||||||
|
'-DCBTF_PREFIX=%s' % spec['cbtf'].prefix,
|
||||||
|
*std_cmake_args)
|
||||||
|
make("clean")
|
||||||
|
make()
|
||||||
|
make("install")
|
||||||
|
|
116
var/spack/packages/cbtf-krell/package.py
Normal file
116
var/spack/packages/cbtf-krell/package.py
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
################################################################################
|
||||||
|
# Copyright (c) 2015 Krell Institute. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under
|
||||||
|
# the terms of the GNU General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 2 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
# details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along with
|
||||||
|
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||||
|
# Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
class CbtfKrell(Package):
|
||||||
|
"""CBTF Krell project contains the Krell Institute contributions to the CBTF project.
|
||||||
|
These contributions include many performance data collectors and support
|
||||||
|
libraries as well as some example tools that drive the data collection at
|
||||||
|
HPC levels of scale."""
|
||||||
|
homepage = "http://sourceforge.net/p/cbtf/wiki/Home/"
|
||||||
|
|
||||||
|
# optional mirror access template
|
||||||
|
#url = "file:/g/g24/jeg/cbtf-krell-1.5.tar.gz"
|
||||||
|
#version('1.5', 'b13f6df6a93c44149d977773dd776d2f')
|
||||||
|
|
||||||
|
version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf-krell/cbtf-krell')
|
||||||
|
|
||||||
|
|
||||||
|
# Dependencies for cbtf-krell
|
||||||
|
|
||||||
|
# For binutils service
|
||||||
|
depends_on("binutils@2.24+krellpatch")
|
||||||
|
|
||||||
|
# collectionTool
|
||||||
|
depends_on("boost@1.50.0")
|
||||||
|
depends_on("dyninst@8.2.1")
|
||||||
|
depends_on("mrnet@4.1.0:+lwthreads")
|
||||||
|
depends_on("xerces-c@3.1.1:")
|
||||||
|
depends_on("cbtf")
|
||||||
|
|
||||||
|
# for services and collectors
|
||||||
|
depends_on("libmonitor+krellpatch")
|
||||||
|
depends_on("libunwind")
|
||||||
|
depends_on("papi")
|
||||||
|
|
||||||
|
# MPI Installations
|
||||||
|
# These have not worked either for build or execution, commenting out for now
|
||||||
|
#depends_on("openmpi")
|
||||||
|
#depends_on("mvapich2@2.0")
|
||||||
|
#depends_on("mpich")
|
||||||
|
|
||||||
|
parallel = False
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
|
||||||
|
# Add in paths for finding package config files that tell us where to find these packages
|
||||||
|
cmake_prefix_path = join_path(spec['cbtf'].prefix) + ':' + join_path(spec['dyninst'].prefix)
|
||||||
|
|
||||||
|
# FIXME - hard code path until external package support is available
|
||||||
|
# Need to change this path and/or add additional paths for MPI experiment support on different platforms
|
||||||
|
#openmpi_prefix_path = "/opt/openmpi-1.8.2"
|
||||||
|
#mvapich_prefix_path = "/usr/local/tools/mvapich-gnu"
|
||||||
|
|
||||||
|
# Other possibilities, they will need a -DMVAPICH_DIR=, etc clause in the cmake command to be recognized
|
||||||
|
# mvapich_prefix_path = "<mvapich install path>"
|
||||||
|
# mvapich2_prefix_path = "<mvapich2 install path>"
|
||||||
|
# mpich2_prefix_path = "<mpich2 install path>"
|
||||||
|
# mpich_prefix_path = "<mpich install path>"
|
||||||
|
# mpt_prefix_path = "<mpt install path>"
|
||||||
|
|
||||||
|
# Add in paths for cuda if requested via the cuda variant
|
||||||
|
# FIXME - hard code path until external package support is available
|
||||||
|
#if '+cuda' in spec:
|
||||||
|
# cuda_prefix_path = "/usr/local/cuda-6.0"
|
||||||
|
# cupti_prefix_path = "/usr/local/cuda-6.0/extras/CUPTI"
|
||||||
|
#else:
|
||||||
|
# cuda_prefix_path = ""
|
||||||
|
# cupti_prefix_path = ""
|
||||||
|
|
||||||
|
#'-DMVAPICH2_DIR=%s' % spec['mvapich2'].prefix,
|
||||||
|
#'-DOPENMPI_DIR=%s' % spec['openmpi'].prefix,
|
||||||
|
#'-DMPICH_DIR=%s' % spec['mpich'].prefix,
|
||||||
|
#'-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64,
|
||||||
|
#'-DOPENMPI_DIR=%s' % openmpi_prefix_path,
|
||||||
|
#'-DMVAPICH_DIR=%s' % mvapich_prefix_path,
|
||||||
|
#'-DLIB_SUFFIX=64',
|
||||||
|
#'-DCUDA_DIR=%s' % cuda_prefix_path,
|
||||||
|
#'-DCUPTI_DIR=%s' % cupti_prefix_path,
|
||||||
|
|
||||||
|
# Build cbtf-krell with cmake
|
||||||
|
with working_dir('build_cbtf_krell', create=True):
|
||||||
|
cmake('..',
|
||||||
|
'-DCMAKE_BUILD_TYPE=Debug',
|
||||||
|
'-DCMAKE_INSTALL_PREFIX=%s' % prefix,
|
||||||
|
'-DCBTF_DIR=%s' % spec['cbtf'].prefix,
|
||||||
|
'-DBINUTILS_DIR=%s' % spec['binutils'].prefix,
|
||||||
|
'-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix,
|
||||||
|
'-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix,
|
||||||
|
'-DPAPI_DIR=%s' % spec['papi'].prefix,
|
||||||
|
'-DBOOST_DIR=%s' % spec['boost'].prefix,
|
||||||
|
'-DMRNET_DIR=%s' % spec['mrnet'].prefix,
|
||||||
|
'-DDYNINST_DIR=%s' % spec['dyninst'].prefix,
|
||||||
|
'-DXERCESC_DIR=%s' % spec['xerces-c'].prefix,
|
||||||
|
'-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
|
||||||
|
*std_cmake_args)
|
||||||
|
|
||||||
|
make("clean")
|
||||||
|
make()
|
||||||
|
make("install")
|
||||||
|
|
60
var/spack/packages/cbtf-lanl/package.py
Normal file
60
var/spack/packages/cbtf-lanl/package.py
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
################################################################################
|
||||||
|
# Copyright (c) 2015 Krell Institute. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under
|
||||||
|
# the terms of the GNU General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 2 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
# details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along with
|
||||||
|
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||||
|
# Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
class CbtfLanl(Package):
|
||||||
|
"""CBTF LANL project contains a memory tool and data center type system command monitoring tool."""
|
||||||
|
homepage = "http://sourceforge.net/p/cbtf/wiki/Home/"
|
||||||
|
|
||||||
|
|
||||||
|
# Mirror access template example
|
||||||
|
#url = "file:/g/g24/jeg/cbtf-lanl-1.5.tar.gz"
|
||||||
|
#version('1.5', 'c3f78f967b0a42c6734ce4be0e602426')
|
||||||
|
|
||||||
|
version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf-lanl/cbtf-lanl')
|
||||||
|
|
||||||
|
|
||||||
|
# Dependencies for cbtf-krell
|
||||||
|
depends_on("boost@1.50")
|
||||||
|
depends_on("mrnet@4.1.0:+lwthreads")
|
||||||
|
depends_on("xerces-c@3.1.1:")
|
||||||
|
depends_on("cbtf")
|
||||||
|
depends_on("cbtf-krell")
|
||||||
|
|
||||||
|
parallel = False
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
|
||||||
|
# Add in paths for finding package config files that tell us where to find these packages
|
||||||
|
cmake_prefix_path = join_path(spec['cbtf'].prefix) + ':' + join_path(spec['cbtf-krell'].prefix)
|
||||||
|
|
||||||
|
with working_dir('build', create=True):
|
||||||
|
cmake('..',
|
||||||
|
'-DCBTF_DIR=%s' % spec['cbtf'].prefix,
|
||||||
|
'-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix,
|
||||||
|
'-DMRNET_DIR=%s' % spec['mrnet'].prefix,
|
||||||
|
'-DXERCESC_DIR=%s' % spec['xerces-c'].prefix,
|
||||||
|
'-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
|
||||||
|
'-DCMAKE_MODULE_PATH=%s' % join_path(prefix.share,'KrellInstitute','cmake'),
|
||||||
|
*std_cmake_args)
|
||||||
|
|
||||||
|
make("clean")
|
||||||
|
make()
|
||||||
|
make("install")
|
||||||
|
|
62
var/spack/packages/cbtf/package.py
Normal file
62
var/spack/packages/cbtf/package.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
################################################################################
|
||||||
|
# Copyright (c) 2015 Krell Institute. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under
|
||||||
|
# the terms of the GNU General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 2 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
# details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along with
|
||||||
|
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||||
|
# Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
class Cbtf(Package):
|
||||||
|
"""CBTF project contains the base code for CBTF that supports creating components,
|
||||||
|
component networks and the support to connect these components and component
|
||||||
|
networks into sequential and distributed network tools."""
|
||||||
|
homepage = "http://sourceforge.net/p/cbtf/wiki/Home"
|
||||||
|
|
||||||
|
# Mirror access template example
|
||||||
|
#url = "file:/g/g24/jeg/cbtf-1.5.tar.gz"
|
||||||
|
#version('1.6', '1ca88a8834759c4c74452cb97fe7b70a')
|
||||||
|
|
||||||
|
# Use when the git repository is available
|
||||||
|
version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf/cbtf')
|
||||||
|
|
||||||
|
depends_on("cmake")
|
||||||
|
#depends_on("boost@1.42.0:")
|
||||||
|
depends_on("boost@1.50.0")
|
||||||
|
depends_on("mrnet@4.1.0+lwthreads")
|
||||||
|
depends_on("xerces-c@3.1.1:")
|
||||||
|
depends_on("libxml2")
|
||||||
|
|
||||||
|
parallel = False
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
with working_dir('build', create=True):
|
||||||
|
|
||||||
|
# Boost_NO_SYSTEM_PATHS Set to TRUE to suppress searching
|
||||||
|
# in system paths (or other locations outside of BOOST_ROOT
|
||||||
|
# or BOOST_INCLUDEDIR). Useful when specifying BOOST_ROOT.
|
||||||
|
# Defaults to OFF.
|
||||||
|
|
||||||
|
cmake('..',
|
||||||
|
'--debug-output',
|
||||||
|
'-DBoost_NO_SYSTEM_PATHS=TRUE',
|
||||||
|
'-DXERCESC_DIR=%s' % spec['xerces-c'].prefix,
|
||||||
|
'-DBOOST_ROOT=%s' % spec['boost'].prefix,
|
||||||
|
'-DMRNET_DIR=%s' % spec['mrnet'].prefix,
|
||||||
|
'-DCMAKE_MODULE_PATH=%s' % join_path(prefix.share,'KrellInstitute','cmake'),
|
||||||
|
*std_cmake_args)
|
||||||
|
|
||||||
|
make("clean")
|
||||||
|
make()
|
||||||
|
make("install")
|
18
var/spack/packages/cfitsio/package.py
Normal file
18
var/spack/packages/cfitsio/package.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
from spack import *
|
||||||
|
|
||||||
|
class Cfitsio(Package):
|
||||||
|
"""
|
||||||
|
CFITSIO is a library of C and Fortran subroutines for reading and writing
|
||||||
|
data files in FITS (Flexible Image Transport System) data format.
|
||||||
|
"""
|
||||||
|
homepage = 'http://heasarc.gsfc.nasa.gov/fitsio/'
|
||||||
|
version('3.370', 'abebd2d02ba5b0503c633581e3bfa116')
|
||||||
|
|
||||||
|
def url_for_version(self, v):
|
||||||
|
url = 'ftp://heasarc.gsfc.nasa.gov/software/fitsio/c/cfitsio{0}.tar.gz'
|
||||||
|
return url.format(str(v).replace('.', ''))
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
configure('--prefix=' + prefix)
|
||||||
|
make()
|
||||||
|
make('install')
|
@ -43,6 +43,7 @@ class Cmake(Package):
|
|||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
configure('--prefix=' + prefix,
|
configure('--prefix=' + prefix,
|
||||||
'--parallel=' + str(make_jobs))
|
'--parallel=' + str(make_jobs),
|
||||||
|
'--', '-DCMAKE_USE_OPENSSL=ON')
|
||||||
make()
|
make()
|
||||||
make('install')
|
make('install')
|
||||||
|
@ -12,6 +12,9 @@ class Cube(Package):
|
|||||||
homepage = "http://www.scalasca.org/software/cube-4.x/download.html"
|
homepage = "http://www.scalasca.org/software/cube-4.x/download.html"
|
||||||
url = "http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz"
|
url = "http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz"
|
||||||
|
|
||||||
|
version('4.3.3', '07e109248ed8ffc7bdcce614264a2909',
|
||||||
|
url='http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-4.3.3.tar.gz')
|
||||||
|
|
||||||
version('4.2.3', '8f95b9531f5a8f8134f279c2767c9b20')
|
version('4.2.3', '8f95b9531f5a8f8134f279c2767c9b20')
|
||||||
|
|
||||||
version('4.3TP1', 'a2090fbc7b2ba394bd5c09ba971e237f',
|
version('4.3TP1', 'a2090fbc7b2ba394bd5c09ba971e237f',
|
||||||
|
@ -57,6 +57,7 @@ def install(self, spec, prefix):
|
|||||||
'-DLIBDWARF_INCLUDE_DIR=%s' % libdwarf.include,
|
'-DLIBDWARF_INCLUDE_DIR=%s' % libdwarf.include,
|
||||||
'-DLIBDWARF_LIBRARIES=%s' % join_path(libdwarf.lib, 'libdwarf.so'),
|
'-DLIBDWARF_LIBRARIES=%s' % join_path(libdwarf.lib, 'libdwarf.so'),
|
||||||
*std_cmake_args)
|
*std_cmake_args)
|
||||||
|
|
||||||
make()
|
make()
|
||||||
make("install")
|
make("install")
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
class Global(Package):
|
class Global(Package):
|
||||||
""" The Gnu Global tagging system """
|
""" The Gnu Global tagging system """
|
||||||
# FIXME: add a proper url for your package's homepage here.
|
|
||||||
homepage = "http://www.gnu.org/software/global"
|
homepage = "http://www.gnu.org/software/global"
|
||||||
url = "http://tamacom.com/global/global-6.5.tar.gz"
|
url = "http://tamacom.com/global/global-6.5.tar.gz"
|
||||||
|
|
||||||
@ -13,9 +13,9 @@ class Global(Package):
|
|||||||
depends_on('exuberant-ctags')
|
depends_on('exuberant-ctags')
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
config_args = ['--prefix={}'.format(prefix)]
|
config_args = ['--prefix={0}'.format(prefix)]
|
||||||
|
|
||||||
config_args.append('--with-exuberant-ctags={}'.format(
|
config_args.append('--with-exuberant-ctags={0}'.format(
|
||||||
os.path.join(spec['exuberant-ctags'].prefix.bin, 'ctags')))
|
os.path.join(spec['exuberant-ctags'].prefix.bin, 'ctags')))
|
||||||
|
|
||||||
configure(*config_args)
|
configure(*config_args)
|
||||||
|
18
var/spack/packages/libmonitor/libmonitorkrell-0000.patch
Normal file
18
var/spack/packages/libmonitor/libmonitorkrell-0000.patch
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
--- libmonitor-20130218/configure 2013-02-17 23:08:32.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/configure 2013-02-18 10:34:05.237918411 -0800
|
||||||
|
@@ -3600,13 +3600,13 @@
|
||||||
|
CFLAGS=$ac_save_CFLAGS
|
||||||
|
elif test $ac_cv_prog_cc_g = yes; then
|
||||||
|
if test "$GCC" = yes; then
|
||||||
|
- CFLAGS="-g -O2"
|
||||||
|
+ CFLAGS="-g -O0"
|
||||||
|
else
|
||||||
|
CFLAGS="-g"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if test "$GCC" = yes; then
|
||||||
|
- CFLAGS="-O2"
|
||||||
|
+ CFLAGS="-O0"
|
||||||
|
else
|
||||||
|
CFLAGS=
|
||||||
|
fi
|
395
var/spack/packages/libmonitor/libmonitorkrell-0001.patch
Normal file
395
var/spack/packages/libmonitor/libmonitorkrell-0001.patch
Normal file
@ -0,0 +1,395 @@
|
|||||||
|
--- libmonitor-20130218/src/callback.c 2013-02-17 23:08:32.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/callback.c 2013-02-18 10:34:17.839842826 -0800
|
||||||
|
@@ -173,3 +173,18 @@
|
||||||
|
MONITOR_DEBUG1("(default callback)\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+void __attribute__ ((weak))
|
||||||
|
+monitor_mpi_post_comm_rank(void)
|
||||||
|
+{
|
||||||
|
+ MONITOR_DEBUG1("(default callback)\n");
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void __attribute__ ((weak))
|
||||||
|
+monitor_mpi_pcontrol(int level)
|
||||||
|
+{
|
||||||
|
+ MONITOR_DEBUG("(default callback) level = %d\n", level);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
--- libmonitor-20130218/src/main.c 2013-02-17 23:08:32.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/main.c 2013-02-18 10:34:17.839842826 -0800
|
||||||
|
@@ -230,6 +230,44 @@
|
||||||
|
monitor_fini_library_called = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/*
|
||||||
|
+ * Internal monitor functions.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+struct monitor_thread_node * __attribute__ ((weak))
|
||||||
|
+monitor_get_tn(void)
|
||||||
|
+{
|
||||||
|
+ return &monitor_main_tn;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int __attribute__ ((weak))
|
||||||
|
+monitor_get_thread_num(void)
|
||||||
|
+{
|
||||||
|
+ return (0);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void __attribute__ ((weak))
|
||||||
|
+monitor_reset_thread_list(struct monitor_thread_node *main_tn)
|
||||||
|
+{
|
||||||
|
+ MONITOR_DEBUG1("(weak)\n");
|
||||||
|
+ return;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void __attribute__ ((weak))
|
||||||
|
+monitor_thread_release(void)
|
||||||
|
+{
|
||||||
|
+ MONITOR_DEBUG1("(weak)\n");
|
||||||
|
+ return;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void __attribute__ ((weak))
|
||||||
|
+monitor_thread_shootdown(void)
|
||||||
|
+{
|
||||||
|
+ MONITOR_DEBUG1("(weak)\n");
|
||||||
|
+ return;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
void
|
||||||
|
monitor_begin_process_fcn(void *user_data, int is_fork)
|
||||||
|
{
|
||||||
|
@@ -625,12 +663,6 @@
|
||||||
|
return (monitor_main_tn.tn_user_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
-int __attribute__ ((weak))
|
||||||
|
-monitor_get_thread_num(void)
|
||||||
|
-{
|
||||||
|
- return (0);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
void * __attribute__ ((weak))
|
||||||
|
monitor_get_addr_thread_start(void)
|
||||||
|
{
|
||||||
|
@@ -691,33 +723,3 @@
|
||||||
|
MONITOR_DEBUG1("(weak)\n");
|
||||||
|
return (FALSE);
|
||||||
|
}
|
||||||
|
-
|
||||||
|
-/*
|
||||||
|
- * Internal monitor functions.
|
||||||
|
- */
|
||||||
|
-struct monitor_thread_node * __attribute__ ((weak))
|
||||||
|
-monitor_get_tn(void)
|
||||||
|
-{
|
||||||
|
- return &monitor_main_tn;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-void __attribute__ ((weak))
|
||||||
|
-monitor_reset_thread_list(struct monitor_thread_node *main_tn)
|
||||||
|
-{
|
||||||
|
- MONITOR_DEBUG1("(weak)\n");
|
||||||
|
- return;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-void __attribute__ ((weak))
|
||||||
|
-monitor_thread_release(void)
|
||||||
|
-{
|
||||||
|
- MONITOR_DEBUG1("(weak)\n");
|
||||||
|
- return;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-void __attribute__ ((weak))
|
||||||
|
-monitor_thread_shootdown(void)
|
||||||
|
-{
|
||||||
|
- MONITOR_DEBUG1("(weak)\n");
|
||||||
|
- return;
|
||||||
|
-}
|
||||||
|
--- libmonitor-20130218/src/monitor.h 2013-02-17 23:08:32.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/monitor.h 2013-02-18 10:34:17.840842821 -0800
|
||||||
|
@@ -73,6 +73,11 @@
|
||||||
|
extern void monitor_fini_mpi(void);
|
||||||
|
extern void monitor_mpi_post_fini(void);
|
||||||
|
|
||||||
|
+extern void monitor_mpi_post_comm_rank(void);
|
||||||
|
+extern void monitor_mpi_pcontrol(int level);
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Monitor support functions.
|
||||||
|
*/
|
||||||
|
--- libmonitor-20130218/src/mpi_comm_c.c 2013-02-17 23:08:32.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/mpi_comm_c.c 2013-02-18 10:34:17.878842622 -0800
|
||||||
|
@@ -36,5 +36,8 @@
|
||||||
|
ret = (*real_mpi_comm_rank)(comm, rank);
|
||||||
|
monitor_set_mpi_size_rank(size, *rank);
|
||||||
|
|
||||||
|
+ monitor_mpi_post_comm_rank();
|
||||||
|
+
|
||||||
|
+
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
|
--- libmonitor-20130218/src/mpi_comm_f0.c 2013-02-17 23:08:32.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/mpi_comm_f0.c 2013-02-18 10:34:17.879842617 -0800
|
||||||
|
@@ -34,4 +34,5 @@
|
||||||
|
(*real_mpi_comm_size)(comm, &size, ierror);
|
||||||
|
(*real_mpi_comm_rank)(comm, rank, ierror);
|
||||||
|
monitor_set_mpi_size_rank(size, *rank);
|
||||||
|
+ monitor_mpi_post_comm_rank();
|
||||||
|
}
|
||||||
|
--- libmonitor-20130218/src/mpi_comm_f1.c 2013-02-17 23:08:32.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/mpi_comm_f1.c 2013-02-18 10:34:17.880842612 -0800
|
||||||
|
@@ -34,4 +34,5 @@
|
||||||
|
(*real_mpi_comm_size)(comm, &size, ierror);
|
||||||
|
(*real_mpi_comm_rank)(comm, rank, ierror);
|
||||||
|
monitor_set_mpi_size_rank(size, *rank);
|
||||||
|
+ monitor_mpi_post_comm_rank();
|
||||||
|
}
|
||||||
|
--- libmonitor-20130218/src/mpi_comm_f2.c 2013-02-17 23:08:32.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/mpi_comm_f2.c 2013-02-18 10:34:17.880842612 -0800
|
||||||
|
@@ -34,4 +34,5 @@
|
||||||
|
(*real_mpi_comm_size)(comm, &size, ierror);
|
||||||
|
(*real_mpi_comm_rank)(comm, rank, ierror);
|
||||||
|
monitor_set_mpi_size_rank(size, *rank);
|
||||||
|
+ monitor_mpi_post_comm_rank();
|
||||||
|
}
|
||||||
|
--- libmonitor-20130218/src/pmpi.c 2013-02-17 23:08:32.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/pmpi.c 2013-02-18 10:34:17.881842607 -0800
|
||||||
|
@@ -52,11 +52,15 @@
|
||||||
|
typedef int mpi_init_thread_fcn_t(int *, char ***, int, int *);
|
||||||
|
typedef int mpi_finalize_fcn_t(void);
|
||||||
|
typedef int mpi_comm_fcn_t(void *, int *);
|
||||||
|
+typedef int mpi_pcontrol_fcn_t(int );
|
||||||
|
+
|
||||||
|
|
||||||
|
typedef void f_mpi_init_fcn_t(int *);
|
||||||
|
typedef void f_mpi_init_thread_fcn_t(int *, int *, int *);
|
||||||
|
typedef void f_mpi_finalize_fcn_t(int *);
|
||||||
|
typedef void f_mpi_comm_fcn_t(int *, int *, int *);
|
||||||
|
+typedef int f_mpi_pcontrol_fcn_t(int );
|
||||||
|
+
|
||||||
|
|
||||||
|
static mpi_init_fcn_t *real_pmpi_init = NULL;
|
||||||
|
static f_mpi_init_fcn_t *real_pmpi_init_f0 = NULL;
|
||||||
|
@@ -83,6 +87,12 @@
|
||||||
|
static f_mpi_comm_fcn_t *real_pmpi_comm_rank_f1 = NULL;
|
||||||
|
static f_mpi_comm_fcn_t *real_pmpi_comm_rank_f2 = NULL;
|
||||||
|
|
||||||
|
+static mpi_pcontrol_fcn_t *real_pmpi_pcontrol = NULL;
|
||||||
|
+static f_mpi_pcontrol_fcn_t *real_pmpi_pcontrol_f0 = NULL;
|
||||||
|
+static f_mpi_pcontrol_fcn_t *real_pmpi_pcontrol_f1 = NULL;
|
||||||
|
+static f_mpi_pcontrol_fcn_t *real_pmpi_pcontrol_f2 = NULL;
|
||||||
|
+
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
*----------------------------------------------------------------------
|
||||||
|
* PMPI_INIT OVERRIDE FUNCTIONS
|
||||||
|
@@ -297,6 +307,7 @@
|
||||||
|
ret = (*real_pmpi_comm_size)(comm, &size);
|
||||||
|
ret = (*real_pmpi_comm_rank)(comm, rank);
|
||||||
|
monitor_set_mpi_size_rank(size, *rank);
|
||||||
|
+ monitor_mpi_post_comm_rank();
|
||||||
|
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
|
@@ -308,7 +319,9 @@
|
||||||
|
MONITOR_GET_REAL_NAME_WRAP(rank_var, rank_fcn); \
|
||||||
|
(*size_var)(comm, &size, ierror); \
|
||||||
|
(*rank_var)(comm, rank, ierror); \
|
||||||
|
- monitor_set_mpi_size_rank(size, *rank);
|
||||||
|
+ monitor_set_mpi_size_rank(size, *rank); \
|
||||||
|
+ monitor_mpi_post_comm_rank();
|
||||||
|
+
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In Fortran, MPI_Comm is always int.
|
||||||
|
@@ -333,3 +346,48 @@
|
||||||
|
FORTRAN_COMM_RANK_BODY(real_pmpi_comm_size_f2, pmpi_comm_size__,
|
||||||
|
real_pmpi_comm_rank_f2, pmpi_comm_rank__);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ *----------------------------------------------------------------------
|
||||||
|
+ * PMPI_PCONTROL OVERRIDE FUNCTIONS
|
||||||
|
+ *----------------------------------------------------------------------
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+MONITOR_WRAP_NAME(PMPI_Pcontrol)(int level)
|
||||||
|
+{
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ MONITOR_DEBUG("level = %d\n", level); \
|
||||||
|
+ MONITOR_GET_REAL_NAME_WRAP(real_pmpi_pcontrol, PMPI_Pcontrol);
|
||||||
|
+ ret = (*real_pmpi_pcontrol) (level) ;
|
||||||
|
+ monitor_mpi_pcontrol(level);
|
||||||
|
+
|
||||||
|
+ return (ret);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#define FORTRAN_PCONTROL_BODY(var_name, fcn_name)\
|
||||||
|
+ int ret; \
|
||||||
|
+ MONITOR_DEBUG("level = %d\n", level); \
|
||||||
|
+ MONITOR_GET_REAL_NAME_WRAP(var_name, fcn_name); \
|
||||||
|
+ ret = (*var_name) (level) ; \
|
||||||
|
+ monitor_mpi_pcontrol(level);
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+MONITOR_WRAP_NAME(pmpi_pcontrol)(int level)
|
||||||
|
+{
|
||||||
|
+ FORTRAN_PCONTROL_BODY(real_pmpi_pcontrol_f0, pmpi_pcontrol);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+MONITOR_WRAP_NAME(pmpi_pcontrol_)(int level)
|
||||||
|
+{
|
||||||
|
+ FORTRAN_PCONTROL_BODY(real_pmpi_pcontrol_f1, pmpi_pcontrol_);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+MONITOR_WRAP_NAME(pmpi_pcontrol__)(int level)
|
||||||
|
+{
|
||||||
|
+ FORTRAN_PCONTROL_BODY(real_pmpi_pcontrol_f2, pmpi_pcontrol__);
|
||||||
|
+}
|
||||||
|
--- libmonitor-20130218/src/mpi_pcontrol_c.c 1969-12-31 16:00:00.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/mpi_pcontrol_c.c 2013-02-18 10:34:17.882842602 -0800
|
||||||
|
@@ -0,0 +1,30 @@
|
||||||
|
+/*
|
||||||
|
+ * Override MPI_Pcontrol in C/C++.
|
||||||
|
+ *
|
||||||
|
+ *
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "config.h"
|
||||||
|
+#include "common.h"
|
||||||
|
+#include "monitor.h"
|
||||||
|
+
|
||||||
|
+typedef int mpi_pcontrol_fcn_t(int level);
|
||||||
|
+#ifdef MONITOR_STATIC
|
||||||
|
+extern mpi_pcontrol_fcn_t __real_MPI_Pcontrol;
|
||||||
|
+#endif
|
||||||
|
+static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+MONITOR_WRAP_NAME(MPI_Pcontrol)(int level)
|
||||||
|
+{
|
||||||
|
+ int ret, count;
|
||||||
|
+
|
||||||
|
+ MONITOR_DEBUG("level = %d\n", level); \
|
||||||
|
+
|
||||||
|
+ MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, MPI_Pcontrol);
|
||||||
|
+ ret = (*real_mpi_pcontrol)(level);
|
||||||
|
+ monitor_mpi_pcontrol(level);
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ return (ret);
|
||||||
|
+}
|
||||||
|
--- libmonitor-20130218/src/mpi_pcontrol_f0.c 1969-12-31 16:00:00.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/mpi_pcontrol_f0.c 2013-02-18 10:34:17.882842602 -0800
|
||||||
|
@@ -0,0 +1,24 @@
|
||||||
|
+/*
|
||||||
|
+ * Override mpi_pcontrol in Fortran.
|
||||||
|
+ *
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "config.h"
|
||||||
|
+#include "common.h"
|
||||||
|
+#include "monitor.h"
|
||||||
|
+
|
||||||
|
+typedef void mpi_pcontrol_fcn_t(int level);
|
||||||
|
+#ifdef MONITOR_STATIC
|
||||||
|
+extern mpi_pcontrol_fcn_t __real_mpi_pcontrol;
|
||||||
|
+#endif
|
||||||
|
+static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+MONITOR_WRAP_NAME(mpi_pcontrol)(int level)
|
||||||
|
+{
|
||||||
|
+ int count;
|
||||||
|
+
|
||||||
|
+ MONITOR_DEBUG1("\n");
|
||||||
|
+ MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, mpi_pcontrol);
|
||||||
|
+ (*real_mpi_pcontrol)(level);
|
||||||
|
+}
|
||||||
|
--- libmonitor-20130218/src/mpi_pcontrol_f1.c 1969-12-31 16:00:00.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/mpi_pcontrol_f1.c 2013-02-18 10:34:17.883842597 -0800
|
||||||
|
@@ -0,0 +1,24 @@
|
||||||
|
+/*
|
||||||
|
+ * Override mpi_pcontrol_ in Fortran.
|
||||||
|
+ *
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "config.h"
|
||||||
|
+#include "common.h"
|
||||||
|
+#include "monitor.h"
|
||||||
|
+
|
||||||
|
+typedef void mpi_pcontrol_fcn_t(int level);
|
||||||
|
+#ifdef MONITOR_STATIC
|
||||||
|
+extern mpi_pcontrol_fcn_t __real_mpi_pcontrol_;
|
||||||
|
+#endif
|
||||||
|
+static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+MONITOR_WRAP_NAME(mpi_pcontrol_)(int level)
|
||||||
|
+{
|
||||||
|
+ int count;
|
||||||
|
+
|
||||||
|
+ MONITOR_DEBUG1("\n");
|
||||||
|
+ MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, mpi_pcontrol_);
|
||||||
|
+ (*real_mpi_pcontrol)(level);
|
||||||
|
+}
|
||||||
|
--- libmonitor-20130218/src/mpi_pcontrol_f2.c 1969-12-31 16:00:00.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/mpi_pcontrol_f2.c 2013-02-18 10:34:17.883842597 -0800
|
||||||
|
@@ -0,0 +1,24 @@
|
||||||
|
+/*
|
||||||
|
+ * Override mpi_pcontrol__ in Fortran.
|
||||||
|
+ *
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "config.h"
|
||||||
|
+#include "common.h"
|
||||||
|
+#include "monitor.h"
|
||||||
|
+
|
||||||
|
+typedef void mpi_pcontrol_fcn_t(int level);
|
||||||
|
+#ifdef MONITOR_STATIC
|
||||||
|
+extern mpi_pcontrol_fcn_t __real_mpi_pcontrol__;
|
||||||
|
+#endif
|
||||||
|
+static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+MONITOR_WRAP_NAME(mpi_pcontrol__)(int level)
|
||||||
|
+{
|
||||||
|
+ int count;
|
||||||
|
+
|
||||||
|
+ MONITOR_DEBUG1("\n");
|
||||||
|
+ MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, mpi_pcontrol__);
|
||||||
|
+ (*real_mpi_pcontrol)(level);
|
||||||
|
+}
|
||||||
|
--- libmonitor-20130218/src/Makefile.am 2013-02-17 23:08:32.000000000 -0800
|
||||||
|
+++ libmonitor-20130218-fixes/src/Makefile.am 2013-02-18 10:34:17.931842343 -0800
|
||||||
|
@@ -38,10 +38,11 @@
|
||||||
|
MONITOR_THREAD_FILES = pthread.c
|
||||||
|
MONITOR_SCRIPT_FILES = monitor-link monitor-run
|
||||||
|
MONITOR_MPI_FILES = \
|
||||||
|
- mpi_init_c.c mpi_init_thread_c.c mpi_final_c.c mpi_comm_c.c \
|
||||||
|
- mpi_init_f0.c mpi_init_thread_f0.c mpi_final_f0.c mpi_comm_f0.c \
|
||||||
|
- mpi_init_f1.c mpi_init_thread_f1.c mpi_final_f1.c mpi_comm_f1.c \
|
||||||
|
- mpi_init_f2.c mpi_init_thread_f2.c mpi_final_f2.c mpi_comm_f2.c
|
||||||
|
+ mpi_init_c.c mpi_init_thread_c.c mpi_final_c.c mpi_comm_c.c mpi_pcontrol_c.c \
|
||||||
|
+ mpi_init_f0.c mpi_init_thread_f0.c mpi_final_f0.c mpi_comm_f0.c mpi_pcontrol_f0.c \
|
||||||
|
+ mpi_init_f1.c mpi_init_thread_f1.c mpi_final_f1.c mpi_comm_f1.c mpi_pcontrol_f1.c \
|
||||||
|
+ mpi_init_f2.c mpi_init_thread_f2.c mpi_final_f2.c mpi_comm_f2.c mpi_pcontrol_f2.c
|
||||||
|
+
|
||||||
|
|
||||||
|
include_HEADERS = monitor.h
|
||||||
|
bin_SCRIPTS =
|
106
var/spack/packages/libmonitor/libmonitorkrell-0002.patch
Normal file
106
var/spack/packages/libmonitor/libmonitorkrell-0002.patch
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
--- libmonitor-20130218/src/pmpi.c 2013-02-18 11:34:17.000000000 -0700
|
||||||
|
+++ libmonitor-20130218-fixed/src/pmpi.c 2013-04-11 10:03:59.300550393 -0600
|
||||||
|
@@ -355,7 +355,7 @@
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
-MONITOR_WRAP_NAME(PMPI_Pcontrol)(int level)
|
||||||
|
+MONITOR_WRAP_NAME(PMPI_Pcontrol)(int level, int *ierror )
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
@@ -375,19 +375,19 @@
|
||||||
|
monitor_mpi_pcontrol(level);
|
||||||
|
|
||||||
|
int
|
||||||
|
-MONITOR_WRAP_NAME(pmpi_pcontrol)(int level)
|
||||||
|
+MONITOR_WRAP_NAME(pmpi_pcontrol)(int level, int *ierror )
|
||||||
|
{
|
||||||
|
FORTRAN_PCONTROL_BODY(real_pmpi_pcontrol_f0, pmpi_pcontrol);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
-MONITOR_WRAP_NAME(pmpi_pcontrol_)(int level)
|
||||||
|
+MONITOR_WRAP_NAME(pmpi_pcontrol_)(int level, int *ierror )
|
||||||
|
{
|
||||||
|
FORTRAN_PCONTROL_BODY(real_pmpi_pcontrol_f1, pmpi_pcontrol_);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
-MONITOR_WRAP_NAME(pmpi_pcontrol__)(int level)
|
||||||
|
+MONITOR_WRAP_NAME(pmpi_pcontrol__)(int level, int *ierror )
|
||||||
|
{
|
||||||
|
FORTRAN_PCONTROL_BODY(real_pmpi_pcontrol_f2, pmpi_pcontrol__);
|
||||||
|
}
|
||||||
|
--- libmonitor-20130218/src/mpi_pcontrol_f0.c 2013-02-18 11:34:17.000000000 -0700
|
||||||
|
+++ libmonitor-20130218-fixed/src/mpi_pcontrol_f0.c 2013-04-11 10:13:47.783002000 -0600
|
||||||
|
@@ -7,18 +7,18 @@
|
||||||
|
#include "common.h"
|
||||||
|
#include "monitor.h"
|
||||||
|
|
||||||
|
-typedef void mpi_pcontrol_fcn_t(int level);
|
||||||
|
+typedef void mpi_pcontrol_fcn_t(int level, int *ierror);
|
||||||
|
#ifdef MONITOR_STATIC
|
||||||
|
extern mpi_pcontrol_fcn_t __real_mpi_pcontrol;
|
||||||
|
#endif
|
||||||
|
static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
|
||||||
|
|
||||||
|
int
|
||||||
|
-MONITOR_WRAP_NAME(mpi_pcontrol)(int level)
|
||||||
|
+MONITOR_WRAP_NAME(mpi_pcontrol)(int level, int *ierror)
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
|
||||||
|
MONITOR_DEBUG1("\n");
|
||||||
|
MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, mpi_pcontrol);
|
||||||
|
- (*real_mpi_pcontrol)(level);
|
||||||
|
+ (*real_mpi_pcontrol)(level, ierror);
|
||||||
|
}
|
||||||
|
--- libmonitor-20130218/src/mpi_pcontrol_f1.c 2013-02-18 11:34:17.000000000 -0700
|
||||||
|
+++ libmonitor-20130218-fixed/src/mpi_pcontrol_f1.c 2013-04-11 10:14:08.039214000 -0600
|
||||||
|
@@ -7,18 +7,18 @@
|
||||||
|
#include "common.h"
|
||||||
|
#include "monitor.h"
|
||||||
|
|
||||||
|
-typedef void mpi_pcontrol_fcn_t(int level);
|
||||||
|
+typedef void mpi_pcontrol_fcn_t(int level, int *ierror);
|
||||||
|
#ifdef MONITOR_STATIC
|
||||||
|
extern mpi_pcontrol_fcn_t __real_mpi_pcontrol_;
|
||||||
|
#endif
|
||||||
|
static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
|
||||||
|
|
||||||
|
int
|
||||||
|
-MONITOR_WRAP_NAME(mpi_pcontrol_)(int level)
|
||||||
|
+MONITOR_WRAP_NAME(mpi_pcontrol_)(int level, int *ierror)
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
|
||||||
|
MONITOR_DEBUG1("\n");
|
||||||
|
MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, mpi_pcontrol_);
|
||||||
|
- (*real_mpi_pcontrol)(level);
|
||||||
|
+ (*real_mpi_pcontrol)(level, ierror);
|
||||||
|
}
|
||||||
|
--- libmonitor-20130218/src/mpi_pcontrol_f2.c 2013-02-18 11:34:17.000000000 -0700
|
||||||
|
+++ libmonitor-20130218-fixed/src/mpi_pcontrol_f2.c 2013-04-11 10:14:19.000960000 -0600
|
||||||
|
@@ -7,18 +7,18 @@
|
||||||
|
#include "common.h"
|
||||||
|
#include "monitor.h"
|
||||||
|
|
||||||
|
-typedef void mpi_pcontrol_fcn_t(int level);
|
||||||
|
+typedef void mpi_pcontrol_fcn_t(int level, int *ierror);
|
||||||
|
#ifdef MONITOR_STATIC
|
||||||
|
extern mpi_pcontrol_fcn_t __real_mpi_pcontrol__;
|
||||||
|
#endif
|
||||||
|
static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
|
||||||
|
|
||||||
|
int
|
||||||
|
-MONITOR_WRAP_NAME(mpi_pcontrol__)(int level)
|
||||||
|
+MONITOR_WRAP_NAME(mpi_pcontrol__)(int level, int *ierror)
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
|
||||||
|
MONITOR_DEBUG1("\n");
|
||||||
|
MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, mpi_pcontrol__);
|
||||||
|
- (*real_mpi_pcontrol)(level);
|
||||||
|
+ (*real_mpi_pcontrol)(level, ierror);
|
||||||
|
}
|
@ -29,6 +29,13 @@ class Libmonitor(Package):
|
|||||||
homepage = "http://hpctoolkit.org"
|
homepage = "http://hpctoolkit.org"
|
||||||
|
|
||||||
version('20130218', svn='http://libmonitor.googlecode.com/svn/trunk/', revision=146)
|
version('20130218', svn='http://libmonitor.googlecode.com/svn/trunk/', revision=146)
|
||||||
|
variant('krellpatch', default=False, description="build with openspeedshop based patch.")
|
||||||
|
|
||||||
|
|
||||||
|
patch('libmonitorkrell-0000.patch', when='@20130218+krellpatch')
|
||||||
|
patch('libmonitorkrell-0001.patch', when='@20130218+krellpatch')
|
||||||
|
patch('libmonitorkrell-0002.patch', when='@20130218+krellpatch')
|
||||||
|
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
configure("--prefix=" + prefix)
|
configure("--prefix=" + prefix)
|
||||||
|
26
var/spack/packages/lmod/package.py
Normal file
26
var/spack/packages/lmod/package.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
from spack import *
|
||||||
|
import os
|
||||||
|
|
||||||
|
class Lmod(Package):
|
||||||
|
"""
|
||||||
|
Lmod is a Lua based module system that easily handles the MODULEPATH
|
||||||
|
Hierarchical problem. Environment Modules provide a convenient way to
|
||||||
|
dynamically change the users' environment through modulefiles. This
|
||||||
|
includes easily adding or removing directories to the PATH environment
|
||||||
|
variable. Modulefiles for Library packages provide environment variables
|
||||||
|
that specify where the library and header files can be found.
|
||||||
|
"""
|
||||||
|
homepage = "https://www.tacc.utexas.edu/research-development/tacc-projects/lmod"
|
||||||
|
url = "http://sourceforge.net/projects/lmod/files/Lmod-6.0.1.tar.bz2/download"
|
||||||
|
|
||||||
|
version('6.0.1', '91abf52fe5033bd419ffe2842ebe7af9')
|
||||||
|
|
||||||
|
depends_on("lua@5.2:")
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
# Add our lua to PATH
|
||||||
|
os.environ['PATH'] = spec['lua'].prefix.bin + ';' + os.environ['PATH']
|
||||||
|
|
||||||
|
configure('--prefix=%s' % prefix)
|
||||||
|
make()
|
||||||
|
make("install")
|
@ -85,8 +85,13 @@ def filter_compilers(self):
|
|||||||
mpif77 = os.path.join(bin, 'mpif77')
|
mpif77 = os.path.join(bin, 'mpif77')
|
||||||
mpif90 = os.path.join(bin, 'mpif90')
|
mpif90 = os.path.join(bin, 'mpif90')
|
||||||
|
|
||||||
|
spack_cc = os.environ['CC']
|
||||||
|
spack_cxx = os.environ['CXX']
|
||||||
|
spack_f77 = os.environ['F77']
|
||||||
|
spack_fc = os.environ['FC']
|
||||||
|
|
||||||
kwargs = { 'ignore_absent' : True, 'backup' : False, 'string' : True }
|
kwargs = { 'ignore_absent' : True, 'backup' : False, 'string' : True }
|
||||||
filter_file('CC="cc"', 'CC="%s"' % self.compiler.cc, mpicc, **kwargs)
|
filter_file('CC="%s"' % spack_cc , 'CC="%s"' % self.compiler.cc, mpicc, **kwargs)
|
||||||
filter_file('CXX="c++"', 'CXX="%s"' % self.compiler.cxx, mpicxx, **kwargs)
|
filter_file('CXX="%s"'% spack_cxx, 'CXX="%s"' % self.compiler.cxx, mpicxx, **kwargs)
|
||||||
filter_file('F77="f77"', 'F77="%s"' % self.compiler.f77, mpif77, **kwargs)
|
filter_file('F77="%s"'% spack_f77, 'F77="%s"' % self.compiler.f77, mpif77, **kwargs)
|
||||||
filter_file('FC="f90"', 'FC="%s"' % self.compiler.fc, mpif90, **kwargs)
|
filter_file('FC="%s"' % spack_fc , 'FC="%s"' % self.compiler.fc, mpif90, **kwargs)
|
||||||
|
@ -7,12 +7,18 @@ class Mrnet(Package):
|
|||||||
|
|
||||||
version('4.0.0', 'd00301c078cba57ef68613be32ceea2f')
|
version('4.0.0', 'd00301c078cba57ef68613be32ceea2f')
|
||||||
version('4.1.0', '5a248298b395b329e2371bf25366115c')
|
version('4.1.0', '5a248298b395b329e2371bf25366115c')
|
||||||
|
version('5.0.1', '17f65738cf1b9f9b95647ff85f69ecdd')
|
||||||
|
|
||||||
|
variant('lwthreads', default=False, description="Also build the MRNet LW threadsafe libraries")
|
||||||
parallel = False
|
parallel = False
|
||||||
|
|
||||||
depends_on("boost")
|
depends_on("boost")
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
|
# Build the MRNet LW thread safe libraries when the krelloptions variant is present
|
||||||
|
if '+lwthreads' in spec:
|
||||||
|
configure("--prefix=%s" %prefix, "--enable-shared", "--enable-ltwt-threadsafe")
|
||||||
|
else:
|
||||||
configure("--prefix=%s" %prefix, "--enable-shared")
|
configure("--prefix=%s" %prefix, "--enable-shared")
|
||||||
|
|
||||||
make()
|
make()
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from spack import *
|
from spack import *
|
||||||
|
import os
|
||||||
|
|
||||||
class Mvapich2(Package):
|
class Mvapich2(Package):
|
||||||
"""MVAPICH2 is an MPI implementation for Infiniband networks."""
|
"""MVAPICH2 is an MPI implementation for Infiniband networks."""
|
||||||
@ -154,3 +154,31 @@ def install(self, spec, prefix):
|
|||||||
configure(*configure_args)
|
configure(*configure_args)
|
||||||
make()
|
make()
|
||||||
make("install")
|
make("install")
|
||||||
|
|
||||||
|
self.filter_compilers()
|
||||||
|
|
||||||
|
|
||||||
|
def filter_compilers(self):
|
||||||
|
"""Run after install to make the MPI compilers use the
|
||||||
|
compilers that Spack built the package with.
|
||||||
|
|
||||||
|
If this isn't done, they'll have CC, CXX, F77, and FC set
|
||||||
|
to Spack's generic cc, c++, f77, and f90. We want them to
|
||||||
|
be bound to whatever compiler they were built with.
|
||||||
|
"""
|
||||||
|
bin = self.prefix.bin
|
||||||
|
mpicc = os.path.join(bin, 'mpicc')
|
||||||
|
mpicxx = os.path.join(bin, 'mpicxx')
|
||||||
|
mpif77 = os.path.join(bin, 'mpif77')
|
||||||
|
mpif90 = os.path.join(bin, 'mpif90')
|
||||||
|
|
||||||
|
spack_cc = os.environ['CC']
|
||||||
|
spack_cxx = os.environ['CXX']
|
||||||
|
spack_f77 = os.environ['F77']
|
||||||
|
spack_fc = os.environ['FC']
|
||||||
|
|
||||||
|
kwargs = { 'ignore_absent' : True, 'backup' : False, 'string' : True }
|
||||||
|
filter_file('CC="%s"' % spack_cc , 'CC="%s"' % self.compiler.cc, mpicc, **kwargs)
|
||||||
|
filter_file('CXX="%s"'% spack_cxx, 'CXX="%s"' % self.compiler.cxx, mpicxx, **kwargs)
|
||||||
|
filter_file('F77="%s"'% spack_f77, 'F77="%s"' % self.compiler.f77, mpif77, **kwargs)
|
||||||
|
filter_file('FC="%s"' % spack_fc , 'FC="%s"' % self.compiler.fc, mpif90, **kwargs)
|
||||||
|
@ -17,6 +17,8 @@ class Opari2(Package):
|
|||||||
homepage = "http://www.vi-hps.org/projects/score-p"
|
homepage = "http://www.vi-hps.org/projects/score-p"
|
||||||
url = "http://www.vi-hps.org/upload/packages/opari2/opari2-1.1.2.tar.gz"
|
url = "http://www.vi-hps.org/upload/packages/opari2/opari2-1.1.2.tar.gz"
|
||||||
|
|
||||||
|
version('1.1.4', '245d3d11147a06de77909b0805f530c0',
|
||||||
|
url='http://www.vi-hps.org/upload/packages/opari2/opari2-1.1.4.tar.gz')
|
||||||
version('1.1.2', '9a262c7ca05ff0ab5f7775ae96f3539e')
|
version('1.1.2', '9a262c7ca05ff0ab5f7775ae96f3539e')
|
||||||
|
|
||||||
backend_user_provided = """\
|
backend_user_provided = """\
|
||||||
|
216
var/spack/packages/openspeedshop/package.py
Normal file
216
var/spack/packages/openspeedshop/package.py
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
################################################################################
|
||||||
|
# Copyright (c) 2015 Krell Institute. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under
|
||||||
|
# the terms of the GNU General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 2 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
# details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along with
|
||||||
|
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||||
|
# Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
class Openspeedshop(Package):
|
||||||
|
"""OpenSpeedShop is a community effort by The Krell Institute with current direct funding from DOEs NNSA.
|
||||||
|
It builds on top of a broad list of community infrastructures, most notably Dyninst and MRNet from UW,
|
||||||
|
libmonitor from Rice, and PAPI from UTK. OpenSpeedShop is an open source multi platform Linux performance
|
||||||
|
tool which is targeted to support performance analysis of applications running on both single node and
|
||||||
|
large scale IA64, IA32, EM64T, AMD64, PPC, ARM, Blue Gene and Cray platforms. OpenSpeedShop development
|
||||||
|
is hosted by the Krell Institute. The infrastructure and base components of OpenSpeedShop are released
|
||||||
|
as open source code primarily under LGPL.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
homepage = "http://www.openspeedshop.org"
|
||||||
|
url = "http://sourceforge.net/projects/openss/files/openss/openspeedshop-2.2/openspeedshop-2.2.tar.gz/download"
|
||||||
|
version('2.2', '16cb051179c2038de4e8a845edf1d573')
|
||||||
|
|
||||||
|
#homepage = "http://www.openspeedshop.org"
|
||||||
|
#url = "http://sourceforge.net/projects/openss/files/openss/openspeedshop-2.1/openspeedshop-2.1.tar.gz/download"
|
||||||
|
#version('2.1', 'bdaa57c1a0db9d0c3e0303fd8496c507')
|
||||||
|
|
||||||
|
# optional mirror template
|
||||||
|
#url = "file:/g/g24/jeg/openspeedshop-2.1.tar.gz"
|
||||||
|
#version('2.1', '64ee17166519838c7b94a1adc138e94f')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
parallel = False
|
||||||
|
|
||||||
|
variant('offline', default=True, description="build with offline instrumentor enabled.")
|
||||||
|
variant('cbtf', default=False, description="build with cbtf instrumentor enabled.")
|
||||||
|
variant('runtime', default=False, description="build only the runtime libraries and collectors.")
|
||||||
|
variant('frontend', default=False, description="build only the front-end tool using the runtime_dir to point to the target build.")
|
||||||
|
variant('cuda', default=False, description="build with cuda packages included.")
|
||||||
|
variant('ptgf', default=False, description="build with the PTGF based gui package enabled.")
|
||||||
|
variant('intelmic', default=False, description="build for the Intel MIC platform.")
|
||||||
|
variant('cray', default=False, description="build for Cray platforms.")
|
||||||
|
variant('bluegene', default=False, description="build for Cray platforms.")
|
||||||
|
variant('rtfe', default=False, description="build for generic cluster platforms that have different processors on the fe and be nodes.")
|
||||||
|
|
||||||
|
# Dependencies for openspeedshop that are common to all the variants of the OpenSpeedShop build
|
||||||
|
depends_on("bison")
|
||||||
|
depends_on("flex")
|
||||||
|
depends_on("binutils@2.24+krellpatch")
|
||||||
|
depends_on("libelf")
|
||||||
|
depends_on("libdwarf")
|
||||||
|
depends_on("sqlite")
|
||||||
|
depends_on("boost@1.50.0")
|
||||||
|
depends_on("dyninst@8.2.1")
|
||||||
|
depends_on("python")
|
||||||
|
depends_on("qt@3.3.8b+krellpatch")
|
||||||
|
|
||||||
|
# Dependencies only for the openspeedshop offline package.
|
||||||
|
depends_on("libunwind", when='+offline')
|
||||||
|
depends_on("papi", when='+offline')
|
||||||
|
depends_on("libmonitor+krellpatch", when='+offline')
|
||||||
|
#depends_on("openmpi+krelloptions", when='+offline')
|
||||||
|
#depends_on("openmpi", when='+offline')
|
||||||
|
#depends_on("mpich", when='+offline')
|
||||||
|
|
||||||
|
# Dependencies only for the openspeedshop cbtf package.
|
||||||
|
depends_on("cbtf", when='+cbtf')
|
||||||
|
depends_on("cbtf-krell", when='+cbtf')
|
||||||
|
depends_on("cbtf-argonavis", when='+cbtf')
|
||||||
|
depends_on("mrnet@4.1.0:+lwthreads", when='+cbtf')
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
|
||||||
|
#openmpi_prefix_path = "/opt/openmpi-1.8.2"
|
||||||
|
#mvapich_prefix_path = "/usr/local/tools/mvapich-gnu"
|
||||||
|
#'-DOPENMPI_DIR=%s' % spec['openmpi'].prefix,
|
||||||
|
#'-DOPENMPI_DIR=%s' % openmpi_prefix_path,
|
||||||
|
#'-DMVAPICH_DIR=%s' % mvapich_prefix_path,
|
||||||
|
|
||||||
|
# FIXME: How do we make this dynamic in spack? That is, can we specify the paths to cuda dynamically?
|
||||||
|
# WAITING for external package support.
|
||||||
|
#if '+cuda' in spec:
|
||||||
|
# cuda_prefix_path = "/usr/local/cuda-6.0"
|
||||||
|
# cupti_prefix_path = "/usr/local/cuda-6.0/extras/CUPTI"
|
||||||
|
|
||||||
|
if '+offline' in spec:
|
||||||
|
instrumentor_setting = "offline"
|
||||||
|
if '+runtime' in spec:
|
||||||
|
with working_dir('build_runtime', create=True):
|
||||||
|
cmake('..',
|
||||||
|
'-DCMAKE_INSTALL_PREFIX=%s' % prefix,
|
||||||
|
'-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64,
|
||||||
|
'-DINSTRUMENTOR=%s' % instrumentor_setting,
|
||||||
|
'-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix,
|
||||||
|
'-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix,
|
||||||
|
'-DPAPI_DIR=%s' % spec['papi'].prefix,
|
||||||
|
*std_cmake_args)
|
||||||
|
make("clean")
|
||||||
|
make()
|
||||||
|
make("install")
|
||||||
|
else:
|
||||||
|
cmake_prefix_path = join_path(spec['dyninst'].prefix)
|
||||||
|
with working_dir('build', create=True):
|
||||||
|
#python_vers=join_path(spec['python'].version[:2])
|
||||||
|
#'-DOPENMPI_DIR=%s' % openmpi_prefix_path,
|
||||||
|
#'-DMVAPICH_DIR=%s' % mvapich_prefix_path,
|
||||||
|
python_vers='%d.%d' % spec['python'].version[:2]
|
||||||
|
cmake('..',
|
||||||
|
'-DCMAKE_INSTALL_PREFIX=%s' % prefix,
|
||||||
|
'-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64,
|
||||||
|
'-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
|
||||||
|
'-DINSTRUMENTOR=%s' % instrumentor_setting,
|
||||||
|
'-DBINUTILS_DIR=%s' % spec['binutils'].prefix,
|
||||||
|
'-DLIBELF_DIR=%s' % spec['libelf'].prefix,
|
||||||
|
'-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix,
|
||||||
|
'-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix,
|
||||||
|
'-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix,
|
||||||
|
'-DPAPI_DIR=%s' % spec['papi'].prefix,
|
||||||
|
'-DSQLITE3_DIR=%s' % spec['sqlite'].prefix,
|
||||||
|
'-DQTLIB_DIR=%s' % spec['qt'].prefix,
|
||||||
|
'-DPYTHON_EXECUTABLE=%s' % join_path(spec['python'].prefix + '/bin/python'),
|
||||||
|
'-DPYTHON_INCLUDE_DIR=%s' % join_path(spec['python'].prefix.include) + '/python' + python_vers,
|
||||||
|
'-DPYTHON_LIBRARY=%s' % join_path(spec['python'].prefix.lib) + '/libpython' + python_vers + '.so',
|
||||||
|
'-DBoost_NO_SYSTEM_PATHS=TRUE',
|
||||||
|
'-DBOOST_ROOT=%s' % spec['boost'].prefix,
|
||||||
|
'-DDYNINST_DIR=%s' % spec['dyninst'].prefix,
|
||||||
|
*std_cmake_args)
|
||||||
|
make("clean")
|
||||||
|
make()
|
||||||
|
make("install")
|
||||||
|
|
||||||
|
elif '+cbtf' in spec:
|
||||||
|
instrumentor_setting = "cbtf"
|
||||||
|
cmake_prefix_path = join_path(spec['cbtf'].prefix) + ':' + join_path(spec['cbtf-krell'].prefix) + ':' + join_path(spec['dyninst'].prefix)
|
||||||
|
if '+runtime' in spec:
|
||||||
|
with working_dir('build_cbtf_runtime', create=True):
|
||||||
|
python_vers='%d.%d' % spec['python'].version[:2]
|
||||||
|
cmake('..',
|
||||||
|
'-DCMAKE_INSTALL_PREFIX=%s' % prefix,
|
||||||
|
'-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64,
|
||||||
|
'-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
|
||||||
|
'-DINSTRUMENTOR=%s' % instrumentor_setting,
|
||||||
|
'-DBINUTILS_DIR=%s' % spec['binutils'].prefix,
|
||||||
|
'-DLIBELF_DIR=%s' % spec['libelf'].prefix,
|
||||||
|
'-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix,
|
||||||
|
'-DCBTF_DIR=%s' % spec['cbtf'].prefix,
|
||||||
|
'-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix,
|
||||||
|
'-DPYTHON_EXECUTABLE=%s' % join_path(spec['python'].prefix + '/bin/python'),
|
||||||
|
'-DPYTHON_INCLUDE_DIR=%s' % join_path(spec['python'].prefix.include) + '/python' + python_vers,
|
||||||
|
'-DPYTHON_LIBRARY=%s' % join_path(spec['python'].prefix.lib) + '/libpython' + python_vers + '.so',
|
||||||
|
'-DBoost_NO_SYSTEM_PATHS=TRUE',
|
||||||
|
'-DBOOST_ROOT=%s' % spec['boost'].prefix,
|
||||||
|
'-DDYNINST_DIR=%s' % spec['dyninst'].prefix,
|
||||||
|
'-DMRNET_DIR=%s' % spec['mrnet'].prefix,
|
||||||
|
*std_cmake_args)
|
||||||
|
make("clean")
|
||||||
|
make()
|
||||||
|
make("install")
|
||||||
|
|
||||||
|
else:
|
||||||
|
with working_dir('build_cbtf', create=True):
|
||||||
|
python_vers='%d.%d' % spec['python'].version[:2]
|
||||||
|
#python_vers=join_path(spec['python'].version[:2])
|
||||||
|
cmake('..',
|
||||||
|
'-DCMAKE_INSTALL_PREFIX=%s' % prefix,
|
||||||
|
'-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64,
|
||||||
|
'-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
|
||||||
|
'-DINSTRUMENTOR=%s' % instrumentor_setting,
|
||||||
|
'-DBINUTILS_DIR=%s' % spec['binutils'].prefix,
|
||||||
|
'-DLIBELF_DIR=%s' % spec['libelf'].prefix,
|
||||||
|
'-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix,
|
||||||
|
'-DSQLITE3_DIR=%s' % spec['sqlite'].prefix,
|
||||||
|
'-DCBTF_DIR=%s' % spec['cbtf'].prefix,
|
||||||
|
'-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix,
|
||||||
|
'-DQTLIB_DIR=%s' % spec['qt'].prefix,
|
||||||
|
'-DPYTHON_EXECUTABLE=%s' % join_path(spec['python'].prefix + '/bin/python'),
|
||||||
|
'-DPYTHON_INCLUDE_DIR=%s' % join_path(spec['python'].prefix.include) + '/python' + python_vers,
|
||||||
|
'-DPYTHON_LIBRARY=%s' % join_path(spec['python'].prefix.lib) + '/libpython' + python_vers + '.so',
|
||||||
|
'-DBoost_NO_SYSTEM_PATHS=TRUE',
|
||||||
|
'-DBOOST_ROOT=%s' % spec['boost'].prefix,
|
||||||
|
'-DDYNINST_DIR=%s' % spec['dyninst'].prefix,
|
||||||
|
'-DMRNET_DIR=%s' % spec['mrnet'].prefix,
|
||||||
|
*std_cmake_args)
|
||||||
|
make("clean")
|
||||||
|
make()
|
||||||
|
make("install")
|
||||||
|
|
||||||
|
#if '+frontend' in spec:
|
||||||
|
# with working_dir('build_frontend', create=True):
|
||||||
|
# tbd
|
||||||
|
|
||||||
|
|
||||||
|
#if '+intelmic' in spec:
|
||||||
|
# with working_dir('build_intelmic_compute', create=True):
|
||||||
|
# tbd
|
||||||
|
# with working_dir('build_intelmic_frontend', create=True):
|
||||||
|
# tbd
|
||||||
|
|
||||||
|
#if '+cray' in spec:
|
||||||
|
# with working_dir('build_cray_compute', create=True):
|
||||||
|
# tbd
|
||||||
|
# with working_dir('build_cray_frontend', create=True):
|
||||||
|
# tbd
|
@ -11,6 +11,10 @@ class Otf2(Package):
|
|||||||
homepage = "http://www.vi-hps.org/score-p"
|
homepage = "http://www.vi-hps.org/score-p"
|
||||||
url = "http://www.vi-hps.org/upload/packages/otf2/otf2-1.4.tar.gz"
|
url = "http://www.vi-hps.org/upload/packages/otf2/otf2-1.4.tar.gz"
|
||||||
|
|
||||||
|
version('2.0', '5b546188b25bc1c4e285e06dddf75dfc',
|
||||||
|
url="http://www.vi-hps.org/upload/packages/otf2/otf2-2.0.tar.gz")
|
||||||
|
version('1.5.1', '16a9df46e0da78e374f5d12c8cdc1109',
|
||||||
|
url='http://www.vi-hps.org/upload/packages/otf2/otf2-1.5.1.tar.gz')
|
||||||
version('1.4', 'a23c42e936eb9209c4e08b61c3cf5092',
|
version('1.4', 'a23c42e936eb9209c4e08b61c3cf5092',
|
||||||
url="http://www.vi-hps.org/upload/packages/otf2/otf2-1.4.tar.gz")
|
url="http://www.vi-hps.org/upload/packages/otf2/otf2-1.4.tar.gz")
|
||||||
version('1.3.1', 'd0ffc4e858455ace4f596f910e68c9f2',
|
version('1.3.1', 'd0ffc4e858455ace4f596f910e68c9f2',
|
||||||
|
@ -11,8 +11,8 @@ class Papi(Package):
|
|||||||
components that expose performance measurement opportunites
|
components that expose performance measurement opportunites
|
||||||
across the hardware and software stack."""
|
across the hardware and software stack."""
|
||||||
homepage = "http://icl.cs.utk.edu/papi/index.html"
|
homepage = "http://icl.cs.utk.edu/papi/index.html"
|
||||||
url = "http://icl.cs.utk.edu/projects/papi/downloads/papi-5.3.0.tar.gz"
|
|
||||||
|
|
||||||
|
url = "http://icl.cs.utk.edu/projects/papi/downloads/papi-5.4.1.tar.gz"
|
||||||
version('5.4.1', '9134a99219c79767a11463a76b0b01a2')
|
version('5.4.1', '9134a99219c79767a11463a76b0b01a2')
|
||||||
version('5.3.0', '367961dd0ab426e5ae367c2713924ffb')
|
version('5.3.0', '367961dd0ab426e5ae367c2713924ffb')
|
||||||
|
|
||||||
|
45
var/spack/packages/pdt/package.py
Normal file
45
var/spack/packages/pdt/package.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
##############################################################################
|
||||||
|
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
|
||||||
|
# Produced at the Lawrence Livermore National Laboratory.
|
||||||
|
#
|
||||||
|
# This file is part of Spack.
|
||||||
|
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
|
||||||
|
# LLNL-CODE-647188
|
||||||
|
#
|
||||||
|
# For details, see https://github.com/llnl/spack
|
||||||
|
# Please also see the LICENSE file for our notice and the LGPL.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License (as published by
|
||||||
|
# the Free Software Foundation) version 2.1 dated February 1999.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
|
||||||
|
# conditions of the GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
|
class Pdt(Package):
|
||||||
|
"""
|
||||||
|
Program Database Toolkit (PDT) is a framework for analyzing source code written in several programming languages
|
||||||
|
and for making rich program knowledge accessible to developers of static and dynamic analysis tools. PDT implements
|
||||||
|
a standard program representation, the program database (PDB), that can be accessed in a uniform way through a
|
||||||
|
class library supporting common PDB operations.
|
||||||
|
"""
|
||||||
|
homepage = "https://www.cs.uoregon.edu/research/pdt/home.php"
|
||||||
|
url = "https://www.cs.uoregon.edu/research/tau/pdt_releases/pdt-3.21.tar.gz"
|
||||||
|
|
||||||
|
version('3.21', '8df94298b71703decf680709a4ddf68f')
|
||||||
|
version('3.19', 'ba5591994998771fdab216699e362228')
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
configure('-prefix=%s' % prefix)
|
||||||
|
make()
|
||||||
|
make("install")
|
@ -4,7 +4,7 @@ class PyCffi(Package):
|
|||||||
"""Foreign Function Interface for Python calling C code"""
|
"""Foreign Function Interface for Python calling C code"""
|
||||||
homepage = "http://cffi.readthedocs.org/en/latest/"
|
homepage = "http://cffi.readthedocs.org/en/latest/"
|
||||||
# base https://pypi.python.org/pypi/cffi
|
# base https://pypi.python.org/pypi/cffi
|
||||||
url = "https://pypi.python.org/packages/source/c/cffi/cffi-1.1.2.tar.gz#md5="
|
url = "https://pypi.python.org/packages/source/c/cffi/cffi-1.1.2.tar.gz"
|
||||||
|
|
||||||
version('1.1.2', 'ca6e6c45b45caa87aee9adc7c796eaea')
|
version('1.1.2', 'ca6e6c45b45caa87aee9adc7c796eaea')
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
import re
|
import re
|
||||||
from contextlib import closing
|
from contextlib import closing
|
||||||
from llnl.util.lang import match_predicate
|
from llnl.util.lang import match_predicate
|
||||||
|
from spack.util.environment import *
|
||||||
|
|
||||||
from spack import *
|
from spack import *
|
||||||
import spack
|
import spack
|
||||||
@ -16,22 +17,33 @@ class Python(Package):
|
|||||||
|
|
||||||
version('2.7.8', 'd235bdfa75b8396942e360a70487ee00')
|
version('2.7.8', 'd235bdfa75b8396942e360a70487ee00')
|
||||||
version('2.7.10', 'c685ef0b8e9f27b5e3db5db12b268ac6')
|
version('2.7.10', 'c685ef0b8e9f27b5e3db5db12b268ac6')
|
||||||
|
version('3.5.0', 'd149d2812f10cbe04c042232e7964171')
|
||||||
|
|
||||||
depends_on("openssl")
|
depends_on("openssl")
|
||||||
depends_on("bzip2")
|
depends_on("bzip2")
|
||||||
depends_on("readline")
|
depends_on("readline")
|
||||||
depends_on("ncurses")
|
depends_on("ncurses")
|
||||||
depends_on("sqlite")
|
depends_on("sqlite")
|
||||||
|
depends_on("zlib")
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
# Need this to allow python build to find the Python installation.
|
# Need this to allow python build to find the Python installation.
|
||||||
env['PYTHONHOME'] = prefix
|
env['PYTHONHOME'] = prefix
|
||||||
env['MACOSX_DEPLOYMENT_TARGET'] = '10.6'
|
env['MACOSX_DEPLOYMENT_TARGET'] = '10.6'
|
||||||
|
|
||||||
# Rest of install is pretty standard.
|
# Rest of install is pretty standard except setup.py needs to be able to read the CPPFLAGS
|
||||||
|
# and LDFLAGS as it scans for the library and headers to build
|
||||||
configure("--prefix=%s" % prefix,
|
configure("--prefix=%s" % prefix,
|
||||||
"--with-threads",
|
"--with-threads",
|
||||||
"--enable-shared")
|
"--enable-shared",
|
||||||
|
"CPPFLAGS=-I%s/include -I%s/include -I%s/include -I%s/include -I%s/include -I%s/include" % (
|
||||||
|
spec['openssl'].prefix, spec['bzip2'].prefix,
|
||||||
|
spec['readline'].prefix, spec['ncurses'].prefix,
|
||||||
|
spec['sqlite'].prefix, spec['zlib'].prefix),
|
||||||
|
"LDFLAGS=-L%s/lib -L%s/lib -L%s/lib -L%s/lib -L%s/lib -L%s/lib" % (
|
||||||
|
spec['openssl'].prefix, spec['bzip2'].prefix,
|
||||||
|
spec['readline'].prefix, spec['ncurses'].prefix,
|
||||||
|
spec['sqlite'].prefix, spec['zlib'].prefix))
|
||||||
make()
|
make()
|
||||||
make("install")
|
make("install")
|
||||||
|
|
||||||
@ -63,6 +75,9 @@ def setup_dependent_environment(self, module, spec, ext_spec):
|
|||||||
python('setup.py', 'install', '--prefix=%s' % prefix)
|
python('setup.py', 'install', '--prefix=%s' % prefix)
|
||||||
"""
|
"""
|
||||||
# Python extension builds can have a global python executable function
|
# Python extension builds can have a global python executable function
|
||||||
|
if self.version >= Version("3.0.0") and self.version < Version("4.0.0"):
|
||||||
|
module.python = Executable(join_path(spec.prefix.bin, 'python3'))
|
||||||
|
else:
|
||||||
module.python = Executable(join_path(spec.prefix.bin, 'python'))
|
module.python = Executable(join_path(spec.prefix.bin, 'python'))
|
||||||
|
|
||||||
# Add variables for lib/pythonX.Y and lib/pythonX.Y/site-packages dirs.
|
# Add variables for lib/pythonX.Y and lib/pythonX.Y/site-packages dirs.
|
||||||
|
@ -10,14 +10,23 @@ class Qt(Package):
|
|||||||
|
|
||||||
version('5.4.0', 'e8654e4b37dd98039ba20da7a53877e6',
|
version('5.4.0', 'e8654e4b37dd98039ba20da7a53877e6',
|
||||||
url='http://download.qt-project.org/official_releases/qt/5.4/5.4.0/single/qt-everywhere-opensource-src-5.4.0.tar.gz')
|
url='http://download.qt-project.org/official_releases/qt/5.4/5.4.0/single/qt-everywhere-opensource-src-5.4.0.tar.gz')
|
||||||
|
|
||||||
version('5.3.2', 'febb001129927a70174467ecb508a682',
|
version('5.3.2', 'febb001129927a70174467ecb508a682',
|
||||||
url='http://download.qt.io/archive/qt/5.3/5.3.2/single/qt-everywhere-opensource-src-5.3.2.tar.gz')
|
url='http://download.qt.io/archive/qt/5.3/5.3.2/single/qt-everywhere-opensource-src-5.3.2.tar.gz')
|
||||||
|
|
||||||
version('5.2.1', 'a78408c887c04c34ce615da690e0b4c8',
|
version('5.2.1', 'a78408c887c04c34ce615da690e0b4c8',
|
||||||
url='http://download.qt.io/archive/qt/5.2/5.2.1/single/qt-everywhere-opensource-src-5.2.1.tar.gz')
|
url='http://download.qt.io/archive/qt/5.2/5.2.1/single/qt-everywhere-opensource-src-5.2.1.tar.gz')
|
||||||
|
|
||||||
version('4.8.6', '2edbe4d6c2eff33ef91732602f3518eb',
|
version('4.8.6', '2edbe4d6c2eff33ef91732602f3518eb',
|
||||||
url="http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz")
|
url="http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz")
|
||||||
|
|
||||||
|
version('3.3.8b', '9f05b4125cfe477cc52c9742c3c09009',
|
||||||
|
url="http://download.qt.io/archive/qt/3/qt-x11-free-3.3.8b.tar.gz")
|
||||||
|
|
||||||
|
# Add patch for compile issues with qt3 found with use in the OpenSpeedShop project
|
||||||
|
variant('krellpatch', default=False, description="build with openspeedshop based patch.")
|
||||||
|
patch('qt3krell.patch', when='@3.3.8b+krellpatch')
|
||||||
|
|
||||||
# Use system openssl for security.
|
# Use system openssl for security.
|
||||||
#depends_on("openssl")
|
#depends_on("openssl")
|
||||||
|
|
||||||
@ -25,7 +34,7 @@ class Qt(Package):
|
|||||||
depends_on("gtkplus")
|
depends_on("gtkplus")
|
||||||
depends_on("libxml2")
|
depends_on("libxml2")
|
||||||
depends_on("zlib")
|
depends_on("zlib")
|
||||||
depends_on("dbus")
|
depends_on("dbus", when='@4:')
|
||||||
depends_on("libtiff")
|
depends_on("libtiff")
|
||||||
depends_on("libpng")
|
depends_on("libpng")
|
||||||
depends_on("libmng")
|
depends_on("libmng")
|
||||||
@ -39,7 +48,7 @@ class Qt(Package):
|
|||||||
# depends_on("icu4c")
|
# depends_on("icu4c")
|
||||||
|
|
||||||
# OpenGL hardware acceleration
|
# OpenGL hardware acceleration
|
||||||
depends_on("mesa")
|
depends_on("mesa", when='@4:')
|
||||||
depends_on("libxcb")
|
depends_on("libxcb")
|
||||||
|
|
||||||
|
|
||||||
@ -85,6 +94,15 @@ def common_config_args(self):
|
|||||||
# Don't disable all the database drivers, but should
|
# Don't disable all the database drivers, but should
|
||||||
# really get them into spack at some point.
|
# really get them into spack at some point.
|
||||||
|
|
||||||
|
@when('@3')
|
||||||
|
def configure(self):
|
||||||
|
configure('-prefix', self.prefix,
|
||||||
|
'-v',
|
||||||
|
'-thread',
|
||||||
|
'-shared',
|
||||||
|
'-release',
|
||||||
|
'-fast'
|
||||||
|
)
|
||||||
|
|
||||||
@when('@4')
|
@when('@4')
|
||||||
def configure(self):
|
def configure(self):
|
||||||
|
68
var/spack/packages/qt/qt3krell.patch
Normal file
68
var/spack/packages/qt/qt3krell.patch
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
--- qt-x11-free-3.3.8b/src/tools/qmap.h 2008-01-15 13:09:13.000000000 -0600
|
||||||
|
+++ qt-x11-free-3.3.8b-fixes/src/tools/qmap.h 2015-07-08 15:47:34.757565247 -0500
|
||||||
|
@@ -52,6 +52,7 @@
|
||||||
|
#ifndef QT_NO_STL
|
||||||
|
#include <iterator>
|
||||||
|
#include <map>
|
||||||
|
+#include <cstddef>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//#define QT_CHECK_MAP_RANGE
|
||||||
|
--- qt-x11-free-3.3.8b/src/tools/qvaluelist.h 2008-01-15 13:09:13.000000000 -0600
|
||||||
|
+++ qt-x11-free-3.3.8b-fixes/src/tools/qvaluelist.h 2015-07-08 15:47:34.758565247 -0500
|
||||||
|
@@ -50,6 +50,7 @@
|
||||||
|
#ifndef QT_NO_STL
|
||||||
|
#include <iterator>
|
||||||
|
#include <list>
|
||||||
|
+#include <cstddef>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//#define QT_CHECK_VALUELIST_RANGE
|
||||||
|
--- qt-x11-free-3.3.8b/src/tools/qvaluevector.h 2008-01-15 13:09:13.000000000 -0600
|
||||||
|
+++ qt-x11-free-3.3.8b-fixes/src/tools/qvaluevector.h 2015-07-08 15:47:34.758565247 -0500
|
||||||
|
@@ -47,6 +47,7 @@
|
||||||
|
|
||||||
|
#ifndef QT_NO_STL
|
||||||
|
#include <vector>
|
||||||
|
+#include <cstddef>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
--- qt-x11-free-3.3.8b/configure 2008-01-15 13:09:15.000000000 -0600
|
||||||
|
+++ qt-x11-free-3.3.8b-fixes/configure 2015-07-08 15:49:03.379560633 -0500
|
||||||
|
@@ -2339,7 +2339,7 @@
|
||||||
|
else
|
||||||
|
echo "Do you accept the terms of the $TheLicense? \c"
|
||||||
|
fi
|
||||||
|
- read acceptance
|
||||||
|
+ acceptance=yes
|
||||||
|
echo
|
||||||
|
if [ "$acceptance" = yes ]; then
|
||||||
|
break
|
||||||
|
@@ -2397,7 +2397,7 @@
|
||||||
|
else
|
||||||
|
echo "Do you accept the terms of $affix license? \c"
|
||||||
|
fi
|
||||||
|
- read acceptance
|
||||||
|
+ acceptance=yes
|
||||||
|
echo
|
||||||
|
if [ "$acceptance" = "yes" ]; then
|
||||||
|
break
|
||||||
|
@@ -2443,7 +2443,7 @@
|
||||||
|
else
|
||||||
|
echo "Do you accept the terms of the license? \c"
|
||||||
|
fi
|
||||||
|
- read acceptance
|
||||||
|
+ acceptance=yes
|
||||||
|
echo
|
||||||
|
if [ "$acceptance" = "yes" ]; then
|
||||||
|
break
|
||||||
|
@@ -2524,7 +2524,7 @@
|
||||||
|
else
|
||||||
|
echo "Do you accept the terms of the $Platform License? \c"
|
||||||
|
fi
|
||||||
|
- read acceptance
|
||||||
|
+ acceptance=yes
|
||||||
|
echo
|
||||||
|
if [ "$acceptance" = "yes" ]; then
|
||||||
|
break
|
@ -1,74 +1,80 @@
|
|||||||
# FIXME: Add copyright statement
|
##############################################################################
|
||||||
|
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
|
||||||
|
# Produced at the Lawrence Livermore National Laboratory.
|
||||||
|
#
|
||||||
|
# This file is part of Spack.
|
||||||
|
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
|
||||||
|
# LLNL-CODE-647188
|
||||||
|
#
|
||||||
|
# For details, see https://github.com/llnl/spack
|
||||||
|
# Please also see the LICENSE file for our notice and the LGPL.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License (as published by
|
||||||
|
# the Free Software Foundation) version 2.1 dated February 1999.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
|
||||||
|
# conditions of the GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
from spack import *
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
class Scorep(Package):
|
class Scorep(Package):
|
||||||
"""The Score-P measurement infrastructure is a highly scalable and
|
"""
|
||||||
|
The Score-P measurement infrastructure is a highly scalable and
|
||||||
easy-to-use tool suite for profiling, event tracing, and online
|
easy-to-use tool suite for profiling, event tracing, and online
|
||||||
analysis of HPC applications."""
|
analysis of HPC applications."""
|
||||||
|
|
||||||
# FIXME: add a proper url for your package's homepage here.
|
|
||||||
homepage = "http://www.vi-hps.org/projects/score-p"
|
homepage = "http://www.vi-hps.org/projects/score-p"
|
||||||
url = "http://www.vi-hps.org/upload/packages/scorep/scorep-1.2.3.tar.gz"
|
url = "http://www.vi-hps.org/upload/packages/scorep/scorep-1.2.3.tar.gz"
|
||||||
|
|
||||||
|
version('1.4.2', '3b9a042b13bdd5836452354e6567f71e',
|
||||||
|
url='http://www.vi-hps.org/upload/packages/scorep/scorep-1.4.2.tar.gz')
|
||||||
version('1.3', '9db6f957b7f51fa01377a9537867a55c',
|
version('1.3', '9db6f957b7f51fa01377a9537867a55c',
|
||||||
url = 'http://www.vi-hps.org/upload/packages/scorep/scorep-1.3.tar.gz')
|
url='http://www.vi-hps.org/upload/packages/scorep/scorep-1.3.tar.gz')
|
||||||
|
|
||||||
version('1.2.3', '4978084e7cbd05b94517aa8beaea0817')
|
##########
|
||||||
|
# Dependencies for SCORE-P are quite tight. See the homepage for more information.
|
||||||
|
# SCOREP 1.4.2
|
||||||
|
depends_on('otf2@1.5:1.6', when='@1.4.2')
|
||||||
|
depends_on('opari2@1.1.4', when='@1.4.2')
|
||||||
|
depends_on('cube@4.3:4.4', when='@1.4.2')
|
||||||
|
# SCOREP 1.3
|
||||||
|
depends_on("otf2@1.4", when='@1.3')
|
||||||
|
depends_on("opari2@1.1.4", when='@1.3')
|
||||||
|
depends_on("cube@4.2.3", when='@1.3')
|
||||||
|
##########
|
||||||
|
|
||||||
depends_on("mpi")
|
depends_on("mpi")
|
||||||
depends_on("papi")
|
depends_on("papi")
|
||||||
# depends_on("otf2@1.2:1.2.1") # only Score-P 1.2.x
|
|
||||||
depends_on("otf2")
|
|
||||||
depends_on("opari2")
|
|
||||||
depends_on("cube@4.2:4.2.3")
|
|
||||||
|
|
||||||
backend_user_provided = """\
|
def get_compiler_config_line(self):
|
||||||
CC=cc
|
backend_user_provided = ['CC=%s' % self.compiler.cc_names[0],
|
||||||
CXX=c++
|
'CXX=%s' % self.compiler.cxx_names[0],
|
||||||
F77=f77
|
'F77=%s' % self.compiler.f77_names[0] if len(self.compiler.f77_names) else "",
|
||||||
FC=f90
|
'FC=%s' % self.compiler.fc_names[0] if len(self.compiler.fc_names) else "",
|
||||||
CFLAGS=-fPIC
|
'CFLAGS=-fPIC %s' % self.rpath_args,
|
||||||
CXXFLAGS=-fPIC
|
'CXXFLAGS=-fPIC %s'% self.rpath_args]
|
||||||
"""
|
return backend_user_provided
|
||||||
frontend_user_provided = """\
|
|
||||||
CC_FOR_BUILD=cc
|
|
||||||
CXX_FOR_BUILD=c++
|
|
||||||
F77_FOR_BUILD=f70
|
|
||||||
FC_FOR_BUILD=f90
|
|
||||||
CFLAGS_FOR_BUILD=-fPIC
|
|
||||||
CXXFLAGS_FOR_BUILD=-fPIC
|
|
||||||
"""
|
|
||||||
mpi_user_provided = """\
|
|
||||||
MPICC=mpicc
|
|
||||||
MPICXX=mpicxx
|
|
||||||
MPIF77=mpif77
|
|
||||||
MPIFC=mpif90
|
|
||||||
MPI_CFLAGS=-fPIC
|
|
||||||
MPI_CXXFLAGS=-fPIC
|
|
||||||
"""
|
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
# Use a custom compiler configuration, otherwise the score-p
|
configure = Executable( join_path(self.stage.source_path, 'configure') )
|
||||||
# build system messes with spack's compiler settings.
|
with working_dir('spack-build', create=True):
|
||||||
# Create these three files in the build directory
|
|
||||||
with open("platform-backend-user-provided", "w") as backend_file:
|
|
||||||
backend_file.write(self.backend_user_provided)
|
|
||||||
with open("platform-frontend-user-provided", "w") as frontend_file:
|
|
||||||
frontend_file.write(self.frontend_user_provided)
|
|
||||||
with open("platform-mpi-user-provided", "w") as mpi_file:
|
|
||||||
mpi_file.write(self.mpi_user_provided)
|
|
||||||
|
|
||||||
configure_args = ["--prefix=%s" % prefix,
|
configure_args = ["--prefix=%s" % prefix,
|
||||||
"--with-custom-compilers",
|
|
||||||
"--with-otf2=%s" % spec['otf2'].prefix.bin,
|
"--with-otf2=%s" % spec['otf2'].prefix.bin,
|
||||||
"--with-opari2=%s" % spec['opari2'].prefix.bin,
|
"--with-opari2=%s" % spec['opari2'].prefix.bin,
|
||||||
"--with-cube=%s" % spec['cube'].prefix.bin,
|
"--with-cube=%s" % spec['cube'].prefix.bin,
|
||||||
"--with-papi-header=%s" % spec['papi'].prefix.include,
|
"--with-papi-header=%s" % spec['papi'].prefix.include,
|
||||||
"--with-papi-lib=%s" % spec['papi'].prefix.lib,
|
"--with-papi-lib=%s" % spec['papi'].prefix.lib,
|
||||||
"--enable-shared"]
|
"--enable-shared"]
|
||||||
|
configure_args.extend(self.get_compiler_config_line())
|
||||||
configure(*configure_args)
|
configure(*configure_args)
|
||||||
|
|
||||||
make()
|
make()
|
||||||
make("install")
|
make("install")
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
from spack import *
|
from spack import *
|
||||||
import glob
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
class Scotch(Package):
|
class Scotch(Package):
|
||||||
@ -11,27 +10,114 @@ class Scotch(Package):
|
|||||||
|
|
||||||
version('6.0.3', '10b0cc0f184de2de99859eafaca83cfc')
|
version('6.0.3', '10b0cc0f184de2de99859eafaca83cfc')
|
||||||
|
|
||||||
depends_on('mpi')
|
variant('mpi', default=False, description='Activate the compilation of PT-Scotch')
|
||||||
|
variant('compression', default=True, description='Activate the posibility to use compressed files')
|
||||||
|
variant('esmumps', default=False, description='Activate the compilation of the lib esmumps needed by mumps')
|
||||||
|
variant('shared', default=True, description='Build shared libraries')
|
||||||
|
|
||||||
|
depends_on('mpi', when='+mpi')
|
||||||
|
depends_on('zlib', when='+compression')
|
||||||
|
depends_on('flex')
|
||||||
|
depends_on('bison')
|
||||||
|
|
||||||
|
def compiler_specifics(self, makefile_inc, defines):
|
||||||
|
if self.compiler.name == 'gcc':
|
||||||
|
defines.append('-Drestrict=__restrict')
|
||||||
|
elif self.compiler.name == 'intel':
|
||||||
|
defines.append('-restrict')
|
||||||
|
|
||||||
|
makefile_inc.append('CCS = $(CC)')
|
||||||
|
|
||||||
|
if '+mpi' in self.spec:
|
||||||
|
makefile_inc.extend([
|
||||||
|
'CCP = %s' % os.path.join(self.spec['mpi'].prefix.bin, 'mpicc'),
|
||||||
|
'CCD = $(CCP)'
|
||||||
|
])
|
||||||
|
else:
|
||||||
|
makefile_inc.extend([
|
||||||
|
'CCP = mpicc', # It is set but not used
|
||||||
|
'CCD = $(CCS)'
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def library_build_type(self, makefile_inc, defines):
|
||||||
|
makefile_inc.extend([
|
||||||
|
'LIB = .a',
|
||||||
|
'CLIBFLAGS = ',
|
||||||
|
'RANLIB = ranlib',
|
||||||
|
'AR = ar',
|
||||||
|
'ARFLAGS = -ruv '
|
||||||
|
])
|
||||||
|
|
||||||
|
@when('+shared')
|
||||||
|
def library_build_type(self, makefile_inc, defines):
|
||||||
|
makefile_inc.extend([
|
||||||
|
'LIB = .so',
|
||||||
|
'CLIBFLAGS = -shared -fPIC',
|
||||||
|
'RANLIB = echo',
|
||||||
|
'AR = $(CC)',
|
||||||
|
'ARFLAGS = -shared $(LDFLAGS) -o'
|
||||||
|
])
|
||||||
|
|
||||||
|
def extra_features(self, makefile_inc, defines):
|
||||||
|
ldflags = []
|
||||||
|
|
||||||
|
if '+compression' in self.spec:
|
||||||
|
defines.append('-DCOMMON_FILE_COMPRESS_GZ')
|
||||||
|
ldflags.append('-L%s -lz' % (self.spec['zlib'].prefix.lib))
|
||||||
|
|
||||||
|
defines.append('-DCOMMON_PTHREAD')
|
||||||
|
ldflags.append('-lm -lrt -pthread')
|
||||||
|
|
||||||
|
makefile_inc.append('LDFLAGS = %s' % ' '.join(ldflags))
|
||||||
|
|
||||||
def patch(self):
|
def patch(self):
|
||||||
with working_dir('src/Make.inc'):
|
makefile_inc = []
|
||||||
makefiles = glob.glob('Makefile.inc.x86-64_pc_linux2*')
|
defines = [
|
||||||
filter_file(r'^CCS\s*=.*$', 'CCS = cc', *makefiles)
|
'-DCOMMON_RANDOM_FIXED_SEED',
|
||||||
filter_file(r'^CCD\s*=.*$', 'CCD = cc', *makefiles)
|
'-DSCOTCH_DETERMINISTIC',
|
||||||
|
'-DSCOTCH_RENAME',
|
||||||
|
'-DIDXSIZE64' ]
|
||||||
|
|
||||||
|
self.library_build_type(makefile_inc, defines)
|
||||||
|
self.compiler_specifics(makefile_inc, defines)
|
||||||
|
self.extra_features(makefile_inc, defines)
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
makefile_inc.extend([
|
||||||
# Currently support gcc and icc on x86_64 (maybe others with
|
'EXE =',
|
||||||
# vanilla makefile)
|
'OBJ = .o',
|
||||||
makefile = 'Make.inc/Makefile.inc.x86-64_pc_linux2'
|
'MAKE = make',
|
||||||
if spec.satisfies('%icc'):
|
'CAT = cat',
|
||||||
makefile += '.icc'
|
'LN = ln',
|
||||||
|
'MKDIR = mkdir',
|
||||||
|
'MV = mv',
|
||||||
|
'CP = cp',
|
||||||
|
'CFLAGS = -O3 %s' % (' '.join(defines)),
|
||||||
|
'LEX = %s -Pscotchyy -olex.yy.c' % os.path.join(self.spec['flex'].prefix.bin , 'flex'),
|
||||||
|
'YACC = %s -pscotchyy -y -b y' % os.path.join(self.spec['bison'].prefix.bin, 'bison'),
|
||||||
|
'prefix = %s' % self.prefix,
|
||||||
|
''
|
||||||
|
])
|
||||||
|
|
||||||
with working_dir('src'):
|
with working_dir('src'):
|
||||||
force_symlink(makefile, 'Makefile.inc')
|
with open('Makefile.inc', 'w') as fh:
|
||||||
for app in ('scotch', 'ptscotch'):
|
fh.write('\n'.join(makefile_inc))
|
||||||
make(app)
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
targets = ['scotch']
|
||||||
|
if '+mpi' in self.spec:
|
||||||
|
targets.append('ptscotch')
|
||||||
|
|
||||||
|
if '+esmumps' in self.spec:
|
||||||
|
targets.append('esmumps')
|
||||||
|
if '+mpi' in self.spec:
|
||||||
|
targets.append('ptesmumps')
|
||||||
|
|
||||||
|
with working_dir('src'):
|
||||||
|
for app in targets:
|
||||||
|
make(app, parallel=(not app=='ptesmumps'))
|
||||||
|
|
||||||
|
|
||||||
install_tree('bin', prefix.bin)
|
install_tree('bin', prefix.bin)
|
||||||
install_tree('lib', prefix.lib)
|
install_tree('lib', prefix.lib)
|
||||||
|
18
var/spack/packages/spot/package.py
Normal file
18
var/spack/packages/spot/package.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
from spack import *
|
||||||
|
import os
|
||||||
|
|
||||||
|
class Spot(Package):
|
||||||
|
"""Spot is a C++11 library for omega-automata manipulation and model checking."""
|
||||||
|
homepage = "https://spot.lrde.epita.fr/index.html"
|
||||||
|
url = "http://www.lrde.epita.fr/dload/spot/spot-1.99.3.tar.gz"
|
||||||
|
|
||||||
|
version('1.99.3', 'd53adcb2d0fe7c69f45d4e595a58254e')
|
||||||
|
|
||||||
|
#depends_on("gcc@4.8:")
|
||||||
|
depends_on("python@3.2:")
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
configure('--prefix=%s' % prefix)
|
||||||
|
|
||||||
|
make()
|
||||||
|
make("install")
|
@ -1,32 +1,135 @@
|
|||||||
|
##############################################################################
|
||||||
|
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
|
||||||
|
# Produced at the Lawrence Livermore National Laboratory.
|
||||||
|
#
|
||||||
|
# This file is part of Spack.
|
||||||
|
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
|
||||||
|
# LLNL-CODE-647188
|
||||||
|
#
|
||||||
|
# For details, see https://github.com/llnl/spack
|
||||||
|
# Please also see the LICENSE file for our notice and the LGPL.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License (as published by
|
||||||
|
# the Free Software Foundation) version 2.1 dated February 1999.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
|
||||||
|
# conditions of the GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
from spack import *
|
from spack import *
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import os.path
|
||||||
|
|
||||||
from llnl.util.filesystem import join_path
|
from llnl.util.filesystem import join_path
|
||||||
|
|
||||||
class Tau(Package):
|
class Tau(Package):
|
||||||
"""A portable profiling and tracing toolkit for performance
|
"""
|
||||||
|
A portable profiling and tracing toolkit for performance
|
||||||
analysis of parallel programs written in Fortran, C, C++, UPC,
|
analysis of parallel programs written in Fortran, C, C++, UPC,
|
||||||
Java, Python."""
|
Java, Python.
|
||||||
|
"""
|
||||||
homepage = "http://www.cs.uoregon.edu/research/tau"
|
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"
|
url = "https://www.cs.uoregon.edu/research/tau/tau_releases/tau-2.25.tar.gz"
|
||||||
|
|
||||||
|
version('2.25', '46cd48fa3f3c4ce0197017b3158a2b43')
|
||||||
|
version('2.24.1', '6635ece6d1f08215b02f5d0b3c1e971b')
|
||||||
|
version('2.24', '57ce33539c187f2e5ec68f0367c76db4')
|
||||||
version('2.23.1', '6593b47ae1e7a838e632652f0426fe72')
|
version('2.23.1', '6593b47ae1e7a838e632652f0426fe72')
|
||||||
|
|
||||||
|
# TODO : shmem variant missing
|
||||||
|
variant('download', default=False, description='Downloads and builds various dependencies')
|
||||||
|
variant('scorep', default=False, description='Activates SCOREP support')
|
||||||
|
variant('openmp', default=True, description='Use OpenMP threads')
|
||||||
|
variant('mpi', default=True, description='Specify use of TAU MPI wrapper library')
|
||||||
|
variant('phase', default=True, description='Generate phase based profiles')
|
||||||
|
variant('comm', default=True, description=' Generate profiles with MPI communicator info')
|
||||||
|
|
||||||
|
# TODO : Try to build direct OTF2 support? Some parts of the OTF support library in TAU are non-conformant,
|
||||||
|
# TODO : and fail at compile-time. Further, SCOREP is compiled with OTF2 support.
|
||||||
|
depends_on('pdt') # Required for TAU instrumentation
|
||||||
|
depends_on('scorep', when='+scorep')
|
||||||
|
depends_on('binutils', when='~download')
|
||||||
|
depends_on('mpi', when='+mpi')
|
||||||
|
|
||||||
|
def set_compiler_options(self):
|
||||||
|
|
||||||
|
useropt = ["-O2", self.rpath_args]
|
||||||
|
|
||||||
|
##########
|
||||||
|
# Selecting a compiler with TAU configure is quite tricky:
|
||||||
|
# 1 - compilers are mapped to a given set of strings (and spack cc, cxx, etc. wrappers are not among them)
|
||||||
|
# 2 - absolute paths are not allowed
|
||||||
|
# 3 - the usual environment variables seems not to be checked ('CC', 'CXX' and 'FC')
|
||||||
|
# 4 - if no -cc=<compiler> -cxx=<compiler> is passed tau is built with system compiler silently
|
||||||
|
# (regardless of what %<compiler> is used in the spec)
|
||||||
|
#
|
||||||
|
# In the following we give TAU what he expects and put compilers into PATH
|
||||||
|
compiler_path = os.path.dirname(self.compiler.cc)
|
||||||
|
os.environ['PATH'] = ':'.join([compiler_path, os.environ['PATH']])
|
||||||
|
compiler_options = ['-c++=%s' % self.compiler.cxx_names[0],
|
||||||
|
'-cc=%s' % self.compiler.cc_names[0]]
|
||||||
|
if self.compiler.fc:
|
||||||
|
compiler_options.append('-fortran=%s' % self.compiler.fc_names[0])
|
||||||
|
##########
|
||||||
|
|
||||||
|
# Construct the string of custom compiler flags and append it to compiler related options
|
||||||
|
useropt = ' '.join(useropt)
|
||||||
|
useropt = "-useropt=%s" % useropt
|
||||||
|
compiler_options.append(useropt)
|
||||||
|
return compiler_options
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
# TAU isn't happy with directories that have '@' in the path. Sigh.
|
# TAU isn't happy with directories that have '@' in the path. Sigh.
|
||||||
change_sed_delimiter('@', ';', 'configure')
|
change_sed_delimiter('@', ';', 'configure')
|
||||||
change_sed_delimiter('@', ';', 'utils/FixMakefile')
|
change_sed_delimiter('@', ';', 'utils/FixMakefile')
|
||||||
change_sed_delimiter('@', ';', 'utils/FixMakefile.sed.default')
|
change_sed_delimiter('@', ';', 'utils/FixMakefile.sed.default')
|
||||||
|
|
||||||
# After that, it's relatively standard.
|
# TAU configure, despite the name , seems to be a manually written script (nothing related to autotools).
|
||||||
configure("-prefix=%s" % prefix)
|
# As such it has a few #peculiarities# that make this build quite hackish.
|
||||||
|
options = ["-prefix=%s" % prefix,
|
||||||
|
"-iowrapper",
|
||||||
|
"-pdt=%s" % spec['pdt'].prefix]
|
||||||
|
# If download is active, download and build suggested dependencies
|
||||||
|
if '+download' in spec:
|
||||||
|
options.extend(['-bfd=download',
|
||||||
|
'-unwind=download',
|
||||||
|
'-asmdex=download'])
|
||||||
|
else:
|
||||||
|
options.extend(["-bfd=%s" % spec['binutils'].prefix])
|
||||||
|
# TODO : unwind and asmdex are still missing
|
||||||
|
|
||||||
|
if '+scorep' in spec:
|
||||||
|
options.append("-scorep=%s" % spec['scorep'].prefix)
|
||||||
|
|
||||||
|
if '+openmp' in spec:
|
||||||
|
options.append('-openmp')
|
||||||
|
|
||||||
|
if '+mpi' in spec:
|
||||||
|
options.append('-mpi')
|
||||||
|
|
||||||
|
if '+phase' in spec:
|
||||||
|
options.append('-PROFILEPHASE')
|
||||||
|
|
||||||
|
if '+comm' in spec:
|
||||||
|
options.append('-PROFILECOMMUNICATORS')
|
||||||
|
|
||||||
|
compiler_specific_options = self.set_compiler_options()
|
||||||
|
options.extend(compiler_specific_options)
|
||||||
|
configure(*options)
|
||||||
make("install")
|
make("install")
|
||||||
|
|
||||||
# Link arch-specific directories into prefix since there is
|
# Link arch-specific directories into prefix since there is
|
||||||
# only one arch per prefix the way spack installs.
|
# only one arch per prefix the way spack installs.
|
||||||
self.link_tau_arch_dirs()
|
self.link_tau_arch_dirs()
|
||||||
|
|
||||||
|
|
||||||
def link_tau_arch_dirs(self):
|
def link_tau_arch_dirs(self):
|
||||||
for subdir in os.listdir(self.prefix):
|
for subdir in os.listdir(self.prefix):
|
||||||
for d in ('bin', 'lib'):
|
for d in ('bin', 'lib'):
|
||||||
|
@ -13,5 +13,4 @@ class Tmuxinator(Package):
|
|||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
gem('build', 'tmuxinator.gemspec')
|
gem('build', 'tmuxinator.gemspec')
|
||||||
gem('install', 'tmuxinator-{}.gem'.format(self.version))
|
gem('install', 'tmuxinator-{0}.gem'.format(self.version))
|
||||||
|
|
||||||
|
36
var/spack/packages/xerces-c/package.py
Normal file
36
var/spack/packages/xerces-c/package.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# FIXME:
|
||||||
|
# This is a template package file for Spack. We've conveniently
|
||||||
|
# put "FIXME" labels next to all the things you'll want to change.
|
||||||
|
#
|
||||||
|
# Once you've edited all the FIXME's, delete this whole message,
|
||||||
|
# save this file, and test out your package like this:
|
||||||
|
#
|
||||||
|
# spack install xerces-c
|
||||||
|
#
|
||||||
|
# You can always get back here to change things with:
|
||||||
|
#
|
||||||
|
# spack edit xerces-c
|
||||||
|
#
|
||||||
|
# See the spack documentation for more information on building
|
||||||
|
# packages.
|
||||||
|
#
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
class XercesC(Package):
|
||||||
|
""" Xerces-C++ is a validating XML parser written in a portable subset of C++.
|
||||||
|
Xerces-C++ makes it easy to give your application the ability to read and
|
||||||
|
write XML data. A shared library is provided for parsing, generating,
|
||||||
|
manipulating, and validating XML documents using the DOM, SAX, and SAX2 APIs.
|
||||||
|
"""
|
||||||
|
|
||||||
|
homepage = "https://xerces.apache.org/xerces-c"
|
||||||
|
url = "https://www.apache.org/dist/xerces/c/3/sources/xerces-c-3.1.2.tar.gz"
|
||||||
|
version('3.1.2', '9eb1048939e88d6a7232c67569b23985')
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
configure("--prefix=%s" % prefix,
|
||||||
|
"--disable-network")
|
||||||
|
make("clean")
|
||||||
|
make()
|
||||||
|
make("install")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user