Spack updates to three Krell packages (#4765)

* Update the krell institute products to use the latest features of spack for building on cluster platforms.

* Address travis error messages and resubmit the pull request.

* Update the contents of openspeedshop package.py so it passes the flake8 tests.

* Fix flake8 error-whitespack issue in mrnet package.py file.

* Add updates based on spack reviewer feedback.

* More fixes based on comments from reviewers.  Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH.

* More review related changes.  Update MPIOption.append lines and take out xercesc references.

* Create a base options function for common openspeedshop base cmake options to reduce redundencies.

* Add libxml2+python depends on to get around issues with the libxml2 package file.

* Using boost over 1.60.0 causes compile errors.  This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build.

* Fix bad syntax in specifying the boost version range.

* Update the version numbers for the krell institute components and tools: cbtf and openspeedshop.

* Do not build glib for qt3, it is not needed and causes build problems at this time anyway.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Trim comments to fit more concisely.

* Fix tabs versus spaces and swap if and else clause check from a negative to a positive check.

* Fix issues with the cbtf-argonavis build, update to use dyninst-9.3.2, fixes to openspeedshop package build.

* Fix issues with the cbtf-argonavis package.py files related to comments.

* Add changes for changing the krell packages from Package to CMakePackage.

* Add better changes for changing the krell packages from Package to CMakePackage.

* Add more modifications for changing the krell packages from Package to CMakePackage.

* Add additional modifications for changing the krell packages from Package to CMakePackage and fixing Travis erros

* Fix new travis errors.

* Fix new travis errors.

* Add more changes for PR 4765.

* Add more refinements to the conversion from Package to CMakePackage.

* Fix new travis errors.

* Add dependencies for MPI to be passed to cbtf-krell, so it can build the MPI collectors requested by the builder of openspeedshop.

* Remove extra unnecessary routine to adjust build arguments. Fix if-else clause issue.

* Fix more flake issues caused by last changes.
This commit is contained in:
Jim Galarowicz 2017-07-20 13:25:57 -05:00 committed by Adam J. Stewart
parent 5f0e1514ac
commit 5173a8bef9
5 changed files with 236 additions and 552 deletions

View File

@ -1,5 +1,5 @@
############################################################################## ##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. # Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory. # Produced at the Lawrence Livermore National Laboratory.
# #
# This file is part of Spack. # This file is part of Spack.
@ -23,7 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
############################################################################## ##############################################################################
########################################################################## ##########################################################################
# Copyright (c) 2015-2016 Krell Institute. All Rights Reserved. # Copyright (c) 2015-2017 Krell Institute. All Rights Reserved.
# #
# This program is free software; you can redistribute it and/or modify it under # 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 # the terms of the GNU General Public License as published by the Free Software
@ -43,17 +43,13 @@
from spack import * from spack import *
class CbtfArgonavis(Package): class CbtfArgonavis(CMakePackage):
"""CBTF Argo Navis project contains the CUDA collector and supporting """CBTF Argo Navis project contains the CUDA collector and supporting
libraries that was done as a result of a DOE SBIR grant. libraries that was done as a result of a DOE SBIR grant.
""" """
homepage = "http://sourceforge.net/p/cbtf/wiki/Home/" homepage = "http://sourceforge.net/p/cbtf/wiki/Home/"
# Mirror access template example
# url = "file:/home/jeg/OpenSpeedShop_ROOT/SOURCES/cbtf-argonavis-1.6.tar.gz"
# version('1.6', '0fafa0008478405c2c2319450f174ed4')
version('1.8', branch='master', version('1.8', branch='master',
git='https://github.com/OpenSpeedShop/cbtf-argonavis.git') git='https://github.com/OpenSpeedShop/cbtf-argonavis.git')
@ -67,54 +63,23 @@ class CbtfArgonavis(Package):
parallel = False parallel = False
def adjustBuildTypeParams_cmakeOptions(self, spec, cmakeOptions): build_directory = 'build_cbtf_argonavis'
# Sets build type parameters into cmakeOptions the options that will
# enable the cbtf-krell built type settings
def build_type(self):
return 'None'
def cmake_args(self):
spec = self.spec
compile_flags = "-O2 -g" compile_flags = "-O2 -g"
BuildTypeOptions = []
# Set CMAKE_BUILD_TYPE to what cbtf-krell wants it to be, not the cmake_args = [
# stdcmakeargs
for word in cmakeOptions[:]:
if word.startswith('-DCMAKE_BUILD_TYPE'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_CXX_FLAGS'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_C_FLAGS'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_VERBOSE_MAKEFILE'):
cmakeOptions.remove(word)
BuildTypeOptions.extend([
'-DCMAKE_VERBOSE_MAKEFILE=ON',
'-DCMAKE_BUILD_TYPE=None',
'-DCMAKE_CXX_FLAGS=%s' % compile_flags, '-DCMAKE_CXX_FLAGS=%s' % compile_flags,
'-DCMAKE_C_FLAGS=%s' % compile_flags '-DCMAKE_C_FLAGS=%s' % compile_flags,
])
cmakeOptions.extend(BuildTypeOptions)
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)
with working_dir('CUDA'):
with working_dir('build', create=True):
cmakeOptions = []
cmakeOptions.extend(
['-DCMAKE_INSTALL_PREFIX=%s' % prefix,
'-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
'-DCUDA_DIR=%s' % spec['cuda'].prefix, '-DCUDA_DIR=%s' % spec['cuda'].prefix,
'-DCUDA_INSTALL_PATH=%s' % spec['cuda'].prefix, '-DCUDA_INSTALL_PATH=%s' % spec['cuda'].prefix,
'-DCUDA_TOOLKIT_ROOT_DIR=%s' % spec['cuda'].prefix, '-DCUDA_TOOLKIT_ROOT_DIR=%s' % spec['cuda'].prefix,
'-DCUPTI_DIR=%s' % join_path( '-DCUPTI_DIR=%s' % spec['cuda'].prefix.extras.CUPTI,
spec['cuda'].prefix + '/extras/CUPTI'), '-DCUPTI_ROOT=%s' % spec['cuda'].prefix.extras.CUPTI,
'-DCUPTI_ROOT=%s' % join_path(
spec['cuda'].prefix + '/extras/CUPTI'),
'-DPAPI_ROOT=%s' % spec['papi'].prefix, '-DPAPI_ROOT=%s' % spec['papi'].prefix,
'-DCBTF_DIR=%s' % spec['cbtf'].prefix, '-DCBTF_DIR=%s' % spec['cbtf'].prefix,
'-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix,
@ -122,18 +87,6 @@ def install(self, spec, prefix):
'-DBoost_DIR=%s' % spec['boost'].prefix, '-DBoost_DIR=%s' % spec['boost'].prefix,
'-DBOOST_LIBRARYDIR=%s' % spec['boost'].prefix.lib, '-DBOOST_LIBRARYDIR=%s' % spec['boost'].prefix.lib,
'-DMRNET_DIR=%s' % spec['mrnet'].prefix, '-DMRNET_DIR=%s' % spec['mrnet'].prefix,
'-DBoost_NO_SYSTEM_PATHS=ON']) '-DBoost_NO_SYSTEM_PATHS=ON']
# Add in the standard cmake arguments return cmake_args
cmakeOptions.extend(std_cmake_args)
# Adjust the standard cmake arguments to what we want the build
# type, etc to be
self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions)
# Invoke cmake
cmake('..', *cmakeOptions)
make("clean")
make()
make("install")

