Merge branch 'develop' of https://github.com/alalazo/spack into packages/tau

This commit is contained in:
alalazo 2015-12-18 13:00:43 +01:00
commit dfbf1b2205
38 changed files with 1536 additions and 27 deletions

View File

@ -89,6 +89,8 @@ spec expressions:
parser.add_argument('-d', '--debug', action='store_true',
help="Write out debug logs during compile")
parser.add_argument('-D', '--pdb', action='store_true',
help="Run spack under the pdb debugger")
parser.add_argument('-k', '--insecure', action='store_true',
help="Do not check ssl certificates when downloading.")
parser.add_argument('-m', '--mock', action='store_true',
@ -159,5 +161,8 @@ def main():
if args.profile:
import cProfile
cProfile.run('main()', sort='tottime')
elif args.pdb:
import pdb
pdb.run('main()')
else:
main()

View File

@ -211,6 +211,10 @@ def _read_spec_from_yaml(self, hash_key, installs, parent_key=None):
child = self._read_spec_from_yaml(dep_hash, installs, hash_key)
spec._add_dependency(child)
# Specs from the database need to be marked concrete because
# they represent actual installations.
spec._mark_concrete()
return spec

View File

@ -212,9 +212,7 @@ def read_spec(self, path):
spec = Spec.from_yaml(f)
# Specs read from actual installations are always concrete
for s in spec.traverse():
s._normal = True
s._concrete = True
spec._mark_concrete()
return spec

View File

@ -29,11 +29,11 @@
removed after an uninstall by post-uninstall hooks. This class
consolidates the logic for creating an abstract description of the
information that module systems need. Currently that includes a
number directories to be appended to paths in the user's environment:
number of directories to be appended to paths in the user's environment:
* /bin directories to be appended to PATH
* /lib* directories for LD_LIBRARY_PATH
* /man* and /share/man* directories for LD_LIBRARY_PATH
* /man* and /share/man* directories for MANPATH
* the package prefix for CMAKE_PREFIX_PATH
This module also includes logic for coming up with unique names for

View File

@ -833,7 +833,18 @@ def concretize(self):
changed = any(changes)
force=True
self._concrete = True
self._mark_concrete()
def _mark_concrete(self):
"""Mark this spec and its dependencies as concrete.
Only for internal use -- client code should use "concretize"
unless there is a need to force a spec to be concrete.
"""
for s in self.traverse():
s._normal = True
s._concrete = True
def concretized(self):

View File

@ -56,6 +56,12 @@
# spack dotfiles.
########################################################################
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
_sp_flags=""
while [[ "$1" =~ ^- ]]; do
@ -116,7 +122,7 @@ function spack {
esac
;;
*)
command spack $_sp_flags $_sp_subcommand $_sp_spec
command spack "${args[@]}"
;;
esac
}

View File

@ -25,7 +25,7 @@ class Samrai(Package):
depends_on("mpi")
depends_on("zlib")
depends_on("hdf5")
depends_on("hdf5+mpi")
depends_on("boost")
# don't build tools with gcc

View 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

View File

@ -3,12 +3,15 @@
class Binutils(Package):
"""GNU binutils, which contain the linker, assembler, objdump and others"""
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.24', 'e0f71a7b2ddab0f8612336ac81d9636b')
version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e')
version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764')
version('2.25', 'd9f3303f802a5b6b0bb73a335ab89d66',url="ftp://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.bz2")
version('2.24', 'e0f71a7b2ddab0f8612336ac81d9636b',url="ftp://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.bz2")
version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e',url="ftp://ftp.gnu.org/gnu/binutils/binutils-2.23.2.tar.bz2")
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.')

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

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

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

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

View File

@ -14,7 +14,7 @@ class Cleverleaf(Package):
version('develop', git='https://github.com/UK-MAC/CleverLeaf_ref.git', branch='develop')
depends_on("SAMRAI@3.8.0:")
depends_on("hdf5")
depends_on("hdf5+mpi")
depends_on("boost")
def install(self, spec, prefix):

View File

@ -43,6 +43,7 @@ class Cmake(Package):
def install(self, spec, prefix):
configure('--prefix=' + prefix,
'--parallel=' + str(make_jobs))
'--parallel=' + str(make_jobs),
'--', '-DCMAKE_USE_OPENSSL=ON')
make()
make('install')

View File

@ -57,6 +57,7 @@ def install(self, spec, prefix):
'-DLIBDWARF_INCLUDE_DIR=%s' % libdwarf.include,
'-DLIBDWARF_LIBRARIES=%s' % join_path(libdwarf.lib, 'libdwarf.so'),
*std_cmake_args)
make()
make("install")

View File

