diff --git a/pkgs/by-name/ro/root/Build-rootcint-and-genreflex-as-separate-targets.patch b/pkgs/by-name/ro/root/Build-rootcint-and-genreflex-as-separate-targets.patch deleted file mode 100644 index 668c8f69f842..000000000000 --- a/pkgs/by-name/ro/root/Build-rootcint-and-genreflex-as-separate-targets.patch +++ /dev/null @@ -1,108 +0,0 @@ -From febb61a45a40a76bdbcd320f307dcd8f14cc532b Mon Sep 17 00:00:00 2001 -From: Jonas Rembser -Date: Thu, 28 Aug 2025 14:07:01 +0200 -Subject: [PATCH] [CMake] Build `rootcint` and `genreflex` as separate targets - -This makes the CMake code more robust. - -Right now, we use some `install(CODE "execute_process(COMMAND ln -f ...` -solution on unix to install `rootcint` and `genreflex`. This does not -work in all cases, either because of the usage of `\$ENV{DESTDIR}` when -`DESTDIR` is not set, or because hard links are not allowed. - -Always copying `rootcling` - already in the build tree - would avoid -that problem, but by copying we risk sidestepping the CMake mechanisms -to set the RPath correctly when installing the copies, which are not -actual targets. - -To make makes things simpler and more robust, this commit suggests to -build the `rootcing` and `genreflex` executables as separate targets -from the same source. The cost is very little cost in memory -(`rootcling` is only 31K, so copying two times only increases the size -of ROOTs `bin` directory by 1.5 %) and little in compile time (the extra -compile time is less than a second, not noticable in parallel builds). ---- - main/CMakeLists.txt | 69 +++++++++++++++------------------------------ - 1 file changed, 23 insertions(+), 46 deletions(-) - -diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt -index 7dfcd98e345..857f0df48d8 100644 ---- a/main/CMakeLists.txt -+++ b/main/CMakeLists.txt -@@ -98,50 +98,27 @@ set_source_files_properties(src/rootcling.cxx PROPERTIES - VISIBILITY_INLINES_HIDDEN "ON" - ) - --ROOT_EXECUTABLE(rootcling src/rootcling.cxx LIBRARIES RIO Cling Core Rint) -- --# rootcling includes the ROOT complex header which would build the complex --# dictionary with modules. To make sure that rootcling_stage1 builds this --# dict before we use it, we add a dependency here. --add_dependencies(rootcling complexDict) -- --target_include_directories(rootcling PRIVATE -- ${CMAKE_SOURCE_DIR}/core/metacling/res -- ${CMAKE_SOURCE_DIR}/core/dictgen/res -- ${CMAKE_SOURCE_DIR}/io/rootpcm/res) --set_property(TARGET rootcling PROPERTY ENABLE_EXPORTS 1) --if(WIN32) -- set_target_properties(rootcling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS 1) -- set_property(TARGET rootcling APPEND_STRING PROPERTY LINK_FLAGS " -STACK:4000000") --endif() -- --# Create aliases: rootcint, genreflex. --if(WIN32) -- add_custom_command(TARGET rootcling POST_BUILD -- COMMAND copy /y rootcling.exe rootcint.exe -- COMMAND copy /y rootcling.exe genreflex.exe -- WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) --else() -- add_custom_command(TARGET rootcling POST_BUILD -- COMMAND ln -f rootcling rootcint -- COMMAND ln -f rootcling genreflex -- WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) --endif() --set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES -- "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/rootcint;${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/genreflex") -- --if(CMAKE_HOST_UNIX) -- install(CODE "execute_process(COMMAND ln -f rootcling rootcint WORKING_DIRECTORY \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})" COMPONENT applications) -- install(CODE "execute_process(COMMAND ln -f rootcling genreflex WORKING_DIRECTORY \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})" COMPONENT applications) --else() -- if(MSVC) -- install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/rootcling.exe DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT applications) -- install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/rootcint.exe DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT applications) -- install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/genreflex.exe DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT applications) -- else() -- install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/rootcint -- ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/genreflex -- ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/rlibmap -- DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT applications) -+set(rootcling_exe_names rootcling genreflex rootcint) -+ -+foreach(exe_name IN LISTS rootcling_exe_names) -+ ROOT_EXECUTABLE(${exe_name} src/rootcling.cxx LIBRARIES RIO Cling Core Rint) -+ -+ # rootcling includes the ROOT complex header which would build the complex -+ # dictionary with modules. To make sure that rootcling_stage1 builds this -+ # dict before we use it, we add a dependency here. -+ add_dependencies(${exe_name} complexDict) -+ -+ target_include_directories(${exe_name} PRIVATE -+ ${CMAKE_SOURCE_DIR}/core/metacling/res -+ ${CMAKE_SOURCE_DIR}/core/dictgen/res -+ ${CMAKE_SOURCE_DIR}/io/rootpcm/res) -+ set_property(TARGET ${exe_name} PROPERTY ENABLE_EXPORTS 1) -+ if(WIN32) -+ set_target_properties(${exe_name} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS 1) -+ set_property(TARGET ${exe_name} APPEND_STRING PROPERTY LINK_FLAGS " -STACK:4000000") - endif() --endif() -+endforeach() -+ -+# To inherit the dependencies from rootcling -+add_dependencies(genreflex rootcling) -+add_dependencies(rootcint rootcint) --- -2.50.1 - diff --git a/pkgs/by-name/ro/root/clang-root.nix b/pkgs/by-name/ro/root/clang-root.nix index c31cd055dde5..7edef83fcf50 100644 --- a/pkgs/by-name/ro/root/clang-root.nix +++ b/pkgs/by-name/ro/root/clang-root.nix @@ -5,19 +5,19 @@ apple-sdk, cmake, git, - llvm_18, + llvm_20, pkg-config, python3, }: stdenv.mkDerivation rec { pname = "clang-root"; - version = "18-20250506-01"; + version = "20-20250925-01"; src = fetchgit { url = "https://github.com/root-project/llvm-project"; rev = "refs/tags/ROOT-llvm${version}"; - hash = "sha256-8tviNWNmvIJhxF4j9Z7zMnjltTX0Ka2fN9HIgLfNAco="; + hash = "sha256-qEoQVv/Aw9gqKSNa8ZJGqPzwXvH1yXiSOkvrUWeXI+g="; }; nativeBuildInputs = [ @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { git ]; buildInputs = [ - llvm_18 + llvm_20 python3 ]; @@ -46,7 +46,7 @@ stdenv.mkDerivation rec { "-DC_INCLUDE_DIRS=${lib.getDev stdenv.cc.libc}/include" "-DLLVM_INCLUDE_TESTS=OFF" "-DLLVM_LINK_LLVM_DYLIB=OFF" - "-DLLVM_MAIN_SRC_DIR=${llvm_18.src}" + "-DLLVM_MAIN_SRC_DIR=${llvm_20.src}" ] ++ ( if stdenv.hostPlatform.isDarwin then diff --git a/pkgs/by-name/ro/root/package.nix b/pkgs/by-name/ro/root/package.nix index e322f88dfee3..a4d71596b5b9 100644 --- a/pkgs/by-name/ro/root/package.nix +++ b/pkgs/by-name/ro/root/package.nix @@ -3,7 +3,6 @@ lib, callPackage, fetchFromGitHub, - fetchpatch, fetchurl, makeWrapper, writeText, @@ -23,7 +22,7 @@ libGL, libxcrypt, libxml2, - llvm_18, + llvm_20, lsof, lz4, xorg, @@ -52,7 +51,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "root"; - version = "6.36.04"; + version = "6.38.00"; passthru = { tests = import ./tests { inherit callPackage; }; @@ -60,7 +59,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "https://root.cern.ch/download/root_v${finalAttrs.version}.source.tar.gz"; - hash = "sha256-zGNn2PVjxtSco0wJ0LU8sPQaUo22+GrxEf12dEzaRZY="; + hash = "sha256-pEKUIsRg+DLN5RSlgN0gKx08luiRnCQ2PD1C+M9azNw="; }; clad_src = fetchFromGitHub { @@ -68,8 +67,8 @@ stdenv.mkDerivation (finalAttrs: { repo = "clad"; # Make sure that this is the same tag as in the ROOT build files! # https://github.com/root-project/root/blob/master/interpreter/cling/tools/plugins/clad/CMakeLists.txt#L76 - rev = "refs/tags/v1.9"; - hash = "sha256-TKCRAfwdTp/uDH7rk9EE4z2hwqBybklHhhYH6hQFYpg="; + rev = "refs/tags/v2.0"; + hash = "sha256-Oj7gGSvnGuYdggonPWjrwPn/06cD+ig3eefRh7xaiPs="; }; # ROOT requires a patched version of clang @@ -98,7 +97,7 @@ stdenv.mkDerivation (finalAttrs: { libtiff libxcrypt libxml2 - llvm_18 + llvm_20 lz4 openssl patchRcPathCsh @@ -123,22 +122,6 @@ stdenv.mkDerivation (finalAttrs: { xorg.libXext ]; - patches = [ - # Backport that can be removed once ROOT is updated to 6.38.00 - (fetchpatch { - url = "https://github.com/root-project/root/commit/8f21acb893977bc651a4c4fe5c4fa020a48d31de.patch"; - hash = "sha256-xo3BbaJRyW4Wy2eVuX1bY3FFH7Jm3vN2ZojMsVNIK2I="; - }) - # Revert because it introduces usage of the xcrun executable from xcode: - (fetchpatch { - url = "https://github.com/root-project/root/commit/6bd0dbad38bb524491c5109bc408942246db8b50.patch"; - hash = "sha256-D7LZWJnGF9DtKcM8EF3KILU81cqTcZolW+HMe3fmXTw="; - revert = true; - }) - # Will also be integrated to ROOT 6.38.00 - ./Build-rootcint-and-genreflex-as-separate-targets.patch - ]; - preConfigure = '' for path in builtins/*; do if [[ "$path" != "builtins/openui5" ]] && [[ "$path" != "builtins/rendercore" ]]; then @@ -172,7 +155,6 @@ stdenv.mkDerivation (finalAttrs: { "-Dfitsio=OFF" "-Dmathmore=ON" "-Dsqlite=OFF" - "-Dtmva-pymva=OFF" "-Dvdt=OFF" ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ @@ -233,12 +215,6 @@ stdenv.mkDerivation (finalAttrs: { }" ''; - # workaround for - # https://github.com/root-project/root/issues/14778 - env.NIX_LDFLAGS = lib.optionalString ( - !stdenv.hostPlatform.isDarwin - ) "--version-script,${writeText "version.map" "ROOT { global: *; };"}"; - # To use the debug information on the fly (without installation) # add the outPath of root.debug into NIX_DEBUG_INFO_DIRS (in PATH-like format) # and make sure that gdb from Nixpkgs can be found in PATH.