cbtf-argonavis-gui: add openspeedshop-utils package to address qt conflicts (#8066)

Fixes #7946

Creates an openspeedshop-utils package that does not depend on qt3
and can be used to resolve the needs of cbtf-argonavis-gui.

Changes for creating a release versus develop build are also
included. There are package versions which are no longer relevant
(e.g. 1.3.0 for cbtf-argonavis-gui has been replaced with 1.3.0.0)
but these versions need to be kept to allow uninstalling them;
issue #8173 has been created to investigate this.
This commit is contained in:
Jim Galarowicz
2018-05-17 14:04:33 -05:00
committed by scheibelp
parent de7d13b0e8
commit dfd168d557
8 changed files with 686 additions and 208 deletions

View File

@@ -64,16 +64,14 @@ class Openspeedshop(CMakePackage):
"""
homepage = "http://www.openspeedshop.org"
url = "https://github.com/OpenSpeedShop"
url = "https://github.com/OpenSpeedShop/openspeedshop.git"
# Use when the git repository is available
version('2.3.1', branch='master',
version('2.3.1.3', git='https://github.com/OpenSpeedShop/openspeedshop.git', tag='2.3.1.3')
version('develop', branch='master',
git='https://github.com/OpenSpeedShop/openspeedshop.git')
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('cti', default=False,
@@ -112,48 +110,77 @@ 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')
# For binutils
depends_on("binutils", when='@develop', type='build')
depends_on("binutils@2.29.1", when='@2.3.1.3', type='build')
depends_on("elf", type="link")
depends_on("libdwarf")
depends_on("sqlite")
depends_on("boost@1.50.0:")
depends_on("dyninst@9.3.2:")
depends_on("python")
depends_on("libxml2+python")
# For boost
depends_on("boost@1.50.0:", when='@develop')
depends_on("boost@1.66.0", when='@2.3.1.3')
depends_on("dyninst@9.3.2:", when='@develop')
depends_on("dyninst@9.3.2", when='@2.3.1.3')
depends_on("python", when='@develop')
depends_on("python@2.7.14", when='@2.3.1.3')
depends_on("libxml2", when='@develop')
depends_on("libxml2@2.9.4", when='@2.3.1.3')
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 for the openspeedshop cbtf packages.
depends_on("cbtf@develop", when='@develop')
depends_on("cbtf@1.9.1.0", when='@2.3.1.3')
# Dependencies only for the openspeedshop cbtf package.
depends_on("cbtf", when='+cbtf')
depends_on('cbtf-krell', when='+cbtf')
depends_on('cbtf-krell+crayfe', when='+crayfe')
depends_on('cbtf-krell+cti', when='+cti')
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')
depends_on("mrnet@5.0.1:+cti", when='+cti+cbtf')
depends_on("cbtf-krell@develop", when='@develop')
depends_on("cbtf-krell@1.9.1.0", when='@2.3.1.3')
depends_on('cbtf-krell@develop+crayfe', when='@develop+crayfe')
depends_on('cbtf-krell@1.9.1.0+crayfe', when='@2.3.1.3+crayfe')
depends_on('cbtf-krell@develop+cti', when='@develop+cti')
depends_on('cbtf-krell@1.9.1.0+cti', when='@2.3.1.3+cti')
depends_on('cbtf-krell@develop+mpich', when='@develop+mpich')
depends_on('cbtf-krell@1.9.1.0+mpich', when='@2.3.1.3+mpich')
depends_on('cbtf-krell@develop+mpich2', when='@develop+mpich2')
depends_on('cbtf-krell@1.9.1.0+mpich2', when='@2.3.1.3+mpich2')
depends_on('cbtf-krell@develop+mpt', when='@develop+mpt')
depends_on('cbtf-krell@1.9.1.0+mpt', when='@2.3.1.3+mpt')
depends_on('cbtf-krell@develop+mvapich', when='@develop+mvapich')
depends_on('cbtf-krell@1.9.1.0+mvapich', when='@2.3.1.3+mvapich')
depends_on('cbtf-krell@develop+mvapich2', when='@develop+mvapich2')
depends_on('cbtf-krell@1.9.1.0+mvapich2', when='@2.3.1.3+mvapich2')
depends_on('cbtf-krell@develop+openmpi', when='@develop+openmpi')
depends_on('cbtf-krell@1.9.1.0+openmpi', when='@2.3.1.3+openmpi')
depends_on("cbtf-argonavis@develop", when='@develop+cuda')
depends_on("cbtf-argonavis@1.9.1.0", when='@2.3.1.3+cuda')
# For MRNet
depends_on("mrnet@5.0.1-3:+cti", when='@develop+cti')
depends_on("mrnet@5.0.1-3:+lwthreads", when='@develop')
depends_on("mrnet@5.0.1-3:+cti", when='@2.3.1.3+cti')
depends_on("mrnet@5.0.1-3:+lwthreads", when='@2.3.1.3')
parallel = False
@@ -165,6 +192,7 @@ def set_CrayLoginNode_cmakeOptions(self, spec, cmakeOptions):
CrayLoginNodeOptions = []
rt_platform = "cray"
# 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
@@ -188,89 +216,54 @@ def cmake_args(self):
compile_flags = "-O2 -g"
if spec.satisfies('+offline'):
# Indicate building offline vers (writes rawdata files)
instrumentor_setting = "offline"
if spec.satisfies('+runtime'):
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]
cmake_args = []
# Add any MPI implementations coming from variant settings
self.set_mpi_cmakeOptions(spec, cmake_args)
# Indicate building cbtf vers (transfer rawdata files)
instrumentor_setting = "cbtf"
else:
cmake_args = []
if spec.satisfies('+runtime'):
# Appends base options to cmake_args
self.set_defaultbase_cmakeOptions(spec, cmake_args)
# 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])
else:
# 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 guitype == 'none':
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 spec.satisfies('+cbtf'):
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_cmakeOptions(spec, cmake_args)
['-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:
# 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])
['-DQTLIB_DIR=%s'
% spec['qt'].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])
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_CrayLoginNode_cmakeOptions(spec, cmake_args)
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_CrayLoginNode_cmakeOptions(spec, cmake_args)
return cmake_args
@@ -352,35 +345,15 @@ def setup_environment(self, spack_env, run_env):
os.path.dirname(oss_libdir.joined()))
run_env.set('OPENSS_RAWDATA_DIR', '.')
# Settings specific to the version, checking here
# for the offline instrumentor, otherwise use cbtf instrumentor
# settings. MPI for the cbtf instrumentor is setup in cbtf-krell
if '+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_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)
run_env.prepend_path('PATH', self.spec['python'].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')
else:
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)
run_env.prepend_path('PATH', self.spec['python'].prefix.bin)
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)
run_env.prepend_path('PATH', self.spec['python'].prefix.bin)