From 99cac0bf94a16a82bd455bdcf1ab8f2a4a175949 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Thu, 27 Jul 2017 11:06:44 -0500 Subject: Fix for Krell openspeedshop spack package bug. New multi-value variant for GUI build. (#4880) * Update the krell institute products to use the latest features of spack for building on cluster platforms. * Address travis error messages and resubmit the pull request. * Update the contents of openspeedshop package.py so it passes the flake8 tests. * Fix flake8 error-whitespack issue in mrnet package.py file. * Add updates based on spack reviewer feedback. * More fixes based on comments from reviewers. Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH. * More review related changes. Update MPIOption.append lines and take out xercesc references. * Create a base options function for common openspeedshop base cmake options to reduce redundencies. * Add libxml2+python depends on to get around issues with the libxml2 package file. * Using boost over 1.60.0 causes compile errors. This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build. * Fix bad syntax in specifying the boost version range. * Update the version numbers for the krell institute components and tools: cbtf and openspeedshop. * Do not build glib for qt3, it is not needed and causes build problems at this time anyway. * A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set. * Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH. * A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set. * Trim comments to fit more concisely. * Fix tabs versus spaces and swap if and else clause check from a negative to a positive check. * Fix issues with the cbtf-argonavis build, update to use dyninst-9.3.2, fixes to openspeedshop package build. * Fix issues with the cbtf-argonavis package.py files related to comments. * Add changes for changing the krell packages from Package to CMakePackage. * Add better changes for changing the krell packages from Package to CMakePackage. * Add more modifications for changing the krell packages from Package to CMakePackage. * Add additional modifications for changing the krell packages from Package to CMakePackage and fixing Travis erros * Fix new travis errors. * Fix new travis errors. * Add more changes for PR 4765. * Add more refinements to the conversion from Package to CMakePackage. * Fix new travis errors. * Add dependencies for MPI to be passed to cbtf-krell, so it can build the MPI collectors requested by the builder of openspeedshop. * Remove extra unnecessary routine to adjust build arguments. Fix if-else clause issue. * Fix more flake issues caused by last changes. * Fix a bug where openspeedshop will not build when no mpi variants are specified. Also switch to a multiple level variant for building the gui(s). Use none, qt3, and qt4 as the variants with qt3 being the default. * Add fix for spack issue #4843, where LTDL include files were not found. * Add the build_type variant back into the openspeedshop package file. --- .../builtin/packages/openspeedshop/package.py | 98 +++++++++------------- 1 file changed, 40 insertions(+), 58 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index f4c0029d72..95971af10e 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -77,12 +77,11 @@ class Openspeedshop(CMakePackage): to point to target build.") variant('cuda', default=False, description="build with cuda packages included.") - variant('useqt4gui', default=False, - description="build with Qt4/Qt5 based gui package enabled. \ - Do not build older Qt3 gui") - variant('rtfe', default=False, - description="build for clusters heterogeneous processors \ - on fe/be nodes.") + + variant('gui', default='qt3', values=('none', 'qt3', 'qt4'), + description='Build or not build a GUI of choice' + ) + variant('build_type', default='None', values=('None'), description='CMake build type') @@ -109,6 +108,7 @@ class Openspeedshop(CMakePackage): 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@2.24+krellpatch", type='build') @@ -118,7 +118,9 @@ class Openspeedshop(CMakePackage): depends_on("boost@1.50.0:1.59.0") depends_on("dyninst@9.3.2") depends_on("libxml2+python") - depends_on("qt@3.3.8b+krellpatch", when='~useqt4gui') + 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') @@ -133,6 +135,7 @@ class Openspeedshop(CMakePackage): # 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') @@ -151,9 +154,9 @@ class Openspeedshop(CMakePackage): compile_flags = "-O2 -g" 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, @@ -174,78 +177,57 @@ class Openspeedshop(CMakePackage): 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]) + '-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) 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]) + '-DINSTRUMENTOR=%s' % instrumentor_setting, + '-DCBTF_DIR=%s' % spec['cbtf'].prefix, + '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, + '-DMRNET_DIR=%s' % spec['mrnet'].prefix]) else: cmake_args = [] # Appends base options to cmake_args self.set_defaultbase_cmakeOptions(spec, cmake_args) - - if '+useqt4gui' in self.spec: + 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, - '-DSQLITE3_DIR=%s' - % spec['sqlite'].prefix, - '-DCBTF_DIR=%s' - % spec['cbtf'].prefix, - '-DCBTF_KRELL_DIR=%s' - % spec['cbtf-krell'].prefix, - '-DMRNET_DIR=%s' - % spec['mrnet'].prefix]) - else: + ['-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, - '-DQTLIB_DIR=%s' - % spec['qt'].prefix, - '-DMRNET_DIR=%s' - % spec['mrnet'].prefix]) + ['-DQTLIB_DIR=%s' + % spec['qt'].prefix]) return cmake_args -- cgit v1.2.3-70-g09d2