View File

@ -1,5 +1,5 @@
############################################################################## ##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. # Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory. # Produced at the Lawrence Livermore National Laboratory.
# #
# This file is part of Spack. # This file is part of Spack.
@ -23,7 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
############################################################################## ##############################################################################
########################################################################## ##########################################################################
# Copyright (c) 2015-2016 Krell Institute. All Rights Reserved. # Copyright (c) 2015-2017 Krell Institute. All Rights Reserved.
# #
# This program is free software; you can redistribute it and/or modify it under # 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 # the terms of the GNU General Public License as published by the Free Software
@ -43,7 +43,7 @@
from spack import * from spack import *
class CbtfKrell(Package): class CbtfKrell(CMakePackage):
"""CBTF Krell project contains the Krell Institute contributions to the """CBTF Krell project contains the Krell Institute contributions to the
CBTF project. These contributions include many performance data CBTF project. These contributions include many performance data
collectors and support libraries as well as some example tools collectors and support libraries as well as some example tools
@ -52,10 +52,6 @@ class CbtfKrell(Package):
""" """
homepage = "http://sourceforge.net/p/cbtf/wiki/Home/" homepage = "http://sourceforge.net/p/cbtf/wiki/Home/"
# optional mirror access template
# url = "file:/home/jeg/cbtf-krell-1.6.tar.gz"
# version('1.6', 'edeb61cd488f16e7b124f77db9ce762d')
version('1.8', branch='master', version('1.8', branch='master',
git='https://github.com/OpenSpeedShop/cbtf-krell.git') git='https://github.com/OpenSpeedShop/cbtf-krell.git')
@ -81,7 +77,7 @@ class CbtfKrell(Package):
# collectionTool # collectionTool
depends_on("boost@1.50.0:1.59.0") depends_on("boost@1.50.0:1.59.0")
depends_on("dyninst@9.2.0") depends_on("dyninst@9.3.2")
depends_on("mrnet@5.0.1:+lwthreads") depends_on("mrnet@5.0.1:+lwthreads")
depends_on("xerces-c@3.1.1:") depends_on("xerces-c@3.1.1:")
@ -104,31 +100,7 @@ class CbtfKrell(Package):
parallel = False parallel = False
def adjustBuildTypeParams_cmakeOptions(self, spec, cmakeOptions): build_directory = 'build_cbtf_krell'
# Sets build type parameters into cmakeOptions the options that will
# enable the cbtf-krell built type settings
compile_flags = "-O2 -g"
BuildTypeOptions = []
# Set CMAKE_BUILD_TYPE to what cbtf-krell wants it to be, not the
# stdcmakeargs
for word in cmakeOptions[:]:
if word.startswith('-DCMAKE_BUILD_TYPE'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_CXX_FLAGS'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_C_FLAGS'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_VERBOSE_MAKEFILE'):
cmakeOptions.remove(word)
BuildTypeOptions.extend([
'-DCMAKE_VERBOSE_MAKEFILE=ON',
'-DCMAKE_BUILD_TYPE=None',
'-DCMAKE_CXX_FLAGS=%s' % compile_flags,
'-DCMAKE_C_FLAGS=%s' % compile_flags
])
cmakeOptions.extend(BuildTypeOptions)
def set_mpi_cmakeOptions(self, spec, cmakeOptions): def set_mpi_cmakeOptions(self, spec, cmakeOptions):
# Appends to cmakeOptions the options that will enable the appropriate # Appends to cmakeOptions the options that will enable the appropriate
@ -157,20 +129,19 @@ def set_mpi_cmakeOptions(self, spec, cmakeOptions):
cmakeOptions.extend(MPIOptions) cmakeOptions.extend(MPIOptions)
def install(self, spec, prefix): def build_type(self):
return 'None'
def cmake_args(self):
spec = self.spec
compile_flags = "-O2 -g"
# Add in paths for finding package config files that tell us # Add in paths for finding package config files that tell us
# where to find these packages # where to find these packages
# cmake_prefix_path = \ cmake_args = [
# join_path(spec['cbtf'].prefix) + ':' + \ '-DCMAKE_CXX_FLAGS=%s' % compile_flags,
# join_path(spec['dyninst'].prefix) '-DCMAKE_C_FLAGS=%s' % compile_flags,
# '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path
# Build cbtf-krell with cmake
with working_dir('build_cbtf_krell', create=True):
cmakeOptions = []
cmakeOptions.extend(
['-DCMAKE_INSTALL_PREFIX=%s' % prefix,
'-DCBTF_DIR=%s' % spec['cbtf'].prefix, '-DCBTF_DIR=%s' % spec['cbtf'].prefix,
'-DBINUTILS_DIR=%s' % spec['binutils'].prefix, '-DBINUTILS_DIR=%s' % spec['binutils'].prefix,
'-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix, '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix,
@ -179,113 +150,9 @@ def install(self, spec, prefix):
'-DBOOST_DIR=%s' % spec['boost'].prefix, '-DBOOST_DIR=%s' % spec['boost'].prefix,
'-DMRNET_DIR=%s' % spec['mrnet'].prefix, '-DMRNET_DIR=%s' % spec['mrnet'].prefix,
'-DDYNINST_DIR=%s' % spec['dyninst'].prefix, '-DDYNINST_DIR=%s' % spec['dyninst'].prefix,
'-DXERCESC_DIR=%s' % spec['xerces-c'].prefix]) '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix]
# Add any MPI implementations coming from variant settings # Add any MPI implementations coming from variant settings
self.set_mpi_cmakeOptions(spec, cmakeOptions) self.set_mpi_cmakeOptions(spec, cmake_args)
# Add in the standard cmake arguments return cmake_args
cmakeOptions.extend(std_cmake_args)
# Adjust the standard cmake arguments to what we want the build
# type, etc to be
self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions)
# Invoke cmake
cmake('..', *cmakeOptions)
make("clean")
make()
make("install")
# if '+cray' in spec:
# if 'cray' in self.spec.architecture:
# if '+runtime' in spec:
# with working_dir('build_cbtf_cray_runtime', create=True):
# python_vers='%d.%d' % spec['python'].version[:2]
# cmake .. \
# -DCMAKE_BUILD_TYPE=Debug \
# -DTARGET_OS="cray" \
# -DRUNTIME_ONLY="true" \
# -DCMAKE_INSTALL_PREFIX=${CBTF_KRELL_PREFIX} \
# -DCMAKE_PREFIX_PATH=${CBTF_ROOT} \
# -DCBTF_DIR=${CBTF_ROOT} \
# -DBOOST_ROOT=${BOOST_INSTALL_PREFIX} \
# -DXERCESC_DIR=${XERCESC_INSTALL_PREFIX} \
# -DBINUTILS_DIR=${KRELL_ROOT} \
# -DLIBMONITOR_DIR=${KRELL_ROOT_COMPUTE} \
# -DLIBUNWIND_DIR=${KRELL_ROOT_COMPUTE} \
# -DPAPI_DIR=${PAPI_ROOT} \
# -DDYNINST_DIR=${DYNINST_CN_ROOT} \
# -DMRNET_DIR=${MRNET_INSTALL_PREFIX} \
# -DMPICH2_DIR=/opt/cray/mpt/7.0.1/gni/mpich2-gnu/48
# else:
# with working_dir('build_cbtf_cray_frontend', create=True):
# python_vers='%d.%d' % spec['python'].version[:2]
# cmake .. \
# -DCMAKE_BUILD_TYPE=Debug \
# -DCMAKE_INSTALL_PREFIX=${CBTF_KRELL_PREFIX} \
# -DCMAKE_PREFIX_PATH=${CBTF_ROOT} \
# -DCBTF_DIR=${CBTF_ROOT} \
# -DRUNTIME_TARGET_OS="cray" \
# -DCBTF_KRELL_CN_RUNTIME_DIR=${CBTF_KRELL_CN_RUNTIME_ROOT} \
# -DCBTF_CN_RUNTIME_DIR=${CBTF_CN_RUNTIME_ROOT} \
# -DLIBMONITOR_CN_RUNTIME_DIR=${LIBMONITOR_CN_ROOT} \
# -DLIBUNWIND_CN_RUNTIME_DIR=${LIBUNWIND_CN_ROOT} \
# -DPAPI_CN_RUNTIME_DIR=${PAPI_CN_ROOT} \
# -DXERCESC_CN_RUNTIME_DIR=/${XERCESC_CN_ROOT} \
# -DMRNET_CN_RUNTIME_DIR=${MRNET_CN_ROOT} \
# -DBOOST_CN_RUNTIME_DIR=${BOOST_CN_ROOT} \
# -DDYNINST_CN_RUNTIME_DIR=${DYNINST_CN_ROOT} \
# -DBOOST_ROOT=/${KRELL_ROOT} \
# -DXERCESC_DIR=/${KRELL_ROOT} \
# -DBINUTILS_DIR=/${KRELL_ROOT} \
# -DLIBMONITOR_DIR=${KRELL_ROOT} \
# -DLIBUNWIND_DIR=${KRELL_ROOT} \
# -DPAPI_DIR=${PAPI_ROOT} \
# -DDYNINST_DIR=${KRELL_ROOT} \
# -DMRNET_DIR=${KRELL_ROOT} \
# -DMPICH2_DIR=/opt/cray/mpt/7.0.1/gni/mpich2-gnu/48
# fi
#
# make("clean")
# make()
# make("install")
#
# elif '+mic' in spec:
# if '+runtime' in spec:
# with working_dir('build_cbtf_mic_runtime', create=True):
# python_vers='%d.%d' % spec['python'].version[:2]
# cmake .. \
#
# else:
# with working_dir('build_cbtf_cray_frontend', create=True):
# python_vers='%d.%d' % spec['python'].version[:2]
# cmake .. \
# fi
#
# else:
# # 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,
# '-DOPENMPI_DIR=%s' % openmpi_prefix_path,
# '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
# *std_cmake_args)
#
# make("clean")
# make()
# make("install")
#
# fi
#

