From 301b49d8e4508907186a9e53ac3b6b3dbb2e3ef9 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Mon, 10 Oct 2016 10:13:25 -0700 Subject: [PATCH] Update the krell institute products to use the latest features of spack for building on cluster platforms. --- .../packages/cbtf-argonavis/package.py | 9 +- .../builtin/packages/cbtf-krell/package.py | 5 +- .../builtin/packages/cbtf-lanl/package.py | 4 +- .../repos/builtin/packages/cbtf/package.py | 5 +- .../repos/builtin/packages/mrnet/package.py | 10 +- .../builtin/packages/openspeedshop/package.py | 618 ++++++++++-------- 6 files changed, 358 insertions(+), 293 deletions(-) diff --git a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py index cbf36c3b61f..9a0b4dd2c56 100644 --- a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py +++ b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py @@ -57,14 +57,15 @@ 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("boost@1.53.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@6.0.37:") + 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 6f15c3f8353..f1dce98b75c 100644 --- a/var/spack/repos/builtin/packages/cbtf-krell/package.py +++ b/var/spack/repos/builtin/packages/cbtf-krell/package.py @@ -74,15 +74,16 @@ 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") # collectionTool depends_on("boost@1.50.0:") + #depends_on("boost@1.53.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") diff --git a/var/spack/repos/builtin/packages/cbtf-lanl/package.py b/var/spack/repos/builtin/packages/cbtf-lanl/package.py index b614a325f9e..2b4e8873252 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 bc3116bf2a4..c4ce86b6dba 100644 --- a/var/spack/repos/builtin/packages/cbtf/package.py +++ b/var/spack/repos/builtin/packages/cbtf/package.py @@ -63,9 +63,10 @@ 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("boost@1.53.0") + 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 490e99dd838..5d7eacce807 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,7 @@ 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 270a4e68d81..bf53ec8da88 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -22,7 +22,7 @@ # 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 @@ -38,72 +38,52 @@ # 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. - + """OpenSpeedShop is a community effort by The Krell Institute with current direct funding from DOEs NNSA. + It builds on top of a broad list of community infrastructures, most notably Dyninst and MRNet from UW, + libmonitor from Rice, and PAPI from UTK. OpenSpeedShop is an open source multi platform Linux performance + tool which is targeted to support performance analysis of applications running on both single node and + large scale IA64, IA32, EM64T, AMD64, PPC, ARM, Blue Gene and Cray platforms. OpenSpeedShop development + is hosted by the Krell Institute. The infrastructure and base components of OpenSpeedShop are released + as open source code primarily under LGPL. """ homepage = "http://www.openspeedshop.org" - url = "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') + 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, - description="build with offline instrumentor enabled.") - variant('cbtf', default=False, - description="build with cbtf instrumentor enabled.") - variant('runtime', default=False, - description="build only the runtime libraries and collectors.") - variant('frontend', default=False, - description="build only the front-end tool using the runtime_dir " - "to point to the target build.") - variant('cuda', default=False, - description="build with cuda packages included.") - variant('ptgf', default=False, - description="build with the PTGF based gui package enabled.") - variant('rtfe', default=False, - description="build for generic cluster platforms that have " - "different processors on the fe and be nodes.") + 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, description="build only the front-end tool using the runtime_dir to point to the target build.") + variant('cuda', default=False, description="build with cuda packages included.") + variant('ptgf', default=False, description="build with the PTGF based gui package enabled.") + variant('rtfe', default=False, description="build for generic cluster platforms that have different processors on the fe and be nodes.") # MPI variants - variant('openmpi', default=False, - description="Build mpi experiment collector for openmpi MPI.") - variant('mpt', default=False, - description="Build mpi experiment collector for SGI MPT MPI.") - variant('mvapich2', default=False, - description="Build mpi experiment collector for mvapich2 MPI.") - variant('mvapich', default=False, - description="Build mpi experiment collector for mvapich MPI.") - variant('mpich2', default=False, - description="Build mpi experiment collector for mpich2 MPI.") - variant('mpich', default=False, - description="Build mpi experiment collector for mpich MPI.") + variant('openmpi', default=False, description="Build mpi experiment collector for openmpi MPI when this variant is enabled.") + variant('mpt', default=False, description="Build mpi experiment collector for SGI MPT MPI when this variant is enabled.") + variant('mvapich2', default=False, description="Build mpi experiment collector for mvapich2 MPI when this variant is enabled.") + variant('mvapich', default=False, description="Build mpi experiment collector for mvapich MPI when this variant is enabled.") + variant('mpich2', default=False, description="Build mpi experiment collector for mpich2 MPI when this variant is enabled.") + variant('mpich', default=False, description="Build mpi experiment collector for mpich MPI when this 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 +91,8 @@ class Openspeedshop(Package): depends_on("libdwarf") depends_on("sqlite") depends_on("boost@1.50.0:") - depends_on("dyninst@9.1.0") + #depends_on("boost@1.53.0") + depends_on("dyninst@9.1.0:") depends_on("python") depends_on("qt@3.3.8b+krellpatch") @@ -130,16 +111,17 @@ 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') + # We don't need this for building, but to complete the runtime module file + # It is required in cbtf, so it will be available and not cause another rebuild + depends_on("xerces-c@3.1.1:", 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" + 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) @@ -148,87 +130,174 @@ def adjustBuildTypeParams_cmakeOptions(self, spec, cmakeOptions): 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 + '-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): - # 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 + '-DOPENMPI_DIR=%s' % spec['openmpi'].prefix ]) # mpich if '+mpich' in spec: MPIOptions.extend([ - '-DMPICH_DIR=%s' % spec['mpich'].prefix + '-DMPICH_DIR=%s' % spec['mpich'].prefix ]) # mpich2 if '+mpich2' in spec: MPIOptions.extend([ - '-DMPICH2_DIR=%s' % spec['mpich2'].prefix + '-DMPICH2_DIR=%s' % spec['mpich2'].prefix ]) # mvapich if '+mvapich' in spec: MPIOptions.extend([ - '-DMVAPICH_DIR=%s' % spec['mvapich'].prefix + '-DMVAPICH_DIR=%s' % spec['mvapich'].prefix ]) # mvapich2 if '+mvapich2' in spec: MPIOptions.extend([ - '-DMVAPICH2_DIR=%s' % spec['mvapich2'].prefix + '-DMVAPICH2_DIR=%s' % spec['mvapich2'].prefix ]) # mpt if '+mpt' in spec: MPIOptions.extend([ - '-DMPT_DIR=%s' % spec['mpt'].prefix + '-DMPT_DIR=%s' % spec['mpt'].prefix ]) cmakeOptions.extend(MPIOptions) + 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) + + # sqlite3 path + run_env.prepend_path('PATH', self.spec['sqlite'].prefix.bin) + + # python path + run_env.prepend_path('PATH', self.spec['python'].prefix.bin) + + # Find Dyninst library path + 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())) + + # This is always python lib everywhere we have seen to date. + run_env.prepend_path('LD_LIBRARY_PATH', self.spec['python'].prefix.lib) + + # This is always boost lib everywhere we have seen to date. + run_env.prepend_path('LD_LIBRARY_PATH', self.spec['boost'].prefix.lib) + + # Find sqlite library path + sqlite_libdir = find_libraries(['libsqlite3'], root=self.spec['sqlite'].prefix, shared=True, recurse=True) + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(sqlite_libdir.joined())) + + # see above for dyninst_libdir detection code + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(dyninst_libdir.joined())) + + # Find libelf library path + libelf_libdir = find_libraries(['libelf'], root=self.spec['libelf'].prefix, shared=True, recurse=True) + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(libelf_libdir.joined())) + + # Find libdwarf library path + libdwarf_libdir = find_libraries(['libdwarf'], root=self.spec['libdwarf'].prefix, shared=True, recurse=True) + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(libdwarf_libdir.joined())) + + # Settings specific to the version, checking here for the cbtf instrumentor + if '+cbtf' in self.spec: + run_env.set('XPLAT_RSH', 'ssh') + run_env.set('MRNET_COMM_PATH', join_path(self.spec['cbtf-krell'].prefix + '/sbin/cbtf_mrnet_commnode')) + run_env.set('CBTF_MRNET_BACKEND_PATH', join_path(self.spec['cbtf-krell'].prefix + '/sbin/cbtf_libcbtf_mrnet_backend')) + 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) + + # Find cbtf-krell component library path + cbtfkrell_libdir = find_libraries(['libcbtf-core'], root=self.spec['cbtf-krell'].prefix, shared=True, recurse=True) + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(cbtfkrell_libdir.joined())) + + # Find cbtf component library path + cbtf_libdir = find_libraries(['libcbtf'], root=self.spec['cbtf'].prefix, shared=True, recurse=True) + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(cbtf_libdir.joined())) + + # see above for dyninst_libdir detection code + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(dyninst_libdir.joined())) + + # Find xercesc component library path + xercesc_libdir = find_libraries(['libxerces-c'], root=self.spec['xerces-c'].prefix, shared=True, recurse=True) + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(xercesc_libdir.joined())) + + # Find mrnet component library path + mrnet_libdir = find_libraries(['libmrnet'], root=self.spec['mrnet'].prefix, shared=True, recurse=True) + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(mrnet_libdir.joined())) + + 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) + + # Find papi library path + papi_libdir = find_libraries(['libpapi'], root=self.spec['papi'].prefix, shared=True, recurse=True) + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(papi_libdir.joined())) + + # Find binutils library path + binutils_libdir = find_libraries(['libbfd'], root=self.spec['binutils'].prefix, shared=True, recurse=True) + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(binutils_libdir.joined())) + + # Find libmonitor library path + libmonitor_libdir = find_libraries(['libmonitor'], root=self.spec['monitor'].prefix, shared=True, recurse=True) + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(libmonitor_libdir.joined())) + + # Find libunwind library path + libunwind_libdir = find_libraries(['libunwind'], root=self.spec['libunwind'].prefix, shared=True, recurse=True) + run_env.prepend_path('LD_LIBRARY_PATH', os.path.dirname(libunwind_libdir.joined())) + + 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') + 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, - - # 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" - 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, - '-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]) - + 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 + # Adjust the build options to the favored ones for this build self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions) cmake('..', *cmakeOptions) @@ -240,49 +309,36 @@ def install(self, spec, prefix): cmake_prefix_path = join_path(spec['dyninst'].prefix) with working_dir('build', create=True): - # python_vers=join_path(spec['python'].version[:2]) - # '-DOPENMPI_DIR=%s' % openmpi_prefix_path, - # '-DMVAPICH_DIR=%s' % mvapich_prefix_path, - # '-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] + python_vers=format(spec['python'].version.up_to(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]) + cmakeOptions.extend(['-DCMAKE_INSTALL_PREFIX=%s' % prefix, + '-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_NO_BOOST_CMAKE=TRUE', + '-DBOOST_ROOT=%s' % spec['boost'].prefix, + '-DBoost_DIR=%s' % spec['boost'].prefix, + '-DBOOST_LIBRARYDIR=%s' % spec['boost'].prefix.lib, + '-DDYNINST_DIR=%s' % spec['dyninst'].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 +349,78 @@ def install(self, spec, prefix): 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: + resolve_symbols = "symtabapi" + cmake_prefix_path = join_path(spec['cbtf'].prefix) + ':' + join_path(spec['cbtf-krell'].prefix) + ':' + join_path(spec['dyninst'].prefix) + #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) + # #-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, + # '-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: + + #elif '+mic' in spec: + # comment out else and shift over the default case below until arch detection is in + #else: 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) + python_vers='%d.%d' % spec['python'].version[:2] + cmakeOptions = [] + cmakeOptions.extend(['-DCMAKE_INSTALL_PREFIX=%s' % prefix, + '-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_NO_BOOST_CMAKE=TRUE', + '-DBOOST_ROOT=%s' % spec['boost'].prefix, + '-DBoost_DIR=%s' % spec['boost'].prefix, + '-DBOOST_LIBRARYDIR=%s' % spec['boost'].prefix.lib, + '-DBoost_INCLUDE_DIRS:PATH=%s' % spec['boost'].prefix.include, + '-DBoost_LIBRARY_DIRS:PATH=%s' % spec['boost'].prefix.lib, + '-DDYNINST_DIR=%s' % spec['dyninst'].prefix, + '-DMRNET_DIR=%s' % spec['mrnet'].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() @@ -368,96 +428,106 @@ def install(self, spec, prefix): else: with working_dir('build_cbtf', create=True): - python_vers = '%d.%d' % spec['python'].version[:2] - # python_vers=join_path(spec['python'].version[:2]) - cmake( - '..', - '-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64, - '-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) + python_vers=format(spec['python'].version.up_to(2)) + cmakeOptions = [] + cmakeOptions.extend(['-DCMAKE_INSTALL_PREFIX=%s' % prefix, + '-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_NO_BOOST_CMAKE=TRUE', + '-DBOOST_ROOT=%s' % spec['boost'].prefix, + '-DBoost_DIR=%s' % spec['boost'].prefix, + '-DBOOST_LIBRARYDIR=%s' % spec['boost'].prefix.lib, + '-DBoost_INCLUDE_DIRS:PATH=%s' % spec['boost'].prefix.include, + '-DBoost_LIBRARY_DIRS:PATH=%s' % spec['boost'].prefix.lib, + '-DDYNINST_DIR=%s' % spec['dyninst'].prefix, + '-DMRNET_DIR=%s' % spec['mrnet'].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") -# if '+frontend' in spec: -# with working_dir('build_frontend', create=True): -# tbd + #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 + -# 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