From e4edbe89cc7732704cf2568792c115ce9024bb33 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 1 Jun 2021 10:12:55 +0200 Subject: COOL: add new package (#23006) Co-authored-by: George Hartzell --- var/spack/repos/builtin/packages/cool/cool.patch | 19 +++++++ var/spack/repos/builtin/packages/cool/package.py | 64 ++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cool/cool.patch create mode 100644 var/spack/repos/builtin/packages/cool/package.py diff --git a/var/spack/repos/builtin/packages/cool/cool.patch b/var/spack/repos/builtin/packages/cool/cool.patch new file mode 100644 index 0000000000..9f4855a81a --- /dev/null +++ b/var/spack/repos/builtin/packages/cool/cool.patch @@ -0,0 +1,19 @@ +--- src/PyCool/CMakeLists.txt.orig 2021-01-12 22:09:58.000000000 +0100 ++++ src/PyCool/CMakeLists.txt 2021-04-01 10:35:53.129276400 +0200 +@@ -9,6 +9,7 @@ + + # Make PyCool_helpers.h visible verbatim in PyCoolDict.so (bug #103539) + # See http://stackoverflow.com/questions/13470499 ++file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/python/PyCool/_internal) + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/python/PyCool/_internal/PyCool_headers_and_helpers.h COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/../RelationalCool/src/PyCool_helpers.h ${CMAKE_CURRENT_SOURCE_DIR}/dict/PyCool_headers.h > ${CMAKE_BINARY_DIR}/python/PyCool/_internal/PyCool_headers_and_helpers.h DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../RelationalCool/src/PyCool_helpers.h ${CMAKE_CURRENT_SOURCE_DIR}/dict/PyCool_headers.h) + add_custom_target(PyCool_headers_and_helpers_h ALL DEPENDS ${CMAKE_BINARY_DIR}/python/PyCool/_internal/PyCool_headers_and_helpers.h) + install(FILES ${CMAKE_BINARY_DIR}/python/PyCool/_internal/PyCool_headers_and_helpers.h DESTINATION python/PyCool/_internal) +--- src/RelationalCool/CMakeLists.txt.orig 2021-01-12 22:09:58.000000000 +0100 ++++ src/RelationalCool/CMakeLists.txt 2021-04-01 11:31:30.241902600 +0200 +@@ -1,5 +1,5 @@ + # Required external packages +-find_package(Boost REQUIRED) ++find_package(Boost REQUIRED chrono system thread) + include_directories(${Boost_INCLUDE_DIRS}) + find_package(CORAL REQUIRED RelationalAccess CoralKernel) + diff --git a/var/spack/repos/builtin/packages/cool/package.py b/var/spack/repos/builtin/packages/cool/package.py new file mode 100644 index 0000000000..ce8c0930bd --- /dev/null +++ b/var/spack/repos/builtin/packages/cool/package.py @@ -0,0 +1,64 @@ +# Copyright 2013-2021 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 Cool(CMakePackage): + """COOL provides specific software components and tools for the handling of the time + variation and versioning of the experiment conditions data.""" + + homepage = "https://coral-cool.docs.cern.ch/" + git = "https://gitlab.cern.ch/lcgcool/cool.git" + + tags = ['hep'] + maintainers = ['iarspider'] + + version('3.3.7', tag='COOL_3_3_7') + version('3.3.5', tag='COOL_3_3_5') + version('3.3.4', tag='COOL_3_3_4') + version('3.3.3', tag='COOL_3_3_3') + + # Spack-specific patches: + # * Create python/PyCool/_internal directory + # (only necessary for Spack builds, for some reason) + # * Explicitly request Boost components + patch('cool.patch', level=0) + + # BINARY_TAG is a combination of target, os, compiler name and build type (opt/dbg) + # If you override it, please also override it for CORAL + variant('binary_tag', default='auto', + description='Force specific BINARY_TAG, "auto" ' + + 'will determine the correct value at buildtime') + + depends_on('coral') + depends_on('root') + depends_on('vdt') + depends_on('xz') + depends_on('qt@5:', when='platform=linux') + depends_on('boost+chrono+system+thread') + depends_on('python') + + def determine_binary_tag(self): + # As far as I can tell from reading the source code, `binary_tag` + # can be almost arbitrary. The only real difference it makes is + # disabling oracle dependency for non-x86 platforms. + if self.spec.variants['binary_tag'].value != 'auto': + return self.spec.variants['binary_tag'].value + + binary_tag = str(self.spec.target.family) + \ + '-' + self.spec.os + \ + '-' + self.spec.compiler.name + str(self.spec.compiler.version.joined) + \ + ('-opt' if 'Rel' in self.spec.variants['build_type'].value else '-dbg') + + return binary_tag + + def cmake_args(self): + binary_tag = self.determine_binary_tag() + args = ['-DBINARY_TAG=' + binary_tag] + if self.spec['python'].version >= Version("3.0.0"): + args.append('-DLCG_python3=on') + + return args -- cgit v1.2.3-70-g09d2