View File

@ -1,5 +1,5 @@
############################################################################## ##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. # Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory. # Produced at the Lawrence Livermore National Laboratory.
# #
# This file is part of Spack. # This file is part of Spack.
@ -23,7 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
############################################################################## ##############################################################################
########################################################################## ##########################################################################
# Copyright (c) 2015-2016 Krell Institute. All Rights Reserved. # Copyright (c) 2015-2017 Krell Institute. All Rights Reserved.
# #
# This program is free software; you can redistribute it and/or modify it under # 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 # the terms of the GNU General Public License as published by the Free Software
@ -43,15 +43,11 @@
from spack import * from spack import *
class CbtfLanl(Package): class CbtfLanl(CMakePackage):
"""CBTF LANL project contains a memory tool and data center type system """CBTF LANL project contains a memory tool and data center type system
command monitoring tool.""" command monitoring tool."""
homepage = "http://sourceforge.net/p/cbtf/wiki/Home/" homepage = "http://sourceforge.net/p/cbtf/wiki/Home/"
# Mirror access template example
# url = "file:/g/g24/jeg/cbtf-lanl-1.6.tar.gz"
# version('1.6', 'c3f78f967b0a42c6734ce4be0e602426')
version('1.8', branch='master', version('1.8', branch='master',
git='http://git.code.sf.net/p/cbtf-lanl/cbtf-lanl') git='http://git.code.sf.net/p/cbtf-lanl/cbtf-lanl')
@ -64,61 +60,24 @@ class CbtfLanl(Package):
parallel = False parallel = False
def adjustBuildTypeParams_cmakeOptions(self, spec, cmakeOptions): build_directory = 'build_cbtf_lanl'
# Sets build type parameters into cmakeOptions the options that will
# enable the cbtf-krell built type settings
def build_type(self):
return 'None'
def cmake_args(self):
spec = self.spec
compile_flags = "-O2 -g" compile_flags = "-O2 -g"
BuildTypeOptions = []
# Set CMAKE_BUILD_TYPE to what cbtf-krell wants it to be, not the cmake_args = [
# stdcmakeargs
for word in cmakeOptions[:]:
if word.startswith('-DCMAKE_BUILD_TYPE'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_CXX_FLAGS'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_C_FLAGS'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_VERBOSE_MAKEFILE'):
cmakeOptions.remove(word)
BuildTypeOptions.extend([
'-DCMAKE_VERBOSE_MAKEFILE=ON',
'-DCMAKE_BUILD_TYPE=None',
'-DCMAKE_CXX_FLAGS=%s' % compile_flags, '-DCMAKE_CXX_FLAGS=%s' % compile_flags,
'-DCMAKE_C_FLAGS=%s' % compile_flags '-DCMAKE_C_FLAGS=%s' % compile_flags,
])
cmakeOptions.extend(BuildTypeOptions)
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):
cmakeOptions = []
cmakeOptions.extend(
['-DCMAKE_INSTALL_PREFIX=%s' % prefix,
'-DCBTF_DIR=%s' % spec['cbtf'].prefix, '-DCBTF_DIR=%s' % spec['cbtf'].prefix,
'-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix,
'-DMRNET_DIR=%s' % spec['mrnet'].prefix, '-DMRNET_DIR=%s' % spec['mrnet'].prefix,
'-DXERCESC_DIR=%s' % spec['xerces-c'].prefix, '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix,
'-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
'-DCMAKE_MODULE_PATH=%s' % join_path( '-DCMAKE_MODULE_PATH=%s' % join_path(
prefix.share, 'KrellInstitute', 'cmake')]) prefix.share, 'KrellInstitute', 'cmake')]
# Add in the standard cmake arguments return cmake_args
cmakeOptions.extend(std_cmake_args)
# Adjust the standard cmake arguments to what we want the build
# type, etc to be
self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions)
# Invoke cmake
cmake('..', *cmakeOptions)
make("clean")
make()
make("install")

