summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriarspider <iarspider@gmail.com>2021-06-01 10:12:55 +0200
committerGitHub <noreply@github.com>2021-06-01 10:12:55 +0200
commite4edbe89cc7732704cf2568792c115ce9024bb33 (patch)
treec2c62740ae0c68670657ccb1de586eed662218fe
parentf1d2ab38a0d3e85d229c5171a82108b44f17826a (diff)
downloadspack-e4edbe89cc7732704cf2568792c115ce9024bb33.tar.gz
spack-e4edbe89cc7732704cf2568792c115ce9024bb33.tar.bz2
spack-e4edbe89cc7732704cf2568792c115ce9024bb33.tar.xz
spack-e4edbe89cc7732704cf2568792c115ce9024bb33.zip
COOL: add new package (#23006)
Co-authored-by: George Hartzell <hartzell@alerce.com>
-rw-r--r--var/spack/repos/builtin/packages/cool/cool.patch19
-rw-r--r--var/spack/repos/builtin/packages/cool/package.py64
2 files changed, 83 insertions, 0 deletions
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