COOL: add new package (#23006)

Co-authored-by: George Hartzell <hartzell@alerce.com>
This commit is contained in:
iarspider 2021-06-01 10:12:55 +02:00 committed by GitHub
parent f1d2ab38a0
commit e4edbe89cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 83 additions and 0 deletions

View File

@ -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)

View File

@ -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