From d1f127d8eff872cab49db922056df1d21c0514c7 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 21 Jul 2015 10:15:17 -0500 Subject: [PATCH 01/32] Add changes for krell related products to binutils. Add a patch that installs libiberty_pic.a which krell products will favor/use. --- .../binutils/binutilskrell-2.24.patch | 52 +++++++++++++++++++ var/spack/packages/binutils/package.py | 26 +++++++--- 2 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 var/spack/packages/binutils/binutilskrell-2.24.patch diff --git a/var/spack/packages/binutils/binutilskrell-2.24.patch b/var/spack/packages/binutils/binutilskrell-2.24.patch new file mode 100644 index 00000000000..f48291a6c91 --- /dev/null +++ b/var/spack/packages/binutils/binutilskrell-2.24.patch @@ -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 diff --git a/var/spack/packages/binutils/package.py b/var/spack/packages/binutils/package.py index 5a3059bbcf5..43a670585e6 100644 --- a/var/spack/packages/binutils/package.py +++ b/var/spack/packages/binutils/package.py @@ -3,15 +3,29 @@ 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') def install(self, spec, prefix): - configure("--prefix=%s" % prefix) + + # Add additional configuration options for use in the OpenSpeedShop project + if '+krellpatch' in spec: + configure('--prefix', self.prefix, + '--libdir', self.prefix.lib, + '--enable-shared', + '--enable-install-libiberty', + '--disable-multilib' + ) + else: + configure("--prefix=%s" % prefix) + make() make("install") From 0591980cbe4c91f60b5fe2ca811bc7ee306a1171 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 21 Jul 2015 10:17:37 -0500 Subject: [PATCH 02/32] Add configuration change for krell related products, they expect the dyninst includes in include/dyninst. --- var/spack/packages/dyninst/package.py | 34 ++++++++++++++++++++------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/var/spack/packages/dyninst/package.py b/var/spack/packages/dyninst/package.py index 41ec57dd2f0..81df9aed808 100644 --- a/var/spack/packages/dyninst/package.py +++ b/var/spack/packages/dyninst/package.py @@ -38,6 +38,8 @@ class Dyninst(Package): version('8.1.1', 'd1a04e995b7aa70960cd1d1fac8bd6ac', url="http://www.paradyn.org/release8.1/DyninstAPI-8.1.1.tgz") + variant('krelloptions', default=False, description="build dyninst includes into include/dyninst.") + depends_on("libelf") depends_on("libdwarf") depends_on("boost@1.42:") @@ -48,15 +50,29 @@ def install(self, spec, prefix): libdwarf = spec['libdwarf'].prefix with working_dir('spack-build', create=True): - cmake('..', - '-DBoost_INCLUDE_DIR=%s' % spec['boost'].prefix.include, - '-DBoost_LIBRARY_DIR=%s' % spec['boost'].prefix.lib, - '-DBoost_NO_SYSTEM_PATHS=TRUE', - '-DLIBELF_INCLUDE_DIR=%s' % join_path(libelf.include, 'libelf'), - '-DLIBELF_LIBRARIES=%s' % join_path(libelf.lib, 'libelf.so'), - '-DLIBDWARF_INCLUDE_DIR=%s' % libdwarf.include, - '-DLIBDWARF_LIBRARIES=%s' % join_path(libdwarf.lib, 'libdwarf.so'), - *std_cmake_args) + # cbtf-krell and openspeedshop expect to reference dyninst/include, so adding include specification to that end + if '+krelloptions' in spec: + cmake('..', + '-DINSTALL_INCLUDE_DIR=%s' % join_path(self.prefix.include, 'dyninst'), + '-DBoost_INCLUDE_DIR=%s' % spec['boost'].prefix.include, + '-DBoost_LIBRARY_DIR=%s' % spec['boost'].prefix.lib, + '-DBoost_NO_SYSTEM_PATHS=TRUE', + '-DLIBELF_INCLUDE_DIR=%s' % join_path(libelf.include, 'libelf'), + '-DLIBELF_LIBRARIES=%s' % join_path(libelf.lib, 'libelf.so'), + '-DLIBDWARF_INCLUDE_DIR=%s' % libdwarf.include, + '-DLIBDWARF_LIBRARIES=%s' % join_path(libdwarf.lib, 'libdwarf.so'), + *std_cmake_args) + else: + cmake('..', + '-DBoost_INCLUDE_DIR=%s' % spec['boost'].prefix.include, + '-DBoost_LIBRARY_DIR=%s' % spec['boost'].prefix.lib, + '-DBoost_NO_SYSTEM_PATHS=TRUE', + '-DLIBELF_INCLUDE_DIR=%s' % join_path(libelf.include, 'libelf'), + '-DLIBELF_LIBRARIES=%s' % join_path(libelf.lib, 'libelf.so'), + '-DLIBDWARF_INCLUDE_DIR=%s' % libdwarf.include, + '-DLIBDWARF_LIBRARIES=%s' % join_path(libdwarf.lib, 'libdwarf.so'), + *std_cmake_args) + make() make("install") From 13421dc4aa8dd0705728660e5bf6dab657cc170e Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 21 Jul 2015 10:20:05 -0500 Subject: [PATCH 03/32] Add patches that enable features added for krell related products. Update the package file to add a krellpatch variant to control adding the patches. --- .../libmonitor/libmonitorkrell-0000.patch | 18 + .../libmonitor/libmonitorkrell-0001.patch | 395 ++++++++++++++++++ .../libmonitor/libmonitorkrell-0002.patch | 106 +++++ var/spack/packages/libmonitor/package.py | 7 + 4 files changed, 526 insertions(+) create mode 100644 var/spack/packages/libmonitor/libmonitorkrell-0000.patch create mode 100644 var/spack/packages/libmonitor/libmonitorkrell-0001.patch create mode 100644 var/spack/packages/libmonitor/libmonitorkrell-0002.patch diff --git a/var/spack/packages/libmonitor/libmonitorkrell-0000.patch b/var/spack/packages/libmonitor/libmonitorkrell-0000.patch new file mode 100644 index 00000000000..3a901068506 --- /dev/null +++ b/var/spack/packages/libmonitor/libmonitorkrell-0000.patch @@ -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 diff --git a/var/spack/packages/libmonitor/libmonitorkrell-0001.patch b/var/spack/packages/libmonitor/libmonitorkrell-0001.patch new file mode 100644 index 00000000000..85d69595c0a --- /dev/null +++ b/var/spack/packages/libmonitor/libmonitorkrell-0001.patch @@ -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 = diff --git a/var/spack/packages/libmonitor/libmonitorkrell-0002.patch b/var/spack/packages/libmonitor/libmonitorkrell-0002.patch new file mode 100644 index 00000000000..514dfdf13e1 --- /dev/null +++ b/var/spack/packages/libmonitor/libmonitorkrell-0002.patch @@ -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); + } diff --git a/var/spack/packages/libmonitor/package.py b/var/spack/packages/libmonitor/package.py index 3b95b86ddf5..b31d7576c00 100644 --- a/var/spack/packages/libmonitor/package.py +++ b/var/spack/packages/libmonitor/package.py @@ -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) From 64c8fd3fa18dd6644a67cbd9e9aa5f20eb5e85a7 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 21 Jul 2015 10:49:15 -0500 Subject: [PATCH 04/32] Add krelloptions variant that is used to turn on a configuration option to build the thread safe lightweight libraries. --- var/spack/packages/mrnet/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/packages/mrnet/package.py b/var/spack/packages/mrnet/package.py index 6e9766f275c..08c57d74369 100644 --- a/var/spack/packages/mrnet/package.py +++ b/var/spack/packages/mrnet/package.py @@ -8,12 +8,17 @@ class Mrnet(Package): version('4.0.0', 'd00301c078cba57ef68613be32ceea2f') version('4.1.0', '5a248298b395b329e2371bf25366115c') + variant('krelloptions', default=False, description="Also build the MRNet LW threadsafe libraries") parallel = False depends_on("boost") def install(self, spec, prefix): - configure("--prefix=%s" %prefix, "--enable-shared") + # Build the MRNet LW thread safe libraries when the krelloptions variant is present + if '+krelloptions' in spec: + configure("--prefix=%s" %prefix, "--enable-shared", "--enable-ltwt-threadsafe") + else: + configure("--prefix=%s" %prefix, "--enable-shared") make() make("install") From b4e0804b374f1a725d42bdf3a11c3602ff009137 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 21 Jul 2015 10:50:11 -0500 Subject: [PATCH 05/32] Add the latest version to the papi package. --- var/spack/packages/papi/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/packages/papi/package.py b/var/spack/packages/papi/package.py index 596f7114d60..947311ce3b7 100644 --- a/var/spack/packages/papi/package.py +++ b/var/spack/packages/papi/package.py @@ -11,8 +11,11 @@ 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') + + url = "http://icl.cs.utk.edu/projects/papi/downloads/papi-5.3.0.tar.gz" version('5.3.0', '367961dd0ab426e5ae367c2713924ffb') def install(self, spec, prefix): From 15ec3cb3cd713e2ae1810440d01535f6990c4909 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 21 Jul 2015 10:51:53 -0500 Subject: [PATCH 06/32] Add qt3 version support and a variant that controls patching the qt3 version for compile issues and answering yes to the license questions during build. --- var/spack/packages/qt/package.py | 22 ++++++++- var/spack/packages/qt/qt3krell.patch | 68 ++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 var/spack/packages/qt/qt3krell.patch diff --git a/var/spack/packages/qt/package.py b/var/spack/packages/qt/package.py index 0e4abe3b1d7..e8d843519de 100644 --- a/var/spack/packages/qt/package.py +++ b/var/spack/packages/qt/package.py @@ -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): diff --git a/var/spack/packages/qt/qt3krell.patch b/var/spack/packages/qt/qt3krell.patch new file mode 100644 index 00000000000..3333eeacd4c --- /dev/null +++ b/var/spack/packages/qt/qt3krell.patch @@ -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 + #include ++#include + #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 + #include ++#include + #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 ++#include + #endif + + template +--- 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 From f5093094eb715e8e3072ecfc3c526951e47d22fe Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 21 Jul 2015 10:58:16 -0500 Subject: [PATCH 07/32] Add the cbtf-argonavis project package file. cbtf-argonavis is a project based on CBTF that supports performance analysis of GPU applications. --- var/spack/packages/cbtf-argonavis/package.py | 65 ++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 var/spack/packages/cbtf-argonavis/package.py diff --git a/var/spack/packages/cbtf-argonavis/package.py b/var/spack/packages/cbtf-argonavis/package.py new file mode 100644 index 00000000000..5f76a18dae4 --- /dev/null +++ b/var/spack/packages/cbtf-argonavis/package.py @@ -0,0 +1,65 @@ +################################################################################ +# 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/" + + url = "http://sourceforge.net/projects/cbtf/files/cbtf-1.5/cbtf-argonavis-1.5.tar.gz/download" + version('1.5', '8708197dbc08980fcd7b1a3a3a40a2c9') + + # Mirror access template example + #url = "file:/opt/spack-mirror-2015-02-27/cbtf-argonavis/cbtf-argonavis-1.5.tar.gz" + #version('1.5', '1f7f6512f55409ed2135cfceabe26b82') + + depends_on("cmake") + 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/cuda-6.0" + cupti_prefix_path = "/usr/local/cuda-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, + '-DPAPI_ROOT=%s' % spec['papi'].prefix, + '-DCBTF_PREFIX=%s' % spec['cbtf'].prefix, + *std_cmake_args) + make("clean") + make() + make("install") + From a9c737f9113baa4e7ae16dfe4af3d6669f521b42 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 21 Jul 2015 10:59:52 -0500 Subject: [PATCH 08/32] Add spack build package for Xerces-C which is a supporting package for the krell related projects. --- var/spack/packages/xerces-c/package.py | 36 ++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/packages/xerces-c/package.py diff --git a/var/spack/packages/xerces-c/package.py b/var/spack/packages/xerces-c/package.py new file mode 100644 index 00000000000..b59ab178aed --- /dev/null +++ b/var/spack/packages/xerces-c/package.py @@ -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") + From eff5016653980f24c5c55dfb866dbe108f50dedf Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 21 Jul 2015 11:15:53 -0500 Subject: [PATCH 09/32] Add the cbtf spack build package. cbtf is the base package for the component based tool framework and is used for building and connecting cbtf components, including distributed components via the MRNet transfer mechanism. --- var/spack/packages/cbtf/package.py | 65 ++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 var/spack/packages/cbtf/package.py diff --git a/var/spack/packages/cbtf/package.py b/var/spack/packages/cbtf/package.py new file mode 100644 index 00000000000..d2023ada858 --- /dev/null +++ b/var/spack/packages/cbtf/package.py @@ -0,0 +1,65 @@ +################################################################################ +# 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" + + url = "http://sourceforge.net/projects/cbtf/files/cbtf-1.5/cbtf-1.5.tar.gz/download" + version('1.5', '75a97e0161d19b3a12305ed1ffb3d3e2') + + # Mirror access template example + #url = "file:/opt/spack-mirror-2015-02-27/cbtf/cbtf-1.5.tar.gz" + #version('1.5', '1ca88a8834759c4c74452cb97fe7b70a') + + # Use when the git repository is available + #version('1.5', branch='master', git='http://git.code.sf.net/p/cbtf/cbtf') + + depends_on("cmake") + depends_on("boost@1.41:") + depends_on("mrnet@4.1.0+krelloptions") + 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") From 23971bae92f387cbcbed8f4ea5d99ce81bf03ff0 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 21 Jul 2015 11:20:27 -0500 Subject: [PATCH 10/32] Add the cbtf-krell spack build package. cbtf-krell is the krell contribution to the CBTF project and includes services, messages, and core libraries and components that support performance information gathering, transfer, and reduction. --- var/spack/packages/cbtf-krell/package.py | 114 +++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 var/spack/packages/cbtf-krell/package.py diff --git a/var/spack/packages/cbtf-krell/package.py b/var/spack/packages/cbtf-krell/package.py new file mode 100644 index 00000000000..0661b101a16 --- /dev/null +++ b/var/spack/packages/cbtf-krell/package.py @@ -0,0 +1,114 @@ +################################################################################ +# 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/" + + url = "http://sourceforge.net/projects/cbtf/files/cbtf-1.5/cbtf-krell-1.5.tar.gz/download" + version('1.5', '86cca5aa48a65206d3ac5502fcbd3ef6') + + # optional mirror access template + #url = "file:/opt/spack-mirror-2015-02-27/cbtf-krell/cbtf-krell-1.5.tar.gz" + #version('1.5', 'b13f6df6a93c44149d977773dd776d2f') + + + # Dependencies for cbtf-krell + + # For binutils service + depends_on("binutils@2.24+krellpatch") + + # collectionTool + depends_on("boost@1.41:") + depends_on("dyninst@8.2.1:+krelloptions") + depends_on("mrnet@4.1.0:+krelloptions") + 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" + # Other possibilities, they will need a -DMVAPICH_DIR=, etc clause in the cmake command to be recognized + # mvapich_prefix_path = "" + # mvapich2_prefix_path = "" + # mpich2_prefix_path = "" + # mpich_prefix_path = "" + # mpt_prefix_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, + #'-DLIB_SUFFIX=64', + + # 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, + '-DCUDA_DIR=%s' % cuda_prefix_path, + '-DCUPTI_DIR=%s' % cupti_prefix_path, + '-DOPENMPI_DIR=%s' % openmpi_prefix_path, + *std_cmake_args) + + make("clean") + make() + make("install") + From e8235b10c610aae51213e8f090e3bf692f99adcc Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 21 Jul 2015 11:23:23 -0500 Subject: [PATCH 11/32] Add the cbtf-lanl spack build package. cbtf-lanl is LANLs contribution to the CBTF project. It contains psTool and memTool which are example tools, showing use case examples for CBTF. --- var/spack/packages/cbtf-lanl/package.py | 59 +++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 var/spack/packages/cbtf-lanl/package.py diff --git a/var/spack/packages/cbtf-lanl/package.py b/var/spack/packages/cbtf-lanl/package.py new file mode 100644 index 00000000000..b833871df78 --- /dev/null +++ b/var/spack/packages/cbtf-lanl/package.py @@ -0,0 +1,59 @@ +################################################################################ +# 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/" + + url = "http://sourceforge.net/projects/cbtf/files/cbtf-1.5/cbtf-lanl-1.5.tar.gz/download" + version('1.5', '78d42050f9ec7127e8d0a93d87a66702') + + # Mirror access template example + #url = "file:/opt/spack-mirror-2015-02-27/cbtf-lanl/cbtf-lanl-1.5.tar.gz" + #version('1.5', 'c3f78f967b0a42c6734ce4be0e602426') + + # Dependencies for cbtf-krell + depends_on("boost@1.41:") + depends_on("mrnet@4.1.0+krelloptions") + 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") + From 9fee7be695eb92391b8754593877dded097ea8c8 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 21 Jul 2015 11:26:59 -0500 Subject: [PATCH 12/32] Add the initial version of the OpenSpeedShop spack build file. OpenSpeedShop is an application performance analysis tool that runs on Linux and gathers a number of different types of performance data and displays that data in a command line tool (CLI) and via a graphical user interface (GUI). --- var/spack/packages/openspeedshop/package.py | 193 ++++++++++++++++++++ 1 file changed, 193 insertions(+) create mode 100644 var/spack/packages/openspeedshop/package.py diff --git a/var/spack/packages/openspeedshop/package.py b/var/spack/packages/openspeedshop/package.py new file mode 100644 index 00000000000..94fec4a21cb --- /dev/null +++ b/var/spack/packages/openspeedshop/package.py @@ -0,0 +1,193 @@ +################################################################################ +# 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.1/openspeedshop-2.1.tar.gz/download" + version('2.1', '85ab0f883f16ea23815a670b5ec8e5d6') + + # optional mirror template + #url = "file:/home/jeg/OpenSpeedShop_ROOT/SOURCES/openspeedshop-2.1.tar.gz" + #version('2.1', '85ab0f883f16ea23815a670b5ec8e5d6') + + parallel = False + + variant('offline', default=False, 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.41:") + depends_on("dyninst@8.2.1:+krelloptions") + 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:+krelloptions", when='+cbtf') + + def install(self, spec, prefix): + + openmpi_prefix_path = "/opt/openmpi-1.8.2" + #'-DOPENMPI_DIR=%s' % spec['openmpi'].prefix, + #'-DMPICH_DIR=%s' % spec['mpich'].prefix, + + # 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, + '-DOPENMPI_DIR=%s' % openmpi_prefix_path, + *std_cmake_args) + make("clean") + make() + make("install") + else: + cmake_prefix_path = join_path(spec['dyninst'].prefix) + 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, + '-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_DIR=%s' % spec['python'].prefix, + '-DBOOST_DIR=%s' % spec['boost'].prefix, + '-DDYNINST_DIR=%s' % spec['dyninst'].prefix, + '-DOPENMPI_DIR=%s' % openmpi_prefix_path, + *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): + 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_DIR=%s' % spec['python'].prefix, + '-DBOOST_DIR=%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): + 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_DIR=%s' % spec['python'].prefix, + '-DBOOST_DIR=%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 From 24c609b6df5f7e30df0aa72f4c16f7272f1086cd Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Sat, 22 Aug 2015 09:34:44 -0500 Subject: [PATCH 13/32] Updates to the Krell related product packages. --- var/spack/packages/cbtf-argonavis/package.py | 14 +++---- var/spack/packages/cbtf-krell/package.py | 12 +++--- var/spack/packages/cbtf-lanl/package.py | 9 +++-- var/spack/packages/cbtf/package.py | 11 ++--- var/spack/packages/openspeedshop/package.py | 42 ++++++++++++++------ 5 files changed, 53 insertions(+), 35 deletions(-) diff --git a/var/spack/packages/cbtf-argonavis/package.py b/var/spack/packages/cbtf-argonavis/package.py index 5f76a18dae4..2dccb0e0c6e 100644 --- a/var/spack/packages/cbtf-argonavis/package.py +++ b/var/spack/packages/cbtf-argonavis/package.py @@ -23,14 +23,13 @@ class CbtfArgonavis(Package): libraries that was done as a result of a DOE SBIR grant.""" homepage = "http://sourceforge.net/p/cbtf/wiki/Home/" - url = "http://sourceforge.net/projects/cbtf/files/cbtf-1.5/cbtf-argonavis-1.5.tar.gz/download" - version('1.5', '8708197dbc08980fcd7b1a3a3a40a2c9') - # Mirror access template example - #url = "file:/opt/spack-mirror-2015-02-27/cbtf-argonavis/cbtf-argonavis-1.5.tar.gz" + #url = "file:/g/g24/jeg/cbtf-argonavis-1.5.tar.gz" #version('1.5', '1f7f6512f55409ed2135cfceabe26b82') - depends_on("cmake") + 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") @@ -44,8 +43,9 @@ def install(self, spec, prefix): 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/cuda-6.0" - cupti_prefix_path = "/usr/local/cuda-6.0/extras/CUPTI" + cuda_prefix_path = "/opt/cudatoolkit-6.5" + cupti_prefix_path = "/opt/cudatoolkit-6.5/extras/CUPTI" + with working_dir('CUDA'): with working_dir('build', create=True): diff --git a/var/spack/packages/cbtf-krell/package.py b/var/spack/packages/cbtf-krell/package.py index 0661b101a16..3f486b86ced 100644 --- a/var/spack/packages/cbtf-krell/package.py +++ b/var/spack/packages/cbtf-krell/package.py @@ -25,13 +25,12 @@ class CbtfKrell(Package): HPC levels of scale.""" homepage = "http://sourceforge.net/p/cbtf/wiki/Home/" - url = "http://sourceforge.net/projects/cbtf/files/cbtf-1.5/cbtf-krell-1.5.tar.gz/download" - version('1.5', '86cca5aa48a65206d3ac5502fcbd3ef6') - # optional mirror access template - #url = "file:/opt/spack-mirror-2015-02-27/cbtf-krell/cbtf-krell-1.5.tar.gz" + #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 @@ -39,7 +38,7 @@ class CbtfKrell(Package): depends_on("binutils@2.24+krellpatch") # collectionTool - depends_on("boost@1.41:") + depends_on("boost@1.42:") depends_on("dyninst@8.2.1:+krelloptions") depends_on("mrnet@4.1.0:+krelloptions") depends_on("xerces-c@3.1.1:") @@ -66,6 +65,8 @@ def install(self, spec, 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 = "" # mvapich2_prefix_path = "" @@ -106,6 +107,7 @@ def install(self, spec, prefix): '-DCUDA_DIR=%s' % cuda_prefix_path, '-DCUPTI_DIR=%s' % cupti_prefix_path, '-DOPENMPI_DIR=%s' % openmpi_prefix_path, + '-DMVAPICH_DIR=%s' % mvapich_prefix_path, *std_cmake_args) make("clean") diff --git a/var/spack/packages/cbtf-lanl/package.py b/var/spack/packages/cbtf-lanl/package.py index b833871df78..25f91d8c2f5 100644 --- a/var/spack/packages/cbtf-lanl/package.py +++ b/var/spack/packages/cbtf-lanl/package.py @@ -22,15 +22,16 @@ 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/" - url = "http://sourceforge.net/projects/cbtf/files/cbtf-1.5/cbtf-lanl-1.5.tar.gz/download" - version('1.5', '78d42050f9ec7127e8d0a93d87a66702') # Mirror access template example - #url = "file:/opt/spack-mirror-2015-02-27/cbtf-lanl/cbtf-lanl-1.5.tar.gz" + #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.41:") + depends_on("boost@1.42:") depends_on("mrnet@4.1.0+krelloptions") depends_on("xerces-c@3.1.1:") depends_on("cbtf") diff --git a/var/spack/packages/cbtf/package.py b/var/spack/packages/cbtf/package.py index d2023ada858..46d47153e62 100644 --- a/var/spack/packages/cbtf/package.py +++ b/var/spack/packages/cbtf/package.py @@ -24,18 +24,15 @@ class Cbtf(Package): networks into sequential and distributed network tools.""" homepage = "http://sourceforge.net/p/cbtf/wiki/Home" - url = "http://sourceforge.net/projects/cbtf/files/cbtf-1.5/cbtf-1.5.tar.gz/download" - version('1.5', '75a97e0161d19b3a12305ed1ffb3d3e2') - # Mirror access template example - #url = "file:/opt/spack-mirror-2015-02-27/cbtf/cbtf-1.5.tar.gz" - #version('1.5', '1ca88a8834759c4c74452cb97fe7b70a') + #url = "file:/g/g24/jeg/cbtf-1.5.tar.gz" + #version('1.6', '1ca88a8834759c4c74452cb97fe7b70a') # Use when the git repository is available - #version('1.5', branch='master', git='http://git.code.sf.net/p/cbtf/cbtf') + version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf/cbtf') depends_on("cmake") - depends_on("boost@1.41:") + depends_on("boost@1.42:") depends_on("mrnet@4.1.0+krelloptions") depends_on("xerces-c@3.1.1:") depends_on("libxml2") diff --git a/var/spack/packages/openspeedshop/package.py b/var/spack/packages/openspeedshop/package.py index 94fec4a21cb..3c24aed8824 100644 --- a/var/spack/packages/openspeedshop/package.py +++ b/var/spack/packages/openspeedshop/package.py @@ -30,11 +30,13 @@ class Openspeedshop(Package): 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', '85ab0f883f16ea23815a670b5ec8e5d6') + version('2.1', '64ee17166519838c7b94a1adc138e94f') # optional mirror template - #url = "file:/home/jeg/OpenSpeedShop_ROOT/SOURCES/openspeedshop-2.1.tar.gz" - #version('2.1', '85ab0f883f16ea23815a670b5ec8e5d6') + #url = "file:/g/g24/jeg/openspeedshop-2.1.tar.gz" + #version('2.1', '64ee17166519838c7b94a1adc138e94f') + + parallel = False @@ -56,7 +58,7 @@ class Openspeedshop(Package): depends_on("libelf") depends_on("libdwarf") depends_on("sqlite") - depends_on("boost@1.41:") + depends_on("boost@1.42:") depends_on("dyninst@8.2.1:+krelloptions") depends_on("python") depends_on("qt@3.3.8b+krellpatch") @@ -72,14 +74,14 @@ class Openspeedshop(Package): # 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("cbtf-argonavis", when='+cbtf') depends_on("mrnet@4.1.0:+krelloptions", 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, - #'-DMPICH_DIR=%s' % spec['mpich'].prefix, # FIXME: How do we make this dynamic in spack? That is, can we specify the paths to cuda dynamically? # WAITING for external package support. @@ -99,6 +101,7 @@ def install(self, spec, prefix): '-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix, '-DPAPI_DIR=%s' % spec['papi'].prefix, '-DOPENMPI_DIR=%s' % openmpi_prefix_path, + '-DMVAPICH_DIR=%s' % mvapich_prefix_path, *std_cmake_args) make("clean") make() @@ -106,6 +109,8 @@ def install(self, spec, prefix): else: cmake_prefix_path = join_path(spec['dyninst'].prefix) with working_dir('build', create=True): + #python_vers=join_path(spec['python'].version[:2]) + python_vers='%d.%d' % spec['python'].version[:2] cmake('..', '-DCMAKE_INSTALL_PREFIX=%s' % prefix, '-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64, @@ -119,10 +124,14 @@ def install(self, spec, prefix): '-DPAPI_DIR=%s' % spec['papi'].prefix, '-DSQLITE3_DIR=%s' % spec['sqlite'].prefix, '-DQTLIB_DIR=%s' % spec['qt'].prefix, - '-DPYTHON_DIR=%s' % spec['python'].prefix, - '-DBOOST_DIR=%s' % spec['boost'].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, '-DOPENMPI_DIR=%s' % openmpi_prefix_path, + '-DMVAPICH_DIR=%s' % mvapich_prefix_path, *std_cmake_args) make("clean") make() @@ -133,6 +142,7 @@ def install(self, spec, prefix): 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, @@ -143,8 +153,11 @@ def install(self, spec, prefix): '-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix, '-DCBTF_DIR=%s' % spec['cbtf'].prefix, '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, - '-DPYTHON_DIR=%s' % spec['python'].prefix, - '-DBOOST_DIR=%s' % spec['boost'].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) @@ -154,6 +167,8 @@ def install(self, spec, prefix): 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, @@ -166,8 +181,11 @@ def install(self, spec, prefix): '-DCBTF_DIR=%s' % spec['cbtf'].prefix, '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, '-DQTLIB_DIR=%s' % spec['qt'].prefix, - '-DPYTHON_DIR=%s' % spec['python'].prefix, - '-DBOOST_DIR=%s' % spec['boost'].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) From d6a2ab08acd8f4cbedca20ac182329d1090af056 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Fri, 6 Nov 2015 11:47:00 -0800 Subject: [PATCH 14/32] Match up with the new binutils package file. It does what OSS needs w.r.t. libiberty. --- var/spack/packages/binutils/package.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/var/spack/packages/binutils/package.py b/var/spack/packages/binutils/package.py index 43a670585e6..29b8de462b4 100644 --- a/var/spack/packages/binutils/package.py +++ b/var/spack/packages/binutils/package.py @@ -13,19 +13,22 @@ class Binutils(Package): 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.') + def install(self, spec, prefix): - # Add additional configuration options for use in the OpenSpeedShop project - if '+krellpatch' in spec: - configure('--prefix', self.prefix, - '--libdir', self.prefix.lib, - '--enable-shared', - '--enable-install-libiberty', - '--disable-multilib' - ) - else: - configure("--prefix=%s" % prefix) + configure_args = [ + '--prefix=%s' % prefix, + '--disable-dependency-tracking', + '--enable-interwork', + '--enable-multilib', + '--enable-shared', + '--enable-64-bit-bfd', + '--enable-targets=all'] + if '+libiberty' in spec: + configure_args.append('--enable-install-libiberty') + configure(*configure_args) make() make("install") From 7e6b7795f1cd1e73591c3fba5602220d20d453e6 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Fri, 6 Nov 2015 11:53:53 -0800 Subject: [PATCH 15/32] Match up with the new binutils package file. It does what OSS needs w.r.t. libiberty. --- var/spack/packages/binutils/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/packages/binutils/package.py b/var/spack/packages/binutils/package.py index 29b8de462b4..5ef9a80cca9 100644 --- a/var/spack/packages/binutils/package.py +++ b/var/spack/packages/binutils/package.py @@ -15,6 +15,8 @@ class Binutils(Package): variant('libiberty', default=False, description='Also install libiberty.') + variant('libiberty', default=False, description='Also install libiberty.') + def install(self, spec, prefix): configure_args = [ From aa9b14aff47864c04f99bd4c83fb10dc6a9c49ad Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Fri, 6 Nov 2015 11:55:20 -0800 Subject: [PATCH 16/32] Match up with the new binutils package file. It does what OSS needs w.r.t. libiberty. --- var/spack/packages/binutils/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/packages/binutils/package.py b/var/spack/packages/binutils/package.py index 5ef9a80cca9..c939822cdb5 100644 --- a/var/spack/packages/binutils/package.py +++ b/var/spack/packages/binutils/package.py @@ -17,8 +17,9 @@ class Binutils(Package): variant('libiberty', default=False, description='Also install libiberty.') - def install(self, spec, prefix): + variant('libiberty', default=False, description='Also install libiberty.') + def install(self, spec, prefix): configure_args = [ '--prefix=%s' % prefix, '--disable-dependency-tracking', From 2aa501bf3db5c3962b6f2a0932e21afe03db9329 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Fri, 6 Nov 2015 14:19:00 -0800 Subject: [PATCH 17/32] Update the checksum value for the new tarball --- var/spack/packages/openspeedshop/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/packages/openspeedshop/package.py b/var/spack/packages/openspeedshop/package.py index 3c24aed8824..93f356fb924 100644 --- a/var/spack/packages/openspeedshop/package.py +++ b/var/spack/packages/openspeedshop/package.py @@ -30,7 +30,7 @@ class Openspeedshop(Package): 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', '64ee17166519838c7b94a1adc138e94f') + version('2.1', 'bdaa57c1a0db9d0c3e0303fd8496c507') # optional mirror template #url = "file:/g/g24/jeg/openspeedshop-2.1.tar.gz" From 0ced060b87b129c47666ef91f79d52d94e79e291 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Fri, 6 Nov 2015 15:15:38 -0800 Subject: [PATCH 18/32] cbtf did not compile with boost 1.59, so reverted to boost 1.50 temporarily until we fix the cbtf/boost compile issues. --- var/spack/packages/cbtf/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/packages/cbtf/package.py b/var/spack/packages/cbtf/package.py index 46d47153e62..6f1e49deed2 100644 --- a/var/spack/packages/cbtf/package.py +++ b/var/spack/packages/cbtf/package.py @@ -32,7 +32,8 @@ class Cbtf(Package): version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf/cbtf') depends_on("cmake") - depends_on("boost@1.42:") + #depends_on("boost@1.42:") + depends_on("boost@1.50") depends_on("mrnet@4.1.0+krelloptions") depends_on("xerces-c@3.1.1:") depends_on("libxml2") From 3ce99cf4e18b599a42041a486b82498a0f43a488 Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Wed, 25 Nov 2015 11:02:51 -0800 Subject: [PATCH 19/32] fix for the shell arg handling issues The setup-env.sh script now saves off the argument array before shifting off all the arguments so that the final command invocation doesn't arbitrarily requote the arguments. All external quoting is preserved now. This has been thoroughly tested with zsh, but should probably be tested with bash etc. before acceptance. --- share/spack/setup-env.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index b90846d28fc..8ee42bb10f8 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -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 } From c5b7eba45743ebd131233c035101a0e64bb0c1c7 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 16 Nov 2015 17:00:11 -0500 Subject: [PATCH 20/32] hdf5: make mpi support optional --- var/spack/packages/hdf5/package.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/var/spack/packages/hdf5/package.py b/var/spack/packages/hdf5/package.py index 48997425cdb..44d4ede2787 100644 --- a/var/spack/packages/hdf5/package.py +++ b/var/spack/packages/hdf5/package.py @@ -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") From 79a641ccf16ee0bef0c32730c99b8513a88aa918 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 16 Nov 2015 17:01:01 -0500 Subject: [PATCH 21/32] paraview: update hdf5 comment --- var/spack/packages/paraview/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/packages/paraview/package.py b/var/spack/packages/paraview/package.py index b0893237e9a..3bee5a10415 100644 --- a/var/spack/packages/paraview/package.py +++ b/var/spack/packages/paraview/package.py @@ -24,7 +24,7 @@ class Paraview(Package): depends_on('bzip2') depends_on('freetype') - depends_on('hdf5') # drags in mpi + depends_on('hdf5') depends_on('jpeg') depends_on('libpng') depends_on('libtiff') From 6f978af77b7b98ca51e47bc8d3c097fe236e1491 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 10 Dec 2015 11:53:40 -0500 Subject: [PATCH 22/32] hdf5: update dependents to declare MPI support --- var/spack/packages/SAMRAI/package.py | 2 +- var/spack/packages/cleverleaf/package.py | 2 +- var/spack/packages/paraview/package.py | 1 + var/spack/packages/petsc/package.py | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/var/spack/packages/SAMRAI/package.py b/var/spack/packages/SAMRAI/package.py index a17aea9c993..2c3b9180afe 100644 --- a/var/spack/packages/SAMRAI/package.py +++ b/var/spack/packages/SAMRAI/package.py @@ -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 diff --git a/var/spack/packages/cleverleaf/package.py b/var/spack/packages/cleverleaf/package.py index 4e7e6a855ab..fb400b25c3e 100644 --- a/var/spack/packages/cleverleaf/package.py +++ b/var/spack/packages/cleverleaf/package.py @@ -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): diff --git a/var/spack/packages/paraview/package.py b/var/spack/packages/paraview/package.py index 3bee5a10415..1d99b348997 100644 --- a/var/spack/packages/paraview/package.py +++ b/var/spack/packages/paraview/package.py @@ -25,6 +25,7 @@ class Paraview(Package): depends_on('bzip2') depends_on('freetype') depends_on('hdf5') + depends_on('hdf5+mpi', when='+mpi') depends_on('jpeg') depends_on('libpng') depends_on('libtiff') diff --git a/var/spack/packages/petsc/package.py b/var/spack/packages/petsc/package.py index 4864e39bf18..f3ed3d72ec5 100644 --- a/var/spack/packages/petsc/package.py +++ b/var/spack/packages/petsc/package.py @@ -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): From 8df4fd9e942cb4e632e309ae758356c29a72ec02 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Sun, 13 Dec 2015 17:13:34 -0800 Subject: [PATCH 23/32] Fix build of krell tools to use spack with minimal impact on rest of spack packages. --- var/spack/packages/binutils/package.py | 6 ---- var/spack/packages/boost/package.py | 3 +- var/spack/packages/cbtf-krell/package.py | 38 ++++++++++----------- var/spack/packages/cbtf-lanl/package.py | 2 +- var/spack/packages/dyninst/package.py | 33 +++++------------- var/spack/packages/openspeedshop/package.py | 33 ++++++++++-------- var/spack/packages/papi/package.py | 1 + 7 files changed, 51 insertions(+), 65 deletions(-) diff --git a/var/spack/packages/binutils/package.py b/var/spack/packages/binutils/package.py index 47234367d70..123f4598f69 100644 --- a/var/spack/packages/binutils/package.py +++ b/var/spack/packages/binutils/package.py @@ -15,12 +15,6 @@ class Binutils(Package): variant('libiberty', default=False, description='Also install libiberty.') - variant('libiberty', default=False, description='Also install libiberty.') - - variant('libiberty', default=False, description='Also install libiberty.') - - variant('libiberty', default=False, description='Also install libiberty.') - def install(self, spec, prefix): configure_args = [ '--prefix=%s' % prefix, diff --git a/var/spack/packages/boost/package.py b/var/spack/packages/boost/package.py index 81dadbbf611..fc721753c70 100644 --- a/var/spack/packages/boost/package.py +++ b/var/spack/packages/boost/package.py @@ -58,7 +58,8 @@ def url_for_version(self, version): parts = [str(p) for p in Version(version)] dots = ".".join(parts) underscores = "_".join(parts) - return "http://downloads.sourceforge.net/project/boost/boost/%s/boost_%s.tar.bz2" % ( + #return "http://downloads.sourceforge.net/project/boost/boost/%s/boost_%s.tar.bz2" % ( + return "http://downloads.sourceforge.net/project/boost/boost/%s.0/boost_%s_0.tar.bz2" % ( dots, underscores) def determine_toolset(self): diff --git a/var/spack/packages/cbtf-krell/package.py b/var/spack/packages/cbtf-krell/package.py index 3f486b86ced..d9a2b7f8b53 100644 --- a/var/spack/packages/cbtf-krell/package.py +++ b/var/spack/packages/cbtf-krell/package.py @@ -38,8 +38,8 @@ class CbtfKrell(Package): depends_on("binutils@2.24+krellpatch") # collectionTool - depends_on("boost@1.42:") - depends_on("dyninst@8.2.1:+krelloptions") + depends_on("boost@1.50") + depends_on("dyninst@8.2.1") depends_on("mrnet@4.1.0:+krelloptions") depends_on("xerces-c@3.1.1:") depends_on("cbtf") @@ -64,8 +64,8 @@ def install(self, spec, 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" + #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 = "" @@ -76,18 +76,22 @@ def install(self, spec, prefix): # 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 = "" + #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, - #'-DLIB_SUFFIX=64', + #'-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): @@ -104,10 +108,6 @@ def install(self, spec, prefix): '-DDYNINST_DIR=%s' % spec['dyninst'].prefix, '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix, '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path, - '-DCUDA_DIR=%s' % cuda_prefix_path, - '-DCUPTI_DIR=%s' % cupti_prefix_path, - '-DOPENMPI_DIR=%s' % openmpi_prefix_path, - '-DMVAPICH_DIR=%s' % mvapich_prefix_path, *std_cmake_args) make("clean") diff --git a/var/spack/packages/cbtf-lanl/package.py b/var/spack/packages/cbtf-lanl/package.py index 25f91d8c2f5..14651723cd3 100644 --- a/var/spack/packages/cbtf-lanl/package.py +++ b/var/spack/packages/cbtf-lanl/package.py @@ -31,7 +31,7 @@ class CbtfLanl(Package): # Dependencies for cbtf-krell - depends_on("boost@1.42:") + depends_on("boost@1.50") depends_on("mrnet@4.1.0+krelloptions") depends_on("xerces-c@3.1.1:") depends_on("cbtf") diff --git a/var/spack/packages/dyninst/package.py b/var/spack/packages/dyninst/package.py index 81ea7b7e483..0111dcbe08d 100644 --- a/var/spack/packages/dyninst/package.py +++ b/var/spack/packages/dyninst/package.py @@ -38,8 +38,6 @@ class Dyninst(Package): version('8.1.1', 'd1a04e995b7aa70960cd1d1fac8bd6ac', url="http://www.paradyn.org/release8.1/DyninstAPI-8.1.1.tgz") - variant('krelloptions', default=False, description="build dyninst includes into include/dyninst.") - depends_on("libelf") depends_on("libdwarf") depends_on("boost@1.42:") @@ -50,28 +48,15 @@ def install(self, spec, prefix): libdwarf = spec['libdwarf'].prefix with working_dir('spack-build', create=True): - # cbtf-krell and openspeedshop expect to reference dyninst/include, so adding include specification to that end - if '+krelloptions' in spec: - cmake('..', - '-DINSTALL_INCLUDE_DIR=%s' % join_path(self.prefix.include, 'dyninst'), - '-DBoost_INCLUDE_DIR=%s' % spec['boost'].prefix.include, - '-DBoost_LIBRARY_DIR=%s' % spec['boost'].prefix.lib, - '-DBoost_NO_SYSTEM_PATHS=TRUE', - '-DLIBELF_INCLUDE_DIR=%s' % join_path(libelf.include, 'libelf'), - '-DLIBELF_LIBRARIES=%s' % join_path(libelf.lib, 'libelf.so'), - '-DLIBDWARF_INCLUDE_DIR=%s' % libdwarf.include, - '-DLIBDWARF_LIBRARIES=%s' % join_path(libdwarf.lib, 'libdwarf.so'), - *std_cmake_args) - else: - cmake('..', - '-DBoost_INCLUDE_DIR=%s' % spec['boost'].prefix.include, - '-DBoost_LIBRARY_DIR=%s' % spec['boost'].prefix.lib, - '-DBoost_NO_SYSTEM_PATHS=TRUE', - '-DLIBELF_INCLUDE_DIR=%s' % join_path(libelf.include, 'libelf'), - '-DLIBELF_LIBRARIES=%s' % join_path(libelf.lib, 'libelf.so'), - '-DLIBDWARF_INCLUDE_DIR=%s' % libdwarf.include, - '-DLIBDWARF_LIBRARIES=%s' % join_path(libdwarf.lib, 'libdwarf.so'), - *std_cmake_args) + cmake('..', + '-DBoost_INCLUDE_DIR=%s' % spec['boost'].prefix.include, + '-DBoost_LIBRARY_DIR=%s' % spec['boost'].prefix.lib, + '-DBoost_NO_SYSTEM_PATHS=TRUE', + '-DLIBELF_INCLUDE_DIR=%s' % join_path(libelf.include, 'libelf'), + '-DLIBELF_LIBRARIES=%s' % join_path(libelf.lib, 'libelf.so'), + '-DLIBDWARF_INCLUDE_DIR=%s' % libdwarf.include, + '-DLIBDWARF_LIBRARIES=%s' % join_path(libdwarf.lib, 'libdwarf.so'), + *std_cmake_args) make() make("install") diff --git a/var/spack/packages/openspeedshop/package.py b/var/spack/packages/openspeedshop/package.py index 93f356fb924..d439fba734c 100644 --- a/var/spack/packages/openspeedshop/package.py +++ b/var/spack/packages/openspeedshop/package.py @@ -28,9 +28,14 @@ class Openspeedshop(Package): as open source code primarily under LGPL. """ + 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') + 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" @@ -40,7 +45,7 @@ class Openspeedshop(Package): parallel = False - variant('offline', default=False, description="build with offline instrumentor enabled.") + 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.") @@ -58,8 +63,8 @@ class Openspeedshop(Package): depends_on("libelf") depends_on("libdwarf") depends_on("sqlite") - depends_on("boost@1.42:") - depends_on("dyninst@8.2.1:+krelloptions") + depends_on("boost@1.50") + depends_on("dyninst@8.2.1") depends_on("python") depends_on("qt@3.3.8b+krellpatch") @@ -79,15 +84,17 @@ class Openspeedshop(Package): def install(self, spec, prefix): - openmpi_prefix_path = "/opt/openmpi-1.8.2" - mvapich_prefix_path = "/usr/local/tools/mvapich-gnu" + #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 '+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" @@ -100,8 +107,6 @@ def install(self, spec, prefix): '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix, '-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix, '-DPAPI_DIR=%s' % spec['papi'].prefix, - '-DOPENMPI_DIR=%s' % openmpi_prefix_path, - '-DMVAPICH_DIR=%s' % mvapich_prefix_path, *std_cmake_args) make("clean") make() @@ -110,6 +115,8 @@ def install(self, spec, prefix): 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, @@ -130,8 +137,6 @@ def install(self, spec, prefix): '-DBoost_NO_SYSTEM_PATHS=TRUE', '-DBOOST_ROOT=%s' % spec['boost'].prefix, '-DDYNINST_DIR=%s' % spec['dyninst'].prefix, - '-DOPENMPI_DIR=%s' % openmpi_prefix_path, - '-DMVAPICH_DIR=%s' % mvapich_prefix_path, *std_cmake_args) make("clean") make() diff --git a/var/spack/packages/papi/package.py b/var/spack/packages/papi/package.py index f7c087c69b3..910e0aa9f9a 100644 --- a/var/spack/packages/papi/package.py +++ b/var/spack/packages/papi/package.py @@ -12,6 +12,7 @@ class Papi(Package): 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.4.1.tar.gz" version('5.4.1', '9134a99219c79767a11463a76b0b01a2') version('5.3.0', '367961dd0ab426e5ae367c2713924ffb') From 0a0cd4b9d3c86e7e8438261b94be05caac5ea178 Mon Sep 17 00:00:00 2001 From: alalazo Date: Tue, 15 Dec 2015 16:29:36 +0100 Subject: [PATCH 24/32] gnuplot : added package --- var/spack/packages/gnuplot/package.py | 59 ++++++++++++++++++++++ var/spack/packages/libcerf/package.py | 42 +++++++++++++++ var/spack/packages/libgd/package.py | 51 +++++++++++++++++++ var/spack/packages/ncurses/package.py | 2 + var/spack/packages/ncurses/patch_gcc_5.txt | 12 +++++ var/spack/packages/wx/package.py | 2 + 6 files changed, 168 insertions(+) create mode 100644 var/spack/packages/gnuplot/package.py create mode 100644 var/spack/packages/libcerf/package.py create mode 100644 var/spack/packages/libgd/package.py create mode 100644 var/spack/packages/ncurses/patch_gcc_5.txt diff --git a/var/spack/packages/gnuplot/package.py b/var/spack/packages/gnuplot/package.py new file mode 100644 index 00000000000..e034cb09951 --- /dev/null +++ b/var/spack/packages/gnuplot/package.py @@ -0,0 +1,59 @@ +############################################################################## +# 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') + + 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") diff --git a/var/spack/packages/libcerf/package.py b/var/spack/packages/libcerf/package.py new file mode 100644 index 00000000000..15e87ce4fe6 --- /dev/null +++ b/var/spack/packages/libcerf/package.py @@ -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") diff --git a/var/spack/packages/libgd/package.py b/var/spack/packages/libgd/package.py new file mode 100644 index 00000000000..b066b43878f --- /dev/null +++ b/var/spack/packages/libgd/package.py @@ -0,0 +1,51 @@ +############################################################################## +# 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') + + 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") diff --git a/var/spack/packages/ncurses/package.py b/var/spack/packages/ncurses/package.py index cc180bbae1b..31f53b6c43e 100644 --- a/var/spack/packages/ncurses/package.py +++ b/var/spack/packages/ncurses/package.py @@ -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", diff --git a/var/spack/packages/ncurses/patch_gcc_5.txt b/var/spack/packages/ncurses/patch_gcc_5.txt new file mode 100644 index 00000000000..f85e07cb8d1 --- /dev/null +++ b/var/spack/packages/ncurses/patch_gcc_5.txt @@ -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 > $@ diff --git a/var/spack/packages/wx/package.py b/var/spack/packages/wx/package.py index 1813a8c8a5a..206fde77751 100644 --- a/var/spack/packages/wx/package.py +++ b/var/spack/packages/wx/package.py @@ -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") From 917fb328bb5d992b71b28c7fb86e2a0a82e06d02 Mon Sep 17 00:00:00 2001 From: Mike Nolta Date: Tue, 15 Dec 2015 12:25:31 -0500 Subject: [PATCH 25/32] cmake: enable ssl, for https downloads By default cmake builds its own curl, without SSL support. This patch enables SSL when building cmake, fixing the following error: error: downloading 'https://...' failed status_code: 1 status_string: "Unsupported protocol" log: Protocol "https" not supported or disabled in libcurl --- var/spack/packages/cmake/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/packages/cmake/package.py b/var/spack/packages/cmake/package.py index c24a80748c2..cb54c92d692 100644 --- a/var/spack/packages/cmake/package.py +++ b/var/spack/packages/cmake/package.py @@ -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') From 2f9ee884087005d90a9d63d29667cca1634fafca Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 15 Dec 2015 17:15:37 -0800 Subject: [PATCH 26/32] Fix #238: Database specs need to be concrete when read in as well. --- lib/spack/spack/database.py | 4 ++++ lib/spack/spack/directory_layout.py | 4 +--- lib/spack/spack/spec.py | 13 ++++++++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index d62a47547d2..bf54055a241 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -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 diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index a434dad5c49..d91fbe9f4e9 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -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 diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index fb5ea5d02b4..037ec97a5e8 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -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): From d5018e77a39bc25d654b4bc9bd057b7798889fb7 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 16 Dec 2015 09:32:48 +0100 Subject: [PATCH 27/32] gnuplot : modifications to build on RHLE 6 --- var/spack/packages/fontconfig/package.py | 3 ++- var/spack/packages/gnuplot/package.py | 4 +++- var/spack/packages/libgd/package.py | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/var/spack/packages/fontconfig/package.py b/var/spack/packages/fontconfig/package.py index 89b13604e89..517c9d18133 100644 --- a/var/spack/packages/fontconfig/package.py +++ b/var/spack/packages/fontconfig/package.py @@ -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") diff --git a/var/spack/packages/gnuplot/package.py b/var/spack/packages/gnuplot/package.py index e034cb09951..71c09bd43d2 100644 --- a/var/spack/packages/gnuplot/package.py +++ b/var/spack/packages/gnuplot/package.py @@ -45,7 +45,9 @@ class Gnuplot(Package): depends_on('libgd') depends_on('cairo') depends_on('pango') - depends_on('wx') + 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 diff --git a/var/spack/packages/libgd/package.py b/var/spack/packages/libgd/package.py index b066b43878f..d920957ef1c 100644 --- a/var/spack/packages/libgd/package.py +++ b/var/spack/packages/libgd/package.py @@ -39,6 +39,8 @@ class Libgd(Package): version('2.1.1', 'e91a1a99903e460e7ba00a794e72cc1e') + depends_on('libpng') + def install(self, spec, prefix): with working_dir('spack-build', create=True): From cc9266e56c3b72e707dc5b1370c1eca8b3014223 Mon Sep 17 00:00:00 2001 From: alalazo Date: Wed, 16 Dec 2015 12:45:58 +0100 Subject: [PATCH 28/32] gsl : added package --- var/spack/packages/gsl/package.py | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 var/spack/packages/gsl/package.py diff --git a/var/spack/packages/gsl/package.py b/var/spack/packages/gsl/package.py new file mode 100644 index 00000000000..789eb49d854 --- /dev/null +++ b/var/spack/packages/gsl/package.py @@ -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") From 82aa366adfd5b8e0acd6d320c620bf33dd8e6a68 Mon Sep 17 00:00:00 2001 From: Mike Nolta Date: Wed, 16 Dec 2015 11:43:07 -0500 Subject: [PATCH 29/32] minor comment tweak in modules.py --- lib/spack/spack/modules.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py index 59ed9f893ec..7036626e29e 100644 --- a/lib/spack/spack/modules.py +++ b/lib/spack/spack/modules.py @@ -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 From 107c0dd1a8f56c92e02a78b258bdf5ccabf6a277 Mon Sep 17 00:00:00 2001 From: "Gregory L. Lee" Date: Wed, 16 Dec 2015 15:54:15 -0800 Subject: [PATCH 30/32] added option to enable pdb debug --- bin/spack | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bin/spack b/bin/spack index ec6a80ff024..a0b260ccaf3 100755 --- a/bin/spack +++ b/bin/spack @@ -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() From c02cbaecd8cad7154b5507c0122a5163544fd349 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Thu, 17 Dec 2015 07:41:49 -0800 Subject: [PATCH 31/32] Change back the previous boost change and change the mrnet variant name to lwthreads. --- var/spack/packages/boost/package.py | 3 +-- var/spack/packages/cbtf-argonavis/package.py | 7 ++++--- var/spack/packages/cbtf-krell/package.py | 4 ++-- var/spack/packages/cbtf-lanl/package.py | 2 +- var/spack/packages/cbtf/package.py | 7 +++---- var/spack/packages/mrnet/package.py | 4 ++-- var/spack/packages/openspeedshop/package.py | 6 +++--- 7 files changed, 16 insertions(+), 17 deletions(-) diff --git a/var/spack/packages/boost/package.py b/var/spack/packages/boost/package.py index fc721753c70..81dadbbf611 100644 --- a/var/spack/packages/boost/package.py +++ b/var/spack/packages/boost/package.py @@ -58,8 +58,7 @@ def url_for_version(self, version): parts = [str(p) for p in Version(version)] dots = ".".join(parts) underscores = "_".join(parts) - #return "http://downloads.sourceforge.net/project/boost/boost/%s/boost_%s.tar.bz2" % ( - return "http://downloads.sourceforge.net/project/boost/boost/%s.0/boost_%s_0.tar.bz2" % ( + return "http://downloads.sourceforge.net/project/boost/boost/%s/boost_%s.tar.bz2" % ( dots, underscores) def determine_toolset(self): diff --git a/var/spack/packages/cbtf-argonavis/package.py b/var/spack/packages/cbtf-argonavis/package.py index 2dccb0e0c6e..7b07933911a 100644 --- a/var/spack/packages/cbtf-argonavis/package.py +++ b/var/spack/packages/cbtf-argonavis/package.py @@ -33,7 +33,7 @@ class CbtfArgonavis(Package): depends_on("papi") depends_on("cbtf") depends_on("cbtf-krell") - #depends_on("cuda") + depends_on("cuda") parallel = False @@ -43,8 +43,8 @@ def install(self, spec, prefix): 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 = "/opt/cudatoolkit-6.5" - cupti_prefix_path = "/opt/cudatoolkit-6.5/extras/CUPTI" + cuda_prefix_path = "/usr/local/cudatoolkit-6.0" + cupti_prefix_path = "/usr/local/cudatoolkit-6.0/extras/CUPTI" with working_dir('CUDA'): @@ -56,6 +56,7 @@ def install(self, spec, prefix): '-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) diff --git a/var/spack/packages/cbtf-krell/package.py b/var/spack/packages/cbtf-krell/package.py index d9a2b7f8b53..9458ac113c9 100644 --- a/var/spack/packages/cbtf-krell/package.py +++ b/var/spack/packages/cbtf-krell/package.py @@ -38,9 +38,9 @@ class CbtfKrell(Package): depends_on("binutils@2.24+krellpatch") # collectionTool - depends_on("boost@1.50") + depends_on("boost@1.50.0") depends_on("dyninst@8.2.1") - depends_on("mrnet@4.1.0:+krelloptions") + depends_on("mrnet@4.1.0:+lwthreads") depends_on("xerces-c@3.1.1:") depends_on("cbtf") diff --git a/var/spack/packages/cbtf-lanl/package.py b/var/spack/packages/cbtf-lanl/package.py index 14651723cd3..2da9e8a1f74 100644 --- a/var/spack/packages/cbtf-lanl/package.py +++ b/var/spack/packages/cbtf-lanl/package.py @@ -32,7 +32,7 @@ class CbtfLanl(Package): # Dependencies for cbtf-krell depends_on("boost@1.50") - depends_on("mrnet@4.1.0+krelloptions") + depends_on("mrnet@4.1.0:+lwthreads") depends_on("xerces-c@3.1.1:") depends_on("cbtf") depends_on("cbtf-krell") diff --git a/var/spack/packages/cbtf/package.py b/var/spack/packages/cbtf/package.py index 6f1e49deed2..52e6a07020a 100644 --- a/var/spack/packages/cbtf/package.py +++ b/var/spack/packages/cbtf/package.py @@ -32,9 +32,9 @@ class Cbtf(Package): version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf/cbtf') depends_on("cmake") - #depends_on("boost@1.42:") - depends_on("boost@1.50") - depends_on("mrnet@4.1.0+krelloptions") + #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") @@ -43,7 +43,6 @@ class Cbtf(Package): 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. diff --git a/var/spack/packages/mrnet/package.py b/var/spack/packages/mrnet/package.py index 08c57d74369..3eb33d07140 100644 --- a/var/spack/packages/mrnet/package.py +++ b/var/spack/packages/mrnet/package.py @@ -8,14 +8,14 @@ class Mrnet(Package): version('4.0.0', 'd00301c078cba57ef68613be32ceea2f') version('4.1.0', '5a248298b395b329e2371bf25366115c') - variant('krelloptions', default=False, description="Also build the MRNet LW threadsafe libraries") + 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 '+krelloptions' in spec: + if '+lwthreads' in spec: configure("--prefix=%s" %prefix, "--enable-shared", "--enable-ltwt-threadsafe") else: configure("--prefix=%s" %prefix, "--enable-shared") diff --git a/var/spack/packages/openspeedshop/package.py b/var/spack/packages/openspeedshop/package.py index d439fba734c..8c71bcb7c3d 100644 --- a/var/spack/packages/openspeedshop/package.py +++ b/var/spack/packages/openspeedshop/package.py @@ -63,7 +63,7 @@ class Openspeedshop(Package): depends_on("libelf") depends_on("libdwarf") depends_on("sqlite") - depends_on("boost@1.50") + depends_on("boost@1.50.0") depends_on("dyninst@8.2.1") depends_on("python") depends_on("qt@3.3.8b+krellpatch") @@ -79,8 +79,8 @@ class Openspeedshop(Package): # 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:+krelloptions", when='+cbtf') + depends_on("cbtf-argonavis", when='+cbtf') + depends_on("mrnet@4.1.0:+lwthreads", when='+cbtf') def install(self, spec, prefix): From f91e1ae83fd60f575eb9e316125ca9a2a63be52e Mon Sep 17 00:00:00 2001 From: David Beckingsale Date: Thu, 17 Dec 2015 15:21:26 -0800 Subject: [PATCH 32/32] Added Lmod package --- var/spack/packages/lmod/package.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 var/spack/packages/lmod/package.py diff --git a/var/spack/packages/lmod/package.py b/var/spack/packages/lmod/package.py new file mode 100644 index 00000000000..d642594f928 --- /dev/null +++ b/var/spack/packages/lmod/package.py @@ -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")