@ -8,9 +8,10 @@ class Fontconfig(Package):
version('2.11.1' , 'e75e303b4f7756c2b16203a57ac87eba')
depends_on('freetype')
depends_on('libxml2')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
configure("--prefix=%s" % prefix, "--enable-libxml2")
make()
make("install")

View File

@ -0,0 +1,61 @@
##############################################################################
# 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 *
import os
class Gnuplot(Package):
"""
Gnuplot is a portable command-line driven graphing utility for Linux, OS/2, MS Windows, OSX, VMS, and many other
platforms. The source code is copyrighted but freely distributed (i.e., you don't have to pay for it). It was
originally created to allow scientists and students to visualize mathematical functions and data interactively,
but has grown to support many non-interactive uses such as web scripting. It is also used as a plotting engine by
third-party applications like Octave. Gnuplot has been supported and under active development since 1986
"""
homepage = "http://www.gnuplot.info"
url = "http://downloads.sourceforge.net/project/gnuplot/gnuplot/5.0.1/gnuplot-5.0.1.tar.gz"
version('5.0.1', '79b4f9e203728f76b60b28bcd402d3c7')
depends_on('readline')
depends_on('libcerf')
depends_on('libgd')
depends_on('cairo')
depends_on('pango')
depends_on('wx', when='+wx')
variant('wx', default=False, description='Activates wxWidgets terminal')
def install(self, spec, prefix):
# It seems there's an open bug for wxWidgets support
# See : http://sourceforge.net/p/gnuplot/bugs/1694/
os.environ['TERMLIBS'] = '-lX11'
options = ['--prefix=%s' % prefix]
configure(*options)
make()
make("install")

View File

@ -0,0 +1,46 @@
##############################################################################
# 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 Gsl(Package):
"""
The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is free software under the
GNU General Public License. The library provides a wide range of mathematical routines such as random number
generators, special functions and least-squares fitting. There are over 1000 functions in total with an extensive
test suite.
"""
homepage = "http://www.gnu.org/software/gsl"
url = "http://mirror.switch.ch/ftp/mirror/gnu/gsl/gsl-2.1.tar.gz"
version('2.1' , 'd8f70abafd3e9f0bae03c52d1f4e8de5')
version('2.0' , 'ae44cdfed78ece40e73411b63a78c375')
version('1.16', 'e49a664db13d81c968415cd53f62bc8b')
def install(self, spec, prefix):
configure('--prefix=%s' % prefix)
make()
make("install")

View File

@ -15,19 +15,28 @@ class Hdf5(Package):
version('1.8.15', '03cccb5b33dbe975fdcd8ae9dc021f24')
version('1.8.13', 'c03426e9e77d7766944654280b467289')
depends_on("mpi")
variant('mpi', default=False, description='Enable MPI support')
depends_on("mpi", when='+mpi')
depends_on("zlib")
# TODO: currently hard-coded to use OpenMPI
def install(self, spec, prefix):
extra_args = []
if '+mpi' in spec:
extra_args.extend([
"--enable-parallel",
"CC=%s" % spec['mpich'].prefix.bin + "/mpicc",
"CXX=%s" % spec['mpich'].prefix.bin + "/mpic++",
])
configure(
"--prefix=%s" % prefix,
"--with-zlib=%s" % spec['zlib'].prefix,
"--enable-parallel",
"--enable-shared",
"CC=%s" % spec['mpi'].prefix.bin + "/mpicc",
"CXX=%s" % spec['mpi'].prefix.bin + "/mpic++")
"CXX=%s" % spec['mpi'].prefix.bin + "/mpic++",
*extra_args)
make()
make("install")

View File

@ -0,0 +1,42 @@
##############################################################################
# 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 Libcerf(Package):
"""
A self-contained C library providing complex error functions, based on Faddeeva's plasma dispersion function
w(z). Also provides Dawson's integral and Voigt's convolution of a Gaussian and a Lorentzian
"""
homepage = "http://sourceforge.net/projects/libcerf"
url = "http://downloads.sourceforge.net/project/libcerf/libcerf-1.3.tgz"
version('1.3', 'b3504c467204df71e62aeccf73a25612')
def install(self, spec, prefix):
configure('--prefix=%s' % prefix)
make()
make("install")

View File

@ -0,0 +1,53 @@
##############################################################################
# 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 Libgd(Package):
"""
GD is an open source code library for the dynamic creation of images by programmers. GD is written in C, and
"wrappers" are available for Perl, PHP and other languages. GD creates PNG, JPEG, GIF, WebP, XPM, BMP images,
among other formats. GD is commonly used to generate charts, graphics, thumbnails, and most anything else, on the
fly. While not restricted to use on the web, the most common applications of GD involve website development.
"""
homepage = "https://github.com/libgd/libgd"
url = "https://github.com/libgd/libgd/archive/gd-2.1.1.tar.gz"
version('2.1.1', 'e91a1a99903e460e7ba00a794e72cc1e')
depends_on('libpng')
def install(self, spec, prefix):
with working_dir('spack-build', create=True):
cmake('..',
'-DENABLE_JPEG:BOOL=ON',
'-DENABLE_PNG:BOOL=ON',
'-DENABLE_TIFF:BOOL=ON',
*std_cmake_args)
make()
make("install")