View File

@ -1,5 +1,5 @@
############################################################################## ##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. # Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory. # Produced at the Lawrence Livermore National Laboratory.
# #
# This file is part of Spack. # This file is part of Spack.
@ -23,7 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
############################################################################## ##############################################################################
########################################################################## ##########################################################################
# Copyright (c) 2015-2016 Krell Institute. All Rights Reserved. # Copyright (c) 2015-2017 Krell Institute. All Rights Reserved.
# #
# This program is free software; you can redistribute it and/or modify it under # 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 # the terms of the GNU General Public License as published by the Free Software
@ -43,7 +43,7 @@
from spack import * from spack import *
class Cbtf(Package): class Cbtf(CMakePackage):
"""CBTF project contains the base code for CBTF that supports creating """CBTF project contains the base code for CBTF that supports creating
components, component networks and the support to connect these components, component networks and the support to connect these
components and component networks into sequential and distributed components and component networks into sequential and distributed
@ -52,10 +52,6 @@ class Cbtf(Package):
""" """
homepage = "http://sourceforge.net/p/cbtf/wiki/Home" homepage = "http://sourceforge.net/p/cbtf/wiki/Home"
# Mirror access template example
# url = "file:/home/jeg/cbtf-1.6.tar.gz"
# version('1.6', 'c1ef4e5aa4e470dffb042abdba0b9987')
# Use when the git repository is available # Use when the git repository is available
version('1.8', branch='master', version('1.8', branch='master',
git='https://github.com/OpenSpeedShop/cbtf.git') git='https://github.com/OpenSpeedShop/cbtf.git')
@ -72,82 +68,45 @@ class Cbtf(Package):
parallel = False parallel = False
def adjustBuildTypeParams_cmakeOptions(self, spec, cmakeOptions): build_directory = 'build_cbtf'
# Sets build type parameters into cmakeOptions the options that will
# enable the cbtf-krell built type settings
compile_flags = "-O2 -g" def build_type(self):
BuildTypeOptions = [] return 'None'
# Set CMAKE_BUILD_TYPE to what cbtf-krell wants it to be, not the
# stdcmakeargs
for word in cmakeOptions[:]:
if word.startswith('-DCMAKE_BUILD_TYPE'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_CXX_FLAGS'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_C_FLAGS'):
cmakeOptions.remove(word)
BuildTypeOptions.extend([
'-DCMAKE_BUILD_TYPE=None',
'-DCMAKE_CXX_FLAGS=%s' % compile_flags,
'-DCMAKE_C_FLAGS=%s' % compile_flags
])
cmakeOptions.extend(BuildTypeOptions) def cmake_args(self):
def install(self, spec, prefix): spec = self.spec
with working_dir('build', create=True):
# Boost_NO_SYSTEM_PATHS Set to TRUE to suppress searching # Boost_NO_SYSTEM_PATHS Set to TRUE to suppress searching
# in system paths (or other locations outside of BOOST_ROOT # in system paths (or other locations outside of BOOST_ROOT
# or BOOST_INCLUDEDIR). Useful when specifying BOOST_ROOT. # or BOOST_INCLUDEDIR). Useful when specifying BOOST_ROOT.
# Defaults to OFF. # Defaults to OFF.
compile_flags = "-O2 -g"
if '+runtime' in spec: if '+runtime' in spec:
# Install message tag include file for use in Intel MIC # Install message tag include file for use in Intel MIC
# cbtf-krell build # cbtf-krell build
# FIXME # FIXME
cmakeOptions = [] cmake_args = [
cmakeOptions.extend( '-DCMAKE_CXX_FLAGS=%s' % compile_flags,
['-DCMAKE_INSTALL_PREFIX=%s' % prefix, '-DCMAKE_C_FLAGS=%s' % compile_flags,
'-DRUNTIME_ONLY=TRUE',
'-DBoost_NO_SYSTEM_PATHS=TRUE', '-DBoost_NO_SYSTEM_PATHS=TRUE',
'-DXERCESC_DIR=%s' % spec['xerces-c'].prefix, '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix,
'-DBOOST_ROOT=%s' % spec['boost'].prefix, '-DBOOST_ROOT=%s' % spec['boost'].prefix,
'-DMRNET_DIR=%s' % spec['mrnet'].prefix, '-DMRNET_DIR=%s' % spec['mrnet'].prefix,
'-DCMAKE_MODULE_PATH=%s' % join_path( '-DCMAKE_MODULE_PATH=%s' % join_path(
prefix.share, 'KrellInstitute', 'cmake')]) prefix.share, 'KrellInstitute', 'cmake')]
# Add in the standard cmake arguments
cmakeOptions.extend(std_cmake_args)
# Adjust the standard cmake arguments to what we want the build
# type, etc to be
self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions)
# Invoke cmake
cmake('..', *cmakeOptions)
else: else:
cmakeOptions = [] cmake_args = [
cmakeOptions.extend( '-DCMAKE_CXX_FLAGS=%s' % compile_flags,
['-DCMAKE_INSTALL_PREFIX=%s' % prefix, '-DCMAKE_C_FLAGS=%s' % compile_flags,
'-DBoost_NO_SYSTEM_PATHS=TRUE', '-DBoost_NO_SYSTEM_PATHS=TRUE',
'-DXERCESC_DIR=%s' % spec['xerces-c'].prefix, '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix,
'-DBOOST_ROOT=%s' % spec['boost'].prefix, '-DBOOST_ROOT=%s' % spec['boost'].prefix,
'-DMRNET_DIR=%s' % spec['mrnet'].prefix, '-DMRNET_DIR=%s' % spec['mrnet'].prefix,
'-DCMAKE_MODULE_PATH=%s' % join_path( '-DCMAKE_MODULE_PATH=%s' % join_path(
prefix.share, 'KrellInstitute', 'cmake')]) prefix.share, 'KrellInstitute', 'cmake')]
# Add in the standard cmake arguments return cmake_args
cmakeOptions.extend(std_cmake_args)
# Adjust the standard cmake arguments to what we want the build
# type, etc to be
self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions)
# Invoke cmake
cmake('..', *cmakeOptions)
make("clean")
make()
make("install")

