From 50a020aa5637929897d12409b284e30d3e1f2244 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Thu, 2 May 2024 10:44:47 +0200 Subject: [PATCH 1/5] root: add back explicit disabling of compiler warnings for clang This reverts commit 6665f67b4eef1f0e6ed467c80e86ed10c3553594. I misunderstood something when preparing that commit: I thought it was about compailer warnings when compiling ROOT with clang, but actually it was to avoid warning *when compiling clang*. This is still necessary. --- pkgs/applications/science/misc/root/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/applications/science/misc/root/default.nix b/pkgs/applications/science/misc/root/default.nix index 59bb9415b37d..6d6108a4360b 100644 --- a/pkgs/applications/science/misc/root/default.nix +++ b/pkgs/applications/science/misc/root/default.nix @@ -195,6 +195,9 @@ stdenv.mkDerivation rec { "-Druntime_cxxmodules=OFF" ]; + # suppress warnings from compilation of the vendored clang to avoid running into log limits on the Hydra + NIX_CFLAGS_COMPILE = lib.optionals stdenv.cc.isGNU [ "-Wno-shadow" "-Wno-maybe-uninitialized" ]; + postInstall = '' for prog in rootbrowse rootcp rooteventselector rootls rootmkdir rootmv rootprint rootrm rootslimtree; do wrapProgram "$out/bin/$prog" \ From 35bbca41da0ee1a12bb1aea631676f5d0e82bc7a Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Thu, 2 May 2024 12:44:06 +0200 Subject: [PATCH 2/5] root: remove redundant cmake flags This commit suggests to remove CMake flags that are the same as the default in ROOT. Many of these flags were useful in the past, but in the last years the default built configuration of ROOT was improved and many toggles are now unnecessary. Removing the redundant flags makes it clearer what the differences of the package to the default configuration are, and it's also more future-proof in case flags get deprecated or removed. --- .../science/misc/root/default.nix | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/pkgs/applications/science/misc/root/default.nix b/pkgs/applications/science/misc/root/default.nix index 6d6108a4360b..ba8911f5fc0f 100644 --- a/pkgs/applications/science/misc/root/default.nix +++ b/pkgs/applications/science/misc/root/default.nix @@ -151,40 +151,19 @@ stdenv.mkDerivation rec { ''; cmakeFlags = [ - "-Drpath=ON" "-DCMAKE_INSTALL_BINDIR=bin" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_INCLUDEDIR=include" "-Dbuiltin_llvm=OFF" - "-Dbuiltin_freetype=OFF" - "-Dbuiltin_gtest=OFF" - "-Dbuiltin_nlohmannjson=OFF" - "-Dbuiltin_openui5=ON" "-Dclad=OFF" - "-Ddavix=ON" - "-Ddcache=OFF" "-Dfail-on-missing=ON" - "-Dfftw3=OFF" "-Dfitsio=OFF" - "-Dfortran=OFF" "-Dgnuinstall=ON" - "-Dimt=ON" - "-Dgviz=OFF" - "-Dhttp=ON" "-Dmysql=OFF" - "-Dodbc=OFF" - "-Dopengl=ON" "-Dpgsql=OFF" - "-Dpythia8=OFF" - "-Droot7=ON" "-Dsqlite=OFF" - "-Dssl=ON" - "-Dtmva=ON" "-Dtmva-pymva=OFF" "-Dvdt=OFF" - "-Dwebgui=ON" - "-Dxml=ON" - "-Dxrootd=ON" ] ++ lib.optional (stdenv.cc.libc != null) "-DC_INCLUDE_DIRS=${lib.getDev stdenv.cc.libc}/include" ++ lib.optionals stdenv.isDarwin [ From e53cfeee3e7d56bed6e01ec4f508f3abe40ffd7a Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Thu, 2 May 2024 12:30:22 +0200 Subject: [PATCH 3/5] root: enable `clad` for automatic differentiation in ROOT Clad is a clang plugin that can be used in Cling to create gradients of C++ functions. It is included in ROOT via `ExternalProject_Add`: https://github.com/root-project/root/blob/master/interpreter/cling/tools/plugins/clad/CMakeLists.txt Clad is used for example in RooFit to create analytical gradients of likelihoods. --- .../science/misc/root/default.nix | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/science/misc/root/default.nix b/pkgs/applications/science/misc/root/default.nix index ba8911f5fc0f..fe4169ab592e 100644 --- a/pkgs/applications/science/misc/root/default.nix +++ b/pkgs/applications/science/misc/root/default.nix @@ -1,6 +1,7 @@ { stdenv , lib , callPackage +, fetchgit , fetchurl , fetchpatch , makeWrapper @@ -68,6 +69,12 @@ stdenv.mkDerivation rec { hash = "sha256-MA237RtnjtL7ljXKZ1khoZRcfCED2oQAM7STCR9VcAw="; }; + clad_src = fetchgit { + url = "https://github.com/vgvassilev/clad"; + rev = "refs/tags/v1.4"; # Make sure that this is the same tag as in the ROOT build files! + hash = "sha256-OI9PaS7kQ/ewD5Soe3gG5FZdlR6qG6Y3mfHwi5dj1sI="; + }; + nativeBuildInputs = [ makeWrapper cmake pkg-config git ]; propagatedBuildInputs = [ nlohmann_json @@ -131,6 +138,23 @@ stdenv.mkDerivation rec { substituteInPlace cmake/modules/SearchInstalledSoftware.cmake \ --replace 'set(lcgpackages ' '#set(lcgpackages ' + # We have to bypass the connection check, because it would disable clad. + # This should probably be fixed upstream with a flag to disable the + # connectivity check! + substituteInPlace CMakeLists.txt \ + --replace 'if(NO_CONNECTION)' 'if(FALSE)' + substituteInPlace interpreter/cling/tools/plugins/CMakeLists.txt \ + --replace 'if(NOT DEFINED NO_CONNECTION OR NOT NO_CONNECTION)' 'if(TRUE)' + # Make sure that clad is not downloaded when building + substituteInPlace interpreter/cling/tools/plugins/clad/CMakeLists.txt \ + --replace 'UPDATE_COMMAND ""' 'SOURCE_DIR ${clad_src} DOWNLOAD_COMMAND "" UPDATE_COMMAND ""' + # Make sure that clad is finding the right llvm version + substituteInPlace interpreter/cling/tools/plugins/clad/CMakeLists.txt \ + --replace '-DLLVM_DIR=''${LLVM_BINARY_DIR}' '-DLLVM_DIR=${llvm_13.dev}/lib/cmake/llvm' + # Fix that will also be upstream in ROOT 6.32. TODO: remove it when updating to 6.32 + substituteInPlace interpreter/cling/tools/plugins/clad/CMakeLists.txt \ + --replace 'set(_CLAD_LIBRARY_PATH ''${clad_install_dir}/plugins/lib)' 'set(_CLAD_LIBRARY_PATH ''${CMAKE_CURRENT_BINARY_DIR}/clad-prefix/src/clad-build/lib''${LLVM_LIBDIR_SUFFIX})' + substituteInPlace interpreter/llvm-project/clang/tools/driver/CMakeLists.txt \ --replace 'add_clang_symlink(''${link} clang)' "" @@ -155,7 +179,6 @@ stdenv.mkDerivation rec { "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_INCLUDEDIR=include" "-Dbuiltin_llvm=OFF" - "-Dclad=OFF" "-Dfail-on-missing=ON" "-Dfitsio=OFF" "-Dgnuinstall=ON" From cdefff65b8474a454f5fefeb92ea21e55e915977 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Sun, 5 May 2024 23:31:57 +0200 Subject: [PATCH 4/5] root: fix typos --- pkgs/applications/science/misc/root/setup-hook.sh | 4 ++-- pkgs/applications/science/misc/root/sw_vers.patch | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/science/misc/root/setup-hook.sh b/pkgs/applications/science/misc/root/setup-hook.sh index 34c9bfdcebbd..7affd21012eb 100644 --- a/pkgs/applications/science/misc/root/setup-hook.sh +++ b/pkgs/applications/science/misc/root/setup-hook.sh @@ -12,8 +12,8 @@ thisroot () { postHooks+=(thisroot) -addRootInludePath() { +addRootIncludePath() { addToSearchPath ROOT_INCLUDE_PATH $1/include } -addEnvHooks "$targetOffset" addRootInludePath +addEnvHooks "$targetOffset" addRootIncludePath diff --git a/pkgs/applications/science/misc/root/sw_vers.patch b/pkgs/applications/science/misc/root/sw_vers.patch index 54ad1091392e..2a0fcd757719 100644 --- a/pkgs/applications/science/misc/root/sw_vers.patch +++ b/pkgs/applications/science/misc/root/sw_vers.patch @@ -48,7 +48,7 @@ diff a/cmake/modules/SetUpMacOS.cmake b/cmake/modules/SetUpMacOS.cmake #---Set Linker flags---------------------------------------------------------------------- - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mmacosx-version-min=${MACOSX_VERSION}") else (CMAKE_SYSTEM_NAME MATCHES Darwin) - MESSAGE(FATAL_ERROR "There is no setup for this this Apple system up to now. Don't know waht to do. Stop cmake at this point.") + MESSAGE(FATAL_ERROR "There is no setup for this this Apple system up to now. Don't know what to do. Stop cmake at this point.") endif (CMAKE_SYSTEM_NAME MATCHES Darwin) diff a/config/root-config.in b/config/root-config.in --- a/config/root-config.in From db942c10c8e811ef9b5b79ee7cf9004fa6a56ad9 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Sun, 5 May 2024 23:32:17 +0200 Subject: [PATCH 5/5] root: update homepage We try to promote the URL that is just `root.cern` nowadays. --- pkgs/applications/science/misc/root/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/science/misc/root/default.nix b/pkgs/applications/science/misc/root/default.nix index fe4169ab592e..afc048cc41ef 100644 --- a/pkgs/applications/science/misc/root/default.nix +++ b/pkgs/applications/science/misc/root/default.nix @@ -256,7 +256,7 @@ stdenv.mkDerivation rec { setupHook = ./setup-hook.sh; meta = with lib; { - homepage = "https://root.cern.ch/"; + homepage = "https://root.cern/"; description = "A data analysis framework"; platforms = platforms.unix; maintainers = [ maintainers.guitargeek maintainers.veprbl ];