diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/openspeedshop/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/openspeedshop/package.py | 445 |
1 files changed, 213 insertions, 232 deletions
diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index 36e9fb06e4..0d8957f0ac 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -1,48 +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 os -import os.path + +import spack.store class Openspeedshop(CMakePackage): @@ -60,19 +23,19 @@ class Openspeedshop(CMakePackage): """ homepage = "http://www.openspeedshop.org" - url = "https://github.com/OpenSpeedShop" + git = "https://github.com/OpenSpeedShop/openspeedshop.git" - # Use when the git repository is available - version('2.3', branch='master', - git='https://github.com/OpenSpeedShop/openspeedshop.git') + version('develop', branch='master') + version('2.4.0', branch='2.4.0') + version('2.3.1.5', branch='2.3.1.5') + version('2.3.1.4', branch='2.3.1.4') + version('2.3.1.3', branch='2.3.1.3') - variant('offline', default=False, - description="build with offline instrumentor enabled.") - variant('cbtf', default=True, - description="build with cbtf instrumentor enabled.") variant('runtime', default=False, description="build only the runtime libraries and collectors.") - variant('frontend', default=False, + 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.") variant('cuda', default=False, @@ -106,238 +69,256 @@ class Openspeedshop(CMakePackage): MPI when variant is enabled.") depends_on("cmake@3.0.2:", type='build') + # Dependencies for openspeedshop that are common to all # the variants of the OpenSpeedShop build depends_on("libtool", type='build') depends_on("bison", type='build') - depends_on("flex", type='build') - depends_on("binutils", type='build') + depends_on("flex@2.6.1", type='build') + + # For binutils + depends_on("binutils") + depends_on("elf", type="link") depends_on("libdwarf") + depends_on("sqlite") - depends_on("boost@1.50.0:1.59.0") - depends_on("dyninst@9.3.2") - depends_on("libxml2+python") + + # For boost + depends_on("boost@1.66.0:") + + depends_on("dyninst@develop", when='@develop') + depends_on("dyninst@10:", when='@2.3.1.3:9999') + + 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("libxml2") + depends_on("qt@3.3.8b+krellpatch", when='gui=qt3') - # Actively working on adding this gui package - # depends_on("cbtf-argonavis-gui", when='gui=qt4') - - # 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", when='+offline+openmpi') - depends_on("mpich", when='+offline+mpich') - depends_on("mpich2", when='+offline+mpich2') - depends_on("mvapich2", when='+offline+mvapich2') - depends_on("mvapich", when='+offline+mvapich') - depends_on("mpt", when='+offline+mpt') - - # Dependencies only for the openspeedshop cbtf package. - 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("mrnet@5.0.1:+lwthreads", when='+cbtf') + + # Dependencies for the openspeedshop cbtf packages. + depends_on("cbtf@develop", when='@develop', type=('build', 'link', 'run')) + depends_on("cbtf@1.9.1.0:9999", when='@2.3.1.3:9999', type=('build', 'link', 'run')) + + depends_on("cbtf-krell@develop", when='@develop', type=('build', 'link', 'run')) + depends_on("cbtf-krell@1.9.1.0:9999", when='@2.3.1.3:9999', type=('build', 'link', 'run')) + + depends_on('cbtf-krell@develop+crayfe', when='@develop+crayfe', type=('build', 'link', 'run')) + depends_on('cbtf-krell@1.9.1.0:9999+crayfe', when='@2.3.1.3:9999+crayfe', type=('build', 'link', 'run')) + + depends_on('cbtf-krell@develop+cti', when='@develop+cti', type=('build', 'link', 'run')) + depends_on('cbtf-krell@1.9.1.0:9999+cti', when='@2.3.1.3:9999+cti', type=('build', 'link', 'run')) + + depends_on('cbtf-krell@develop+mpich', when='@develop+mpich', type=('build', 'link', 'run')) + depends_on('cbtf-krell@1.9.1.0:9999+mpich', when='@2.3.1.3:9999+mpich', type=('build', 'link', 'run')) + + depends_on('cbtf-krell@develop+mpich2', when='@develop+mpich2', type=('build', 'link', 'run')) + depends_on('cbtf-krell@1.9.1.0:9999+mpich2', when='@2.3.1.3:9999+mpich2', type=('build', 'link', 'run')) + + depends_on('cbtf-krell@develop+mpt', when='@develop+mpt', type=('build', 'link', 'run')) + depends_on('cbtf-krell@1.9.1.0:9999+mpt', when='@2.3.1.3:9999+mpt', type=('build', 'link', 'run')) + + depends_on('cbtf-krell@develop+mvapich', when='@develop+mvapich', type=('build', 'link', 'run')) + depends_on('cbtf-krell@1.9.1.0:9999+mvapich', when='@2.3.1.3:9999+mvapich', type=('build', 'link', 'run')) + + depends_on('cbtf-krell@develop+mvapich2', when='@develop+mvapich2', type=('build', 'link', 'run')) + depends_on('cbtf-krell@1.9.1.0:9999+mvapich2', when='@2.3.1.3:9999+mvapich2', type=('build', 'link', 'run')) + + depends_on('cbtf-krell@develop+openmpi', when='@develop+openmpi', type=('build', 'link', 'run')) + depends_on('cbtf-krell@1.9.1.0:9999+openmpi', when='@2.3.1.3:9999+openmpi', type=('build', 'link', 'run')) + + depends_on("cbtf-argonavis@develop", when='@develop+cuda', type=('build', 'link', 'run')) + depends_on("cbtf-argonavis@1.9.1.0:9999", when='@2.3.1.3:9999+cuda', type=('build', 'link', 'run')) + + # 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("mrnet@5.0.1-3:+cti", when='@2.3.1.3:9999+cti', type=('build', 'link', 'run')) + depends_on("mrnet@5.0.1-3:+lwthreads", when='@2.3.1.3:9999', type=('build', 'link', 'run')) parallel = False build_directory = 'build_openspeedshop' - def cmake_args(self): - spec = self.spec - compile_flags = "-O2 -g" + 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 - if '+offline' in spec: - # Indicate building offline vers (writes rawdata files) - 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] + cray_login_node_options = [] + rt_platform = "cray" - # Add any MPI implementations coming from variant settings - self.set_mpi_cmakeOptions(spec, cmake_args) + # How do we get the compute node (CNL) cbtf package install + # directory path? + # spec['cbtf'].prefix is the login node value for this build, as + # we only get here when building the login node components and + # that is all that is known to spack. + store = spack.store + be_ck = store.db.query_one('cbtf-krell arch=cray-CNL-haswell') - else: - cmake_args = [] + # Equivalent to install-tool cmake arg: + # '-DCBTF_KRELL_CN_RUNTIME_DIR=%s' + # % <base dir>/cbtf_v2.3.1.release/compute) + cray_login_node_options.append('-DCBTF_KRELL_CN_RUNTIME_DIR=%s' + % be_ck.prefix) + cray_login_node_options.append('-DRUNTIME_PLATFORM=%s' + % rt_platform) - # Appends base options to cmake_args - self.set_defaultbase_cmakeOptions(spec, cmake_args) + cmake_options.extend(cray_login_node_options) - 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: - # Indicate building cbtf vers (transfer rawdata files) - instrumentor_setting = "cbtf" - - if '+runtime' in spec: - # Appends base options to cmake_args - self.set_defaultbase_cmakeOptions(spec, cmake_args) + def cmake_args(self): + + spec = self.spec + compile_flags = "-O2 -g" + + cmake_args = [] + + # Indicate building cbtf vers (transfer rawdata files) + instrumentor_setting = "cbtf" + + if spec.satisfies('+runtime'): + # Appends base options to cmake_args + self.set_defaultbase_cmake_options(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: + + # Appends base options to cmake_args + self.set_defaultbase_cmake_options(spec, cmake_args) + guitype = self.spec.variants['gui'].value + 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]) + + if guitype == 'none': + cmake_args.extend( + ['-DBUILD_QT3_GUI=FALSE']) + elif guitype == 'qt4': 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) - guitype = self.spec.variants['gui'].value + ['-DBUILD_QT3_GUI=FALSE']) + elif guitype == 'qt3': 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]) - - if guitype == 'none': - cmake_args.extend( - ['-DBUILD_QT3_GUI=FALSE']) - elif guitype == 'qt4': - cmake_args.extend( - ['-DBUILD_QT3_GUI=FALSE']) - elif guitype == 'qt3': - cmake_args.extend( - ['-DQTLIB_DIR=%s' - % spec['qt'].prefix]) + ['-DQTLIB_DIR=%s' + % spec['qt'].prefix]) + + if spec.satisfies('+crayfe'): + # We need to build target/compute node + # components/libraries first then pass + # those libraries to the openspeedshop + # login node build + self.set_cray_login_node_cmake_options(spec, cmake_args) return cmake_args - def set_defaultbase_cmakeOptions(self, spec, cmakeOptions): - # Appends to cmakeOptions the options that will enable + def set_defaultbase_cmake_options(self, spec, cmake_options): + # Appends to cmake_options the options that will enable # the appropriate base level options to the openspeedshop # cmake build. python_exe = spec['python'].command.path python_library = spec['python'].libs[0] python_include = spec['python'].headers.directories[0] - BaseOptions = [] - - BaseOptions.append('-DBINUTILS_DIR=%s' % spec['binutils'].prefix) - BaseOptions.append('-DLIBELF_DIR=%s' % spec['elf'].prefix) - BaseOptions.append('-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix) - BaseOptions.append('-DPYTHON_EXECUTABLE=%s' % python_exe) - BaseOptions.append('-DPYTHON_INCLUDE_DIR=%s' % python_include) - BaseOptions.append('-DPYTHON_LIBRARY=%s' % python_library) - BaseOptions.append('-DBoost_NO_SYSTEM_PATHS=TRUE') - BaseOptions.append('-DBoost_NO_BOOST_CMAKE=TRUE') - BaseOptions.append('-DBOOST_ROOT=%s' % spec['boost'].prefix) - BaseOptions.append('-DBoost_DIR=%s' % spec['boost'].prefix) - BaseOptions.append('-DBOOST_LIBRARYDIR=%s' % spec['boost'].prefix.lib) - BaseOptions.append('-DDYNINST_DIR=%s' % spec['dyninst'].prefix) - - cmakeOptions.extend(BaseOptions) - - def set_mpi_cmakeOptions(self, spec, cmakeOptions): - # Appends to cmakeOptions the options that will enable + base_options = [] + + base_options.append('-DBINUTILS_DIR=%s' % spec['binutils'].prefix) + base_options.append('-DLIBELF_DIR=%s' % spec['elf'].prefix) + base_options.append('-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix) + base_options.append('-DPYTHON_EXECUTABLE=%s' % python_exe) + base_options.append('-DPYTHON_INCLUDE_DIR=%s' % python_include) + base_options.append('-DPYTHON_LIBRARY=%s' % python_library) + base_options.append('-DBoost_NO_SYSTEM_PATHS=TRUE') + base_options.append('-DBoost_NO_BOOST_CMAKE=TRUE') + base_options.append('-DBOOST_ROOT=%s' % spec['boost'].prefix) + base_options.append('-DBoost_DIR=%s' % spec['boost'].prefix) + base_options.append('-DBOOST_LIBRARYDIR=%s' % spec['boost'].prefix.lib) + base_options.append('-DDYNINST_DIR=%s' % spec['dyninst'].prefix) + + cmake_options.extend(base_options) + + def set_mpi_cmake_options(self, spec, cmake_options): + # Appends to cmake_options the options that will enable # the appropriate MPI implementations - MPIOptions = [] + 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) - cmakeOptions.extend(MPIOptions) + cmake_options.extend(mpi_options) def setup_environment(self, spack_env, run_env): """Set up the compile and runtime environments for a package.""" - # Common settings to both offline and cbtf versions - # of OpenSpeedShop - run_env.prepend_path('PATH', self.prefix.bin) - # Find Dyninst library path, this is needed to # set the DYNINSTAPI_RT_LIB library which is # required for OpenSpeedShop to find loop level # performance information dyninst_libdir = find_libraries('libdyninstAPI_RT', root=self.spec['dyninst'].prefix, - shared=True, recurse=True) + shared=True, recursive=True) # Set Dyninst RT library path to support OSS loop resolution code run_env.set('DYNINSTAPI_RT_LIB', dyninst_libdir) - # Find openspeedshop library path - oss_libdir = find_libraries('libopenss-framework', - root=self.spec['openspeedshop'].prefix, - shared=True, recurse=True) - run_env.prepend_path('LD_LIBRARY_PATH', - os.path.dirname(oss_libdir.joined())) - - # Settings specific to the version, checking here - # for the cbtf instrumentor - if '+cbtf' in self.spec: - cbtf_mc = '/sbin/cbtf_mrnet_commnode' - cbtf_lmb = '/sbin/cbtf_libcbtf_mrnet_backend' - run_env.set('XPLAT_RSH', 'ssh') - run_env.set('MRNET_COMM_PATH', - join_path(self.spec['cbtf-krell'].prefix + cbtf_mc)) - - run_env.set('CBTF_MRNET_BACKEND_PATH', - join_path(self.spec['cbtf-krell'].prefix + cbtf_lmb)) - - run_env.prepend_path('PATH', self.spec['mrnet'].prefix.bin) - run_env.prepend_path('PATH', self.spec['cbtf-krell'].prefix.bin) - run_env.prepend_path('PATH', self.spec['cbtf-krell'].prefix.sbin) - - elif '+offline' in self.spec: - # Had to use this form of syntax self.prefix.lib and - # self.prefix.lib64 returned None all the time - run_env.set('OPENSS_RAWDATA_DIR', '.') - run_env.set('OPENSS_PLUGIN_PATH', - join_path(oss_libdir + '/openspeedshop')) - run_env.prepend_path('PATH', self.spec['papi'].prefix.bin) - run_env.prepend_path('PATH', self.spec['libdwarf'].prefix.bin) - - if '+mpich' in self.spec: - run_env.set('OPENSS_MPI_IMPLEMENTATION', 'mpich') - if '+mpich2' in self.spec: - run_env.set('OPENSS_MPI_IMPLEMENTATION', 'mpich2') - if '+mvapich2' in self.spec: - run_env.set('OPENSS_MPI_IMPLEMENTATION', 'mvapich2') - if '+openmpi' in self.spec: - run_env.set('OPENSS_MPI_IMPLEMENTATION', 'openmpi') + run_env.set('OPENSS_RAWDATA_DIR', '.') + cbtf_mc = '/sbin/cbtf_mrnet_commnode' + cbtf_lmb = '/sbin/cbtf_libcbtf_mrnet_backend' + run_env.set('XPLAT_RSH', 'ssh') + run_env.set('MRNET_COMM_PATH', + join_path(self.spec['cbtf-krell'].prefix + cbtf_mc)) + + # Set CBTF_MPI_IMPLEMENTATON to the appropriate mpi implementation + # This is needed by O|SS and CBTF tools to deploy the correct + # mpi runtimes for ossmpi, ossmpit, ossmpip, and 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', + join_path(self.spec['cbtf-krell'].prefix + cbtf_lmb)) + run_env.prepend_path('PATH', self.spec['mrnet'].prefix.bin) + run_env.prepend_path('PATH', self.spec['cbtf-krell'].prefix.bin) + run_env.prepend_path('PATH', self.spec['cbtf-krell'].prefix.sbin) + run_env.prepend_path('PATH', self.spec['python'].prefix.bin) |