View 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

View 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 =

View 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);
}

View File

@ -29,6 +29,13 @@ class Libmonitor(Package):
homepage = "http://hpctoolkit.org"
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):
configure("--prefix=" + prefix)

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

View File

@ -8,11 +8,16 @@ class Mrnet(Package):
version('4.0.0', 'd00301c078cba57ef68613be32ceea2f')
version('4.1.0', '5a248298b395b329e2371bf25366115c')
variant('lwthreads', default=False, description="Also build the MRNet LW threadsafe libraries")
parallel = False
depends_on("boost")
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")
make()

View File

@ -14,6 +14,8 @@ class Ncurses(Package):
version('6.0', 'ee13d052e1ead260d7c28071f46eefb1',
url='http://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.0.tar.gz')
patch('patch_gcc_5.txt', when='%gcc@5.0:')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix,
"--with-shared",

View File

@ -0,0 +1,12 @@
diff -Naur ncurses-6.0/ncurses/Makefile.in ncurses-6.0-patched/ncurses/Makefile.in
--- ncurses-6.0/ncurses/Makefile.in 2015-08-06 01:15:41.000000000 +0200
+++ ncurses-6.0-patched/ncurses/Makefile.in 2015-12-15 14:58:52.710199407 +0100
@@ -219,7 +219,7 @@
$(SHELL) -e $(tinfo)/MKfallback.sh $(TERMINFO) $(TERMINFO_SRC) $(TIC_PATH) $(FALLBACK_LIST) >$@
./lib_gen.c : $(base)/MKlib_gen.sh ../include/curses.h
- $(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@
+ $(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS) -P" "$(AWK)" generated <../include/curses.h >$@
init_keytry.h: make_keys$(BUILD_EXEEXT) keys.list
./make_keys$(BUILD_EXEEXT) keys.list > $@

View 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

View File

@ -11,8 +11,8 @@ class Papi(Package):
components that expose performance measurement opportunites
across the hardware and software stack."""
homepage = "http://icl.cs.utk.edu/papi/index.html"
url = "http://icl.cs.utk.edu/projects/papi/downloads/papi-5.3.0.tar.gz"
url = "http://icl.cs.utk.edu/projects/papi/downloads/papi-5.4.1.tar.gz"
version('5.4.1', '9134a99219c79767a11463a76b0b01a2')
version('5.3.0', '367961dd0ab426e5ae367c2713924ffb')

View File

@ -24,7 +24,8 @@ class Paraview(Package):
depends_on('bzip2')
depends_on('freetype')
depends_on('hdf5') # drags in mpi
depends_on('hdf5')
depends_on('hdf5+mpi', when='+mpi')
depends_on('jpeg')
depends_on('libpng')
depends_on('libtiff')

View File

@ -18,7 +18,7 @@ class Petsc(Package):
depends_on("hypre")
depends_on("parmetis")
depends_on("metis")
depends_on("hdf5")
depends_on("hdf5+mpi")
depends_on("mpi")
def install(self, spec, prefix):

View File

@ -10,14 +10,23 @@ class Qt(Package):
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')
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')
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')
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")
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.
#depends_on("openssl")
@ -25,7 +34,7 @@ class Qt(Package):
depends_on("gtkplus")
depends_on("libxml2")
depends_on("zlib")
depends_on("dbus")
depends_on("dbus", when='@4:')
depends_on("libtiff")
depends_on("libpng")
depends_on("libmng")
@ -39,7 +48,7 @@ class Qt(Package):
# depends_on("icu4c")
# OpenGL hardware acceleration
depends_on("mesa")
depends_on("mesa", when='@4:')
depends_on("libxcb")
@ -85,6 +94,15 @@ def common_config_args(self):
# Don't disable all the database drivers, but should
# really get them into spack at some point.
@when('@3')
def configure(self):
configure('-prefix', self.prefix,
'-v',
'-thread',
'-shared',
'-release',
'-fast'
)
@when('@4')
def configure(self):

View 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

View File

@ -16,6 +16,8 @@ class Wx(Package):
version('3.0.1', 'dad1f1cd9d4c370cbc22700dc492da31',
url="https://sourceforge.net/projects/wxwindows/files/3.0.1/wxWidgets-3.0.1.tar.bz2")
depends_on('gtkplus')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix, "--enable-unicode", "--disable-precomp-headers")

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