From 87adcfeea85b3b1fa51d0d5067541f88d4edcca8 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Mon, 17 Oct 2016 01:18:30 -0700 Subject: Update the Krell Institute products to use the latest features of spa… (#1984) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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. --- .../builtin/packages/cbtf-argonavis/package.py | 7 +- .../repos/builtin/packages/cbtf-krell/package.py | 28 +- .../repos/builtin/packages/cbtf-lanl/package.py | 4 +- var/spack/repos/builtin/packages/cbtf/package.py | 4 +- var/spack/repos/builtin/packages/mrnet/package.py | 11 +- .../builtin/packages/openspeedshop/package.py | 515 ++++++++++----------- 6 files changed, 253 insertions(+), 316 deletions(-) diff --git a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py index cbf36c3b61..06e752d199 100644 --- a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py +++ b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py @@ -57,14 +57,13 @@ class CbtfArgonavis(Package): version('1.6', branch='master', git='https://github.com/OpenSpeedShop/cbtf-argonavis.git') - depends_on("cmake@3.0.2", type='build') + depends_on("cmake@3.0.2:", type='build') depends_on("boost@1.50.0:") depends_on("papi") - depends_on("mrnet@5.0.1:+lwthreads+krellpatch") + depends_on("mrnet@5.0.1:+lwthreads") depends_on("cbtf") depends_on("cbtf-krell") - depends_on("cuda@6.0.37") - # depends_on("cuda") + depends_on("cuda") parallel = False diff --git a/var/spack/repos/builtin/packages/cbtf-krell/package.py b/var/spack/repos/builtin/packages/cbtf-krell/package.py index 6f15c3f835..efcd7200d8 100644 --- a/var/spack/repos/builtin/packages/cbtf-krell/package.py +++ b/var/spack/repos/builtin/packages/cbtf-krell/package.py @@ -74,7 +74,7 @@ class CbtfKrell(Package): description="Build mpi experiment collector for mpich MPI.") # Dependencies for cbtf-krell - depends_on("cmake@3.0.2", type='build') + depends_on("cmake@3.0.2:", type='build') # For binutils service depends_on("binutils@2.24+krellpatch") @@ -82,7 +82,7 @@ class CbtfKrell(Package): # collectionTool depends_on("boost@1.50.0:") depends_on("dyninst@8.2.1:") - depends_on("mrnet@5.0.1:+lwthreads+krellpatch") + depends_on("mrnet@5.0.1:+lwthreads") depends_on("xerces-c@3.1.1:") depends_on("cbtf") @@ -138,34 +138,22 @@ class CbtfKrell(Package): # openmpi if '+openmpi' in spec: - MPIOptions.extend([ - '-DOPENMPI_DIR=%s' % spec['openmpi'].prefix - ]) + MPIOptions.append('-DOPENMPI_DIR=%s' % spec['openmpi'].prefix) # mpich if '+mpich' in spec: - MPIOptions.extend([ - '-DMPICH_DIR=%s' % spec['mpich'].prefix - ]) + MPIOptions.append('-DMPICH_DIR=%s' % spec['mpich'].prefix) # mpich2 if '+mpich2' in spec: - MPIOptions.extend([ - '-DMPICH2_DIR=%s' % spec['mpich2'].prefix - ]) + MPIOptions.append('-DMPICH2_DIR=%s' % spec['mpich2'].prefix) # mvapich if '+mvapich' in spec: - MPIOptions.extend([ - '-DMVAPICH_DIR=%s' % spec['mvapich'].prefix - ]) + MPIOptions.append('-DMVAPICH_DIR=%s' % spec['mvapich'].prefix) # mvapich2 if '+mvapich2' in spec: - MPIOptions.extend([ - '-DMVAPICH2_DIR=%s' % spec['mvapich2'].prefix - ]) + MPIOptions.append('-DMVAPICH2_DIR=%s' % spec['mvapich2'].prefix) # mpt if '+mpt' in spec: - MPIOptions.extend([ - '-DMPT_DIR=%s' % spec['mpt'].prefix - ]) + MPIOptions.append('-DMPT_DIR=%s' % spec['mpt'].prefix) cmakeOptions.extend(MPIOptions) diff --git a/var/spack/repos/builtin/packages/cbtf-lanl/package.py b/var/spack/repos/builtin/packages/cbtf-lanl/package.py index b614a325f9..2b4e887325 100644 --- a/var/spack/repos/builtin/packages/cbtf-lanl/package.py +++ b/var/spack/repos/builtin/packages/cbtf-lanl/package.py @@ -55,9 +55,9 @@ class CbtfLanl(Package): version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf-lanl/cbtf-lanl') - depends_on("cmake@3.0.2", type='build') + depends_on("cmake@3.0.2:", type='build') # Dependencies for cbtf-krell - depends_on("mrnet@5.0.1:+lwthreads+krellpatch") + depends_on("mrnet@5.0.1:+lwthreads") depends_on("xerces-c@3.1.1:") depends_on("cbtf") depends_on("cbtf-krell") diff --git a/var/spack/repos/builtin/packages/cbtf/package.py b/var/spack/repos/builtin/packages/cbtf/package.py index bc3116bf2a..a711a918ca 100644 --- a/var/spack/repos/builtin/packages/cbtf/package.py +++ b/var/spack/repos/builtin/packages/cbtf/package.py @@ -63,9 +63,9 @@ class Cbtf(Package): variant('runtime', default=False, description="build only the runtime libraries and collectors.") - depends_on("cmake@3.0.2", type='build') + depends_on("cmake@3.0.2:", type='build') depends_on("boost@1.50.0:") - depends_on("mrnet@5.0.1:+lwthreads+krellpatch") + depends_on("mrnet@5.0.1:+lwthreads") depends_on("xerces-c@3.1.1:") # Work around for spack libxml2 package bug, take off python when fixed depends_on("libxml2+python") diff --git a/var/spack/repos/builtin/packages/mrnet/package.py b/var/spack/repos/builtin/packages/mrnet/package.py index 490e99dd83..9da9e29a2e 100644 --- a/var/spack/repos/builtin/packages/mrnet/package.py +++ b/var/spack/repos/builtin/packages/mrnet/package.py @@ -37,13 +37,6 @@ class Mrnet(Package): version('4.1.0', '5a248298b395b329e2371bf25366115c') version('4.0.0', 'd00301c078cba57ef68613be32ceea2f') - # Add a patch that brings mrnet-5.0.1 up to date with the current - # development tree The development tree contains fixes needed for the - # krell based tools - variant('krellpatch', default=False, - description="Build MRNet with krell openspeedshop based patch.") - patch('krell-5.0.1.patch', when='@5.0.1+krellpatch') - variant('lwthreads', default=False, description="Also build the MRNet LW threadsafe libraries") parallel = False @@ -51,8 +44,8 @@ class Mrnet(Package): depends_on("boost") def install(self, spec, prefix): - # Build the MRNet LW thread safe libraries when the krelloptions - # variant is present + # Build the MRNet LW thread safe libraries when the + # lwthreads variant is present if '+lwthreads' in spec: configure("--prefix=%s" % prefix, "--enable-shared", "--enable-ltwt-threadsafe") diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index 270a4e68d8..3c725f957e 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -22,88 +22,96 @@ # 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-2016 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 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. +# 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 * +import os +import os.path 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. - + 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, Power8, Intel Phi, 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 = "https://github.com/OpenSpeedShop" + url = "https://github.com/OpenSpeedShop" version('2.2', '16cb051179c2038de4e8a845edf1d573') # Use when the git repository is available version('2.2', branch='master', git='https://github.com/OpenSpeedShop/openspeedshop.git') # Optional mirror template - # url="file:/home/jeg/OpenSpeedShop_ROOT/SOURCES/openspeedshop-2.2.tar.gz" - # version('2.2', '643337740dc6c2faca60f42d3620b0e1') + # url = "file:/home/jeg/OpenSpeedShop_ROOT/SOURCES/openspeedshop-2.2.tar.gz" + # version('2.2', '517a7798507241ad8abd8b0626a4d2cf') parallel = False - variant('offline', default=True, + variant('offline', default=False, description="build with offline instrumentor enabled.") - variant('cbtf', default=False, + 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, - description="build only the front-end tool using the runtime_dir " - "to point to the target build.") + description="build only the FE tool using the runtime_dir \ + to point to 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('rtfe', default=False, - description="build for generic cluster platforms that have " - "different processors on the fe and be nodes.") + description="build for clusters heterogeneous processors \ + on fe/be nodes.") # MPI variants variant('openmpi', default=False, - description="Build mpi experiment collector for openmpi MPI.") + description="Build mpi collector for openmpi \ + MPI when variant is enabled.") variant('mpt', default=False, - description="Build mpi experiment collector for SGI MPT MPI.") + description="Build mpi collector for SGI \ + MPT MPI when variant is enabled.") variant('mvapich2', default=False, - description="Build mpi experiment collector for mvapich2 MPI.") + description="Build mpi collector for mvapich2\ + MPI when variant is enabled.") variant('mvapich', default=False, - description="Build mpi experiment collector for mvapich MPI.") + description="Build mpi collector for mvapich\ + MPI when variant is enabled.") variant('mpich2', default=False, - description="Build mpi experiment collector for mpich2 MPI.") + description="Build mpi collector for mpich2\ + MPI when variant is enabled.") variant('mpich', default=False, - description="Build mpi experiment collector for mpich MPI.") + description="Build mpi collector for mpich\ + 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("cmake@3.0.2:", type='build') + # Dependencies for openspeedshop that are common to all + # the variants of the OpenSpeedShop build depends_on("bison", type='build') depends_on("flex", type='build') depends_on("binutils@2.24+krellpatch", type='build') @@ -111,7 +119,7 @@ class Openspeedshop(Package): depends_on("libdwarf") depends_on("sqlite") depends_on("boost@1.50.0:") - depends_on("dyninst@9.1.0") + depends_on("dyninst@9.1.0:") depends_on("python") depends_on("qt@3.3.8b+krellpatch") @@ -130,16 +138,16 @@ class Openspeedshop(Package): depends_on("cbtf", when='+cbtf') depends_on("cbtf-krell", when='+cbtf') depends_on("cbtf-argonavis", when='+cbtf+cuda') - depends_on("mrnet@5.0.1:+lwthreads+krellpatch", when='+cbtf') + depends_on("mrnet@5.0.1:+lwthreads", when='+cbtf') def adjustBuildTypeParams_cmakeOptions(self, spec, cmakeOptions): - # Sets build type parameters into cmakeOptions the options that will - # enable the cbtf-krell built type settings + # 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 + # 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) @@ -147,67 +155,130 @@ class Openspeedshop(Package): 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 - ]) + BuildTypeOptions.extend(['-DCMAKE_BUILD_TYPE=None', + '-DCMAKE_CXX_FLAGS=%s' % compile_flags, + '-DCMAKE_C_FLAGS=%s' % compile_flags]) cmakeOptions.extend(BuildTypeOptions) + def set_defaultbase_cmakeOptions(self, spec, cmakeOptions): + # Appends to cmakeOptions the options that will enable + # the appropriate base level options to the openspeedshop + # cmake build. + python_vers = format(spec['python'].version.up_to(2)) + python_pv = '/python' + python_vers + python_pvs = '/libpython' + python_vers + '.' + format(dso_suffix) + + BaseOptions = [] + + BaseOptions.append('-DBINUTILS_DIR=%s' % spec['binutils'].prefix) + BaseOptions.append('-DLIBELF_DIR=%s' % spec['libelf'].prefix) + BaseOptions.append('-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix) + BaseOptions.append( + '-DPYTHON_EXECUTABLE=%s' + % join_path(spec['python'].prefix + '/bin/python')) + BaseOptions.append( + '-DPYTHON_INCLUDE_DIR=%s' + % join_path(spec['python'].prefix.include) + python_pv) + BaseOptions.append( + '-DPYTHON_LIBRARY=%s' + % join_path(spec['python'].prefix.lib) + python_pvs) + 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 the appropriate - # MPI implementations + # Appends to cmakeOptions the options that will enable + # the appropriate MPI implementations MPIOptions = [] # openmpi if '+openmpi' in spec: - MPIOptions.extend([ - '-DOPENMPI_DIR=%s' % spec['openmpi'].prefix - ]) + MPIOptions.append('-DOPENMPI_DIR=%s' % spec['openmpi'].prefix) # mpich if '+mpich' in spec: - MPIOptions.extend([ - '-DMPICH_DIR=%s' % spec['mpich'].prefix - ]) + MPIOptions.append('-DMPICH_DIR=%s' % spec['mpich'].prefix) # mpich2 if '+mpich2' in spec: - MPIOptions.extend([ - '-DMPICH2_DIR=%s' % spec['mpich2'].prefix - ]) + MPIOptions.append('-DMPICH2_DIR=%s' % spec['mpich2'].prefix) # mvapich if '+mvapich' in spec: - MPIOptions.extend([ - '-DMVAPICH_DIR=%s' % spec['mvapich'].prefix - ]) + MPIOptions.append('-DMVAPICH_DIR=%s' % spec['mvapich'].prefix) # mvapich2 if '+mvapich2' in spec: - MPIOptions.extend([ - '-DMVAPICH2_DIR=%s' % spec['mvapich2'].prefix - ]) + MPIOptions.append('-DMVAPICH2_DIR=%s' % spec['mvapich2'].prefix) # mpt if '+mpt' in spec: - MPIOptions.extend([ - '-DMPT_DIR=%s' % spec['mpt'].prefix - ]) + MPIOptions.append('-DMPT_DIR=%s' % spec['mpt'].prefix) cmakeOptions.extend(MPIOptions) - def install(self, spec, prefix): - - # openmpi_prefix_path = "/opt/openmpi-1.8.2" - # mvapich_prefix_path = "/usr/local/tools/mvapich-gnu" - # '-DOPENMPI_DIR=%s' % spec['openmpi'].prefix, - # '-DOPENMPI_DIR=%s' % openmpi_prefix_path, - # '-DMVAPICH_DIR=%s' % mvapich_prefix_path, + 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) + + # 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') - # FIXME: How do we make this dynamic in spack? - # FIXME: 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" + def install(self, spec, prefix): if '+offline' in spec: instrumentor_setting = "offline" @@ -217,18 +288,17 @@ class Openspeedshop(Package): cmakeOptions = [] cmakeOptions.extend([ '-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]) + '-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 + # Adjust the build options to the favored + # ones for this build self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions) cmake('..', *cmakeOptions) @@ -239,50 +309,35 @@ class Openspeedshop(Package): else: cmake_prefix_path = join_path(spec['dyninst'].prefix) with working_dir('build', create=True): - - # python_vers=join_path(spec['python'].version[:2]) - # '-DOPENMPI_DIR=%s' % openmpi_prefix_path, - # '-DMVAPICH_DIR=%s' % mvapich_prefix_path, - # '-DMPICH_DIR=%s' % spec['mpich'].prefix, - # '-DMPICH2_DIR=%s' % spec['mpich2'].prefix, - # '-DBoost_NO_SYSTEM_PATHS=TRUE', - # '-DBOOST_ROOT=%s' % spec['boost'].prefix, - # '-DOPENMPI_DIR=%s' % spec['openmpi'].prefix, - - python_vers = '%d.%d' % spec['python'].version[:2] - cmakeOptions = [] - cmakeOptions.extend([ - '-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64, - '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path, - '-DINSTRUMENTOR=%s' % instrumentor_setting, - '-DBINUTILS_DIR=%s' % spec['binutils'].prefix, - '-DLIBELF_DIR=%s' % spec['libelf'].prefix, - '-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix, - '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix, - '-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix, - '-DPAPI_DIR=%s' % spec['papi'].prefix, - '-DSQLITE3_DIR=%s' % spec['sqlite'].prefix, - '-DQTLIB_DIR=%s' % spec['qt'].prefix, - '-DPYTHON_EXECUTABLE=%s' % join_path( - spec['python'].prefix, '/bin/python'), - '-DPYTHON_INCLUDE_DIR=%s' % join_path( - spec['python'].prefix.include, - 'python' + python_vers), - '-DPYTHON_LIBRARY=%s' % join_path( - spec['python'].prefix.lib, - 'libpython' + python_vers + '.so'), - '-DBoost_NO_SYSTEM_PATHS=TRUE', - '-DBOOST_ROOT=%s' % spec['boost'].prefix, - '-DDYNINST_DIR=%s' % spec['dyninst'].prefix]) + + # 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 + # Adjust the build options to the favored + # ones for this build self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions) cmake('..', *cmakeOptions) @@ -293,74 +348,37 @@ class Openspeedshop(Package): elif '+cbtf' in spec: instrumentor_setting = "cbtf" - cmake_prefix_path = ':'.join(spec['cbtf'].prefix, - spec['cbtf-krell'].prefix, - spec['dyninst'].prefix) - # resolve_symbols = "symtabapi" - # runtime_platform_cray = "cray" - # if '+cray' in spec: - # if '+runtime' in spec: - # #-DCBTF_KRELL_CN_RUNTIME_DIR=${CBTF_KRELL_CN_INSTALL_DIR} \ - # with working_dir('build_cbtf_cray_runtime', create=True): - # python_vers='%d.%d' % spec['python'].version[:2] - # cmake('..', - # '-DCMAKE_INSTALL_PREFIX=%s' % prefix, - # '-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64, - # '-DRUNTIME_PLATFORM=%s' % runtime_platform_cray, - # '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path, - # '-DRESOLVE_SYMBOLS=%s' % resolve_symbols, - # '-DINSTRUMENTOR=%s' % instrumentor_setting, - # '-DCBTF_DIR=%s' % spec['cbtf'].prefix, - # '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, - # '-DCBTF_KRELL_CN_RUNTIME_DIR=%s' % spec['cbtf-krell'].prefix, - # '-DBINUTILS_DIR=%s' % spec['binutils'].prefix, - # '-DLIBELF_DIR=%s' % spec['libelf'].prefix, - # '-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix, - # '-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix, - # '-DPAPI_DIR=%s' % spec['papi'].prefix, - # '-DDYNINST_DIR=%s' % spec['dyninst'].prefix, - # '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix, - # '-DMRNET_DIR=%s' % spec['mrnet'].prefix, - # '-DBoost_NO_SYSTEM_PATHS=TRUE', - # '-DBOOST_ROOT=%s' % spec['boost'].prefix, - # *std_cmake_args) - - # make("clean") - # make() - # make("install") - - # elif '+mic' in spec: - # comment out else and shift over the default case below - # until arch detection is in else: + cmake_prefix_path = join_path(spec['cbtf'].prefix) \ + + ':' + join_path(spec['cbtf-krell'].prefix)\ + + ':' + join_path(spec['dyninst'].prefix) if '+runtime' in spec: with working_dir('build_cbtf_runtime', create=True): - python_vers = '%d.%d' % spec['python'].version[:2] - cmake( - '..', - '-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64, - '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path, - '-DINSTRUMENTOR=%s' % instrumentor_setting, - '-DBINUTILS_DIR=%s' % spec['binutils'].prefix, - '-DLIBELF_DIR=%s' % spec['libelf'].prefix, - '-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix, - '-DCBTF_DIR=%s' % spec['cbtf'].prefix, - '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, - '-DPYTHON_EXECUTABLE=%s' % join_path( - spec['python'].prefix, 'bin', 'python'), - '-DPYTHON_INCLUDE_DIR=%s' % join_path( - spec['python'].prefix.include, - 'python' + python_vers), - '-DPYTHON_LIBRARY=%s' % join_path( - spec['python'].prefix.lib, - 'libpython' + python_vers + '.so'), - '-DBoost_NO_SYSTEM_PATHS=TRUE', - '-DBOOST_ROOT=%s' % spec['boost'].prefix, - '-DDYNINST_DIR=%s' % spec['dyninst'].prefix, - '-DMRNET_DIR=%s' % spec['mrnet'].prefix, - *std_cmake_args) + 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() @@ -368,96 +386,35 @@ class Openspeedshop(Package): else: with working_dir('build_cbtf', create=True): - python_vers = '%d.%d' % spec['python'].version[:2] - # python_vers=join_path(spec['python'].version[:2]) - cmake( - '..', - '-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64, - '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path, - '-DINSTRUMENTOR=%s' % instrumentor_setting, - '-DBINUTILS_DIR=%s' % spec['binutils'].prefix, - '-DLIBELF_DIR=%s' % spec['libelf'].prefix, - '-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix, - '-DSQLITE3_DIR=%s' % spec['sqlite'].prefix, - '-DCBTF_DIR=%s' % spec['cbtf'].prefix, - '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, - '-DQTLIB_DIR=%s' % spec['qt'].prefix, - '-DPYTHON_EXECUTABLE=%s' % join_path( - spec['python'].prefix, 'bin', 'python'), - '-DPYTHON_INCLUDE_DIR=%s' % join_path( - spec['python'].prefix.include, - 'python' + python_vers), - '-DPYTHON_LIBRARY=%s' % join_path( - spec['python'].prefix.lib, - 'libpython' + python_vers + '.so'), - '-DBoost_NO_SYSTEM_PATHS=TRUE', - '-DBOOST_ROOT=%s' % spec['boost'].prefix, - '-DDYNINST_DIR=%s' % spec['dyninst'].prefix, - '-DMRNET_DIR=%s' % spec['mrnet'].prefix, - *std_cmake_args) + 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") - -# if '+frontend' in spec: -# with working_dir('build_frontend', create=True): -# tbd - -# if '+cbtf' in spec: -# if cray build type detected: -# if '+runtime' in spec: -# with working_dir('build_cray_cbtf_compute', create=True): -# tbd -# else: -# with working_dir('build_cray_cbtf_frontend', create=True): -# tbd -# with working_dir('build_cray_osscbtf_frontend', create=True): -# tbd -# fi -# elif '+intelmic' in spec: -# if '+runtime' in spec: -# with working_dir('build_intelmic_cbtf_compute', create=True): -# tbd -# else: -# with working_dir('build_intelmic_cbtf_frontend', create=True): -# tbd -# with working_dir('build_intelmic_osscbtf_frontend', create=True): -# fi -# else -# with working_dir('build_cluster_cbtf', create=True): -# tbd -# with working_dir('build_cluster osscbtf', create=True): -# tbd -# fi -# elif '+offline' in spec: -# if cray build type detected: -# if '+runtime' in spec: -# with working_dir('build_cray_ossoff_compute', create=True): -# tbd -# else: -# with working_dir('build_cray_ossoff_frontend', create=True): -# tbd -# fi -# elif '+intelmic' in spec: -# if '+runtime' in spec: -# with working_dir('build_intelmic_ossoff_compute', create=True): -# tbd -# else: -# with working_dir('build_intelmic_ossoff_frontend', create=True): -# tbd -# fi -# elif bgq build type detected: -# if '+runtime' in spec: -# with working_dir('build_bgq_ossoff_compute', create=True): -# tbd -# else: -# with working_dir('build_bgq_ossoff_frontend', create=True): -# tbd -# fi -# else -# with working_dir('build_cluster ossoff', create=True): -# tbd -# fi -# fi -- cgit v1.2.3-60-g2f50