Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[root] Sundry improvements #242

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions var/spack/repos/builtin/packages/abseil-cpp/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ class AbseilCpp(CMakePackage):
maintainers("jcftang")
tags = ["windows"]

version(
"20230802.1", sha256="987ce98f02eefbaf930d6e38ab16aa05737234d7afbab2d5c4ea7adbe50c28ed"
)
version(
"20230125.3", sha256="5366d7e7fa7ba0d915014d387b66d0d002c03236448e1ba9ef98122c13b35c36"
)
Expand Down
65 changes: 61 additions & 4 deletions var/spack/repos/builtin/packages/root/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ class Root(CMakePackage):
sha256="397f2de7db95a445afdb311fc91c40725fcfad485d58b4d72e6c3cdd0d0c5de7",
when="@6.26:6.26.06 +root7 ^[email protected]:",
)
# Support recent versions of protobuf with their own CMake config
patch("protobuf-config.patch", level=0, when="^protobuf")

patch("webgui.patch", level=0, when="@6.26.00:6.26.10,6.28.00:6.28.08,6.30.00 +webgui")

Expand All @@ -127,6 +129,8 @@ class Root(CMakePackage):

variant("aqua", default=False, description="Enable Aqua interface")
variant("arrow", default=False, description="Enable Arrow interface")
variant("cuda", when="@6.08.00:", default=False, description="Enable CUDA support")
variant("cudnn", when="@6.20.02:", default=False, description="Enable cuDNN support")
variant("davix", default=True, description="Compile with external Davix")
variant("dcache", default=False, description="Enable support for dCache")
variant("emacs", default=False, description="Enable Emacs support")
Expand Down Expand Up @@ -188,6 +192,31 @@ class Root(CMakePackage):
variant("tbb", default=True, description="TBB multi-threading support")
variant("threads", default=True, description="Enable using thread library")
variant("tmva", default=False, description="Build TMVA multi variate analysis library")
variant(
"tmva-cpu",
when="@6.15.02:",
default=True,
description="Build TMVA with CPU support for deep learning (requires BLAS)",
)
variant(
"tmva-gpu",
when="@6.15.02:",
default=False,
description="Build TMVA with GPU support for deep learning (requries CUDA)",
)
variant(
"tmva-pymva",
when="@6.17.02:",
default=False,
description="Enable support for Python in TMVA (requires numpy)",
)
variant(
"tmva-sofie",
when="@6.25.02:",
default=False,
description="Build TMVA with support for sofie - "
"fast inference code generation (requires protobuf 3)",
)
variant("unuran", default=True, description="Use UNURAN for random number generation")
variant("vc", default=False, description="Enable Vc for adding new types for SIMD programming")
variant("vdt", default=True, description="Enable set of fast and vectorisable math functions")
Expand Down Expand Up @@ -222,7 +251,6 @@ class Root(CMakePackage):
depends_on("[email protected]:", type="build", when="@6.28.00: platform=darwin")
depends_on("pkgconfig", type="build")

depends_on("blas")
depends_on("freetype")
depends_on("jpeg")
depends_on("libice")
Expand Down Expand Up @@ -260,14 +288,20 @@ class Root(CMakePackage):
# Python
depends_on("[email protected]:", when="+python", type=("build", "run"))
depends_on("[email protected]:3.10", when="@:6.26.09 +python", type=("build", "run"))
depends_on("py-numpy", type=("build", "run"), when="+tmva")
# This numpy dependency was not intended and will hopefully
# be fixed in 6.20.06.
depends_on("py-numpy", type=("build", "run"), when="+tmva-pymva")
# See: https://sft.its.cern.ch/jira/browse/ROOT-10626
depends_on("py-numpy", type=("build", "run"), when="@6.20.00:6.20.05 +python")

# TMVA
depends_on("blas", when="+tmva-cpu")
depends_on("cuda", when="+tmva-gpu")
depends_on("protobuf@3:", when="+tmva-sofie")

# Optional dependencies
depends_on("arrow", when="+arrow")
depends_on("cuda", when="+cuda")
depends_on("cuda", when="+cudnn")
depends_on("cudnn", when="+cudnn")
depends_on("davix @0.7.1:", when="+davix")
depends_on("dcap", when="+dcache")
depends_on("cfitsio", when="+fits")
Expand Down Expand Up @@ -332,6 +366,11 @@ class Root(CMakePackage):
conflicts("+math", when="~gsl", msg="root+math requires GSL")
conflicts("+tmva", when="~gsl", msg="root+tmva requires GSL")
conflicts("+tmva", when="~mlp", msg="root+tmva requires MLP")
conflicts("+tmva-cpu", when="~tmva", msg="root+tmva-cpu requires TMVA")
conflicts("+tmva-gpu", when="~tmva", msg="root+tmva-gpu requires TMVA")
conflicts("+tmva-gpu", when="~cuda", msg="root+tmva-gpu requires CUDA")
conflicts("+tmva-pymva", when="~tmva", msg="root+tmva-pymva requires TMVA")
conflicts("+tmva-sofie", when="~tmva", msg="root+tmva-sofie requires TMVA")
conflicts("~http", when="@6.29.00: +webgui", msg="root+webgui requires HTTP")
conflicts("cxxstd=11", when="+root7", msg="root7 requires at least C++14")
conflicts("cxxstd=11", when="@6.25.02:", msg="This version of root requires at least C++14")
Expand Down Expand Up @@ -449,6 +488,10 @@ def _add_variant(variants, features, featurename, variantname):
_add_variant(v, f, "table", "+table")
_add_variant(v, f, "thread", "+threads")
_add_variant(v, f, "tmva", "+tmva")
_add_variant(v, f, "tmva-cpu", "+tmva-cpu")
_add_variant(v, f, "tmva-gpu", "+tmva-gpu")
_add_variant(v, f, "tmva-pymva", "+tmva-pymva")
_add_variant(v, f, "tmva-sofie", "+tmva-sofie")
_add_variant(v, f, "unuran", "+unuran")
_add_variant(v, f, "vc", "+vc")
_add_variant(v, f, "vdt", "+vdt")
Expand Down Expand Up @@ -600,6 +643,9 @@ def cmake_args(self):
define_from_variant("xrootd"),
]