View File

@ -1,5 +1,5 @@
############################################################################## ##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. # Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory. # Produced at the Lawrence Livermore National Laboratory.
# #
# This file is part of Spack. # This file is part of Spack.
@ -23,7 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
############################################################################## ##############################################################################
############################################################################## ##############################################################################
# Copyright (c) 2015-2016 Krell Institute. All Rights Reserved. # Copyright (c) 2015-2017 Krell Institute. All Rights Reserved.
# #
# This program is free software; you can redistribute it and/or modify it # 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 # under the terms of the GNU General Public License as published by the Free
@ -45,7 +45,7 @@
import os.path import os.path
class Openspeedshop(Package): class Openspeedshop(CMakePackage):
"""OpenSpeedShop is a community effort by The Krell Institute with """OpenSpeedShop is a community effort by The Krell Institute with
current direct funding from DOEs NNSA. It builds on top of a current direct funding from DOEs NNSA. It builds on top of a
broad list of community infrastructures, most notably Dyninst broad list of community infrastructures, most notably Dyninst
@ -61,17 +61,11 @@ class Openspeedshop(Package):
homepage = "http://www.openspeedshop.org" homepage = "http://www.openspeedshop.org"
url = "https://github.com/OpenSpeedShop" url = "https://github.com/OpenSpeedShop"
version('2.2', '16cb051179c2038de4e8a845edf1d573')
# Use when the git repository is available # Use when the git repository is available
version('2.3', branch='master', version('2.3', branch='master',
git='https://github.com/OpenSpeedShop/openspeedshop.git') git='https://github.com/OpenSpeedShop/openspeedshop.git')
# Optional mirror template
# url = "file:/home/jeg/OpenSpeedShop_ROOT/SOURCES/openspeedshop-2.3.tar.gz"
# version('2.3', '517a7798507241ad8abd8b0626a4d2cf')
parallel = False
variant('offline', default=False, variant('offline', default=False,
description="build with offline instrumentor enabled.") description="build with offline instrumentor enabled.")
variant('cbtf', default=True, variant('cbtf', default=True,
@ -83,8 +77,9 @@ class Openspeedshop(Package):
to point to target build.") to point to target build.")
variant('cuda', default=False, variant('cuda', default=False,
description="build with cuda packages included.") description="build with cuda packages included.")
variant('ptgf', default=False, variant('useqt4gui', default=False,
description="build with the PTGF based gui package enabled.") description="build with Qt4/Qt5 based gui package enabled. \
Do not build older Qt3 gui")
variant('rtfe', default=False, variant('rtfe', default=False,
description="build for clusters heterogeneous processors \ description="build for clusters heterogeneous processors \
on fe/be nodes.") on fe/be nodes.")
@ -115,15 +110,13 @@ class Openspeedshop(Package):
depends_on("bison", type='build') depends_on("bison", type='build')
depends_on("flex", type='build') depends_on("flex", type='build')
depends_on("binutils@2.24+krellpatch", type='build') depends_on("binutils@2.24+krellpatch", type='build')
# TODO: when using dyninst@9.3.0:, we will need to use elf depends_on("elf", type="link")
# depends_on("elf", type="link")
depends_on("libelf")
depends_on("libdwarf") depends_on("libdwarf")
depends_on("sqlite") depends_on("sqlite")
depends_on("boost@1.50.0:1.59.0") depends_on("boost@1.50.0:1.59.0")
depends_on("dyninst@9.2.0") depends_on("dyninst@9.3.2")
depends_on("libxml2+python") depends_on("libxml2+python")
depends_on("qt@3.3.8b+krellpatch") depends_on("qt@3.3.8b+krellpatch", when='~useqt4gui')
# Dependencies only for the openspeedshop offline package. # Dependencies only for the openspeedshop offline package.
depends_on("libunwind", when='+offline') depends_on("libunwind", when='+offline')
@ -138,30 +131,124 @@ class Openspeedshop(Package):
# Dependencies only for the openspeedshop cbtf package. # Dependencies only for the openspeedshop cbtf package.
depends_on("cbtf", when='+cbtf') depends_on("cbtf", when='+cbtf')
depends_on("cbtf-krell", when='+cbtf') depends_on('cbtf-krell+mpich', when='+cbtf+mpich')
depends_on('cbtf-krell+mpich2', when='+cbtf+mpich2')
depends_on('cbtf-krell+mpt', when='+cbtf+mpt')
depends_on('cbtf-krell+mvapich', when='+cbtf+mvapich')
depends_on('cbtf-krell+mvapich2', when='+cbtf+mvapich2')
depends_on('cbtf-krell+openmpi', when='+cbtf+openmpi')
depends_on("cbtf-argonavis", when='+cbtf+cuda') depends_on("cbtf-argonavis", when='+cbtf+cuda')
depends_on("mrnet@5.0.1:+lwthreads", when='+cbtf') depends_on("mrnet@5.0.1:+lwthreads", when='+cbtf')
def adjustBuildTypeParams_cmakeOptions(self, spec, cmakeOptions): parallel = False
# Sets build type parameters into cmakeOptions the
# options that will enable the cbtf-krell built type settings
build_directory = 'build_openspeedshop'
def build_type(self):
return 'None'
def cmake_args(self):
spec = self.spec
compile_flags = "-O2 -g" compile_flags = "-O2 -g"
BuildTypeOptions = []
# Set CMAKE_BUILD_TYPE to what cbtf-krell wants it
# to be, not the stdcmakeargs
for word in cmakeOptions[:]:
if word.startswith('-DCMAKE_BUILD_TYPE'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_CXX_FLAGS'):
cmakeOptions.remove(word)
if word.startswith('-DCMAKE_C_FLAGS'):
cmakeOptions.remove(word)
BuildTypeOptions.extend(['-DCMAKE_BUILD_TYPE=None',
'-DCMAKE_CXX_FLAGS=%s' % compile_flags,
'-DCMAKE_C_FLAGS=%s' % compile_flags])
cmakeOptions.extend(BuildTypeOptions) if '+offline' in spec:
instrumentor_setting = "offline"
if '+runtime' in spec:
cmake_args = [
'-DCMAKE_CXX_FLAGS=%s' % compile_flags,
'-DCMAKE_C_FLAGS=%s' % compile_flags,
'-DINSTRUMENTOR=%s' % instrumentor_setting,
'-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix,
'-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix,
'-DPAPI_DIR=%s' % spec['papi'].prefix]
# Add any MPI implementations coming from variant settings
self.set_mpi_cmakeOptions(spec, cmake_args)
else:
cmake_args = []
# Appends base options to cmake_args
self.set_defaultbase_cmakeOptions(spec, cmake_args)
cmake_args.extend(
['-DCMAKE_CXX_FLAGS=%s' % compile_flags,
'-DCMAKE_C_FLAGS=%s' % compile_flags,
'-DINSTRUMENTOR=%s'
% instrumentor_setting,
'-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])
# Add any MPI implementations coming from variant settings
self.set_mpi_cmakeOptions(spec, cmake_args)
elif '+cbtf' in spec:
instrumentor_setting = "cbtf"
if '+runtime' in spec:
# Appends base options to cmake_args
self.set_defaultbase_cmakeOptions(spec, cmake_args)
cmake_args.extend(
['-DCMAKE_CXX_FLAGS=%s' % compile_flags,
'-DCMAKE_C_FLAGS=%s' % compile_flags,
'-DINSTRUMENTOR=%s'
% instrumentor_setting,
'-DCBTF_DIR=%s'
% spec['cbtf'].prefix,
'-DCBTF_KRELL_DIR=%s'
% spec['cbtf-krell'].prefix,
'-DMRNET_DIR=%s'
% spec['mrnet'].prefix])
else:
cmake_args = []
# Appends base options to cmake_args
self.set_defaultbase_cmakeOptions(spec, cmake_args)
if '+useqt4gui' in self.spec:
cmake_args.extend(
['-DCMAKE_CXX_FLAGS=%s' % compile_flags,
'-DCMAKE_C_FLAGS=%s' % compile_flags,
'-DINSTRUMENTOR=%s'
% instrumentor_setting,
'-DSQLITE3_DIR=%s'
% spec['sqlite'].prefix,
'-DCBTF_DIR=%s'
% spec['cbtf'].prefix,
'-DCBTF_KRELL_DIR=%s'
% spec['cbtf-krell'].prefix,
'-DMRNET_DIR=%s'
% spec['mrnet'].prefix])
else:
cmake_args.extend(
['-DCMAKE_CXX_FLAGS=%s' % compile_flags,
'-DCMAKE_C_FLAGS=%s' % compile_flags,
'-DINSTRUMENTOR=%s'
% instrumentor_setting,
'-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,
'-DMRNET_DIR=%s'
% spec['mrnet'].prefix])
return cmake_args
def set_defaultbase_cmakeOptions(self, spec, cmakeOptions): def set_defaultbase_cmakeOptions(self, spec, cmakeOptions):
# Appends to cmakeOptions the options that will enable # Appends to cmakeOptions the options that will enable
@ -174,7 +261,7 @@ def set_defaultbase_cmakeOptions(self, spec, cmakeOptions):
BaseOptions = [] BaseOptions = []
BaseOptions.append('-DBINUTILS_DIR=%s' % spec['binutils'].prefix) BaseOptions.append('-DBINUTILS_DIR=%s' % spec['binutils'].prefix)
BaseOptions.append('-DLIBELF_DIR=%s' % spec['libelf'].prefix) BaseOptions.append('-DLIBELF_DIR=%s' % spec['elf'].prefix)
BaseOptions.append('-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix) BaseOptions.append('-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix)
BaseOptions.append('-DPYTHON_EXECUTABLE=%s' % python_exe) BaseOptions.append('-DPYTHON_EXECUTABLE=%s' % python_exe)
BaseOptions.append('-DPYTHON_INCLUDE_DIR=%s' % python_include) BaseOptions.append('-DPYTHON_INCLUDE_DIR=%s' % python_include)
@ -273,144 +360,3 @@ def setup_environment(self, spack_env, run_env):
run_env.set('OPENSS_MPI_IMPLEMENTATION', 'mvapich2') run_env.set('OPENSS_MPI_IMPLEMENTATION', 'mvapich2')
if '+openmpi' in self.spec: if '+openmpi' in self.spec:
run_env.set('OPENSS_MPI_IMPLEMENTATION', 'openmpi') run_env.set('OPENSS_MPI_IMPLEMENTATION', 'openmpi')
def install(self, spec, prefix):
if '+offline' in spec:
instrumentor_setting = "offline"
if '+runtime' in spec:
with working_dir('build_runtime', create=True):
cmakeOptions = []
cmakeOptions.extend([
'-DCMAKE_INSTALL_PREFIX=%s' % prefix,
'-DINSTRUMENTOR=%s' % instrumentor_setting,
'-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix,
'-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix,
'-DPAPI_DIR=%s' % spec['papi'].prefix])
# Add any MPI implementations coming from variant settings
self.set_mpi_cmakeOptions(spec, cmakeOptions)
cmakeOptions.extend(std_cmake_args)
# Adjust the build options to the favored
# ones for this build
self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions)
cmake('..', *cmakeOptions)
make("clean")
make()
make("install")
else:
cmake_prefix_path = join_path(spec['dyninst'].prefix)
with working_dir('build', create=True):
cmakeOptions = []
# Appends base options to cmakeOptions
self.set_defaultbase_cmakeOptions(spec, cmakeOptions)
cmakeOptions.extend(
['-DCMAKE_INSTALL_PREFIX=%s'
% prefix,
'-DCMAKE_PREFIX_PATH=%s'
% cmake_prefix_path,
'-DINSTRUMENTOR=%s'
% instrumentor_setting,
'-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])
# Add any MPI implementations coming from variant settings
self.set_mpi_cmakeOptions(spec, cmakeOptions)
cmakeOptions.extend(std_cmake_args)
# Adjust the build options to the favored
# ones for this build
self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions)
cmake('..', *cmakeOptions)
make("clean")
make()
make("install")
elif '+cbtf' in spec:
instrumentor_setting = "cbtf"
# resolve_symbols = "symtabapi"
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):
cmakeOptions = []
# Appends base options to cmakeOptions
self.set_defaultbase_cmakeOptions(spec, cmakeOptions)
cmakeOptions.extend(
['-DCMAKE_INSTALL_PREFIX=%s'
% prefix,
'-DCMAKE_PREFIX_PATH=%s'
% cmake_prefix_path,
'-DINSTRUMENTOR=%s'
% instrumentor_setting,
'-DCBTF_DIR=%s'
% spec['cbtf'].prefix,
'-DCBTF_KRELL_DIR=%s'
% spec['cbtf-krell'].prefix,
'-DMRNET_DIR=%s'
% spec['mrnet'].prefix])
# Adjust the build options to the
# favored ones for this build
self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions)
cmake('..', *cmakeOptions)
make("clean")
make()
make("install")
else:
with working_dir('build_cbtf', create=True):
cmakeOptions = []
# Appends base options to cmakeOptions
self.set_defaultbase_cmakeOptions(spec, cmakeOptions)
cmakeOptions.extend(
['-DCMAKE_INSTALL_PREFIX=%s'
% prefix,
'-DCMAKE_PREFIX_PATH=%s'
% cmake_prefix_path,
'-DINSTRUMENTOR=%s'
% instrumentor_setting,
'-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,
'-DMRNET_DIR=%s'
% spec['mrnet'].prefix])
# Adjust the build options to the favored
# ones for this build
self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions)
cmake('..', *cmakeOptions)
make("clean")
make()
make("install")