From 6e95e06bdae08801f1ed586cf1d0dc6f5717be2c Mon Sep 17 00:00:00 2001 From: Hadrien G Date: Thu, 14 Feb 2019 06:04:38 +0100 Subject: Add Gaudi and RELAX packages (#9194) * Add a RELAX package * Add a Gaudi package --- var/spack/repos/builtin/packages/gaudi/package.py | 68 ++++++++++++++++++++++ .../builtin/packages/gaudi/use-xenv-master.diff | 13 +++++ var/spack/repos/builtin/packages/relax/package.py | 37 ++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gaudi/package.py create mode 100644 var/spack/repos/builtin/packages/gaudi/use-xenv-master.diff create mode 100644 var/spack/repos/builtin/packages/relax/package.py diff --git a/var/spack/repos/builtin/packages/gaudi/package.py b/var/spack/repos/builtin/packages/gaudi/package.py new file mode 100644 index 0000000000..0e1146342c --- /dev/null +++ b/var/spack/repos/builtin/packages/gaudi/package.py @@ -0,0 +1,68 @@ +# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class Gaudi(CMakePackage): + """An experiment-independent HEP event data processing framework""" + + homepage = "http://gaudi.web.cern.ch/gaudi/" + git = "https://gitlab.cern.ch/gaudi/Gaudi.git" + + version('develop', branch='master') + version('30.5', commit='2c70e73ee5b543b26197b90dd59ea4e4d359d230') + + patch('use-xenv-master.diff') + + variant('tests', default=False, + description='Prepare to run the test suite') + variant('optional', default=False, + description='Build most optional components') + variant('vtune', default=False, + description='Build with Intel VTune profiler support') + + # These dependencies are needed for a minimal Gaudi build + depends_on('boost@1.67.0: +python') + depends_on('cmake', type='build') + depends_on('intel-tbb') + depends_on('libuuid') + depends_on('python@:2.99.99') + depends_on('range-v3') + depends_on('root +python +root7 +ssl +tbb +threads') + depends_on('zlib') + + # These dependencies are required by the Gaudi test suite + depends_on('aida', when='+tests') + depends_on('clhep', when='+tests') + depends_on('cppunit', when='+tests') + depends_on('gdb', when='+tests') + depends_on('gperftools', when='+tests') + depends_on('heppdt@:2.99.99', when='+tests') + depends_on('py-networkx', when='+tests') + depends_on('py-nose', when='+tests') + depends_on('py-setuptools', when='+tests') + depends_on('relax', when='+tests') + depends_on('xerces-c', when='+tests') + + # Adding these dependencies triggers the build of most optional components + depends_on('aida', when='+optional') + depends_on('clhep', when='+optional') + depends_on('cppgsl', when='+optional') + depends_on('cppunit', when='+optional') + depends_on('doxygen +graphviz', when='+optional') + depends_on('gperftools', when='+optional') + depends_on('gsl', when='+optional') + depends_on('heppdt@:2.99.99', when='+optional') + depends_on('jemalloc', when='+optional') + depends_on('libpng', when='+optional') + depends_on('libunwind', when='+optional') + depends_on('relax', when='+optional') + depends_on('xerces-c', when='+optional') + # NOTE: pocl cannot be added as a minimal OpenCL implementation because + # ROOT does not like being exposed to LLVM symbols. + + # The Intel VTune dependency is taken aside because it requires a license + depends_on('intel-parallel-studio -mpi +vtune', when='+vtune') diff --git a/var/spack/repos/builtin/packages/gaudi/use-xenv-master.diff b/var/spack/repos/builtin/packages/gaudi/use-xenv-master.diff new file mode 100644 index 0000000000..fd19561860 --- /dev/null +++ b/var/spack/repos/builtin/packages/gaudi/use-xenv-master.diff @@ -0,0 +1,13 @@ +diff --git a/cmake/GaudiProjectConfig.cmake b/cmake/GaudiProjectConfig.cmake +index ab1a24e1d..dc938da79 100644 +--- a/cmake/GaudiProjectConfig.cmake ++++ b/cmake/GaudiProjectConfig.cmake +@@ -410,7 +410,7 @@ macro(gaudi_project project version) + # Avoid interference from user environment + unset(ENV{GIT_DIR}) + unset(ENV{GIT_WORK_TREE}) +- execute_process(COMMAND git clone -b 0.0.1 https://gitlab.cern.ch/gaudi/xenv.git ${CMAKE_BINARY_DIR}/contrib/xenv) ++ execute_process(COMMAND git clone https://gitlab.cern.ch/gaudi/xenv.git ${CMAKE_BINARY_DIR}/contrib/xenv) + endif() + # I'd like to generate the script with executable permission, but I only + # found this workaround: https://stackoverflow.com/a/45515418 diff --git a/var/spack/repos/builtin/packages/relax/package.py b/var/spack/repos/builtin/packages/relax/package.py new file mode 100644 index 0000000000..7b8488fe43 --- /dev/null +++ b/var/spack/repos/builtin/packages/relax/package.py @@ -0,0 +1,37 @@ +# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class Relax(CMakePackage): + """A set of Reflex libraries for the most common used general data types in + the LHC Computing Grid""" + + homepage = "https://twiki.cern.ch/twiki/bin/view/LCG/RELAX" + url = "http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/sources/RELAX-1.tar.gz" + + # The RELAX project stopped using a fixed release model since it moved to + # ROOT 6, so any package checksum is a lie... + version('root6') + + depends_on('clhep') + depends_on('gsl') + depends_on('hepmc@:2.99.99') + depends_on('root@6.0.0:') + + def cmake_args(self): + spec = self.spec + cxxstd = self.spec['root'].variants['cxxstd'].value + hepmc_lib = spec['hepmc'].prefix.lib.join('libHepMC.so') + + args = [ + '-DCMAKE_CXX_STANDARD={0}'.format(cxxstd), + '-DROOT_BINARY_PATH={0}'.format(spec['root'].prefix.bin), + '-DHEPMC_INCLUDE_DIR={0}'.format(spec['hepmc'].prefix.include), + '-DHEPMC_LIBRARIES={0}'.format(hepmc_lib) + ] + + return args -- cgit v1.2.3-70-g09d2