if self.spec.satisfies("@6.08.00:"):
options.append(define_from_variant("cuda"))

# Necessary due to name change of variant (webui->webgui)
# https://github.com/root-project/root/commit/d631c542909f2f793ca7b06abc622e292dfc4934
if self.spec.satisfies("@:6.17.02"):
Expand All @@ -608,11 +654,22 @@ def cmake_args(self):
options.append(define_from_variant("webgui", "webgui"))

# Some special features
if self.spec.satisfies("@6.15.02:"):
options.append(define_from_variant("tmva-cpu"))
options.append(define_from_variant("tmva-gpu"))

if self.spec.satisfies("@6.17.02:"):
options.append(define_from_variant("tmva-pymva"))

if self.spec.satisfies("@6.20.02:"):
options.append(define_from_variant("cudnn"))
options.append(define_from_variant("pyroot", "python"))
else:
options.append(define_from_variant("python"))

if self.spec.satisfies("@6.25.02:"):
options.append(define_from_variant("tmva-sofie"))

# #################### Compiler options ####################

if sys.platform == "darwin" and self.compiler.cc == "gcc":
Expand Down
57 changes: 57 additions & 0 deletions var/spack/repos/builtin/packages/root/protobuf-config.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
--- cmake/modules/SearchInstalledSoftware.cmake 2023-08-28 06:26:43.000000000 -0500
+++ cmake/modules/SearchInstalledSoftware.cmake 2023-11-03 10:26:13.383171830 -0500
@@ -1711,8 +1711,12 @@

if(tmva-sofie)
message(STATUS "Looking for Protobuf")
- find_package(Protobuf)
+ set(protobuf_MODULE_COMPATIBLE TRUE)
+ find_package(Protobuf CONFIG)
if(NOT Protobuf_FOUND)
+ find_package(Protobuf MODULE)
+ endif()
+ if(NOT Protobuf_FOUND)
if(fail-on-missing)
message(FATAL_ERROR "Protobuf libraries not found and they are required (tmva-sofie option enabled)")
else()
--- tmva/sofie/test/CMakeLists.txt 2023-08-28 06:26:43.000000000 -0500
+++ tmva/sofie/test/CMakeLists.txt 2023-11-03 10:41:04.048362415 -0500
@@ -46,7 +46,7 @@
${CMAKE_BINARY_DIR}/ginclude # this is for RConfigure.h
)

-target_link_libraries(emitFromONNX ${Protobuf_LIBRARIES} ROOTTMVASofie ROOTTMVASofieParser)
+target_link_libraries(emitFromONNX protobuf::libprotobuf ROOTTMVASofie ROOTTMVASofieParser)
set_target_properties(emitFromONNX PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
## silence protobuf warnings seen in version 3.0 and 3.6. Not needed from protobuf version 3.17
target_compile_options(emitFromONNX PRIVATE -Wno-unused-parameter -Wno-array-bounds)
@@ -88,7 +88,7 @@
${CMAKE_SOURCE_DIR}/core/foundation/inc
${CMAKE_BINARY_DIR}/ginclude # this is for RConfigure.h
)
-target_link_libraries(emitFromROOT ${Protobuf_LIBRARIES} ROOTTMVASofie ROOTTMVASofieParser)
+target_link_libraries(emitFromROOT protobuf::libprotobuf ROOTTMVASofie ROOTTMVASofieParser)
set_target_properties(emitFromROOT PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
## silence protobuf warnings seen in version 3.0 and 3.6. Not needed from protobuf version 3.17
target_compile_options(emitFromROOT PRIVATE -Wno-unused-parameter -Wno-array-bounds)
--- tmva/sofie_parsers/CMakeLists.txt 2023-08-28 06:26:43.000000000 -0500
+++ tmva/sofie_parsers/CMakeLists.txt 2023-11-03 10:46:44.101759248 -0500
@@ -55,8 +55,8 @@
src/ParseFuseConvTransposeAdd.cxx
src/ParseFuseMatMulAdd.cxx
${PROTO_SRCS}
- LIBRARIES
- ${Protobuf_LIBRARIES}
+ LIBRARIES PUBLIC
+ protobuf::libprotobuf
DEPENDENCIES
TMVA
ROOTTMVASofie
@@ -64,7 +64,5 @@

target_include_directories(ROOTTMVASofieParser PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
-target_include_directories(ROOTTMVASofieParser PUBLIC
- ${Protobuf_INCLUDE_DIRS})
set_target_properties(ROOTTMVASofieParser PROPERTIES
POSITION_INDEPENDENT_CODE TRUE)
2 changes: 1 addition & 1 deletion var/spack/repos/builtin/packages/root/webgui.patch
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@
+WebGui.HttpLoopback: yes
# Use https protocol for the http server (default - no)
WebGui.UseHttps: no
WebGui.ServerCert: rootserver.pem
WebGui.ServerCert: rootserver.pem