From 31a329d237b51638da16d4fd3641b5aad2af130e Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Thu, 27 Jul 2017 10:59:30 -0500 Subject: [PATCH 1/2] New Package: RSbench (#4752) * New Package: RSbench * minor change * removed tags as per PR# 4749 * addressed comments and added gcc compiler. * added proxy app tags to description. * removed setting CC to pgicc through spec. * removed compiler as depedency * removed pgi variant. * flake 8 fix. * added mpi depedency with pgi compiler * added pgi compiler * removed PGI compiler as depedency. * added tags and addressed other code formattings. * added tags and addressed other code formattings. * addressed comments. --- .../repos/builtin/packages/rsbench/package.py | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 var/spack/repos/builtin/packages/rsbench/package.py diff --git a/var/spack/repos/builtin/packages/rsbench/package.py b/var/spack/repos/builtin/packages/rsbench/package.py new file mode 100644 index 00000000000..7e4027d2d4e --- /dev/null +++ b/var/spack/repos/builtin/packages/rsbench/package.py @@ -0,0 +1,66 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# 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/llnl/spack +# Please also see the LICENSE file 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 +############################################################################## + +from spack import * + + +class Rsbench(MakefilePackage): + """A mini-app to represent the multipole resonance representation lookup + cross section algorithm.""" + + homepage = "https://github.com/ANL-CESAR/RSBench" + url = "https://github.com/ANL-CESAR/RSBench/archive/v2.tar.gz" + + version('2', '15a3ac5ea72529ac1ed9ed016ee68b4f') + version('0', '3427634dc5e7cd904d88f9955b371757') + + tags = ['proxy-app'] + + build_directory = 'src' + + @property + def build_targets(self): + targets = [] + + cflags = '-std=gnu99' + ldflags = '-lm' + + if self.compiler.name == 'gcc': + cflags += ' -ffast-math ' + elif self.compiler.name == 'intel': + cflags += ' -xhost -ansi-alias -no-prec-div ' + elif self.compiler.name == 'pgi': + cflags += ' -fastsse ' + + cflags += self.compiler.openmp_flag + + targets.append('CFLAGS={0}'.format(cflags)) + targets.append('LDFLAGS={0}'.format(ldflags)) + + return targets + + def install(self, spec, prefix): + mkdir(prefix.bin) + install('src/rsbench', prefix.bin) From 99cac0bf94a16a82bd455bdcf1ab8f2a4a175949 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Thu, 27 Jul 2017 11:06:44 -0500 Subject: [PATCH 2/2] 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 | 96 ++++++++----------- 1 file changed, 39 insertions(+), 57 deletions(-) diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index f4c0029d726..95971af10e0 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 @@ def cmake_args(self): 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 @@ def cmake_args(self): 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) + 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 '+useqt4gui' in self.spec: + if guitype == 'none': 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 == '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, - '-DQTLIB_DIR=%s' - % spec['qt'].prefix, - '-DMRNET_DIR=%s' - % spec['mrnet'].prefix]) + ['-DBUILD_QT3_GUI=FALSE']) + elif guitype == 'qt3': + cmake_args.extend( + ['-DQTLIB_DIR=%s' + % spec['qt'].prefix]) return cmake_args