summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/cbtf-krell/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/cbtf-krell/package.py')
-rw-r--r--var/spack/repos/builtin/packages/cbtf-krell/package.py248
1 files changed, 175 insertions, 73 deletions
diff --git a/var/spack/repos/builtin/packages/cbtf-krell/package.py b/var/spack/repos/builtin/packages/cbtf-krell/package.py
index 1716d83188..b30a4a6649 100644
--- a/var/spack/repos/builtin/packages/cbtf-krell/package.py
+++ b/var/spack/repos/builtin/packages/cbtf-krell/package.py
@@ -1,46 +1,11 @@
-##############################################################################
-# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
-# Produced at the Lawrence Livermore National Laboratory.
+# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
-# This file is part of Spack.
-# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
-# LLNL-CODE-647188
-#
-# For details, see https://github.com/spack/spack
-# Please also see the NOTICE and LICENSE files 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 Lesser General Public License (as
-# published by the Free Software Foundation) version 2.1, 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 Lesser 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
-##############################################################################
-##########################################################################
-# Copyright (c) 2015-2017 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
-##########################################################################
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
+import spack
+import spack.store
class CbtfKrell(CMakePackage):
@@ -48,12 +13,15 @@ class CbtfKrell(CMakePackage):
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/"
+ git = "https://github.com/OpenSpeedShop/cbtf-krell.git"
- version('1.8', branch='master',
- git='https://github.com/OpenSpeedShop/cbtf-krell.git')
+ version('develop', branch='master')
+ version('1.9.2', branch='1.9.2')
+ version('1.9.1.2', branch='1.9.1.2')
+ version('1.9.1.1', branch='1.9.1.1')
+ version('1.9.1.0', branch='1.9.1.0')
# MPI variants
variant('openmpi', default=False,
@@ -68,32 +36,62 @@ class CbtfKrell(CMakePackage):
description="Build mpi experiment collector for mpich2 MPI.")
variant('mpich', default=False,
description="Build mpi experiment collector for mpich MPI.")
+ variant('runtime', default=False,
+ description="build only the runtime libraries and collectors.")
variant('build_type', default='None', values=('None'),
description='CMake build type')
+ variant('cti', default=False,
+ description="Build MRNet with the CTI startup option")
+ variant('crayfe', default=False,
+ description="build only the FE tool using the runtime_dir \
+ to point to target build.")
# Dependencies for cbtf-krell
depends_on("cmake@3.0.2:", type='build')
- # For binutils service
+ # For binutils
depends_on("binutils")
- # collectionTool
- depends_on("boost@1.50.0:1.59.0")
- depends_on("dyninst@9.3.2")
- depends_on("mrnet@5.0.1:+lwthreads")
+ # For boost
+ depends_on("boost@1.66.0:")
+
+ # For Dyninst
+ depends_on("dyninst@develop", when='@develop')
+ depends_on("dyninst@10:", when='@1.9.1.0:9999')
+
+ # For MRNet
+ depends_on("mrnet@5.0.1-3:+cti", when='@develop+cti', type=('build', 'link', 'run'))
+ depends_on("mrnet@5.0.1-3:+lwthreads", when='@develop', type=('build', 'link', 'run'))
- depends_on("xerces-c@3.1.1:")
- depends_on("cbtf")
+ depends_on("mrnet@5.0.1-3+cti", when='@1.9.1.0:9999+cti', type=('build', 'link', 'run'))
+ depends_on("mrnet@5.0.1-3+lwthreads", when='@1.9.1.0:9999', type=('build', 'link', 'run'))
+
+ # For Xerces-C
+ depends_on("xerces-c")
+
+ # For CBTF
+ depends_on("cbtf@develop", when='@develop', type=('build', 'link', 'run'))
+ depends_on("cbtf@1.9.1.0:9999", when='@1.9.1.0:9999', type=('build', 'link', 'run'))
+
+ # For CBTF with cti
+ depends_on("cbtf@develop+cti", when='@develop+cti', type=('build', 'link', 'run'))
+ depends_on("cbtf@1.9.1.0:9999+cti", when='@1.9.1.0:9999+cti', type=('build', 'link', 'run'))
+
+ # For CBTF with runtime
+ depends_on("cbtf@develop+runtime", when='@develop+runtime', type=('build', 'link', 'run'))
+ depends_on("cbtf@1.9.1.0:9999+runtime", when='@1.9.1.0:9999+runtime', type=('build', 'link', 'run'))
# for services and collectors
- depends_on("libmonitor+krellpatch")
- depends_on("libunwind")
- depends_on("papi")
- depends_on("llvm-openmp-ompt@towards_tr4+standalone")
+ depends_on("libmonitor@2013.02.18+krellpatch")
+
+ depends_on("libunwind", when='@develop')
+ depends_on("libunwind@1.2.1", when='@1.9.1.0:9999')
+
+ depends_on("papi@5.4.1:")
+
+ depends_on("llvm-openmp-ompt@tr6_forwards+standalone")
# MPI Installations
- # These have not worked either for build or execution, commenting out for
- # now
depends_on("openmpi", when='+openmpi')
depends_on("mpich", when='+mpich')
depends_on("mpich2", when='+mpich2')
@@ -101,36 +99,97 @@ class CbtfKrell(CMakePackage):
depends_on("mvapich", when='+mvapich')
depends_on("mpt", when='+mpt')
+ depends_on("python", when='@develop', type=('build', 'run'))
+ depends_on("python@2.7.14:2.7.15", when='@2.3.1.3:9999', type=('build', 'run'))
+
+ depends_on("gotcha")
+
parallel = False
build_directory = 'build_cbtf_krell'
- def set_mpi_cmakeOptions(self, spec, cmakeOptions):
- # Appends to cmakeOptions the options that will enable the appropriate
+ def set_rt_only_cmake_options(self, spec, cmake_options):
+ # Appends to cmake_options the options that will enable the appropriate
# MPI implementations
- MPIOptions = []
+ rt_only_options = []
+ rt_only_options.append('-DRUNTIME_ONLY=true')
+ cmake_options.extend(rt_only_options)
+
+ def set_mpi_cmake_options(self, spec, cmake_options):
+ # Appends to cmake_options the options that will enable the appropriate
+ # MPI implementations
+
+ mpi_options = []
# openmpi
- if '+openmpi' in spec:
- MPIOptions.append('-DOPENMPI_DIR=%s' % spec['openmpi'].prefix)
+ if spec.satisfies('+openmpi'):
+ mpi_options.append('-DOPENMPI_DIR=%s' % spec['openmpi'].prefix)
# mpich
- if '+mpich' in spec:
- MPIOptions.append('-DMPICH_DIR=%s' % spec['mpich'].prefix)
+ if spec.satisfies('+mpich'):
+ mpi_options.append('-DMPICH_DIR=%s' % spec['mpich'].prefix)
# mpich2
- if '+mpich2' in spec:
- MPIOptions.append('-DMPICH2_DIR=%s' % spec['mpich2'].prefix)
+ if spec.satisfies('+mpich2'):
+ mpi_options.append('-DMPICH2_DIR=%s' % spec['mpich2'].prefix)
# mvapich
- if '+mvapich' in spec:
- MPIOptions.append('-DMVAPICH_DIR=%s' % spec['mvapich'].prefix)
+ if spec.satisfies('+mvapich'):
+ mpi_options.append('-DMVAPICH_DIR=%s' % spec['mvapich'].prefix)
# mvapich2
- if '+mvapich2' in spec:
- MPIOptions.append('-DMVAPICH2_DIR=%s' % spec['mvapich2'].prefix)
+ if spec.satisfies('+mvapich2'):
+ mpi_options.append('-DMVAPICH2_DIR=%s' % spec['mvapich2'].prefix)
# mpt
- if '+mpt' in spec:
- MPIOptions.append('-DMPT_DIR=%s' % spec['mpt'].prefix)
+ if spec.satisfies('+mpt'):
+ mpi_options.append('-DMPT_DIR=%s' % spec['mpt'].prefix)
+
+ cmake_options.extend(mpi_options)
+
+ def set_cray_login_node_cmake_options(self, spec, cmake_options):
+ # Appends to cmake_options the options that will enable
+ # the appropriate Cray login node libraries
+
+ cray_login_node_options = []
+ rt_platform = "cray"
+ # How do we get the compute node (CNL) cbtf package
+ # install directory path. spec['cbtf'].prefix is the
+ # login node path for this build, as we are building
+ # the login node components with this spack invocation. We
+ # need these paths to be the ones created in the CNL
+ # spack invocation.
+ be_cbtf = spack.store.db.query_one('cbtf arch=cray-CNL-haswell')
+ be_cbtfk = spack.store.db.query_one('cbtf-krell arch=cray-CNL-haswell')
+ be_papi = spack.store.db.query_one('papi arch=cray-CNL-haswell')
+ be_boost = spack.store.db.query_one('boost arch=cray-CNL-haswell')
+ be_mont = spack.store.db.query_one('libmonitor arch=cray-CNL-haswell')
+ be_unw = spack.store.db.query_one('libunwind arch=cray-CNL-haswell')
+ be_xer = spack.store.db.query_one('xerces-c arch=cray-CNL-haswell')
+ be_dyn = spack.store.db.query_one('dyninst arch=cray-CNL-haswell')
+ be_mrnet = spack.store.db.query_one('mrnet arch=cray-CNL-haswell')
- cmakeOptions.extend(MPIOptions)
+ cray_login_node_options.append(
+ '-DCN_RUNTIME_PLATFORM=%s' % rt_platform)
+
+ # Use install directories as CMAKE args for the building
+ # of login cbtf-krell
+ cray_login_node_options.append(
+ '-DCBTF_CN_RUNTIME_DIR=%s' % be_cbtf.prefix)
+ cray_login_node_options.append(
+ '-DCBTF_KRELL_CN_RUNTIME_DIR=%s' % be_cbtfk.prefix)
+ cray_login_node_options.append(
+ '-DPAPI_CN_RUNTIME_DIR=%s' % be_papi.prefix)
+ cray_login_node_options.append(
+ '-DBOOST_CN_RUNTIME_DIR=%s' % be_boost.prefix)
+ cray_login_node_options.append(
+ '-DLIBMONITOR_CN_RUNTIME_DIR=%s' % be_mont.prefix)
+ cray_login_node_options.append(
+ '-DLIBUNWIND_CN_RUNTIME_DIR=%s' % be_unw.prefix)
+ cray_login_node_options.append(
+ '-DXERCESC_CN_RUNTIME_DIR=%s' % be_xer.prefix)
+ cray_login_node_options.append(
+ '-DDYNINST_CN_RUNTIME_DIR=%s' % be_dyn.prefix)
+ cray_login_node_options.append(
+ '-DMRNET_CN_RUNTIME_DIR=%s' % be_mrnet.prefix)
+
+ cmake_options.extend(cray_login_node_options)
def cmake_args(self):
spec = self.spec
@@ -151,9 +210,52 @@ class CbtfKrell(CMakePackage):
'-DMRNET_DIR=%s' % spec['mrnet'].prefix,
'-DDYNINST_DIR=%s' % spec['dyninst'].prefix,
'-DLIBIOMP_DIR=%s' % spec['llvm-openmp-ompt'].prefix,
+ '-DGOTCHA_DIR=%s' % spec['gotcha'].prefix,
'-DXERCESC_DIR=%s' % spec['xerces-c'].prefix]
+ if self.spec.satisfies('+runtime'):
+ self.set_rt_only_cmake_options(spec, cmake_args)
+
# Add any MPI implementations coming from variant settings
- self.set_mpi_cmakeOptions(spec, cmake_args)
+ self.set_mpi_cmake_options(spec, cmake_args)
+
+ if self.spec.satisfies('+crayfe'):
+ # We need to build target/compute node components/libraries first
+ # then pass those libraries to the cbtf-krell login node build
+ self.set_cray_login_node_cmake_options(spec, cmake_args)
return cmake_args
+
+ def setup_environment(self, spack_env, run_env):
+ """Set up the compile and runtime environments for a package."""
+
+ # Environment settings for cbtf-krell, bin is automatically
+ # added to the path in the module file
+ run_env.prepend_path('PATH', self.prefix.sbin)
+
+ run_env.set('XPLAT_RSH', 'ssh')
+ run_env.set('MRNET_COMM_PATH', self.prefix.sbin.cbtf_mrnet_commnode)
+
+ # Set CBTF_MPI_IMPLEMENTATON to the appropriate mpi implementation
+ # This is needed by CBTF tools to deploy the correct
+ # mpi runtimes for cbtfsummary
+ # Users may have to set the CBTF_MPI_IMPLEMENTATION variable
+ # manually if multiple mpi's are specified in the build
+
+ if self.spec.satisfies('+mpich'):
+ run_env.set('CBTF_MPI_IMPLEMENTATION', "mpich")
+
+ if self.spec.satisfies('+mvapich'):
+ run_env.set('CBTF_MPI_IMPLEMENTATION', "mvapich")
+
+ if self.spec.satisfies('+mvapich2'):
+ run_env.set('CBTF_MPI_IMPLEMENTATION', "mvapich2")
+
+ if self.spec.satisfies('+mpt'):
+ run_env.set('CBTF_MPI_IMPLEMENTATION', "mpt")
+
+ if self.spec.satisfies('+openmpi'):
+ run_env.set('CBTF_MPI_IMPLEMENTATION', "openmpi")
+
+ run_env.set('CBTF_MRNET_BACKEND_PATH',
+ self.prefix.sbin.cbtf_libcbtf_mrnet_backend)