diff --git a/.gitignore b/.gitignore index f6a3a77..9ff0650 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /*.tar.gz +/*.tar.xz +/usa.root diff --git a/JupyROOT-on-EPEL b/JupyROOT-on-EPEL new file mode 100644 index 0000000..cf2b5e0 --- /dev/null +++ b/JupyROOT-on-EPEL @@ -0,0 +1,37 @@ +While all is fine in Fedora and all packages needed to run the JupyROOT +notebook are available there, this is not true for EPEL. + +Hopefully the ipython/jupyter stack will at some point be available in +EPEL too, but at this point in time it is not. + +However, it is possible to work around this issue using a python +virtual environment. + +First, install the required root packages (as root): + +$ yum install root root-notebook python3-jupyroot + +Then return to your non-root user and create a python3 virtual +environment: + +$ python3 -m venv ~/jupyter-env + +Activate the environment: + +$ . ~/jupyter-env/bin/activate + +Then install the missing packages in the virtual environment using pip: + +$ pip install notebook metakernel + +Then start the root notebook: + +$ PYTHONPATH=~/jupyter-env/lib/python3.6/site-packages root --notebook + +And that is it. + +If you want to start it again and you haven't removed the virtual +environment, only two of the steps are necessary: + +$ . ~/jupyter-env/bin/activate +$ PYTHONPATH=~/jupyter-env/lib/python3.6/site-packages root --notebook diff --git a/application-x-root.png b/application-x-root.png new file mode 100644 index 0000000..64a62f9 Binary files /dev/null and b/application-x-root.png differ diff --git a/info.png b/info.png deleted file mode 100644 index c0bb348..0000000 Binary files a/info.png and /dev/null differ diff --git a/root-32bit-tests.patch b/root-32bit-tests.patch new file mode 100644 index 0000000..cf7956d --- /dev/null +++ b/root-32bit-tests.patch @@ -0,0 +1,53 @@ +From ac806becc2aa69898d1c5ca3b195d8fa3003238a Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 13 Mar 2020 16:21:55 +0100 +Subject: [PATCH] Run tests on 32 bit + +--- + test/stressGeometry.cxx | 8 -------- + tree/tree/test/CMakeLists.txt | 10 +++------- + 2 files changed, 3 insertions(+), 15 deletions(-) + +diff --git a/test/stressGeometry.cxx b/test/stressGeometry.cxx +index 253bc8574e9..48da18b06c3 100644 +--- a/test/stressGeometry.cxx ++++ b/test/stressGeometry.cxx +@@ -257,14 +257,6 @@ void stressGeometry(const char *exp="*", Bool_t generate_ref=kFALSE, Bool_t vecg + if (opt.Contains(exps[i])) iexp[i] = 1; + else iexp[i] = 0; + } +-#if defined(linux) && !defined(__x86_64__) +- // 32bit linux: we have an error with ATLAS, see https://sft.its.cern.ch/jira/browse/ROOT-9893 +- // Disable unless explicitly enabled. +- if (all) { +- printf("DISABLED ATLAS TEST due to known failure on Linux 32 bit!\n"); +- iexp[32] = 0; +- } +-#endif + TFile::SetCacheFileDir("."); + TString fname; + for (i=0; i +Date: Fri, 26 Jun 2026 06:51:28 +0200 +Subject: [PATCH] Adjust stressGraphics reference + +--- + test/stressGraphics_zlibng.ref | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/test/stressGraphics_zlibng.ref b/test/stressGraphics_zlibng.ref +index b7ca1568c66..2fda1276315 100644 +--- a/test/stressGraphics_zlibng.ref ++++ b/test/stressGraphics_zlibng.ref +@@ -7,7 +7,7 @@ + patterns 23688 1500 19305 200 143676 123000 47075 11000 23076 1500 + crown 2785 50 14546 100 19178 9000 7605 4000 2829 50 + piechart 67345 200 74560 3000 32180 15000 29168 15000 66962 200 +- ttext1 1025 150 12866 150 32266 9900 29901 5000 1072 200 ++ ttext1 1025 150 12866 200 32266 9900 29901 5000 1072 200 + ttext2 432 50 12743 50 9517 150 5306 700 473 50 + tlatex1 5140 50 14050 50 16377 1300 12462 500 5170 70 + tlatex2 5488 80 13507 100 18439 700 12061 500 5502 80 +@@ -18,9 +18,9 @@ + itbf 5600 400 13302 300 16868 400 15083 800 5638 400 + tmathtext 14193187 4000000 12984 100 27112 9500 25080 3000 14193352 4000000 + transparency 2386 50 14700 100 16514 7000 24701 12000 2554 100 +- transpad 16185 5000 17131 350 22801 9500 14232 1000 11271 5000 ++ transpad 16185 5000 17131 350 22801 9500 14232 1500 11271 5000 + statfitparam 27683 400 23370 300 44898 11000 30209 5000 37580 400 +- tgaxis1 20424 400 21388 300 27719 11000 16044 600 20704 400 ++ tgaxis1 20424 400 21388 300 27719 11000 16044 700 20704 400 + tgaxis2 15874 100 19140 300 27682 10300 15197 550 15905 100 + tgaxis3 22678 300 42796 200 44177 17000 20788 11000 22866 300 + tgaxis4 3817 600 14405 250 19907 6300 10674 900 4523 600 +@@ -71,7 +71,7 @@ + annotation3d 547845 3000 193427 3000 32383 12000 58073 20000 547493 3000 + tgraph2d3 16675 3000 29541 500 40536 11300 33519 3900 16452 4000 + ntuple1 256544 5000 382044 7000 54446 30400 45002 6500 261593 7000 +- quarks 4759 180 14134 100 32913 600 25421 1000 4790 180 ++ quarks 4759 180 14134 200 32913 600 25421 1000 4790 180 + timage 1442666 150000 12900 100 26100 100 374206 15000 1102279 250000 + zoomtf1 6130 500 16528 300 49750 14000 29288 4000 5429 500 + zoomfit 6200 700 15706 200 31219 11000 18280 3200 6113 800 +-- +2.54.0 + diff --git a/root-Revert-cppyy-Mark-addressof-test-as-xfail-on-modules.patch b/root-Revert-cppyy-Mark-addressof-test-as-xfail-on-modules.patch new file mode 100644 index 0000000..52273a0 --- /dev/null +++ b/root-Revert-cppyy-Mark-addressof-test-as-xfail-on-modules.patch @@ -0,0 +1,47 @@ +From 9fc24a9cc827028d78c983eea5d18ac6a705e806 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 26 Jun 2026 17:20:27 +0200 +Subject: [PATCH] Revert "[cppyy] Mark `addressof` test as `xfail` on + modules=OFF build with C++17" + +This reverts commit 5eb0e6466ed1b2c29853ba4bfa928dd1da3e4bcd. +--- + .../pyroot/cppyy/cppyy/test/test_datatypes.py | 15 +-------------- + 1 file changed, 1 insertion(+), 14 deletions(-) + +diff --git a/bindings/pyroot/cppyy/cppyy/test/test_datatypes.py b/bindings/pyroot/cppyy/cppyy/test/test_datatypes.py +index e66e36529ec..71e26dd1d9b 100644 +--- a/bindings/pyroot/cppyy/cppyy/test/test_datatypes.py ++++ b/bindings/pyroot/cppyy/cppyy/test/test_datatypes.py +@@ -5,18 +5,6 @@ from support import setup_make, pylong, pyunicode, IS_MAC, IS_MAC_ARM, IS_WINDOW + test_dct = "datatypes_cxx" + + +-def has_cpp_20(): +- import cppyy +- +- return cppyy.gbl.gInterpreter.ProcessLine("__cplusplus;") >= 202002 +- +- +-def is_modules_off(): +- import cppyy +- +- return "runtime_cxxmodules" not in cppyy.gbl.gROOT.GetConfigFeatures() +- +- + class TestDATATYPES: + def setup_class(cls): + import cppyy +@@ -2351,8 +2339,7 @@ class TestDATATYPES: + assert str(bt(1)) == 'True' + assert str(bt(0)) == 'False' + +- @mark.xfail(strict=True, run=not IS_WINDOWS, condition=IS_MAC_ARM or (not has_cpp_20() and is_modules_off()), reason="Crashes on mac-beta ARM64 and fails on Windows \ +- assertion error for runtime_cxxmodules=OFF build that is explained in GitHub issue #21005") ++ @mark.xfail(strict=True, run=not IS_WINDOWS, condition=IS_MAC_ARM, reason="Crashes on mac-beta ARM64 and fails on Windows") + def test49_addressof_method(self): + """Use of addressof for (const) methods""" + +-- +2.54.0 + diff --git a/root-Revert-test-Fetch-the-geometries-from-EOS-and-not-fr.patch b/root-Revert-test-Fetch-the-geometries-from-EOS-and-not-fr.patch new file mode 100644 index 0000000..a45ae41 --- /dev/null +++ b/root-Revert-test-Fetch-the-geometries-from-EOS-and-not-fr.patch @@ -0,0 +1,60 @@ +From 4da50ef374cd231163dff77493f9367cd62583d9 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 30 Mar 2025 21:23:14 +0200 +Subject: [PATCH] Revert "[test] Fetch the geometries from EOS and not from the + website" + +This reverts commit a8a879ce252e45405452db38d9178c7883582a7d. +--- + test/stressGeometry.cxx | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/test/stressGeometry.cxx b/test/stressGeometry.cxx +index 7fb6bf97e7..f8d78f4f54 100644 +--- a/test/stressGeometry.cxx ++++ b/test/stressGeometry.cxx +@@ -1,6 +1,6 @@ + // Program to check a TGeo geometry + // The first time you run this program, the geometry files will be taken +-// from /eos/root-eos/testfiles/ (previously from http://root.cern/files) ++// from http://root.cern/files + // + // How the program works + // If the file _ref.root does not exist, it is generated. The file +@@ -274,13 +274,13 @@ void stressGeometry(const char *exp="*", Bool_t generate_ref=kFALSE, Bool_t vecg + delete gGeoManager; + gGeoManager = 0; + } +- TGeoManager::Import(Form("root://eospublic.cern.ch//eos/root-eos/testfiles/%s",fname.Data())); ++ TGeoManager::Import(Form("http://root.cern/files/%s",fname.Data())); + if (!gGeoManager) return; + if (vecgeom) TVirtualGeoConverter::Instance()->ConvertGeometry(); + + fname = TString::Format("files/%s_ref_%d.root", exps[i],versions[i]); + +- if (gen_ref || !TFile::Open(Form("root://eospublic.cern.ch//eos/root-eos/testfiles//%s_ref_%d.root",exps[i],versions[i]),"CACHEREAD")) { ++ if (gen_ref || !TFile::Open(Form("http://root.cern/files/%s_ref_%d.root",exps[i],versions[i]),"CACHEREAD")) { + if (!gen_ref) fprintf(stderr,"File: %s does not exist, generating it\n", fname.Data()); + else fprintf(stderr,"Generating reference file %s\n", fname.Data()); + WriteRef(i); +@@ -320,7 +320,7 @@ void ReadRef(Int_t kexp) { + TFile *f = 0; + //use ref_[version[i]] files + if (!gen_ref) +- fname = TString::Format("root://eospublic.cern.ch//eos/root-eos/testfiles//%s_ref_%d.root", exps[kexp],versions[kexp]); ++ fname = TString::Format("http://root.cern/files/%s_ref_%d.root", exps[kexp],versions[kexp]); + else + fname.Format("files/%s_ref_%d.root", exps[kexp],versions[kexp]); + +@@ -546,7 +546,7 @@ void InspectDiff(const char* exp="alice",Long64_t ientry=-1) { + Float_t rad = 0.; + TString fname(TString::Format("%s.root",exp)); + if (gSystem->AccessPathName(fname)) { +- TGeoManager::Import(Form("root://eospublic.cern.ch//eos/root-eos/testfiles//%s",fname.Data())); ++ TGeoManager::Import(Form("http://root.cern/files/%s",fname.Data())); + } else { + TGeoManager::Import(fname); + } +-- +2.49.0 + diff --git a/root-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch b/root-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch new file mode 100644 index 0000000..0f91a8c --- /dev/null +++ b/root-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch @@ -0,0 +1,48 @@ +From a5b9525ea1575706a523296bb47ac15f33935838 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Mon, 2 Jun 2025 21:22:39 +0200 +Subject: [PATCH] Save memory. Do not link to LLVM libraries in parallel + +--- + core/clingutils/test/CMakeLists.txt | 3 +++ + interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt | 6 ++++++ + 2 files changed, 9 insertions(+) + +diff --git a/core/clingutils/test/CMakeLists.txt b/core/clingutils/test/CMakeLists.txt +index a6c7aedac99..90ac0139c24 100644 +--- a/core/clingutils/test/CMakeLists.txt ++++ b/core/clingutils/test/CMakeLists.txt +@@ -36,3 +36,6 @@ if(NOT builtin_clang) + endif() + + ROOT_ADD_UNITTEST_DIR(Core ${CLING_LIBRARIES} $) ++ ++# Save memory. Do not link to LLVM libraries in parallel ++add_dependencies(coreclingutilstestUnit CppInterOpTests) +diff --git a/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt b/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt +index 1d6ccd3e865..dc98cdfc29a 100644 +--- a/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt ++++ b/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt +@@ -67,6 +67,9 @@ add_cppinterop_unittest(CppInterOpTests + ${EXTRA_TEST_SOURCE_FILES} + ) + ++# Save memory. Do not link to LLVM libraries in parallel ++add_dependencies(CppInterOpTests DynamicLibraryManagerTests) ++ + if(NOT WIN32) + set_source_files_properties(VariableReflectionTest.cpp PROPERTIES COMPILE_FLAGS + "-Wno-pedantic" +@@ -113,6 +116,9 @@ endif() + + add_dependencies(DynamicLibraryManagerTests TestSharedLib) + ++# Save memory. Do not link to LLVM libraries in parallel ++add_dependencies(DynamicLibraryManagerTests Cling) ++ + #export_executable_symbols_for_plugins(TestSharedLib) + add_subdirectory(TestSharedLib) + +-- +2.54.0 + diff --git a/root-banner.png b/root-banner.png deleted file mode 100644 index ee1fef0..0000000 Binary files a/root-banner.png and /dev/null differ diff --git a/root-core-The-old-TUUID-constructor-can-create-either-ver.patch b/root-core-The-old-TUUID-constructor-can-create-either-ver.patch new file mode 100644 index 0000000..26cf519 --- /dev/null +++ b/root-core-The-old-TUUID-constructor-can-create-either-ver.patch @@ -0,0 +1,27 @@ +From 2920a892a5db1c24bb8af34c63aacc1438a18247 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 28 Jun 2026 16:54:54 +0200 +Subject: [PATCH 1/3] [core] The old TUUID constructor can create either + version 1 or 3 + +Do not fail test if version 3 is returned. +--- + core/base/test/UUIDTest.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/core/base/test/UUIDTest.cxx b/core/base/test/UUIDTest.cxx +index dea3700052b..c834223f6d0 100644 +--- a/core/base/test/UUIDTest.cxx ++++ b/core/base/test/UUIDTest.cxx +@@ -14,7 +14,7 @@ TEST(TUUID, UUIDv4) + EXPECT_EQ(10000u, uuids.size()); + + TUUID u; +- EXPECT_EQ('1', u.AsString()[14]); ++ EXPECT_TRUE('1' == u.AsString()[14] || '3' == u.AsString()[14]); + u = TUUID::UUIDv4(); + std::string str = u.AsString(); + EXPECT_EQ('4', str[14]); +-- +2.54.0 + diff --git a/root-dont-install-minicern.patch b/root-dont-install-minicern.patch new file mode 100644 index 0000000..aa33081 --- /dev/null +++ b/root-dont-install-minicern.patch @@ -0,0 +1,13 @@ +diff --git a/misc/minicern/CMakeLists.txt b/misc/minicern/CMakeLists.txt +index bae895f701..8d721f97ab 100644 +--- a/misc/minicern/CMakeLists.txt ++++ b/misc/minicern/CMakeLists.txt +@@ -2,7 +2,7 @@ + # CMakeLists.txt file for building ROOT misc/minicern package + ############################################################################ + +-ROOT_LINKER_LIBRARY(minicern *.c *.f TYPE STATIC) ++ROOT_LINKER_LIBRARY(minicern *.c *.f TYPE STATIC NOINSTALL) + set_property(TARGET minicern PROPERTY POSITION_INDEPENDENT_CODE ON) + target_link_libraries(minicern ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}) + diff --git a/root-fontconfig.patch b/root-fontconfig.patch index ac4e5a4..d732893 100644 --- a/root-fontconfig.patch +++ b/root-fontconfig.patch @@ -1,226 +1,576 @@ -diff -ur root-5.30.01.orig/core/base/src/TApplication.cxx root-5.30.01/core/base/src/TApplication.cxx ---- root-5.30.01.orig/core/base/src/TApplication.cxx 2011-08-18 16:45:43.000000000 +0200 -+++ root-5.30.01/core/base/src/TApplication.cxx 2011-08-18 19:28:45.079497320 +0200 -@@ -252,20 +252,9 @@ - // Try to load TrueType font renderer. Only try to load if not in batch - // mode and Root.UseTTFonts is true and Root.TTFontPath exists. Abort silently - // if libttf or libGX11TTF are not found in $ROOTSYS/lib or $ROOTSYS/ttf/lib. -- const char *ttpath = gEnv->GetValue("Root.TTFontPath", --#ifdef TTFFONTDIR -- TTFFONTDIR); --#else -- "$(ROOTSYS)/fonts"); --#endif -- char *ttfont = gSystem->Which(ttpath, "arialbd.ttf", kReadPermission); -- // Check for use of DFSG - fonts -- if (!ttfont) -- ttfont = gSystem->Which(ttpath, "FreeSansBold.ttf", kReadPermission); -- - #if !defined(R__WIN32) - if (!gROOT->IsBatch() && !strcmp(gVirtualX->GetName(), "X11") && -- ttfont && gEnv->GetValue("Root.UseTTFonts", 1)) { -+ gEnv->GetValue("Root.UseTTFonts", 1)) { - if (gClassTable->GetDict("TGX11TTF")) { - // in principle we should not have linked anything against libGX11TTF - // but with ACLiC this can happen, initialize TGX11TTF by hand -@@ -279,7 +268,6 @@ +From 58bd7d6e0f905efcf436558fdc11796b7145c66d Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 11 May 2024 20:09:47 +0200 +Subject: [PATCH] Use system fonts via fontconfig + +--- + core/base/src/TApplication.cxx | 11 +- + graf2d/asimage/CMakeLists.txt | 1 + + graf2d/asimage/src/TASImage.cxx | 91 +++++++- + graf2d/graf/CMakeLists.txt | 1 + + graf2d/graf/inc/TTF.h | 3 +- + graf2d/graf/src/TTF.cxx | 295 +++++++++++++++++--------- + graf2d/postscript/CMakeLists.txt | 1 + + graf2d/postscript/src/TPostScript.cxx | 106 ++++----- + graf3d/gl/CMakeLists.txt | 1 + + graf3d/gl/src/TGLFontManager.cxx | 124 ++++++++++- + graf3d/gl/src/TGLText.cxx | 56 +++-- + 11 files changed, 496 insertions(+), 194 deletions(-) + +diff --git a/core/base/src/TApplication.cxx b/core/base/src/TApplication.cxx +index 0c0c9515930..2b9bbb2b2af 100644 +--- a/core/base/src/TApplication.cxx ++++ b/core/base/src/TApplication.cxx +@@ -253,18 +253,12 @@ void TApplication::InitializeGraphics(Bool_t only_web) + LoadGraphicsLibs(); + + // Try to load TrueType font renderer. Only try to load if not in batch +- // mode and Root.UseTTFonts is true and Root.TTFontPath exists. Abort silently ++ // mode and Root.UseTTFonts is true. Abort silently + // if libttf or libGX11TTF are not found in $ROOTSYS/lib or $ROOTSYS/ttf/lib. +- const char *ttpath = gEnv->GetValue("Root.TTFontPath", +- TROOT::GetTTFFontDir()); +- char *ttfont = gSystem->Which(ttpath, "arialbd.ttf", kReadPermission); +- // Check for use of DFSG - fonts +- if (!ttfont) +- ttfont = gSystem->Which(ttpath, "FreeSansBold.ttf", kReadPermission); + + #if !defined(R__WIN32) + if (!gROOT->IsBatch() && !strcmp(gVirtualX->GetName(), "X11") && +- ttfont && gEnv->GetValue("Root.UseTTFonts", 1)) { ++ gEnv->GetValue("Root.UseTTFonts", 1)) { + if (gClassTable->GetDict("TGX11TTF")) { + // in principle we should not have linked anything against libGX11TTF + // but with ACLiC this can happen, initialize TGX11TTF by hand +@@ -278,7 +272,6 @@ void TApplication::InitializeGraphics(Bool_t only_web) + } } + #endif +- delete [] ttfont; } - #endif -- delete [] ttfont; - // Create WM dependent application environment - if (fAppImp) -diff -ur root-5.30.01.orig/graf2d/graf/Module.mk root-5.30.01/graf2d/graf/Module.mk ---- root-5.30.01.orig/graf2d/graf/Module.mk 2011-08-18 16:46:08.000000000 +0200 -+++ root-5.30.01/graf2d/graf/Module.mk 2011-08-18 19:28:45.086497316 +0200 -@@ -45,7 +45,7 @@ - @$(MAKELIB) $(PLATFORM) $(LD) "$(LDFLAGS)" \ - "$(SOFLAGS)" libGraf.$(SOEXT) $@ \ - "$(GRAFO) $(GRAFDO)" \ -- "$(FREETYPELDFLAGS) $(FREETYPELIB) $(GRAFLIBEXTRA)" -+ "$(FREETYPELDFLAGS) $(FREETYPELIB) $(GRAFLIBEXTRA) -lfontconfig" + if (!only_web || !fAppImp) { +diff --git a/graf2d/asimage/CMakeLists.txt b/graf2d/asimage/CMakeLists.txt +index 3b5188c126e..a82efc829fc 100644 +--- a/graf2d/asimage/CMakeLists.txt ++++ b/graf2d/asimage/CMakeLists.txt +@@ -30,6 +30,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ASImage + ${FREETYPE_LIBRARIES} + ${X11_LIBRARIES} + ZLIB::ZLIB ++ fontconfig + DEPENDENCIES + Core + Graf +diff --git a/graf2d/asimage/src/TASImage.cxx b/graf2d/asimage/src/TASImage.cxx +index 3784e05a235..0ad74e1ee6f 100644 +--- a/graf2d/asimage/src/TASImage.cxx ++++ b/graf2d/asimage/src/TASImage.cxx +@@ -116,6 +116,8 @@ extern "C" { + # include + } - $(GRAFDS): $(GRAFH) $(GRAFL) $(ROOTCINTTMPDEP) - $(MAKEDIR) -diff -ur root-5.30.01.orig/graf2d/graf/src/TTF.cxx root-5.30.01/graf2d/graf/src/TTF.cxx ---- root-5.30.01.orig/graf2d/graf/src/TTF.cxx 2011-08-18 16:46:08.000000000 +0200 -+++ root-5.30.01/graf2d/graf/src/TTF.cxx 2011-08-18 19:28:45.130497322 +0200 -@@ -26,6 +26,7 @@ ++#include ++ + // auxiliary functions for general polygon filling + #include "TASPolyUtils.c" + +@@ -2642,11 +2644,88 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size, + // This is for backward compatibility... + if (fn.Last('/') == 0) fn = fn(1, fn.Length() - 1); + +- const char *ttpath = gEnv->GetValue("Root.TTFontPath", +- TROOT::GetTTFFontDir()); +- char *tmpstr = gSystem->Which(ttpath, fn, kReadPermission); +- fn = tmpstr; +- delete [] tmpstr; ++ const char *basename = gSystem->BaseName(fn); ++ ++ int ttindex = 0; ++ ++ FcPattern *pat = nullptr, *match; ++ FcResult result; ++ ++ if (strcmp(basename, "timesi.ttf") == 0 || ++ strcmp(basename, "FreeSerifItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:italic"); ++ } ++ else if (strcmp(basename, "timesbd.ttf") == 0 || ++ strcmp(basename, "FreeSerifBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:bold"); ++ } ++ else if (strcmp(basename, "timesbi.ttf") == 0 || ++ strcmp(basename, "FreeSerifBoldItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:bold:italic"); ++ } ++ else if (strcmp(basename, "arial.ttf") == 0 || ++ strcmp(basename, "FreeSans.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans"); ++ } ++ else if (strcmp(basename, "ariali.ttf") == 0 || ++ strcmp(basename, "FreeSansOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:italic"); ++ } ++ else if (strcmp(basename, "arialbd.ttf") == 0 || ++ strcmp(basename, "FreeSansBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:bold"); ++ } ++ else if (strcmp(basename, "arialbi.ttf") == 0 || ++ strcmp(basename, "FreeSansBoldOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:bold:italic"); ++ } ++ else if (strcmp(basename, "cour.ttf") == 0 || ++ strcmp(basename, "FreeMono.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono"); ++ } ++ else if (strcmp(basename, "couri.ttf") == 0 || ++ strcmp(basename, "FreeMonoOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:italic"); ++ } ++ else if (strcmp(basename, "courbd.ttf") == 0 || ++ strcmp(basename, "FreeMonoBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:bold"); ++ } ++ else if (strcmp(basename, "courbi.ttf") == 0 || ++ strcmp(basename, "FreeMonoBoldOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:bold:italic"); ++ } ++ else if (strcmp(basename, "symbol.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "standardsymbolsps"); ++ } ++ else if (strcmp(basename, "times.ttf") == 0 || ++ strcmp(basename, "FreeSerif.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif"); ++ } ++ else if (strcmp(basename, "wingding.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "dingbats"); ++ } ++ else if (strcmp(basename, "BlackChancery.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "urwchanceryl"); ++ } ++ else if (gSystem->AccessPathName(fn, kReadPermission) != 0) { ++ // Font name is not a file - usae as pattern ++ pat = FcNameParse ((const FcChar8*) fn.Data()); ++ } ++ ++ if (pat) { ++ FcConfigSubstitute (nullptr, pat, FcMatchPattern); ++ FcDefaultSubstitute (pat); ++ match = FcFontMatch (nullptr, pat, &result); ++ if (match) { ++ char *ttfnt; ++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfnt); ++ fn = ttfnt; ++ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); ++ FcPatternDestroy (match); ++ } ++ FcPatternDestroy (pat); ++ } + + if (fn.EndsWith(".pfa") || fn.EndsWith(".PFA") || fn.EndsWith(".pfb") || fn.EndsWith(".PFB") || fn.EndsWith(".ttf") || fn.EndsWith(".TTF") || fn.EndsWith(".otf") || fn.EndsWith(".OTF")) { + ttfont = kTRUE; +@@ -2670,7 +2749,7 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size, + return; + } + +- ASFont *font = get_asfont(gFontManager, fn.Data(), 0, size, ASF_GuessWho); ++ ASFont *font = get_asfont(gFontManager, fn.Data(), ttindex, size, ASF_GuessWho); + + if (!font) { + font = get_asfont(gFontManager, "fixed", 0, size, ASF_GuessWho); +diff --git a/graf2d/graf/CMakeLists.txt b/graf2d/graf/CMakeLists.txt +index f7a0f970372..61e49252562 100644 +--- a/graf2d/graf/CMakeLists.txt ++++ b/graf2d/graf/CMakeLists.txt +@@ -91,6 +91,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Graf + Freetype::Freetype + ZLIB::ZLIB + mathtext ++ fontconfig + DEPENDENCIES + Hist + Matrix +diff --git a/graf2d/graf/inc/TTF.h b/graf2d/graf/inc/TTF.h +index 864ce06b4f0..050796d1ded 100644 +--- a/graf2d/graf/inc/TTF.h ++++ b/graf2d/graf/inc/TTF.h +@@ -76,9 +76,10 @@ protected: + static FT_BBox fgCBox; ///< string control box + static FT_CharMap fgCharMap[kTTMaxFonts]; ///< font character map + static Int_t fgCurFontIdx; ///< current font index +- static Int_t fgSymbItaFontIdx; ///< Symbol italic font index + static Int_t fgFontCount; ///< number of fonts loaded + static char *fgFontName[kTTMaxFonts]; ///< font name ++ static Int_t fgFontIdx[kTTMaxFonts]; ///< font index in font file ++ static Int_t fgFontIta[kTTMaxFonts]; ///< font slanted using transform + static FT_Face fgFace[kTTMaxFonts]; ///< font face + static TTF::TTGlyph fgGlyphs[kMaxGlyphs]; ///< glyphs + static Bool_t fgHinting; ///< use hinting (true by default) +diff --git a/graf2d/graf/src/TTF.cxx b/graf2d/graf/src/TTF.cxx +index 758bb98c192..c90d0ac70a9 100644 +--- a/graf2d/graf/src/TTF.cxx ++++ b/graf2d/graf/src/TTF.cxx +@@ -25,6 +25,8 @@ Interface to the freetype 2 library. #include "TMath.h" #include "TError.h" +#include - ++ // to scale fonts to the same size as the old TT version const Float_t kScale = 0.93376068; -@@ -112,10 +113,13 @@ + +@@ -38,10 +40,11 @@ Int_t TTF::fgTBlankW = 0; + Int_t TTF::fgWidth = 0; + Int_t TTF::fgAscent = 0; + Int_t TTF::fgCurFontIdx = -1; +-Int_t TTF::fgSymbItaFontIdx = -1; + Int_t TTF::fgFontCount = 0; + Int_t TTF::fgNumGlyphs = 0; + char *TTF::fgFontName[kTTMaxFonts]; ++Int_t TTF::fgFontIdx[kTTMaxFonts]; ++Int_t TTF::fgFontIta[kTTMaxFonts]; + FT_Matrix *TTF::fgRotMatrix = nullptr; + FT_Library TTF::fgLibrary; + FT_BBox TTF::fgCBox; +@@ -71,6 +74,11 @@ void TTF::Init() + return; + } + ++ // Add root's font directory ++ const char *ttpath = gEnv->GetValue("Root.TTFontPath", ++ TROOT::GetTTFFontDir()); ++ FcConfigAppFontAddDir (nullptr, (const FcChar8*)ttpath); ++ + // load default font (arialbd) + SetTextFont(62); + } +@@ -108,12 +116,15 @@ Short_t TTF::CharToUnicode(UInt_t code) charmap = fgFace[fgCurFontIdx]->charmaps[i]; platform = charmap->platform_id; encoding = charmap->encoding_id; - if ((platform == 3 && encoding == 1) || + if ((platform == 3 && encoding == 1 && -+ strcmp(fgFontName[fgCurFontIdx], "symbol.ttf")) || ++ (fgFontIta[fgCurFontIdx] & 2) == 0) || (platform == 0 && encoding == 0) || - (platform == 1 && encoding == 0 && - !strcmp(fgFontName[fgCurFontIdx], "wingding.ttf")) || + (platform == 7 && encoding == 2 && -+ !strcmp(fgFontName[fgCurFontIdx], "symbol.ttf")) || ++ (fgFontIta[fgCurFontIdx] & 2) != 0) || ++ (platform == 0 && encoding == 3 && ++ (fgFontIta[fgCurFontIdx] & 2) != 0) || (platform == 1 && encoding == 0 && - !strcmp(fgFontName[fgCurFontIdx], "symbol.ttf"))) +- !strcmp(fgFontName[fgCurFontIdx], "wingding.ttf")) || +- (platform == 1 && encoding == 0 && +- !strcmp(fgFontName[fgCurFontIdx], "symbol.ttf"))) ++ (fgFontIta[fgCurFontIdx] & 2) != 0)) { -@@ -360,19 +364,86 @@ + fgCharMap[fgCurFontIdx] = charmap; + if (FT_Set_Charmap(fgFace[fgCurFontIdx], fgCharMap[fgCurFontIdx])) +@@ -392,21 +403,145 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) + } + const char *basename = gSystem->BaseName(fontname); + ++ char *ttfont = nullptr; ++ int ttindex = 0; ++ ++ FcPattern *pat = nullptr, *match; ++ FcResult result; ++ ++ if (strcmp(basename, "timesi.ttf") == 0 || ++ strcmp(basename, "FreeSerifItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:italic"); ++ } ++ else if (strcmp(basename, "timesbd.ttf") == 0 || ++ strcmp(basename, "FreeSerifBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:bold"); ++ } ++ else if (strcmp(basename, "timesbi.ttf") == 0 || ++ strcmp(basename, "FreeSerifBoldItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:bold:italic"); ++ } ++ else if (strcmp(basename, "arial.ttf") == 0 || ++ strcmp(basename, "FreeSans.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans"); ++ } ++ else if (strcmp(basename, "ariali.ttf") == 0 || ++ strcmp(basename, "FreeSansOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:italic"); ++ } ++ else if (strcmp(basename, "arialbd.ttf") == 0 || ++ strcmp(basename, "FreeSansBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:bold"); ++ } ++ else if (strcmp(basename, "arialbi.ttf") == 0 || ++ strcmp(basename, "FreeSansBoldOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:bold:italic"); ++ } ++ else if (strcmp(basename, "cour.ttf") == 0 || ++ strcmp(basename, "FreeMono.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono"); ++ } ++ else if (strcmp(basename, "couri.ttf") == 0 || ++ strcmp(basename, "FreeMonoOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:italic"); ++ } ++ else if (strcmp(basename, "courbd.ttf") == 0 || ++ strcmp(basename, "FreeMonoBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:bold"); ++ } ++ else if (strcmp(basename, "courbi.ttf") == 0 || ++ strcmp(basename, "FreeMonoBoldOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:bold:italic"); ++ } ++ else if (strcmp(basename, "symbol.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "standardsymbolsps"); ++ italic &= 2; ++ } ++ else if (strcmp(basename, "times.ttf") == 0 || ++ strcmp(basename, "FreeSerif.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif"); ++ } ++ else if (strcmp(basename, "wingding.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "dingbats"); ++ italic &= 2; ++ } ++ else if (strcmp(basename, "STIXGeneral.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixgeneral"); ++ } ++ else if (strcmp(basename, "STIXGeneralItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixgeneral:italic"); ++ } ++ else if (strcmp(basename, "STIXGeneralBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold"); ++ } ++ else if (strcmp(basename, "STIXGeneralBolIta.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold:italic"); ++ } ++ else if (strcmp(basename, "STIXSiz1Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize1"); ++ } ++ else if (strcmp(basename, "STIXSiz1SymBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize1:bold"); ++ } ++ else if (strcmp(basename, "STIXSiz2Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize2"); ++ } ++ else if (strcmp(basename, "STIXSiz2SymBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize2:bold"); ++ } ++ else if (strcmp(basename, "STIXSiz3Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize3"); ++ } ++ else if (strcmp(basename, "STIXSiz3SymBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize3:bold"); ++ } ++ else if (strcmp(basename, "STIXSiz4Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize4"); ++ } ++ else if (strcmp(basename, "STIXSiz4SymBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize4:bold"); ++ } ++ else if (strcmp(basename, "STIXSiz5Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize5"); ++ } ++ else if (strcmp(basename, "DroidSansFallback.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "droidsansfallback:charset=4e00 0410"); ++ } ++ else if (strcmp(basename, "BlackChancery.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "urwchanceryl"); ++ } ++ else if (gSystem->AccessPathName(fontname, kReadPermission) != 0) { ++ // Font name is not a file - usae as pattern ++ pat = FcNameParse ((const FcChar8*) fontname); ++ } ++ ++ if (pat) { ++ FcConfigSubstitute (nullptr, pat, FcMatchPattern); ++ FcDefaultSubstitute (pat); ++ match = FcFontMatch (nullptr, pat, &result); ++ if (match) { ++ const char *ttfnt; ++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfnt); ++ ttfont = StrDup(ttfnt); ++ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); ++ FcPatternDestroy (match); ++ } ++ FcPatternDestroy (pat); ++ } ++ ++ if (!ttfont) ttfont = StrDup(fontname); ++ ++ basename = gSystem->BaseName(ttfont); ++ + // check if font is in cache + int i; + for (i = 0; i < fgFontCount; i++) { +- if (!strcmp(fgFontName[i], basename)) { +- if (italic) { +- if (i==fgSymbItaFontIdx) { +- fgCurFontIdx = i; +- return 0; +- } +- } else { +- if (i!=fgSymbItaFontIdx) { +- fgCurFontIdx = i; +- return 0; +- } +- } ++ if (!strcmp(fgFontName[i], basename) && ++ (fgFontIdx[i] == ttindex) && ++ (fgFontIta[i] == italic)) { ++ fgCurFontIdx = i; ++ delete [] ttfont; ++ return 0; + } + } + +@@ -416,28 +551,13 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) + kTTMaxFonts); + Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]); + fgCurFontIdx = 0; // use font 0 (default font, set in ctor) ++ delete [] ttfont; return 0; } - // try to load font (font must be in Root.TTFontPath resource) - const char *ttpath = gEnv->GetValue("Root.TTFontPath", --# ifdef TTFFONTDIR -- TTFFONTDIR --# else -- "$(ROOTSYS)/fonts" --# endif -- ); -- +- TROOT::GetTTFFontDir()); - char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission); - - if (!ttfont) { -- Error("TTF::SetTextFont", "font file %s not found in path", fontname); -+ FcPattern *pat, *match; -+ FcResult result; -+ char *ttfont; -+ int ttindex; -+ -+ pat = FcPatternCreate (); -+ -+ if (strcmp(basename, /* 13 */ "times.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, /* 1 */ "timesi.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(basename, /* 2 */ "timesbd.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, /* 3 */ "timesbi.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(basename, /* 4 */ "arial.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, /* 5 */ "ariali.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(basename, /* 6 and 0 */ "arialbd.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, /* 7 */ "arialbi.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(basename, /* 8 */ "cour.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, /* 9 */ "couri.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(basename, /* 10 */ "courbd.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, /* 11 */ "courbi.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(basename, /* 12 and 15 */ "symbol.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"symbol"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, /* 14 */ "wingding.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"wingdings"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else { -+ Error("TTF::SetTextFont", "font %s not known to ROOT", basename); -+ FcPatternDestroy (pat); - if (fgFontCount) { - Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]); - fgCurFontIdx = 0; // use font 0 (default font, set in ctor) -@@ -382,11 +453,18 @@ - } - } - -+ FcConfigSubstitute (NULL, pat, FcMatchPattern); -+ FcDefaultSubstitute (pat); -+ match = FcFontMatch (NULL, pat, &result); -+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfont); -+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); -+ - FT_Face tface = 0; +- Error("TTF::SetTextFont", "font file %s not found in path %s", fontname, ttpath); +- if (fgFontCount) { +- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]); +- fgCurFontIdx = 0; // use font 0 (default font, set in ctor) +- return 0; +- } else { +- return 1; +- } +- } +- + FT_Face tface = (FT_Face) 0; - if (FT_New_Face(fgLibrary, ttfont, 0, &tface)) { + if (FT_New_Face(fgLibrary, ttfont, ttindex, &tface)) { Error("TTF::SetTextFont", "error loading font %s", ttfont); -- delete [] ttfont; -+ FcPatternDestroy (match); -+ FcPatternDestroy (pat); + delete [] ttfont; if (tface) FT_Done_Face(tface); - if (fgFontCount) { - Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]); -@@ -397,7 +475,8 @@ +@@ -450,24 +570,25 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) } } - delete [] ttfont; -+ FcPatternDestroy (match); -+ FcPatternDestroy (pat); - +- fgFontName[fgFontCount] = StrDup(basename); ++ fgFontIdx[fgFontCount] = ttindex; ++ fgFontIta[fgFontCount] = italic; fgCurFontIdx = fgFontCount; -@@ -464,37 +543,12 @@ - /*15 */ { "symbol.ttf", "symbol.ttf" } + fgFace[fgCurFontIdx] = tface; + fgCharMap[fgCurFontIdx] = (FT_CharMap) 0; + fgFontCount++; + +- if (italic) { +- fgSymbItaFontIdx = fgCurFontIdx; ++ if ((italic & 1) != 0) { + FT_Matrix slantMat; + slantMat.xx = (1 << 16); + slantMat.xy = ((1 << 16) >> 2); + slantMat.yx = 0; + slantMat.yy = (1 << 16); +- FT_Set_Transform( fgFace[fgSymbItaFontIdx], &slantMat, NULL ); ++ FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, nullptr ); + } + ++ delete [] ttfont; ++ + return 0; + } + +@@ -494,70 +615,50 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) + + void TTF::SetTextFont(Font_t fontnumber) + { +- // Added by cholm for use of DFSG - fonts - based on Kevins fix. +- // Table of Microsoft and (for non-MSFT operating systems) backup +- // FreeFont TTF fonts. +- static const char *fonttable[][2] = { +- { "Root.TTFont.0", "FreeSansBold.otf" }, +- { "Root.TTFont.1", "FreeSerifItalic.otf" }, +- { "Root.TTFont.2", "FreeSerifBold.otf" }, +- { "Root.TTFont.3", "FreeSerifBoldItalic.otf" }, +- { "Root.TTFont.4", "texgyreheros-regular.otf" }, +- { "Root.TTFont.5", "texgyreheros-italic.otf" }, +- { "Root.TTFont.6", "texgyreheros-bold.otf" }, +- { "Root.TTFont.7", "texgyreheros-bolditalic.otf" }, +- { "Root.TTFont.8", "FreeMono.otf" }, +- { "Root.TTFont.9", "FreeMonoOblique.otf" }, +- { "Root.TTFont.10", "FreeMonoBold.otf" }, +- { "Root.TTFont.11", "FreeMonoBoldOblique.otf" }, +- { "Root.TTFont.12", "symbol.ttf" }, +- { "Root.TTFont.13", "FreeSerif.otf" }, +- { "Root.TTFont.14", "wingding.ttf" }, +- { "Root.TTFont.15", "symbol.ttf" }, +- { "Root.TTFont.STIXGen", "STIXGeneral.otf" }, +- { "Root.TTFont.STIXGenIt", "STIXGeneralItalic.otf" }, +- { "Root.TTFont.STIXGenBd", "STIXGeneralBol.otf" }, +- { "Root.TTFont.STIXGenBdIt", "STIXGeneralBolIta.otf" }, +- { "Root.TTFont.STIXSiz1Sym", "STIXSiz1Sym.otf" }, +- { "Root.TTFont.STIXSiz1SymBd", "STIXSiz1SymBol.otf" }, +- { "Root.TTFont.STIXSiz2Sym", "STIXSiz2Sym.otf" }, +- { "Root.TTFont.STIXSiz2SymBd", "STIXSiz2SymBol.otf" }, +- { "Root.TTFont.STIXSiz3Sym", "STIXSiz3Sym.otf" }, +- { "Root.TTFont.STIXSiz3SymBd", "STIXSiz3SymBol.otf" }, +- { "Root.TTFont.STIXSiz4Sym", "STIXSiz4Sym.otf" }, +- { "Root.TTFont.STIXSiz4SymBd", "STIXSiz4SymBol.otf" }, +- { "Root.TTFont.STIXSiz5Sym", "STIXSiz5Sym.otf" }, +- { "Root.TTFont.ME", "DroidSansFallback.ttf" }, +- { "Root.TTFont.CJKMing", "DroidSansFallback.ttf" }, +- { "Root.TTFont.CJKGothic", "DroidSansFallback.ttf" } ++ static const char *fonttable[] = { ++ "freesans:bold", ++ "freeserif:italic", ++ "freeserif:bold", ++ "freeserif:bold:italic", ++ "freesans", ++ "freesans:italic", ++ "freesans:bold", ++ "freesans:bold:italic", ++ "freemono", ++ "freemono:italic", ++ "freemono:bold", ++ "freemono:bold:italic", ++ "standardsymbolsps", ++ "freeserif", ++ "dingbats", ++ "standardsymbolsps", ++ "stixgeneral", ++ "stixgeneral:italic", ++ "stixgeneral:bold", ++ "stixgeneral:bold:italic", ++ "stixsize1", ++ "stixsize1:bold", ++ "stixsize2", ++ "stixsize2:bold", ++ "stixsize3", ++ "stixsize3:bold", ++ "stixsize4", ++ "stixsize4:bold", ++ "stixsize5", ++ "droidsansfallback:charset=4e00 0410", ++ "droidsansfallback:charset=4e00 0410", ++ "droidsansfallback:charset=4e00 0410" }; - static int fontset = -1; - int thisset = fontset; - int fontid = fontnumber / 10; - if (fontid < 0 || fontid > 15) fontid = 0; + if (fontid < 0 || fontid > 31) fontid = 0; - if (thisset == -1) { - // try to load font (font must be in Root.TTFontPath resource) - // to see which fontset we have available - const char *ttpath = gEnv->GetValue("Root.TTFontPath", --#ifdef TTFFONTDIR -- TTFFONTDIR --#else -- "$(ROOTSYS)/fonts" --#endif -- ); -- char *ttfont = gSystem->Which(ttpath, fonttable[fontid][0], kReadPermission); +- TROOT::GetTTFFontDir()); +- char *ttfont = gSystem->Which(ttpath, gEnv->GetValue(fonttable[fontid][0], fonttable[fontid][1]), kReadPermission); - if (ttfont) { - delete [] ttfont; - thisset = 0; @@ -230,159 +580,339 @@ diff -ur root-5.30.01.orig/graf2d/graf/src/TTF.cxx root-5.30.01/graf2d/graf/src/ - } - } Int_t italic = 0; - if (fontid==15) italic = 1; -- int ret = SetTextFont(fonttable[fontid][thisset], italic); +- if (fontid==15) italic = 1; +- int ret = SetTextFont(gEnv->GetValue(fonttable[fontid][thisset], fonttable[fontid][1]), italic); - // Do not define font set is we're loading the symbol.ttf - it's - // the same in both cases. - if (ret == 0 && fontid != 12) fontset = thisset; -+ SetTextFont(fonttable[fontid][0], italic); ++ if (fontid==12) italic = 2; ++ if (fontid==14) italic = 2; ++ if (fontid==15) italic = 3; ++ ++ SetTextFont(fonttable[fontid], italic); } - //______________________________________________________________________________ -diff -ur root-5.30.01.orig/graf3d/gl/Module.mk root-5.30.01/graf3d/gl/Module.mk ---- root-5.30.01.orig/graf3d/gl/Module.mk 2011-08-18 16:45:57.000000000 +0200 -+++ root-5.30.01/graf3d/gl/Module.mk 2011-08-18 19:30:30.171500251 +0200 -@@ -70,7 +70,7 @@ - @$(MAKELIB) $(PLATFORM) $(LD) "$(LDFLAGS)" \ - "$(SOFLAGS)" libRGL.$(SOEXT) $@ "$(GLO) $(GLO1) $(GLDO)" \ - "$(GLLIBEXTRA) $(FTGLLIBDIR) $(FTGLLIBS) \ -- $(GLEWLIBDIR) $(GLEWLIBS) $(GLLIBS)" -+ $(GLEWLIBDIR) $(GLEWLIBS) $(GLLIBS) -lfontconfig" + //////////////////////////////////////////////////////////////////////////////// +diff --git a/graf2d/postscript/CMakeLists.txt b/graf2d/postscript/CMakeLists.txt +index eb091bbb396..a05023a3f41 100644 +--- a/graf2d/postscript/CMakeLists.txt ++++ b/graf2d/postscript/CMakeLists.txt +@@ -27,6 +27,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Postscript + LIBRARIES + ZLIB::ZLIB + mathtext ++ fontconfig + DEPENDENCIES + Graf + ) +diff --git a/graf2d/postscript/src/TPostScript.cxx b/graf2d/postscript/src/TPostScript.cxx +index 8d4343736d1..c2efa7914da 100644 +--- a/graf2d/postscript/src/TPostScript.cxx ++++ b/graf2d/postscript/src/TPostScript.cxx +@@ -234,6 +234,7 @@ To change the color model use `gStyle->SetColorModelPS(c)`. + #include + #include + #include ++#include - $(GLDS): $(GLH2) $(GLL) $(ROOTCINTTMPDEP) - $(MAKEDIR) -diff -ur root-5.30.01.orig/graf3d/gl/src/TGLFontManager.cxx root-5.30.01/graf3d/gl/src/TGLFontManager.cxx ---- root-5.30.01.orig/graf3d/gl/src/TGLFontManager.cxx 2011-08-18 16:45:57.000000000 +0200 -+++ root-5.30.01/graf3d/gl/src/TGLFontManager.cxx 2011-08-18 19:28:45.153497322 +0200 -@@ -37,6 +37,8 @@ + #include "strlcpy.h" + #include "snprintf.h" +@@ -1584,56 +1585,60 @@ Bool_t TPostScript::FontEmbedType42(const char *filename) + + void TPostScript::FontEmbed(void) + { +- static const char *fonttable[32][2] = { +- { "Root.TTFont.0", "FreeSansBold.otf" }, +- { "Root.TTFont.1", "FreeSerifItalic.otf" }, +- { "Root.TTFont.2", "FreeSerifBold.otf" }, +- { "Root.TTFont.3", "FreeSerifBoldItalic.otf" }, +- { "Root.TTFont.4", "FreeSans.otf" }, +- { "Root.TTFont.5", "FreeSansOblique.otf" }, +- { "Root.TTFont.6", "FreeSansBold.otf" }, +- { "Root.TTFont.7", "FreeSansBoldOblique.otf" }, +- { "Root.TTFont.8", "FreeMono.otf" }, +- { "Root.TTFont.9", "FreeMonoOblique.otf" }, +- { "Root.TTFont.10", "FreeMonoBold.otf" }, +- { "Root.TTFont.11", "FreeMonoBoldOblique.otf" }, +- { "Root.TTFont.12", "symbol.ttf" }, +- { "Root.TTFont.13", "FreeSerif.otf" }, +- { "Root.TTFont.14", "wingding.ttf" }, +- { "Root.TTFont.15", "symbol.ttf" }, +- { "Root.TTFont.STIXGen", "STIXGeneral.otf" }, +- { "Root.TTFont.STIXGenIt", "STIXGeneralItalic.otf" }, +- { "Root.TTFont.STIXGenBd", "STIXGeneralBol.otf" }, +- { "Root.TTFont.STIXGenBdIt", "STIXGeneralBolIta.otf" }, +- { "Root.TTFont.STIXSiz1Sym", "STIXSiz1Sym.otf" }, +- { "Root.TTFont.STIXSiz1SymBd", "STIXSiz1SymBol.otf" }, +- { "Root.TTFont.STIXSiz2Sym", "STIXSiz2Sym.otf" }, +- { "Root.TTFont.STIXSiz2SymBd", "STIXSiz2SymBol.otf" }, +- { "Root.TTFont.STIXSiz3Sym", "STIXSiz3Sym.otf" }, +- { "Root.TTFont.STIXSiz3SymBd", "STIXSiz3SymBol.otf" }, +- { "Root.TTFont.STIXSiz4Sym", "STIXSiz4Sym.otf" }, +- { "Root.TTFont.STIXSiz4SymBd", "STIXSiz4SymBol.otf" }, +- { "Root.TTFont.STIXSiz5Sym", "STIXSiz5Sym.otf" }, +- { "Root.TTFont.ME", "DroidSansFallback.ttf" }, +- { "Root.TTFont.CJKMing", "DroidSansFallback.ttf" }, +- { "Root.TTFont.CJKCothic", "DroidSansFallback.ttf" } ++ static const char *fonttable[] = { ++ "freesans:bold", ++ "freeserif:italic", ++ "freeserif:bold", ++ "freeserif:bold:italic", ++ "freesans", ++ "freesans:italic", ++ "freesans:bold", ++ "freesans:bold:italic", ++ "freemono", ++ "freemono:italic", ++ "freemono:bold", ++ "freemono:bold:italic", ++ "standardsymbolsps", ++ "freeserif", ++ "dingbats", ++ "standardsymbolsps", ++ "stixgeneral", ++ "stixgeneral:italic", ++ "stixgeneral:bold", ++ "stixgeneral:bold:italic", ++ "stixsize1", ++ "stixsize1:bold", ++ "stixsize2", ++ "stixsize2:bold", ++ "stixsize3", ++ "stixsize3:bold", ++ "stixsize4", ++ "stixsize4:bold", ++ "stixsize5", ++ "droidsansfallback:charset=4e00 0410", ++ "droidsansfallback:charset=4e00 0410", ++ "droidsansfallback:charset=4e00 0410" + }; + + PrintStr("%%IncludeResource: ProcSet (FontSetInit)@"); + +- // try to load font (font must be in Root.TTFontPath resource) +- const char *ttpath = gEnv->GetValue("Root.TTFontPath", +- TROOT::GetTTFFontDir()); +- + for (Int_t fontid = 1; fontid < 30; fontid++) { + if (fontid != 15 && MustEmbed[fontid-1]) { +- const char *filename = gEnv->GetValue( +- fonttable[fontid][0], fonttable[fontid][1]); +- char *ttfont = gSystem->Which(ttpath, filename, kReadPermission); ++ char *ttfont = nullptr; ++ ++ FcPattern *pat, *match; ++ FcResult result; ++ ++ pat = FcNameParse ((const FcChar8*) fonttable[fontid]); ++ ++ FcConfigSubstitute (nullptr, pat, FcMatchPattern); ++ FcDefaultSubstitute (pat); ++ match = FcFontMatch (nullptr, pat, &result); ++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfont); ++ + if (!ttfont) { +- Error("TPostScript::FontEmbed", +- "font %d (filename `%s') not found in path", +- fontid, filename); ++ Error("TPostScript::FontEmbed", "font %d not found", ++ fontid); + } else { + if (FontEmbedType2(ttfont)) { + // nothing +@@ -1642,12 +1647,13 @@ void TPostScript::FontEmbed(void) + } else if(FontEmbedType42(ttfont)) { + // nothing + } else { +- Error("TPostScript::FontEmbed", +- "failed to embed font %d (filename `%s')", +- fontid, filename); ++ Error("TPostScript::FontEmbed", "failed to embed font %d)", ++ fontid); + } +- delete [] ttfont; + } ++ ++ FcPatternDestroy (match); ++ FcPatternDestroy (pat); + } + } + PrintStr("%%IncludeResource: font Times-Roman@"); +@@ -2852,10 +2858,10 @@ void TPostScript::Text(Double_t xx, Double_t yy, const wchar_t *chars) + { "Root.PSFont.9", "/FreeMonoOblique" }, + { "Root.PSFont.10", "/FreeMonoBold" }, + { "Root.PSFont.11", "/FreeMonoBoldOblique" }, +- { "Root.PSFont.12", "/SymbolMT" }, ++ { "Root.PSFont.12", "/StandardSymbolsL" }, + { "Root.PSFont.13", "/FreeSerif" }, +- { "Root.PSFont.14", "/Wingdings-Regular" }, +- { "Root.PSFont.15", "/SymbolMT" }, ++ { "Root.PSFont.14", "/Dingbats" }, ++ { "Root.PSFont.15", "/StandardSymbolsL" }, + { "Root.PSFont.STIXGen", "/STIXGeneral" }, + { "Root.PSFont.STIXGenIt", "/STIXGeneral-Italic" }, + { "Root.PSFont.STIXGenBd", "/STIXGeneral-Bold" }, +diff --git a/graf3d/gl/CMakeLists.txt b/graf3d/gl/CMakeLists.txt +index 7850fd46b9f..14782767b4c 100644 +--- a/graf3d/gl/CMakeLists.txt ++++ b/graf3d/gl/CMakeLists.txt +@@ -208,6 +208,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RGL + ZLIB::ZLIB + ${X11_LIBRARIES} + ROOTGlad ++ fontconfig + DEPENDENCIES + Hist + Gui +diff --git a/graf3d/gl/src/TGLFontManager.cxx b/graf3d/gl/src/TGLFontManager.cxx +index e6f67b4f828..3671c132fd9 100644 +--- a/graf3d/gl/src/TGLFontManager.cxx ++++ b/graf3d/gl/src/TGLFontManager.cxx +@@ -36,6 +36,8 @@ + # include "FTGLBitmapFont.h" #endif - +#include + - //______________________________________________________________________________ - // TGLFont - // -@@ -391,17 +393,91 @@ + namespace { + #ifdef HAVE_UTF8 + // https://github.com/root-project/root/issues/22076#issuecomment-4342764706 +@@ -481,16 +483,120 @@ void TGLFontManager::RegisterFont(Int_t sizeIn, Int_t fileID, TGLFont::EMode mod FontMap_i it = fFontMap.find(TGLFont(size, fileID, mode)); if (it == fFontMap.end()) { - TString ttpath, file; --# ifdef TTFFONTDIR -- ttpath = gEnv->GetValue("Root.TTGLFontPath", TTFFONTDIR ); --# else -- ttpath = gEnv->GetValue("Root.TTGLFontPath", "$(ROOTSYS)/fonts"); --# endif +- ttpath = gEnv->GetValue("Root.TTGLFontPath", TROOT::GetTTFFontDir()); - { -- char *fp = gSystem->Which(ttpath, ((TObjString*)fgFontFileArray[fileID])->String() + ".ttf"); +- //For extenede we have both ttf and otf. +- char *fp = gSystem->Which(ttpath, fileID < fgExtendedFontStart ? +- ((TObjString*)fgFontFileArray[fileID])->String() + ".ttf" : +- ((TObjString*)fgFontFileArray[fileID])->String()); - file = fp; - delete [] fp; -+ const char *fontname = ((TObjString*)fgFontFileArray[fileID])->String().Data(); ++ TString file; + -+ FcPattern *pat, *match; ++ TString fontname = fileID < fgExtendedFontStart ? ++ ((TObjString*)fgFontFileArray[fileID])->String() + ".ttf" : ++ ((TObjString*)fgFontFileArray[fileID])->String(); ++ ++ FcPattern *pat = nullptr, *match; + FcResult result; -+ char *file; -+ int ttindex; + -+ pat = FcPatternCreate (); -+ -+ if (strcmp(fontname, /* 13 */ "times") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); ++ if (strcmp(fontname, "timesi.ttf") == 0 || ++ strcmp(fontname, "FreeSerifItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:italic"); + } -+ else if (strcmp(fontname, /* 1 */ "timesi") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); ++ else if (strcmp(fontname, "timesbd.ttf") == 0 || ++ strcmp(fontname, "FreeSerifBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:bold"); + } -+ else if (strcmp(fontname, /* 2 */ "timesbd") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); ++ else if (strcmp(fontname, "timesbi.ttf") == 0 || ++ strcmp(fontname, "FreeSerifBoldItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:bold:italic"); + } -+ else if (strcmp(fontname, /* 3 */ "timesbi") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); ++ else if (strcmp(fontname, "arial.ttf") == 0 || ++ strcmp(fontname, "FreeSans.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans"); + } -+ else if (strcmp(fontname, /* 4 */ "arial") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); ++ else if (strcmp(fontname, "ariali.ttf") == 0 || ++ strcmp(fontname, "FreeSansOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:italic"); + } -+ else if (strcmp(fontname, /* 5 */ "ariali") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); ++ else if (strcmp(fontname, "arialbd.ttf") == 0 || ++ strcmp(fontname, "FreeSansBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:bold"); + } -+ else if (strcmp(fontname, /* 6 and 0 */ "arialbd") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); ++ else if (strcmp(fontname, "arialbi.ttf") == 0 || ++ strcmp(fontname, "FreeSansBoldOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:bold:italic"); ++ } ++ else if (strcmp(fontname, "cour.ttf") == 0 || ++ strcmp(fontname, "FreeMono.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono"); ++ } ++ else if (strcmp(fontname, "couri.ttf") == 0 || ++ strcmp(fontname, "FreeMonoOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:italic"); ++ } ++ else if (strcmp(fontname, "courbd.ttf") == 0 || ++ strcmp(fontname, "FreeMonoBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:bold"); ++ } ++ else if (strcmp(fontname, "courbi.ttf") == 0 || ++ strcmp(fontname, "FreeMonoBoldOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:bold:italic"); ++ } ++ else if (strcmp(fontname, "symbol.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "standardsymbolsps"); ++ } ++ else if (strcmp(fontname, "times.ttf") == 0 || ++ strcmp(fontname, "FreeSerif.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif"); } -+ else if (strcmp(fontname, /* 7 */ "arialbi") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); ++ else if (strcmp(fontname, "wingding.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "dingbats"); + } -+ else if (strcmp(fontname, /* 8 */ "cour") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); ++ else if (strcmp(fontname, "STIXGeneral.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixgeneral"); + } -+ else if (strcmp(fontname, /* 9 */ "couri") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); ++ else if (strcmp(fontname, "STIXGeneralItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixgeneral:italic"); + } -+ else if (strcmp(fontname, /* 10 */ "courbd") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); ++ else if (strcmp(fontname, "STIXGeneralBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold"); + } -+ else if (strcmp(fontname, /* 11 */ "courbi") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); ++ else if (strcmp(fontname, "STIXGeneralBolIta.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold:italic"); + } -+ else if (strcmp(fontname, /* 12 and 15 */ "symbol") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"symbol"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); ++ else if (strcmp(fontname, "STIXSiz1Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize1"); + } -+ else if (strcmp(fontname, /* 14 */ "wingding") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"wingdings"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); ++ else if (strcmp(fontname, "STIXSiz1SymBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize1:bold"); ++ } ++ else if (strcmp(fontname, "STIXSiz2Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize2"); ++ } ++ else if (strcmp(fontname, "STIXSiz2SymBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize2:bold"); ++ } ++ else if (strcmp(fontname, "STIXSiz3Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize3"); ++ } ++ else if (strcmp(fontname, "STIXSiz3SymBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize3:bold"); ++ } ++ else if (strcmp(fontname, "STIXSiz4Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize4"); ++ } ++ else if (strcmp(fontname, "STIXSiz4SymBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize4:bold"); ++ } ++ else if (strcmp(fontname, "STIXSiz5Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize5"); ++ } ++ else if (strcmp(fontname, "DroidSansFallback.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "droidsansfallback:charset=4e00 0410"); + } + -+ FcConfigSubstitute (NULL, pat, FcMatchPattern); ++ FcConfigSubstitute (nullptr, pat, FcMatchPattern); + FcDefaultSubstitute (pat); -+ match = FcFontMatch (NULL, pat, &result); -+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&file); -+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); ++ match = FcFontMatch (nullptr, pat, &result); ++ char *ttfnt; ++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfnt); ++ file = ttfnt; ++ FcPatternDestroy (match); ++ FcPatternDestroy (pat); FTFont* ftfont = 0; switch (mode) -@@ -427,9 +503,13 @@ - break; - default: - Error("TGLFontManager::GetFont", "invalid FTGL type"); -+ FcPatternDestroy (match); -+ FcPatternDestroy (pat); - return; - break; - } -+ FcPatternDestroy (match); -+ FcPatternDestroy (pat); - ftfont->FaceSize(size); - const TGLFont &mf = fFontMap.insert(std::make_pair(TGLFont(size, fileID, mode, ftfont, 0), 1)).first->first; - out.CopyAttributes(mf); -diff -ur root-5.30.01.orig/graf3d/gl/src/TGLText.cxx root-5.30.01/graf3d/gl/src/TGLText.cxx ---- root-5.30.01.orig/graf3d/gl/src/TGLText.cxx 2011-08-18 16:45:57.000000000 +0200 -+++ root-5.30.01/graf3d/gl/src/TGLText.cxx 2011-08-18 19:28:45.162497322 +0200 -@@ -34,6 +34,8 @@ +diff --git a/graf3d/gl/src/TGLText.cxx b/graf3d/gl/src/TGLText.cxx +index 2ed3ee0917a..03feb0ee0a4 100644 +--- a/graf3d/gl/src/TGLText.cxx ++++ b/graf3d/gl/src/TGLText.cxx +@@ -32,6 +32,8 @@ # include "FTGLBitmapFont.h" #endif @@ -391,173 +921,74 @@ diff -ur root-5.30.01.orig/graf3d/gl/src/TGLText.cxx root-5.30.01/graf3d/gl/src/ #define FTGL_BITMAP 0 #define FTGL_PIXMAP 1 #define FTGL_OUTLINE 2 -@@ -190,16 +192,89 @@ - if (fontid == 13) fontname = "times.ttf"; - if (fontid == 14) fontname = "wingding.ttf"; +@@ -175,27 +177,35 @@ void TGLText::SetGLTextFont(Font_t fontnumber) + { + int fontid = fontnumber / 10; +- const char *fontname=0; +- if (fontid == 0) fontname = "arialbd.ttf"; +- if (fontid == 1) fontname = "timesi.ttf"; +- if (fontid == 2) fontname = "timesbd.ttf"; +- if (fontid == 3) fontname = "timesbi.ttf"; +- if (fontid == 4) fontname = "arial.ttf"; +- if (fontid == 5) fontname = "ariali.ttf"; +- if (fontid == 6) fontname = "arialbd.ttf"; +- if (fontid == 7) fontname = "arialbi.ttf"; +- if (fontid == 8) fontname = "cour.ttf"; +- if (fontid == 9) fontname = "couri.ttf"; +- if (fontid == 10) fontname = "courbd.ttf"; +- if (fontid == 11) fontname = "courbi.ttf"; +- if (fontid == 12) fontname = "symbol.ttf"; +- if (fontid == 13) fontname = "times.ttf"; +- if (fontid == 14) fontname = "wingding.ttf"; +- - // try to load font (font must be in Root.TTFontPath resource) - const char *ttpath = gEnv->GetValue("Root.TTFontPath", --# ifdef TTFFONTDIR -- TTFFONTDIR --# else -- "$(ROOTSYS)/fonts" --# endif -- ); +- TROOT::GetTTFFontDir()); +- char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission); ++ static const char *fonttable[] = { ++ "freesans:bold", ++ "freeserif:italic", ++ "freeserif:bold", ++ "freeserif:bold:italic", ++ "freesans", ++ "freesans:italic", ++ "freesans:bold", ++ "freesans:bold:italic", ++ "freemono", ++ "freemono:italic", ++ "freemono:bold", ++ "freemono:bold:italic", ++ "standardsymbolsps", ++ "freeserif", ++ "dingbats", ++ }; ++ ++ char *ttfont; ++ + FcPattern *pat, *match; + FcResult result; -+ char *ttfont; -+ int ttindex; + -+ pat = FcPatternCreate (); ++ pat = FcNameParse ((const FcChar8*) fonttable[fontid]); + -+ if (strcmp(fontname, /* 13 */ "times.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(fontname, /* 1 */ "timesi.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(fontname, /* 2 */ "timesbd.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(fontname, /* 3 */ "timesbi.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(fontname, /* 4 */ "arial.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(fontname, /* 5 */ "ariali.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(fontname, /* 6 and 0 */ "arialbd.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(fontname, /* 7 */ "arialbi.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(fontname, /* 8 */ "cour.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(fontname, /* 9 */ "couri.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(fontname, /* 10 */ "courbd.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(fontname, /* 11 */ "courbi.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(fontname, /* 12 */ "symbol.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"symbol"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(fontname, /* 14 */ "wingding.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"wingdings"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } - -- char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission); -+ FcConfigSubstitute (NULL, pat, FcMatchPattern); ++ FcConfigSubstitute (nullptr, pat, FcMatchPattern); + FcDefaultSubstitute (pat); -+ match = FcFontMatch (NULL, pat, &result); -+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfont); -+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); ++ match = FcFontMatch (nullptr, pat, &result); ++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfont); if (fGLTextFont) delete fGLTextFont; -@@ -209,5 +284,6 @@ +@@ -203,7 +213,9 @@ void TGLText::SetGLTextFont(Font_t fontnumber) + + fGLTextFont = new FTGLPolygonFont(ttfont); - if (!fGLTextFont->FaceSize(1)) - Error("SetGLTextFont","Cannot set FTGL::FaceSize"), -- delete [] ttfont; + FcPatternDestroy (match); + FcPatternDestroy (pat); ++ + if (!fGLTextFont->FaceSize(1)) + Error("SetGLTextFont","Cannot set FTGL::FaceSize"); +- delete [] ttfont; } -diff -ur root-5.30.01.orig/gui/gui/src/TGApplication.cxx root-5.30.01/gui/gui/src/TGApplication.cxx ---- root-5.30.01.orig/gui/gui/src/TGApplication.cxx 2011-08-18 16:46:02.000000000 +0200 -+++ root-5.30.01/gui/gui/src/TGApplication.cxx 2011-08-18 19:28:45.169497323 +0200 -@@ -83,25 +83,12 @@ - gROOT->SetBatch(kFALSE); - - if (strcmp(appClassName, "proofserv")) { -- const char *ttpath = gEnv->GetValue("Root.TTFontPath", --#ifdef TTFFONTDIR -- TTFFONTDIR); --#else -- "$(ROOTSYS)/fonts"); --#endif -- -- char *ttfont = gSystem->Which(ttpath, "arialbd.ttf", kReadPermission); -- // Added by cholm for use of DFSG - fonts - based on fix by Kevin -- if (!ttfont) -- ttfont = gSystem->Which(ttpath, "FreeSansBold.ttf", kReadPermission); -- if (ttfont && gEnv->GetValue("Root.UseTTFonts", 1)) { -+ if (gEnv->GetValue("Root.UseTTFonts", 1)) { - TPluginHandler *h; - if ((h = gROOT->GetPluginManager()->FindHandler("TVirtualX", "x11ttf"))) - if (h->LoadPlugin() == -1) - Info("TGApplication", "no TTF support"); - } -- -- delete [] ttfont; - } - - // Create the canvas colors early so they are allocated before -diff -ur root-5.30.01.orig/gui/gui/src/TGSpeedo.cxx root-5.30.01/gui/gui/src/TGSpeedo.cxx ---- root-5.30.01.orig/gui/gui/src/TGSpeedo.cxx 2011-08-18 16:46:02.000000000 +0200 -+++ root-5.30.01/gui/gui/src/TGSpeedo.cxx 2011-08-18 19:28:45.170497323 +0200 -@@ -117,8 +117,7 @@ - - TString sc; - Float_t step, mark[5]; -- TString fp = gEnv->GetValue("Root.TTFontPath", ""); -- TString ar = fp + "/arialbd.ttf"; -+ TString ar = "arialbd.ttf"; - Int_t i, nexe, offset; - - const TGFont *counterFont = fClient->GetFont("-*-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*"); -@@ -521,8 +520,7 @@ - if (fImage2 && fImage2->IsValid()) - delete fImage2; - fImage2 = (TImage*)fImage->Clone("fImage2"); -- TString fp = gEnv->GetValue("Root.TTFontPath", ""); -- TString ar = fp + "/arialbd.ttf"; -+ TString ar = "arialbd.ttf"; - // format counter value - Int_t nexe = 0; - Int_t ww = fCounter; -@@ -601,8 +599,7 @@ - if (fImage2 && fImage2->IsValid()) - delete fImage2; - fImage2 = (TImage*)fImage->Clone("fImage2"); -- TString fp = gEnv->GetValue("Root.TTFontPath", ""); -- TString ar = fp + "/arialbd.ttf"; -+ TString ar = "arialbd.ttf"; - // format counter value - Int_t nexe = 0; - Int_t ww = fCounter; +-- +2.54.0 + diff --git a/root-ftgl.patch b/root-ftgl.patch deleted file mode 100644 index b4bf1e4..0000000 --- a/root-ftgl.patch +++ /dev/null @@ -1,55 +0,0 @@ -diff -ur root-trunk.orig/configure root-trunk/configure ---- root-trunk.orig/configure 2010-12-04 00:23:49.000000000 +0100 -+++ root-trunk/configure 2010-12-04 19:40:46.810052008 +0100 -@@ -2502,13 +2502,13 @@ - message "Checking for libftgl" - if pkg-config --exists ftgl ; then - result "ok" -- message "Checking for ftgl version > 2.1.2" -+ message "Checking for ftgl" - ftgl_version=`pkg-config --modversion ftgl | \ - tr '.' ' ' | \ - awk 'BEGIN { FS = " "; } \ - { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'` - # Use FTGL/ftgl.h when > 2.1.2 -- if test $ftgl_version -gt 2001002 ; then -+ if test $ftgl_version -gt 0 ; then - result "ok" - ftglincdir=`pkg-config --cflags-only-I ftgl | sed 's/-I//g'` - ftgllibs=`pkg-config --libs-only-l ftgl` -diff -ur root-trunk.orig/graf3d/gl/src/TGLFontManager.cxx root-trunk/graf3d/gl/src/TGLFontManager.cxx ---- root-trunk.orig/graf3d/gl/src/TGLFontManager.cxx 2010-11-03 22:51:45.000000000 +0100 -+++ root-trunk/graf3d/gl/src/TGLFontManager.cxx 2010-12-04 19:36:46.716052000 +0100 -@@ -25,7 +25,13 @@ - // Direct inclussion of FTGL headers is deprecated in ftgl-2.1.3 while - // ftgl-2.1.2 shipped with ROOT requires manual inclusion. - #ifndef BUILTIN_FTGL --# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include - #else - # include "FTFont.h" - # include "FTGLExtrdFont.h" -diff -ur root-trunk.orig/graf3d/gl/src/TGLText.cxx root-trunk/graf3d/gl/src/TGLText.cxx ---- root-trunk.orig/graf3d/gl/src/TGLText.cxx 2010-11-03 22:51:45.000000000 +0100 -+++ root-trunk/graf3d/gl/src/TGLText.cxx 2010-12-04 19:36:46.716052000 +0100 -@@ -23,7 +23,13 @@ - // Direct inclussion of FTGL headers is deprecated in ftgl-2.1.3 while - // ftgl-2.1.2 shipped with ROOT requires manual inclusion. - #ifndef BUILTIN_FTGL --# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include - #else - # include "FTFont.h" - # include "FTGLExtrdFont.h" diff --git a/root-get-src.sh b/root-get-src.sh new file mode 100755 index 0000000..d83c34a --- /dev/null +++ b/root-get-src.sh @@ -0,0 +1,6 @@ +#!/bin/sh +VERSION=$1 +wget -N https://root.cern/download/root_v${VERSION}.source.tar.gz +tar -z -x -f root_v${VERSION}.source.tar.gz +find root-${VERSION}/fonts -type f -a '!' -name 'STIX*' -exec rm {} ';' +tar -J -c --group root --owner root -f root-${VERSION}.tar.xz root-${VERSION} diff --git a/root-html.C b/root-html.C deleted file mode 100644 index 82b0244..0000000 --- a/root-html.C +++ /dev/null @@ -1,35 +0,0 @@ -{ - gEnv->SetValue("Root.DynamicPath", "@PWD@/lib"); - gEnv->SetValue("Root.MacroPath", "@PWD@/macros"); - gEnv->SetValue("Root.PluginPath", "@PWD@/etc/plugins"); - gSystem->AddIncludePath("-I@PWD@/include"); - gSystem->AddIncludePath("-I@PWD@/cint/cint/include"); - gSystem->AddIncludePath("-I@PWD@/cint/cint/stl"); - gSystem->AddIncludePath("-I@PWD@/cint/cint/lib"); - TInterpreter::Instance()->AddIncludePath("@PWD@/include"); - TInterpreter::Instance()->AddIncludePath("@PWD@/cint/cint/include"); - TInterpreter::Instance()->AddIncludePath("@PWD@/cint/cint/stl"); - TInterpreter::Instance()->AddIncludePath("@PWD@/cint/cint/lib"); - #include - #include - #include - #include - gROOT->GetPluginManager()->LoadHandlersFromPluginDirs(""); - gROOT->GetPluginManager()->AddHandler("TVirtualPS","image", - "TImageDump","Postscript", - "TImageDump()"); - gROOT->GetPluginManager()->AddHandler("TVirtualStreamerInfo", - "*","TStreamerInfo", - "RIO","TStreamerInfo()"); - gROOT->GetPluginManager()->AddHandler("TVirtualGraphPainter", "*", - "TGraphPainter","GraphPainter", - "TGraphPainter()"); - delete (TFile*) gROOT->ProcessLine(".x tutorials/hsimple.C"); - THtml html; - html.SetProductName("ROOT"); - html.SetEtcDir("@PWD@/etc/html"); - html.SetHomepage("http://root.cern.ch"); - html.LoadAllLibs(); - html.SetBatch(kTRUE); - html.MakeAll(); -} diff --git a/root-includelist b/root-includelist deleted file mode 100644 index cd7842c..0000000 --- a/root-includelist +++ /dev/null @@ -1,11 +0,0 @@ -include $(MODULE)/Module.mk -includelist: - @list=includelist-`tr / - <<< $(MODULE)` ; \ - rm -f $$list ; \ - for h in $(filter-out %.cw %.pri, $(ALLHDRS)) ; do \ - sed 's!^include!%{_includedir}/%{name}!' <<< $$h >> $$list ; \ - done ; \ - if [ -r $$list ] ; then \ - sort -u $$list > $$list.unique ; \ - mv $$list.unique $$list ; \ - fi diff --git a/root-memory-arm-x86.patch b/root-memory-arm-x86.patch new file mode 100644 index 0000000..2de8e36 --- /dev/null +++ b/root-memory-arm-x86.patch @@ -0,0 +1,15 @@ +--- root-6.12.04.orig/interpreter/CMakeLists.txt 2017-12-13 08:27:42.000000000 +0100 ++++ root-6.12.04/interpreter/CMakeLists.txt 2018-01-11 16:33:13.034850962 +0100 +@@ -75,6 +75,12 @@ + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /ignore:4049,4206,4217,4221") + endif() + ++# Reduce memory usage during linking on ARM and x86 by generating minimal debuginfo ++if(ROOT_ARCHITECTURE STREQUAL "linuxarm" OR ROOT_ARCHITECTURE STREQUAL "linux") ++ string(REPLACE " -g " " -g1 " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") ++ string(REPLACE " -g " " -g1 " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") ++endif() ++ + set(LLVM_TARGETS_TO_BUILD ${ROOT_CLING_TARGET} CACHE STRING "Semicolon-separated list of targets to build, or \"all\".") + + if(clingtest) diff --git a/root-meta.patch b/root-meta.patch deleted file mode 100644 index 6395e3a..0000000 --- a/root-meta.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -ur root-5.32.00.orig/core/meta/src/TCint.cxx root-5.32.00/core/meta/src/TCint.cxx ---- root-5.32.00.orig/core/meta/src/TCint.cxx 2011-12-02 12:41:50.000000000 +0100 -+++ root-5.32.00/core/meta/src/TCint.cxx 2012-02-18 12:07:12.157520013 +0100 -@@ -320,23 +320,27 @@ - ProcessLine("#define ROOT_TError 0"); - ProcessLine("#define ROOT_TGenericClassInfo 0"); - -- TString include; -- // Add the root include directory to list searched by default -+ Int_t includes = gEnv->GetValue("Cint.Includes", 1); -+ if (includes > 0) { -+ TString include; -+ // Add the root include directory to list searched by default - #ifndef ROOTINCDIR -- include = gSystem->Getenv("ROOTSYS"); -- include.Append("/include"); -+ include = gSystem->Getenv("ROOTSYS"); -+ include.Append("/include"); - #else -- include = ROOTINCDIR; -+ include = ROOTINCDIR; - #endif -- TCint::AddIncludePath(include); -+ TCint::AddIncludePath(include); - -- // Allow the usage of ClassDef and ClassImp in interpreted macros -- // if RtypesCint.h can be found (think of static executable without include/) -- char* whichTypesCint = gSystem->Which(include, "RtypesCint.h"); -- if (whichTypesCint) { -- ProcessLine("#include "); -- delete[] whichTypesCint; -- } -+ // Allow the usage of ClassDef and ClassImp in interpreted macros -+ // if RtypesCint.h can be found (think of static executable without -+ // include/) -+ char* whichTypesCint = gSystem->Which(include, "RtypesCint.h"); -+ if (whichTypesCint) { -+ ProcessLine("#include "); -+ delete[] whichTypesCint; -+ } -+ } - - } - diff --git a/root-no-export-python-modules.patch b/root-no-export-python-modules.patch new file mode 100644 index 0000000..d3522f5 --- /dev/null +++ b/root-no-export-python-modules.patch @@ -0,0 +1,54 @@ +From ea7bed3a096949588b1b9086ddf66b2f7892a385 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 4 Dec 2025 23:13:28 +0100 +Subject: [PATCH] Dont export Python modules + +--- + bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt | 3 +-- + bindings/pyroot/pythonizations/CMakeLists.txt | 9 +-------- + 2 files changed, 2 insertions(+), 10 deletions(-) + +diff --git a/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt b/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt +index 95ca00bde9f..a12d3f05e4d 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt ++++ b/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt +@@ -120,8 +120,7 @@ install(TARGETS CPyCppyy EXPORT ${CMAKE_PROJECT_NAME}Exports + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) + +-install(TARGETS cppyy EXPORT ${CMAKE_PROJECT_NAME}Exports +- RUNTIME DESTINATION ${CPPYY_INSTALL_DIR} COMPONENT libraries # Windows ++install(TARGETS cppyy RUNTIME DESTINATION ${CPPYY_INSTALL_DIR} COMPONENT libraries # Windows + LIBRARY DESTINATION ${CPPYY_INSTALL_DIR} COMPONENT libraries + ARCHIVE DESTINATION ${CPPYY_INSTALL_DIR} COMPONENT libraries) + +diff --git a/bindings/pyroot/pythonizations/CMakeLists.txt b/bindings/pyroot/pythonizations/CMakeLists.txt +index 32d7d54b8da..5128e6d337c 100644 +--- a/bindings/pyroot/pythonizations/CMakeLists.txt ++++ b/bindings/pyroot/pythonizations/CMakeLists.txt +@@ -63,12 +63,6 @@ if(NOT MSVC) + target_compile_options(${libname} PRIVATE -Wno-strict-aliasing) + endif() + +- +-# Create meta-target PyROOT3 (INTERFACE library) +-# Export of targets are not supported for custom targets(add_custom_targets()) +-add_library(PyROOT INTERFACE) +-target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy ROOTPythonizations) +- + # Define library output directories for build and install trees + set(pymoduledir_build "${localruntimedir}/ROOT") + set(pymoduledir_install "${CMAKE_INSTALL_PYTHONDIR}/ROOT") +@@ -93,8 +87,7 @@ if(NOT MSVC) + endif() + + # Install library +-install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports +- RUNTIME DESTINATION ${pymoduledir_install} COMPONENT libraries ++install(TARGETS ${libname} RUNTIME DESTINATION ${pymoduledir_install} COMPONENT libraries + LIBRARY DESTINATION ${pymoduledir_install} COMPONENT libraries + ARCHIVE DESTINATION ${pymoduledir_install} COMPONENT libraries) + +-- +2.55.0 + diff --git a/root-pdf-Fix-calculation-of-kerning-distances-in-generate.patch b/root-pdf-Fix-calculation-of-kerning-distances-in-generate.patch new file mode 100644 index 0000000..598d7b0 --- /dev/null +++ b/root-pdf-Fix-calculation-of-kerning-distances-in-generate.patch @@ -0,0 +1,68 @@ +From 87e5571eef573a1ab802c9b5b68e4215045689b9 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 29 Aug 2026 13:15:53 +0200 +Subject: [PATCH] [pdf] Fix calculation of kerning distances in generated PDF + files + +Note that this uses the system fonts on Fedora rather than the bundled +fonts in the root sources. + +Using the following test program + +void ttest() +{ + auto c = new TCanvas("c", "", 300, 100); + auto t = new TText(0.1, 0.4, "Raw assymmetry"); + t->SetTextSize(0.5); + t->SetTextFont(132); + t->Draw(); + c->Print("ttest.pdf"); + c->Print("ttest.eps"); + c->Print("ttest.png"); +} + +The .eps and .png images look like expected. But the .pdf image only +shows the initial capital "R", not the full "Raw assymmetry" text. + +After decompressing the generated .pdf file: + +cpdf -decompress ttest.pdf -o ttest.dec.pdf + +the decompressed file shows that the kerning distances are incorrect: + +[(R) -2147483648(a) 24(w) -2147483648( ) 0(a) 0(s) -2147483648(s) 17(y) 0(m) 0(m) 8(e) 8(t) 0(r) -2147483648(y) ] + +Something has clearly gone wrong here. -2147483648 is the minimum +value that can be stored in a 16 bit signed integer. + +The origin of the problem is a calculation of a difference between a +UInt_t (i.e. unsigned) value and an Int_t (i.e. signed) value in the +TPDF::Text() method. Casting the UInt_t to an Int_t before calculating +the difference, as done in this commit, fixes the problem. With this +change the kerning distances are better: + +[(R) -2(a) 24(w) -2( ) 0(a) 0(s) -2(s) 17(y) 0(m) 0(m) 8(e) 8(t) 0(r) -2(y) ] + +and the generated .pdf file shows the complete text. The generated +.png and .eps files do not change (except for the time stamp in the +.eps file). +--- + graf2d/postscript/src/TPDF.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/graf2d/postscript/src/TPDF.cxx b/graf2d/postscript/src/TPDF.cxx +index 21a2506010f..e1cd9b10d10 100644 +--- a/graf2d/postscript/src/TPDF.cxx ++++ b/graf2d/postscript/src/TPDF.cxx +@@ -1943,7 +1943,7 @@ void TPDF::Text(Double_t xx, Double_t yy, const char *chars) + tmp[0] = chars[i-1]; + UInt_t width=0; + t.GetTextAdvance(width, &tmp[0], kFALSE); +- Double_t wwl = gPad->AbsPixeltoX(width - charDeltas[i]) - gPad->AbsPixeltoX(0); ++ Double_t wwl = gPad->AbsPixeltoX((Int_t)width - charDeltas[i]) - gPad->AbsPixeltoX(0); + wwl -= 0.5*(gPad->AbsPixeltoX(1) - gPad->AbsPixeltoX(0)); // half a pixel ~ rounding error + charDeltas[i] = (Int_t)((1000.0/Float_t(fontsize))*(XtoPDF(wwl) - XtoPDF(0))/scale); + } +-- +2.55.0 + diff --git a/root-testfiles.sh b/root-testfiles.sh new file mode 100755 index 0000000..c2451e9 --- /dev/null +++ b/root-testfiles.sh @@ -0,0 +1,87 @@ +#! /bin/sh + +SITE="https://root.cern/files" + +mkdir files +pushd files + +wget -N ${SITE}/aleph_ref_5.root +wget -N ${SITE}/aleph.root +wget -N ${SITE}/alice3_ref_6.root +wget -N ${SITE}/alice3.root +wget -N ${SITE}/ams_ref_4.root +wget -N ${SITE}/ams.root +wget -N ${SITE}/atlas_ref_6.root +wget -N ${SITE}/atlas.root +wget -N ${SITE}/babar2_ref_4.root +wget -N ${SITE}/babar2.root +wget -N ${SITE}/barres_ref_3.root +wget -N ${SITE}/barres.root +wget -N ${SITE}/belle_ref_3.root +wget -N ${SITE}/belle.root +wget -N ${SITE}/bes_ref_3.root +wget -N ${SITE}/bes.root +wget -N ${SITE}/brahms_ref_3.root +wget -N ${SITE}/brahms.root +wget -N ${SITE}/btev_ref_3.root +wget -N ${SITE}/btev.root +wget -N ${SITE}/cdf_ref_6.root +wget -N ${SITE}/cdf.root +wget -N ${SITE}/chambers_ref_3.root +wget -N ${SITE}/chambers.root +wget -N ${SITE}/cms_ref_4.root +wget -N ${SITE}/cms.root +wget -N ${SITE}/dubna_ref_3.root +wget -N ${SITE}/dubna.root +wget -N ${SITE}/e907_ref_3.root +wget -N ${SITE}/e907.root +wget -N ${SITE}/felix_ref_3.root +wget -N ${SITE}/felix.root +wget -N ${SITE}/ganil_ref_3.root +wget -N ${SITE}/ganil.root +wget -N ${SITE}/gem_ref_5.root +wget -N ${SITE}/gem.root +wget -N ${SITE}/hades2_ref_4.root +wget -N ${SITE}/hades2.root +wget -N ${SITE}/hermes_ref_3.root +wget -N ${SITE}/hermes.root +wget -N ${SITE}/integral_ref_4.root +wget -N ${SITE}/integral.root +wget -N ${SITE}/lhcbfull_ref_4.root +wget -N ${SITE}/lhcbfull.root +wget -N ${SITE}/na35_ref_3.root +wget -N ${SITE}/na35.root +wget -N ${SITE}/na47_ref_3.root +wget -N ${SITE}/na47.root +wget -N ${SITE}/na49_ref_3.root +wget -N ${SITE}/na49.root +wget -N ${SITE}/p326_ref_4.root +wget -N ${SITE}/p326.root +wget -N ${SITE}/phenix_ref_3.root +wget -N ${SITE}/phenix.root +wget -N ${SITE}/phobos2_ref_4.root +wget -N ${SITE}/phobos2.root +wget -N ${SITE}/sdc_ref_3.root +wget -N ${SITE}/sdc.root +wget -N ${SITE}/sld_ref_4.root +wget -N ${SITE}/sld.root +wget -N ${SITE}/star_ref_4.root +wget -N ${SITE}/star.root +wget -N ${SITE}/tesla_ref_4.root +wget -N ${SITE}/tesla.root +wget -N ${SITE}/wa91_ref_3.root +wget -N ${SITE}/wa91.root + +wget -N ${SITE}/europe.root +wget -N ${SITE}/usa.root + +for f in *.root ; do ln -s $f $f.ROOT.cachefile ; done + +mkdir tutorials +pushd tutorials +wget -N ${SITE}/tutorials/df014_CsvDataSource_MuRun2010B.csv +popd + +popd + +tar -J -c --group root --owner root -f root-testfiles.tar.xz files diff --git a/root-tmva-sofie-Complete-big-endian-support-for-ONNX-init.patch b/root-tmva-sofie-Complete-big-endian-support-for-ONNX-init.patch new file mode 100644 index 0000000..d7d0181 --- /dev/null +++ b/root-tmva-sofie-Complete-big-endian-support-for-ONNX-init.patch @@ -0,0 +1,146 @@ +From 2fec5822e305b9b203894aa0fe3e4dded1f673cc Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Wed, 8 Jul 2026 11:13:16 +0200 +Subject: [PATCH] [tmva][sofie] Complete big-endian support for ONNX + initializer tensors +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Follow-up to the last commit ("[tmva][sofie] Fix big endian"), which +byte-swapped raw_data initializers on big-endian platforms but left a +few gaps: + +- Initializers with data_location == EXTERNAL were still read from the + external weights file without swapping, silently producing + byte-reversed weights on big-endian machines. + +- The type switch only handled FLOAT, DOUBLE, INT32 and INT64. One-byte + types (BOOL, UINT8, INT8), which parse fine on little-endian via + plain memcpy, now threw on big-endian, and the other fixed-width + types (INT16, UINT16, UINT32, UINT64) were rejected as well. + +- The swap loops dereferenced the protobuf string buffer through + reinterpret_cast'ed uint32_t*/uint64_t* pointers, which is a + misaligned access on strict-alignment targets (e.g. SPARC) since + the buffer carries no alignment guarantee. + +Replace the four copy-pasted swap loops with a width-dispatched helper, +CopyLEToHost, that plain-copies 1-byte element types and byte-swaps +2/4/8-byte elements through a memcpy'd temporary (no misaligned loads, +valid for in-place use), and call it from both the raw_data and the +external-data paths. + +🤖 Done with the help of AI +--- + tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 73 ++++++++++++-------- + 1 file changed, 45 insertions(+), 28 deletions(-) + +diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +index ac4cc7d5740..1c14d12ba30 100644 +--- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx ++++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +@@ -4,6 +4,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -155,6 +156,45 @@ struct ExtractDataFromTP { + } + }; + ++#ifndef R__BYTESWAP ++namespace { ++ ++// Copy nbytes from source to dest, byte-swapping each N-byte element. The ++// temporary avoids misaligned loads from the protobuf string buffer and makes ++// in-place swapping (dest == source) valid. ++template ++void CopyBswap(void *dest, const void *source, std::size_t nbytes) ++{ ++ using value_type = typename RByteSwap::value_type; ++ auto dst = static_cast(dest); ++ auto src = static_cast(source); ++ for (std::size_t k = 0; k < nbytes; k += N) { ++ value_type v; ++ std::memcpy(&v, src + k, N); ++ v = RByteSwap::bswap(v); ++ std::memcpy(dst + k, &v, N); ++ } ++} ++ ++// Copy a buffer of little-endian tensor elements to host (big-endian) byte order ++void CopyLEToHost(void *dest, const void *source, std::size_t nbytes, ETensorType tensor_type) ++{ ++ switch (GetTypeSize(tensor_type)) { ++ case 1: ++ if (dest != source) ++ std::memcpy(dest, source, nbytes); ++ break; ++ case 2: CopyBswap<2>(dest, source, nbytes); break; ++ case 4: CopyBswap<4>(dest, source, nbytes); break; ++ case 8: CopyBswap<8>(dest, source, nbytes); break; ++ default: ++ throw std::runtime_error("Data type " + ConvertTypeToString(tensor_type) + " in tensor is not supported!\n"); ++ } ++} ++ ++} // anonymous namespace ++#endif ++ + std::shared_ptr RModelParser_ONNX::GetInitializedTensorData(onnx::TensorProto *tensorproto, size_t tensor_size, ETensorType tensor_type) + { + +@@ -172,34 +212,7 @@ std::shared_ptr RModelParser_ONNX::GetInitializedTensorData(onnx::TensorPr + std::memcpy(data.get(), tensorproto->raw_data().c_str(), tensor_size); + #else + // big-endian architectures - need to swap bytes +- switch (tensor_type) { +- case ETensorType::FLOAT: +- for (std::size_t k = 0; k < tensor_size / sizeof(float); ++k) +- (reinterpret_cast::value_type *>(data.get()))[k] = +- RByteSwap::bswap((reinterpret_cast::value_type *>( +- tensorproto->raw_data().c_str()))[k]); +- break; +- case ETensorType::DOUBLE: +- for (std::size_t k = 0; k < tensor_size / sizeof(double); ++k) +- (reinterpret_cast::value_type *>(data.get()))[k] = +- RByteSwap::bswap((reinterpret_cast::value_type *>( +- tensorproto->raw_data().c_str()))[k]); +- break; +- case ETensorType::INT32: +- for (std::size_t k = 0; k < tensor_size / sizeof(int32_t); ++k) +- (reinterpret_cast::value_type *>(data.get()))[k] = +- RByteSwap::bswap((reinterpret_cast::value_type *>( +- tensorproto->raw_data().c_str()))[k]); +- break; +- case ETensorType::INT64: +- for (std::size_t k = 0; k < tensor_size / sizeof(int64_t); ++k) +- (reinterpret_cast::value_type *>(data.get()))[k] = +- RByteSwap::bswap((reinterpret_cast::value_type *>( +- tensorproto->raw_data().c_str()))[k]); +- break; +- default: +- throw std::runtime_error("Data type " + ConvertTypeToString(tensor_type) + " in tensor is not supported!\n"); +- } ++ CopyLEToHost(data.get(), tensorproto->raw_data().c_str(), tensor_size, tensor_type); + #endif + } else { + // case tensor data are stored as specific types and not in raw_data +@@ -262,6 +275,10 @@ std::shared_ptr RModelParser_ONNX::GetInitializedTensorData(onnx::TensorPr + + fDataFile.seekg(offset); + fDataFile.read(reinterpret_cast(data.get()), buffer_size); ++#ifndef R__BYTESWAP ++ // external data is stored little-endian like raw_data - swap in place ++ CopyLEToHost(data.get(), data.get(), buffer_size, tensor_type); ++#endif + } + + return data; +-- +2.55.0 + diff --git a/root-tmva-sofie-Fix-big-endian.patch b/root-tmva-sofie-Fix-big-endian.patch new file mode 100644 index 0000000..fb1663d --- /dev/null +++ b/root-tmva-sofie-Fix-big-endian.patch @@ -0,0 +1,68 @@ +From 8554bf49749efd8de5538bf99c12a04d2691102d Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 28 Jun 2026 16:49:23 +0200 +Subject: [PATCH] [tmva][sofie] Fix big endian + +--- + tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 36 ++++++++++++++++---- + 1 file changed, 30 insertions(+), 6 deletions(-) + +diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +index aa196c510ad..ac4cc7d5740 100644 +--- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx ++++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +@@ -172,13 +172,37 @@ std::shared_ptr RModelParser_ONNX::GetInitializedTensorData(onnx::TensorPr + std::memcpy(data.get(), tensorproto->raw_data().c_str(), tensor_size); + #else + // big-endian architectures - need to swap bytes +- for (std::size_t k = 0; k < tensor_size; ++k) +- (reinterpret_cast::value_type *>(data.get()))[k] = +- RByteSwap::bswap((reinterpret_cast::value_type *>( +- tensorproto->raw_data().c_str()))[k]); ++ switch (tensor_type) { ++ case ETensorType::FLOAT: ++ for (std::size_t k = 0; k < tensor_size / sizeof(float); ++k) ++ (reinterpret_cast::value_type *>(data.get()))[k] = ++ RByteSwap::bswap((reinterpret_cast::value_type *>( ++ tensorproto->raw_data().c_str()))[k]); ++ break; ++ case ETensorType::DOUBLE: ++ for (std::size_t k = 0; k < tensor_size / sizeof(double); ++k) ++ (reinterpret_cast::value_type *>(data.get()))[k] = ++ RByteSwap::bswap((reinterpret_cast::value_type *>( ++ tensorproto->raw_data().c_str()))[k]); ++ break; ++ case ETensorType::INT32: ++ for (std::size_t k = 0; k < tensor_size / sizeof(int32_t); ++k) ++ (reinterpret_cast::value_type *>(data.get()))[k] = ++ RByteSwap::bswap((reinterpret_cast::value_type *>( ++ tensorproto->raw_data().c_str()))[k]); ++ break; ++ case ETensorType::INT64: ++ for (std::size_t k = 0; k < tensor_size / sizeof(int64_t); ++k) ++ (reinterpret_cast::value_type *>(data.get()))[k] = ++ RByteSwap::bswap((reinterpret_cast::value_type *>( ++ tensorproto->raw_data().c_str()))[k]); ++ break; ++ default: ++ throw std::runtime_error("Data type " + ConvertTypeToString(tensor_type) + " in tensor is not supported!\n"); ++ } + #endif + } else { +- // case tensor data are stored as specific types and now in raw_data ++ // case tensor data are stored as specific types and not in raw_data + switch (tensor_type) { + case ETensorType::FLOAT: { + ExtractDataFromTP::Copy(tensorproto, data.get(), tensor_size/ 4); +@@ -200,7 +224,7 @@ std::shared_ptr RModelParser_ONNX::GetInitializedTensorData(onnx::TensorPr + throw std::runtime_error("TMVA::SOFIE - ExtractData from TP in BOOL not supported"); + break; + } +- case ETensorType::UINT8: { ++ case ETensorType::UINT8: { + throw std::runtime_error("TMVA::SOFIE - ExtractData from TP in UINT8 not supported"); + break; + } +-- +2.54.0 + diff --git a/root-tree-df-Do-not-fail-test-on-32-bit-due-to-mis-aligne.patch b/root-tree-df-Do-not-fail-test-on-32-bit-due-to-mis-aligne.patch new file mode 100644 index 0000000..ecca598 --- /dev/null +++ b/root-tree-df-Do-not-fail-test-on-32-bit-due-to-mis-aligne.patch @@ -0,0 +1,25 @@ +From 58b38e29586975e714deee6ac195b286eb9a73cf Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 28 Jun 2026 16:59:36 +0200 +Subject: [PATCH 2/3] [tree][df] Do not fail test on 32 bit due to mis-aligned + atomic + +--- + tree/dataframe/test/dataframe_hist.cxx | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tree/dataframe/test/dataframe_hist.cxx b/tree/dataframe/test/dataframe_hist.cxx +index f5fe396b50d..7a2c6659a84 100644 +--- a/tree/dataframe/test/dataframe_hist.cxx ++++ b/tree/dataframe/test/dataframe_hist.cxx +@@ -31,6 +31,7 @@ public: + RDFHist() + { + fDiag.optionalDiag(kWarning, "", "Filling RHist is experimental", /*matchFullMessage=*/false); ++ fDiag.optionalDiag(kWarning, "cling", "expected alignment (8 bytes) exceeds the actual alignment (4 bytes) [-Watomic-alignment]", false); + if (GetParam()) + ROOT::EnableImplicitMT(4); + } +-- +2.54.0 + diff --git a/root-tree-nt-Compare-size-to-the-size-of-the-struct.patch b/root-tree-nt-Compare-size-to-the-size-of-the-struct.patch new file mode 100644 index 0000000..4092d83 --- /dev/null +++ b/root-tree-nt-Compare-size-to-the-size-of-the-struct.patch @@ -0,0 +1,32 @@ +From 07cbb0515e4f45808696037adce7c0f1bc5e903d Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 28 Jun 2026 17:01:40 +0200 +Subject: [PATCH 3/3] [tree][nt] Compare size to the size of the struct + +Do not assume it is 2 * sizeof(double), which is not true on 32 bit. +--- + tree/ntuple/test/ntuple_modelext.cxx | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tree/ntuple/test/ntuple_modelext.cxx b/tree/ntuple/test/ntuple_modelext.cxx +index 8ec3886f921..ef27e844e84 100644 +--- a/tree/ntuple/test/ntuple_modelext.cxx ++++ b/tree/ntuple/test/ntuple_modelext.cxx +@@ -810,12 +810,12 @@ TEST(RNTuple, ModelExtensionRecordNested) + modelUpdater->AddField(std::make_unique>("ptHP"), "r1.r2.r3.r4"); + modelUpdater->CommitUpdate(); + +- EXPECT_EQ(2 * sizeof(double), writer->GetModel().GetConstField("r1").GetValueSize()); +- entry = writer->CreateEntry(); + struct FloatAndDouble { + float pt; + double ptHP; + }; ++ EXPECT_EQ(sizeof(FloatAndDouble), writer->GetModel().GetConstField("r1").GetValueSize()); ++ entry = writer->CreateEntry(); + + auto ptrFloatAndDouble = static_cast(entry->GetPtr("r1").get()); + ptrFloatAndDouble->pt = 2.0; +-- +2.54.0 + diff --git a/root-unuran.patch b/root-unuran.patch deleted file mode 100644 index b051e6e..0000000 --- a/root-unuran.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff -ur root-trunk.orig/math/unuran/Module.mk root-trunk/math/unuran/Module.mk ---- root-trunk.orig/math/unuran/Module.mk 2010-11-25 20:41:32.000000000 +0100 -+++ root-trunk/math/unuran/Module.mk 2010-11-25 20:51:47.190704977 +0100 -@@ -20,7 +20,7 @@ - UNURANETAG := $(call stripsrc,$(UNURANDIRS)/headers.d) - UNRCFG := $(call stripsrc,$(UNURANDIRS)/$(UNRVERS)/config.h) - --UNRTARCONTENT:=$(subst $(UNRVERS),$(UNRDIRS),$(shell mkdir -p $(UNRDIR); cd $(UNRDIR); gunzip -c $(UNRSRCS) | tar tf -)) -+UNRTARCONTENT:= - UNRS := $(filter %.c, \ - $(filter $(UNRDIRS)/src/utils/%,$(UNRTARCONTENT)) \ - $(filter $(UNRDIRS)/src/methods/%,$(UNRTARCONTENT)) \ -@@ -69,10 +69,9 @@ - ##### local rules ##### - .PHONY: all-$(MODNAME) clean-$(MODNAME) distclean-$(MODNAME) - --include/%.h: $(UNURANDIRI)/%.h $(UNURANETAG) -+include/%.h: $(UNURANDIRI)/%.h - cp $< $@ - --$(UNURANDEP): $(UNRCFG) - $(UNRS): $(UNURANETAG) - - $(UNURANETAG): $(UNRSRCS) -@@ -125,12 +124,12 @@ - GNUMAKE=$(MAKE) ./configure CC="$$ACC" \ - CFLAGS="$$ACFLAGS"); - --$(UNURANLIB): $(UNRCFG) $(UNRO) $(UNURANO) $(UNURANDO) $(ORDER_) \ -+$(UNURANLIB): $(UNURANO) $(UNURANDO) $(ORDER_) \ - $(MAINLIBS) $(UNURANLIBDEP) - @$(MAKELIB) $(PLATFORM) $(LD) "$(LDFLAGS)" \ - "$(SOFLAGS)" libUnuran.$(SOEXT) $@ \ - "$(UNURANO) $(UNURANDO)" \ -- "$(UNURANLIBEXTRA) $(UNRO)" -+ "$(UNURANLIBEXTRA) -lunuran" - - $(UNURANDS): $(UNRINIT) $(UNURANDH1) $(UNURANL) $(ROOTCINTTMPDEP) - $(MAKEDIR) diff --git a/root-xrootd.patch b/root-xrootd.patch deleted file mode 100644 index 9f7c113..0000000 --- a/root-xrootd.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -ur root-5.32.01.orig/configure root-5.32.01/configure ---- root-5.32.01.orig/configure 2012-02-29 16:46:41.000000000 +0100 -+++ root-5.32.01/configure 2012-03-17 14:14:02.822111495 +0100 -@@ -4486,10 +4486,14 @@ - if test "x$enable_xrootd" = "xyes"; then - xrdlibdir="$tmpxrdlibdir" - if test "x$enable_bonjour" = "xyes"; then -- check_symbol XrdOucBonjour "$libxrdoucbjr" "$xrdlibdir" -- if test $found_symbol -eq 0 ; then -- bonjourcppflags= -- fi -+ # This check is broken. The xrootd libraries are C++ hence their -+ # symbol names are mangled. The check_symbol macro is designed -+ # to check for unmangled symbol names in C libraries. -+ # check_symbol XrdOucBonjour "$libxrdoucbjr" "$xrdlibdir" -+ # if test $found_symbol -eq 0 ; then -+ # bonjourcppflags= -+ # fi -+ bonjourcppflags= - fi - fi - fi diff --git a/root.desktop b/root.desktop new file mode 100644 index 0000000..159a1db --- /dev/null +++ b/root.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Root +GenericName=Root +Comment=Numerical data analysis framework +Exec=root +Icon=root +Terminal=true +Type=Application +MimeType=application/x-root; +Categories=Utility; +Encoding=UTF-8 diff --git a/root.png b/root.png new file mode 100644 index 0000000..a7813e5 Binary files /dev/null and b/root.png differ diff --git a/root.spec b/root.spec index 44d4ab2..0b03a05 100644 --- a/root.spec +++ b/root.spec @@ -1,145 +1,212 @@ -%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} +# Disable package note flags, since root saves the compiler/linker flags +# used during the build +%undefine _package_note_flags -%if "%{?rhel}" == "5" -%global __python26 /usr/bin/python26 -%{!?python26_sitearch: %global python26_sitearch %(%{__python26} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} -# Disable the default python byte code compilation -%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g') -%endif +%global root7 1 +%global dataframe 1 +%global roofit 1 +%global tmvasofieparser 1 +%global distrdf %{dataframe} -%{!?ruby_sitearchdir: %global ruby_sitearchdir %(ruby -rrbconfig -e 'puts RbConfig::CONFIG["sitearchdir"]' 2>/dev/null)} +%global bundlejson 0 -%if %{?fedora}%{!?fedora:0} >= 17 || %{?rhel}%{!?rhel:0} >= 7 -%global ruby_installdir %{ruby_vendorarchdir} -%global ruby_abi 1.9.1 +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 10 +%ifarch %{ix86} %{arm} +%global pandas 0 %else -%global ruby_installdir %{ruby_sitearchdir} -%global ruby_abi 1.8 +%global pandas 1 +%endif +%else +%global pandas 0 %endif -%if %($(pkg-config emacs) ; echo $?) -%global emacs_version 21.4 -%global emacs_lispdir %{_datadir}/emacs/site-lisp +%global rrr 1 + +%if %{?fedora}%{!?fedora:0} >= 40 || %{?rhel}%{!?rhel:0} >= 10 +%global roofitmp 1 %else -%global emacs_version %(pkg-config emacs --modversion) -%global emacs_lispdir %(pkg-config emacs --variable sitepkglispdir) +%global roofitmp 0 %endif +%if %{?fedora}%{!?fedora:0} >= 45 || %{?rhel}%{!?rhel:0} >= 11 +%global davix 0 +%else +%global davix 1 +%endif + +# Do not generate autoprovides for Python modules +%global __provides_exclude_from ^%{python3_sitearch}/.*/lib.*\\.so$ + Name: root -Version: 5.32.03 +Version: 6.40.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) Release: 1%{?dist} Summary: Numerical data analysis framework -Group: Applications/Engineering -License: LGPLv2+ -URL: http://root.cern.ch/ -# The upstream source is modified to exclude proprietary fonts: -# wget -N ftp://root.cern.ch/root/root_v%{version}.source.tar.gz -# tar -z -x -f root_v%{version}.source.tar.gz -# rm -rf root/fonts -# mv root root-%{version} -# tar -z -c -f root-%{version}.tar.gz root-%{version} -Source0: %{name}-%{version}.tar.gz -# Script to extract the list of include files in a subpackage -Source1: root-includelist -# Documentation generation script -Source2: root-html.C -# Images included in order to make documentation selfcontained -Source3: http://root.cern.ch/drupal/sites/default/files/rootdrawing-logo.png -Source4: http://root.cern.ch/drupal/sites/all/themes/newsflash/images/blue/root-banner.png -Source5: http://root.cern.ch/drupal/sites/all/themes/newsflash/images/info.png -# Patch for ftgl older than version 2.1.3: -Patch0: %{name}-ftgl.patch -# Use system fonts: -Patch1: %{name}-fontconfig.patch -# Use system unuran: -Patch2: %{name}-unuran.patch -# Fixes for xrootd bonjour -Patch3: %{name}-xrootd.patch -# Fix hardcoded include path -# https://savannah.cern.ch/bugs/index.php?91463 -Patch4: %{name}-meta.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -# The build segfaults on ppc64 during an invocation of cint: -# https://savannah.cern.ch/bugs/index.php?70542 -ExcludeArch: ppc64 +License: LGPL-2.1-or-later +URL: https://root.cern/ +# The upstream source is modified to exclude proprietary fonts +# See Source8 for how to create Source0 +Source0: %{name}-%{version}.tar.xz +# Input data for the tests +Source1: %{name}-testfiles.tar.xz +# Script to generate above source +Source2: %{name}-testfiles.sh +# Desktop file and icon +Source3: %{name}.desktop +Source4: %{name}.png +# MIME type file and icon +Source5: %{name}.xml +Source6: application-x-root.png +# Instructions for setting up a python virtual environment +# for running the JupyROOT notebook on EPEL +Source7: JupyROOT-on-EPEL +# Script to generate Source0 +Source8: %{name}-get-src.sh +# Clad is a source-transformation automatic differentiation (AD) +# library for C++, implemented as a plugin for the Clang compiler +Source9: https://github.com/vgvassilev/clad/archive/v2.3/clad-2.3.tar.gz +# Use system fonts +Patch0: %{name}-fontconfig.patch +# Reduce memory usage during linking on ARM and x86 by generating +# smaller debuginfo for the llvm libraries +# Fedora builders run out of memory with the default setting +Patch1: %{name}-memory-arm-x86.patch +# Don't install minicern static library +Patch2: %{name}-dont-install-minicern.patch +# Do not export Python modules in CMake config +Patch3: %{name}-no-export-python-modules.patch +# Run some test on 32 bit that upstream has disabled +Patch4: %{name}-32bit-tests.patch +# Revert test change that breaks the test +Patch5: %{name}-Revert-test-Fetch-the-geometries-from-EOS-and-not-fr.patch +# Preserve memory during parallel build +# https://github.com/root-project/root/pull/18991 +Patch6: %{name}-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch +# Revert xfail mark (test works except on RHEL/EPEL 9) +Patch7: %{name}-Revert-cppyy-Mark-addressof-test-as-xfail-on-modules.patch +# Adjust stressGraphics reference +Patch8: %{name}-Adjust-stressGraphics-reference.patch +# https://github.com/root-project/root/pull/22723 +Patch9: %{name}-tmva-sofie-Fix-big-endian.patch +Patch10: %{name}-tmva-sofie-Complete-big-endian-support-for-ONNX-init.patch +# https://github.com/root-project/root/pull/22724 +Patch11: %{name}-core-The-old-TUUID-constructor-can-create-either-ver.patch +Patch12: %{name}-tree-df-Do-not-fail-test-on-32-bit-due-to-mis-aligne.patch +Patch13: %{name}-tree-nt-Compare-size-to-the-size-of-the-struct.patch +# https://github.com/root-project/root/pull/23188 +Patch14: %{name}-pdf-Fix-calculation-of-kerning-distances-in-generate.patch +BuildRequires: gcc-c++ +BuildRequires: gcc-gfortran +BuildRequires: make +BuildRequires: cmake >= 3.20 BuildRequires: libX11-devel BuildRequires: libXpm-devel BuildRequires: libXft-devel BuildRequires: libXext-devel BuildRequires: fontconfig-devel BuildRequires: freetype-devel +BuildRequires: fcgi-devel BuildRequires: ftgl-devel -BuildRequires: glew-devel BuildRequires: gl2ps-devel -BuildRequires: pcre-devel +BuildRequires: pcre2-devel BuildRequires: zlib-devel BuildRequires: xz-devel -%if %{?fedora}%{!?fedora:0} >= 13 || %{?rhel}%{!?rhel:0} >= 6 -BuildRequires: libAfterImage-devel >= 1.20 -%else -BuildRequires: libjpeg-devel -BuildRequires: libpng-devel +BuildRequires: lz4-devel +BuildRequires: xxhash-devel +BuildRequires: libzstd-devel BuildRequires: libtiff-devel -%endif +BuildRequires: libpng-devel +BuildRequires: giflib-devel +BuildRequires: libjpeg-devel BuildRequires: ncurses-devel -BuildRequires: avahi-compat-libdns_sd-devel -BuildRequires: avahi-devel -BuildRequires: xmlrpc-c-devel BuildRequires: libxml2-devel BuildRequires: fftw-devel BuildRequires: gsl-devel BuildRequires: unuran-devel -BuildRequires: krb5-devel -BuildRequires: krb5-workstation -BuildRequires: openldap-devel -BuildRequires: mysql-devel -BuildRequires: unixODBC-devel -BuildRequires: mesa-libGL-devel -BuildRequires: mesa-libGLU-devel -BuildRequires: postgresql-devel -BuildRequires: python-devel -%if "%{?rhel}" == "5" -BuildRequires: python26-devel +BuildRequires: sqlite-devel +BuildRequires: libGL-devel +BuildRequires: libGLU-devel +BuildRequires: libxcrypt-devel +BuildRequires: python3-devel >= 3.9 +BuildRequires: python3-setuptools +BuildRequires: python3-numpy +%ifarch %{qt6_qtwebengine_arches} +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtwebengine-devel %endif -%if %{?fedora}%{!?fedora:0} >= 9 || %{?rhel}%{!?rhel:0} >= 6 -BuildRequires: qt4-devel -%if %{?fedora}%{!?fedora:0} >= 14 -BuildRequires: qt4-webkit-devel -%endif -%endif -BuildRequires: ruby -BuildRequires: ruby-devel BuildRequires: openssl-devel -BuildRequires: globus-gss-assist-devel -BuildRequires: globus-gsi-credential-devel -BuildRequires: globus-proxy-utils BuildRequires: libtool-ltdl-devel BuildRequires: desktop-file-utils BuildRequires: dcap-devel -BuildRequires: dpm-devel -BuildRequires: xrootd-devel +BuildRequires: xrootd-client-devel >= 1:5.0.0 BuildRequires: cfitsio-devel -BuildRequires: emacs -BuildRequires: emacs-el -BuildRequires: gcc-gfortran +BuildRequires: civetweb-devel +BuildRequires: curl-devel +%if %{davix} +# Davix version >= 0.6.4, but not between 0.6.8 and 0.7.0 +BuildRequires: davix-devel >= 0.7.1 +%endif +%if %{rrr} +BuildRequires: R-Rcpp-devel +BuildRequires: R-RInside-devel +%endif +BuildRequires: readline-devel +BuildRequires: tbb-devel >= 2020 +BuildRequires: libuuid-devel BuildRequires: graphviz-devel -%if "%{?rhel}" == "5" -BuildRequires: graphviz-gd -%endif BuildRequires: expat-devel -%if %{?fedora}%{!?fedora:0} >= 11 || %{?rhel}%{!?rhel:0} >= 6 -BuildRequires: font(liberationsans) -BuildRequires: font(liberationserif) -BuildRequires: font(liberationmono) -%else -BuildRequires: liberation-fonts +BuildRequires: pythia8-devel >= 8.1.80 +BuildRequires: flexiblas-devel +%if ! %{bundlejson} +BuildRequires: json-devel >= 3.9 %endif -# This contains a Symbol font that can be used by fontconfig -BuildRequires: urw-fonts +BuildRequires: liburing-devel +%if %{tmvasofieparser} +BuildRequires: protobuf-devel >= 3.0 +%endif +%ifnarch %{ix86} %{arm} +BuildRequires: libarrow-devel +%endif +%if %{roofit} +%if %{roofitmp} +# Required for roofit-multiprocess +# Requires new zeromq with zmq_ppoll +BuildRequires: zeromq-devel >= 4.3.5 +BuildRequires: cppzmq-devel +%endif +%endif +BuildRequires: python3-pytest +%if %{pandas} +BuildRequires: python3-pandas +%endif +BuildRequires: perl-generators +BuildRequires: gtest-devel +BuildRequires: gmock-devel +# Fonts +BuildRequires: font(freesans) +BuildRequires: font(freeserif) +BuildRequires: font(freemono) +BuildRequires: font(standardsymbolsps) +BuildRequires: font(d050000l) +BuildRequires: font(z003) +BuildRequires: font(droidsansfallback) +# With gdb installed test failures will show backtraces +BuildRequires: gdb +# Defines _jsdir +BuildRequires: web-assets-devel +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} Requires: hicolor-icon-theme +Obsoletes: emacs-%{name} < 5.34.28 +Obsoletes: emacs-%{name}-el < 5.34.28 %description The ROOT system provides a set of object oriented frameworks with all @@ -147,208 +214,368 @@ the functionality needed to handle and analyze large amounts of data in a very efficient way. Having the data defined as a set of objects, specialized storage methods are used to get direct access to the separate attributes of the selected objects, without having to touch -the bulk of the data. Included are histogramming methods in 1, 2 and 3 -dimensions, curve fitting, function evaluation, minimization, graphics -and visualization classes to allow the easy setup of an analysis -system that can query and process the data interactively or in batch -mode. +the bulk of the data. Included are histogramming methods in an +arbitrary number of dimensions, curve fitting, function evaluation, +minimization, graphics and visualization classes to allow the easy +setup of an analysis system that can query and process the data +interactively or in batch mode. -Thanks to the built in CINT C++ interpreter the command language, the -scripting, or macro, language and the programming language are all -C++. The interpreter allows for fast prototyping of the macros since -it removes the time consuming compile/link cycle. It also provides a -good environment to learn C++. If more performance is needed the -interactively developed macros can be compiled using a C++ compiler. +Thanks to the built-in C++ interpreter cling, the command, the +scripting and the programming language are all C++. The interpreter +allows for fast prototyping of the macros since it removes the, time +consuming, compile/link cycle. It also provides a good environment to +learn C++. If more performance is needed the interactively developed +macros can be compiled using a C++ compiler via a machine independent +transparent compiler interface called ACliC. The system has been designed in such a way that it can query its -databases in parallel on MPP machines or on clusters of workstations -or high-end PCs. ROOT is an open system that can be dynamically -extended by linking external libraries. This makes ROOT a premier -platform on which to build data acquisition, simulation and data -analysis systems. +databases in parallel on clusters of workstations or many-core +machines. ROOT is an open system that can be dynamically extended by +linking external libraries. This makes ROOT a premier platform on +which to build data acquisition, simulation and data analysis systems. %package icons Summary: ROOT icon collection -Group: Applications/Engineering -%if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6 BuildArch: noarch -%endif Requires: %{name}-core = %{version}-%{release} %description icons This package contains icons used by the ROOT GUI. -%package doc -Summary: Documentation for the ROOT system -Group: Applications/Engineering -%if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6 +%package font-files +Summary: ROOT font collection BuildArch: noarch -%endif -License: LGPLv2+ and GPLv2+ and BSD -Requires: %{name}-cint = %{version}-%{release} +# STIX version 0.9 only +License: OFL-1.1 +Requires: %{name}-core = %{version}-%{release} +# Package renamed +Provides: %{name}-fonts = %{version}-%{release} +Obsoletes: %{name}-fonts < 6.36.00-2 -%description doc -This package contains the automatically generated ROOT class -documentation. +%description font-files +This package contains fonts used by ROOT that are not available in Fedora. +In particular it contains STIX version 0.9 that is used by TMathText. %package tutorial Summary: ROOT tutorial scripts and test suite -Group: Applications/Engineering -%if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6 BuildArch: noarch -%endif -Requires: %{name}-cint = %{version}-%{release} +Requires: %{name} = %{version}-%{release} %description tutorial This package contains the tutorial scripts and test suite for ROOT. %package core Summary: ROOT core libraries -Group: Applications/Engineering -License: LGPLv2+ and BSD +License: LGPL-2.1-or-later AND LGPL-2.0-or-later AND ISC AND MIT AND NCSA +Requires: %{name}-font-files = %{version}-%{release} Requires: %{name}-icons = %{version}-%{release} -Requires: %{name}-graf-asimage = %{version}-%{release} +# Dynamic dependencies +Requires: %{name}-cling%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-asimage%{?_isa} = %{version}-%{release} +# Packages providing the libraries listed by "root-config --libs" +# (Only root-physics and root-multiproc are not dragged in by +# recursively resolving the dependency on root-graf-asimage +# above, so it is not that much of a bloat...) +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-postscript%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} +Requires: %{name}-physics%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +%if %{dataframe} +Requires: %{name}-tree-dataframe%{?_isa} = %{version}-%{release} +%endif +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple-utils%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} +Requires: %{name}-vecops%{?_isa} = %{version}-%{release} +# To resolve dependency in installed ROOTConfig.cmake +%if %{bundlejson} +Provides: bundled(json-devel) = 3.10.5 +%else +Requires: json-devel >= 3.9 +%endif +# Fonts Requires: xorg-x11-fonts-ISO8859-1-75dpi -%if %{?fedora}%{!?fedora:0} >= 11 || %{?rhel}%{!?rhel:0} >= 6 -Requires: font(liberationsans) -Requires: font(liberationserif) -Requires: font(liberationmono) -%else -Requires: liberation-fonts +Requires: font(freesans) +Requires: font(freeserif) +Requires: font(freemono) +Requires: font(standardsymbolsps) +Requires: font(d050000l) +Requires: font(z003) +Requires: font(droidsansfallback) +Obsoletes: %{name}-ruby < 6.00.00 +Obsoletes: %{name}-vdt < 6.10.00 +Obsoletes: %{name}-proof-pq2 < 6.16.00 +Obsoletes: %{name}-proofd < 6.16.00 +Obsoletes: %{name}-rootd < 6.16.00 +Obsoletes: %{name}-geocad < 6.18.00 +Obsoletes: %{name}-graf-qt < 6.18.00 +Obsoletes: %{name}-gui-qt < 6.18.00 +Obsoletes: %{name}-gui-qtgsi < 6.18.00 +Obsoletes: %{name}-io-hdfs < 6.18.00 +Obsoletes: %{name}-io-rfio < 6.18.00 +Obsoletes: %{name}-net-bonjour < 6.18.00 +Obsoletes: %{name}-net-globus < 6.18.00 +Obsoletes: %{name}-net-ldap < 6.18.00 +Obsoletes: %{name}-net-krb5 < 6.18.00 +Obsoletes: %{name}-table < 6.18.00 +Obsoletes: %{name}-xproof < 6.22.08-2 +Obsoletes: %{name}-memstat < 6.26.00 +Obsoletes: %{name}-montecarlo-vmc < 6.26.00 +Obsoletes: %{name}-doc < 6.26.00 +Obsoletes: %{name}-io-gfal < 6.30.00 +Obsoletes: %{name}-roofit-common < 6.30.00 +Obsoletes: %{name}-gui-qt5webdisplay < 6.36.00 +Obsoletes: %{name}-hist-draw < 6.36.00 +Obsoletes: %{name}-html < 6.36.00 +Obsoletes: %{name}-proof < 6.38.00 +Obsoletes: %{name}-proof-bench < 6.38.00 +Obsoletes: %{name}-proof-player < 6.38.00 +Obsoletes: %{name}-proof-sessionviewer < 6.38.00 +Obsoletes: %{name}-sql-mysql < 6.38.00 +Obsoletes: %{name}-sql-odbc < 6.38.00 +Obsoletes: %{name}-sql-pgsql < 6.38.00 +%if ! %{davix} +Obsoletes: %{name}-net-davix < 6.40.02-5 %endif -# This contains a Symbol font that can be used by fontconfig -Requires: urw-fonts %description core This package contains the core libraries used by ROOT: libCore, libNew, libRint and libThread. -%package cint -Summary: CINT C++ interpreter -Group: Applications/Engineering +%package multiproc +Summary: Multi-processor support for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} + +%description multiproc +This package provides ROOT's multi-processor support library: libMultiProc. + +%package cling +Summary: Cling C++ interpreter +License: (NCSA OR LGPL-2.1-only) AND (Apache-2.0 WITH LLVM-exception OR NCSA) AND BSD-2-Clause AND BSD-3-Clause AND MIT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +# Root's cling interpreter uses a particular git commit of +# llvm and clang with application specific changes. It does +# not work with the system libraries. The bundled llvm and +# clang are compiled using -fvisibility=hidden, and are not +# visible outside of the libCling module. +Provides: bundled(clang-libs) +Provides: bundled(llvm-libs) +Requires: gcc-c++ +Requires: redhat-rpm-config Obsoletes: %{name}-cint7 < 5.26.00c -License: MIT +Obsoletes: %{name}-cint < 6.00.00 +Obsoletes: %{name}-cintex < 6.00.00 +Obsoletes: %{name}-reflex < 6.00.00 -%description cint -This package contains the CINT C++ interpreter version 5. +%description cling +Cling is an interactive C++ interpreter, built on top of Clang and +LLVM compiler infrastructure. -%package reflex -Summary: Reflex dictionary generator -Group: Applications/Engineering -Requires: gccxml +%package testsupport +Summary: Unit test support library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} -%description reflex -This package contains the reflex dictionary generator for ROOT. +%description testsupport +This package contains the unit test support library for ROOT. -%ifarch %{ix86} x86_64 -# Cintex does not work on ppc -# https://savannah.cern.ch/bugs/?22003#comment16 -# ./configure only allows --enable-cintex for ix86 and x86_64 -%package cintex -Summary: Reflex to CINT dictionary converter -Group: Applications/Engineering -Requires: %{name}-python = %{version}-%{release} +%package tpython +Summary: ROOT's TPython interface +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: python3-%{name}%{?_isa} = %{version}-%{release} +# Package split (tpython from Python bindings) +Obsoletes: python3-%{name} < 6.22.00 -%description cintex -Cintex is a library that converts Reflex dictionary information to -CINT data structures used by ROOT. This package allows to interact -with CINT with any class for which a Reflex dictionary is provided. +%description tpython +This package contains ROOT's TPython interface. It makes it possible +to call Python from ROOT. + +%package -n python3-%{name} +Summary: Python extension for ROOT +%py_provides python3-%{name} +Provides: %{name}-python3 = %{version}-%{release} +Obsoletes: %{name}-python3 < 6.08.00 +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +# Package split (tpython from Python bindings) +Obsoletes: python3-%{name} < 6.22.00 +Obsoletes: python3-jsmva < 6.32.00 + +%description -n python3-%{name} +This package contains the Python extension for ROOT. It makes it +possible to use ROOT classes in Python. + +%package -n python3-root+jupyroot +Summary: ROOT Jupyter kernel +%py_provides python3-root+jupyroot +Requires: python3-%{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-core%{?_isa} = %{version}-%{release} +# notebook package was merged with JupyROOT package +Provides: %{name}-notebook = %{version}-%{release} +Obsoletes: %{name}-notebook < 6.32.00 +# Package renamed (jupyroot is now a submodule) +%py_provides python3-jupyroot +Obsoletes: python3-jupyroot < 6.40.00 +Requires: js-jsroot >= 7.11.1 +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 10 +# jupyter-notebook not available in RHEL/EPEL +# some functionality missing +Requires: jupyter-notebook +# python-metakernel not available in RHEL/EPEL +# some functionality missing +Requires: python3-ipython +Requires: python3-metakernel +Requires: python-jupyter-filesystem %endif -%package proofd -Summary: Parallel ROOT Facility - distributed, parallel computing -Group: Applications/Engineering -Requires: %{name}-net-rpdutils = %{version}-%{release} -Requires: %{name}-proof = %{version}-%{release} -Requires(preun): chkconfig -Requires(preun): initscripts -Requires(post): chkconfig -Requires(postun): initscripts +%description -n python3-root+jupyroot +The Jupyter kernel for the ROOT notebook. -%description proofd -This package contains the PROOF server. Proofd is the core daemon of -the PROOF (Parallel ROOT Facility) system for distributed parallel -computing. Installing this package on a machine makes it possible -for the machine to participate in a parallel computing farm (cluster -or via the Internet), either as a master or a slave, using a -transparent interface. +%if %{distrdf} +%package -n python3-root+distrdf +Summary: Distributed RDataFrame +%py_provides python3-root+distrdf +# Package renamed (distrdf is now a submodule) +%py_provides python3-distrdf +Obsoletes: python3-distrdf < 6.40.00 +Requires: python3-%{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-dataframe%{?_isa} = %{version}-%{release} -%package rootd -Summary: ROOT remote file server -Group: Applications/Engineering -Requires: %{name}-net-rpdutils = %{version}-%{release} -Requires(preun): chkconfig -Requires(preun): initscripts -Requires(post): chkconfig -Requires(postun): initscripts - -%description rootd -This package contains the ROOT file server. Rootd is a server for ROOT -files, serving files over the Internet. Using this daemon, you can -access files on the machine from anywhere on the Internet, using a -transparent interface. - -%package python -Summary: Python extension for ROOT -Group: Applications/Engineering - -%description python -This package contains the Python extension for ROOT. This package -provide a Python interface to ROOT, and a ROOT interface to Python. - -%if "%{?rhel}" == "5" -%package python26 -Summary: Python extension for ROOT -Group: Applications/Engineering - -%description python26 -This package contains the Python extension for ROOT. This package -provide a Python interface to ROOT, and a ROOT interface to Python. +%description -n python3-root+distrdf +A layer on top of RDataFrame to enable distributed computations. It is +a port of the previously known PyRDF python package. %endif -%package ruby -Summary: Ruby extension for ROOT -Group: Applications/Engineering -Provides: ruby(libRuby) = %{version} -Requires: ruby(abi) = %{ruby_abi} +%if %{rrr} +%package r +Summary: R interface for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: R-Rcpp-devel +Requires: R-RInside-devel -%description ruby -This package contains the Ruby extension for ROOT. The interface -goes both ways - that is, you can call ROOT functions from Ruby, and -invoke the Ruby interpreter from ROOT. +%description r +ROOT R is an interface in ROOT to call R functions using an R C++ +interface. This interface opens the possibility in ROOT to use the +very large set of mathematical and statistical tools provided by R. +With ROOT R you can perform a conversion from ROOT's C++ objects to +R's objects, transform the returned R objects into ROOT's C++ objects, +then the R functionality can be used directly for statistical studies +in ROOT. + +%package r-tools +Summary: R Tools +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-r%{?_isa} = %{version}-%{release} + +%description r-tools +This package contains a minimizer module for ROOT that uses the ROOT +R interface. +%endif %package genetic Summary: Genetic algorithms for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-tmva%{?_isa} = %{version}-%{release} %description genetic This package contains a genetic minimizer module for ROOT. %package geom Summary: Geometry library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +# Package split (geom-builder and geom-painter from geom) +Obsoletes: %{name}-geom < 6.28.00 %description geom This package contains a library for defining geometries in ROOT. +%package geom-builder +Summary: Geometry builder library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} +# Package split (geom-builder and geom-painter from geom) +Obsoletes: %{name}-geom < 6.28.00 + +%description geom-builder +This package contains a library for building geometries in ROOT. + +%package geom-checker +Summary: Geometry checker library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} + +%description geom-checker +This package contains a library for checking geometries in ROOT. + +%package geom-painter +Summary: Geometry painter library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +# Package split (geom-builder and geom-painter from geom) +Obsoletes: %{name}-geom < 6.28.00 + +%description geom-painter +This package contains a library for drawing geometries in ROOT. + %package gdml Summary: GDML import/export for ROOT geometries -Group: Applications/Engineering -Requires: %{name}-python = %{version}-%{release} +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io-xml%{?_isa} = %{version}-%{release} %description gdml This package contains an import/export module for ROOT geometries. %package graf Summary: 2D graphics library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} %description graf This package contains the 2-dimensional graphics library for ROOT. %package graf-asimage Summary: AfterImage graphics renderer for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-postscript%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} %description graf-asimage This package contains the AfterImage renderer for ROOT, which allows @@ -357,7 +584,11 @@ TIFF. %package graf-fitsio Summary: ROOT interface for the Flexible Image Transport System (FITS) -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} %description graf-fitsio This package contains a library for using the Flexible Image Transport @@ -365,39 +596,39 @@ System (FITS) data format in root. %package graf-gpad Summary: Canvas and pad library for ROOT -Group: Applications/Engineering -Requires: %{name}-graf-postscript = %{version}-%{release} +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +# Dynamic dependency +Requires: %{name}-graf-postscript%{?_isa} = %{version}-%{release} %description graf-gpad This package contains a library for canvas and pad manipulations. %package graf-gviz Summary: Graphviz 2D library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} %description graf-gviz This package contains the 2-dimensional graphviz library for ROOT. %package graf-postscript Summary: Postscript/PDF renderer library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} %description graf-postscript This package contains a library for ROOT, which allows rendering postscript and PDF output. -%if %{?fedora}%{!?fedora:0} >= 9 || %{?rhel}%{!?rhel:0} >= 6 -%package graf-qt -Summary: Qt renderer for ROOT -Group: Applications/Engineering - -%description graf-qt -This package contains the Qt renderer for ROOT. -%endif - %package graf-x11 Summary: X window system renderer for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} %description graf-x11 This package contains the X11 renderer for ROOT, which allows using an @@ -405,22 +636,59 @@ X display for showing graphics. %package graf3d Summary: Basic 3D shapes library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} %description graf3d This library contains the basic 3D shapes and classes for ROOT. For a more full-blown geometry library, see the root-geom package. +%package graf3d-csg +Summary: Constructive solid geometry +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description graf3d-csg +This library is used to generate composite shapes. + %package graf3d-eve Summary: Event display library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d-gl%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d-glad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-montecarlo-eg%{?_isa} = %{version}-%{release} +Requires: %{name}-physics%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} %description graf3d-eve This package contains a library for defining event displays in ROOT. %package graf3d-gl Summary: GL renderer for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-asimage%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d-csg%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d-glad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} %description graf3d-gl This package contains the GL renderer for ROOT. This library provides @@ -428,16 +696,32 @@ This package contains the GL renderer for ROOT. This library provides rendering of histograms, and similar. Included is also a high quality 3D viewer for ROOT defined geometries. +%package graf3d-glad +Summary: OpenGL loader library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description graf3d-glad +This package contains an OpenGL loader library for ROOT generated by +the Glad tool (https://github.com/Dav1dde/glad). + %package graf3d-gviz3d Summary: Graphviz 3D library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d-gl%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} %description graf3d-gviz3d This package contains the 3-dimensional graphviz library for ROOT. %package graf3d-x3d Summary: X 3D renderer for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} %description graf3d-x3d This package contains the X 3D renderer for ROOT. This library provides @@ -446,16 +730,43 @@ a low quality 3D viewer for ROOT defined geometries. %package gui Summary: GUI library for ROOT -Group: Applications/Engineering -Requires: %{name}-graf-x11 = %{version}-%{release} -Requires: %{name}-gui-ged = %{version}-%{release} +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple-browse%{?_isa} = %{version}-%{release} +# Dynamic dependencies +Requires: %{name}-graf-x11%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} +# Package split (gui-html from gui) +Obsoletes: %{name}-gui < 6.14.00 %description gui This package contains a library for defining graphical user interfaces. +%package gui-html +Summary: HTML GUI library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} +# Package split (gui-html from gui) +Obsoletes: %{name}-gui < 6.14.00 + +%description gui-html +This package contains a library for defining HTML graphical user interfaces. + %package gui-fitpanel Summary: GUI element for fits in ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} %description gui-fitpanel This package contains a library to show a pop-up dialog when fitting @@ -463,32 +774,41 @@ various kinds of data. %package gui-ged Summary: GUI element for editing various ROOT objects -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +# Dynamic dependency +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} %description gui-ged This package contains a library to show a pop-up window for editing various ROOT objects. -%package guibuilder +%package gui-builder Summary: GUI editor library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +# Package renamed +Provides: %{name}-guibuilder = %{version}-%{release} +Provides: %{name}-guibuilder%{?_isa} = %{version}-%{release} +Obsoletes: %{name}-guibuilder < 6.14.00 -%description guibuilder +%description gui-builder This package contains a library for editing graphical user interfaces in ROOT. -%if %{?fedora}%{!?fedora:0} >= 9 || %{?rhel}%{!?rhel:0} >= 6 -%package gui-qt -Summary: Qt GUI for ROOT -Group: Applications/Engineering - -%description gui-qt -This package contains the Qt GUI for ROOT. -%endif - %package gui-recorder Summary: Interface for recording and replaying events in ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} %description gui-recorder This library provides interface for recording and replaying events in ROOT. @@ -498,9 +818,20 @@ Recorded events are: All the recorded events from one session are stored in one TFile and can be replayed again anytime. +%package gui-treemap +Summary: GUI element for tree maps in ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} + +%description gui-treemap +This package contains a library to show tree maps in the ROOT GUI. + %package hbook Summary: Hbook library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} %description hbook This package contains the Hbook library for ROOT, allowing you to @@ -508,73 +839,66 @@ access legacy Hbook files (NTuples and Histograms from PAW). %package hist Summary: Histogram library for ROOT -Group: Applications/Engineering -Requires: %{name}-hist-painter = %{version}-%{release} +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +# Dynamic dependency +Requires: %{name}-hist-painter%{?_isa} = %{version}-%{release} %description hist This package contains a library for histogramming in ROOT. %package hist-painter Summary: Histogram painter plugin for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} %description hist-painter This package contains a painter of histograms for ROOT. %package spectrum Summary: Spectra analysis library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} %description spectrum This package contains the Spectrum library for ROOT. %package spectrum-painter Summary: Spectrum painter plugin for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} %description spectrum-painter This package contains a painter of spectra for ROOT. -%package hist-factory -Summary: RooFit PDFs from ROOT histograms -Group: Applications/Engineering - -%description hist-factory -Create RooFit probability density functions from ROOT histograms. - -%package html -Summary: HTML documentation generator for ROOT -Group: Applications/Engineering -Requires: graphviz - -%description html -This package contains classes to automatically extract documentation -from marked up sources. - %package io Summary: Input/output of ROOT objects -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: liburing-devel %description io This package provides I/O routines for ROOT objects. %package io-dcache Summary: dCache input/output library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} %description io-dcache This package contains the dCache extension for ROOT. -%package io-rfio -Summary: Remote File input/output library for ROOT -Group: Applications/Engineering - -%description io-rfio -This package contains the Remote File IO extension for ROOT. - %package io-sql Summary: SQL input/output library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} %description io-sql This package contains the SQL extension for ROOT, that allows @@ -583,14 +907,28 @@ TFile interface. %package io-xml Summary: XML reader library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +# Package split (io-xmlparser from io-xml) +Obsoletes: %{name}-io-xml < 6.14.00 %description io-xml This package contains the XML reader library for ROOT. +%package io-xmlparser +Summary: XML parser library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +# Package split (io-xmlparser from io-xml) +Obsoletes: %{name}-io-xml < 6.14.00 + +%description io-xmlparser +This package contains the XML parser library for ROOT. + %package foam Summary: A Compact Version of the Cellular Event Generator -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} %description foam The general-purpose self-adapting Monte Carlo (MC) event @@ -601,8 +939,8 @@ easier to use for the average user. %package fftw Summary: FFTW library for ROOT -Group: Applications/Engineering -License: GPLv2+ +License: GPL-2.0-or-later +Requires: %{name}-core%{?_isa} = %{version}-%{release} %description fftw This package contains the Fast Fourier Transform extension for ROOT. @@ -610,7 +948,9 @@ It uses the very fast fftw (version 3) library. %package fumili Summary: Fumili library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} %description fumili This package contains the fumili library for ROOT. This provides an @@ -618,7 +958,7 @@ alternative fitting algorithm for ROOT. %package genvector Summary: Generalized vector library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} %description genvector This package contains the Genvector library for ROOT. This provides @@ -626,16 +966,19 @@ a generalized vector library. %package mathcore Summary: Core mathematics library for ROOT -Group: Applications/Engineering -Requires: %{name}-minuit = %{version}-%{release} +Requires: %{name}-core%{?_isa} = %{version}-%{release} +# Dynamic dependencies +Requires: %{name}-mathmore%{?_isa} = %{version}-%{release} +Requires: %{name}-minuit2%{?_isa} = %{version}-%{release} %description mathcore This package contains the MathCore library for ROOT. %package mathmore Summary: GSL interface library for ROOT -Group: Applications/Engineering -License: GPLv2+ +License: GPL-2.0-or-later +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} %description mathmore This package contains the MathMore library for ROOT. This provides @@ -645,14 +988,18 @@ is licensed under GPLv2+ due to its use of GSL. %package matrix Summary: Matrix library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} %description matrix This package contains the Matrix library for ROOT. %package minuit Summary: Minuit library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} %description minuit This package contains the MINUIT library for ROOT. This provides a @@ -660,7 +1007,9 @@ fitting algorithm for ROOT. %package minuit2 Summary: Minuit version 2 library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} %description minuit2 This package contains the MINUIT version 2 library for ROOT. This @@ -668,7 +1017,14 @@ provides an fitting algorithm for ROOT. %package mlp Summary: Multi-layer perceptron extension for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} %description mlp This package contains the mlp library for ROOT. This library provides @@ -676,14 +1032,17 @@ a multi-layer perceptron neural network package for ROOT. %package physics Summary: Physics library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} %description physics This package contains the physics library for ROOT. %package quadp Summary: QuadP library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} %description quadp This package contains the QuadP library for ROOT. This provides the a @@ -693,14 +1052,18 @@ subject to linear constraints. %package smatrix Summary: Sparse matrix library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} %description smatrix This package contains the Smatrix library for ROOT. %package splot Summary: Splot library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} %description splot A common method used in High Energy Physics to perform measurements @@ -732,8 +1095,10 @@ discriminating variables. %package unuran Summary: Random number generator library -Group: Applications/Engineering -License: GPLv2+ +License: GPL-2.0-or-later +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} %description unuran Contains universal (also called automatic or black-box) algorithms @@ -750,164 +1115,134 @@ init-program computes all tables and constants necessary for the random variate generation. The sample program can then generate variates from the desired distribution. -%package memstat -Summary: Memory statistics tool for use with ROOT -Group: Applications/Engineering +%package vecops +Summary: Vector operation extension for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +# Library split (tree-dataframe and vecops from tree-player) +Obsoletes: %{name}-tree-player < 6.14.00 -%description memstat -This package contains the memory statistics tool for debugging memory -leaks and such. - -%package table -Summary: Table library for ROOT -Group: Applications/Engineering - -%description table -This package contains the Table library for ROOT. +%description vecops +This package contains a vector operation extension for ROOT. %package montecarlo-eg Summary: Event generator library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} %description montecarlo-eg This package contains an event generator library for ROOT. -%package montecarlo-vmc -Summary: Virtual Monte-Carlo (simulation) library for ROOT -Group: Applications/Engineering +%package montecarlo-pythia8 +Summary: Pythia version 8 plugin for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-montecarlo-eg%{?_isa} = %{version}-%{release} -%description montecarlo-vmc -This package contains the VMC library for ROOT. +%description montecarlo-pythia8 +This package contains the Pythia version 8 plug-in for ROOT. This +package provides the ROOT user with transparent interface to the Pythia +(version 8) event generators for hadronic interactions. If the term +"hadronic" does not ring any bells, this package is not for you. %package net Summary: Net library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} %description net This package contains the ROOT networking library. %package net-rpdutils -Summary: Authentication utilities used by rootd and proofd -Group: Applications/Engineering +Summary: Authentication utilities used by rootd +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} %description net-rpdutils -This package contains authentication utilities used by rootd and proofd. - -%package net-bonjour -Summary: Bonjour extension for ROOT -Group: Applications/Engineering - -%description net-bonjour -This package contains a bonjour extension for ROOT. +This package contains authentication utilities used by rootd. %package net-auth Summary: Authentication extension for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} %description net-auth This package contains the basic authentication algorithms used by ROOT. -%package net-globus -Summary: Globus extension for ROOT -Group: Applications/Engineering -Requires: globus-proxy-utils +%package net-curl +Summary: Curl extension for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} -%description net-globus -This package contains the Globus extension for ROOT, that allows -authentication and authorization against Globus. +%description net-curl +This package contains the curl extension for TOOT. It provides access +to http based storage e.g. S3. -%package net-krb5 -Summary: Kerberos (version 5) extension for ROOT -Group: Applications/Engineering -Requires: krb5-workstation +%if %{davix} +%package net-davix +Summary: Davix extension for ROOT +Requires: davix-libs%{?_isa} >= 0.7.1 +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} -%description net-krb5 -This package contains the Kerberos (version 5) extension for ROOT, that -allows authentication and authorization using Kerberos tokens. +%description net-davix +This package contains the davix extension for ROOT, that provides +access to http based storage such as webdav and S3. +%endif -%package net-ldap -Summary: LDAP extension for ROOT -Group: Applications/Engineering +%package net-http +Summary: HTTP server extension for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: js-jsroot >= 7.11.1 +# Library split (net-httpsniff from net-http) +Obsoletes: %{name}-net-http < 6.14.00 -%description net-ldap -This package contains the LDAP extension for ROOT. This gives you -access to LDAP directories via ROOT. +%description net-http +This package contains the HTTP server extension for ROOT. It provides +an http interface to arbitrary ROOT applications. + +%package net-httpsniff +Summary: HTTP sniffer extension for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-io-xml%{?_isa} = %{version}-%{release} +Requires: %{name}-net-http%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +# Library split (net-httpsniff from net-http) +Obsoletes: %{name}-net-http < 6.14.00 + +%description net-httpsniff +This package contains the HTTP sniffer extension for ROOT. %package netx Summary: NetX extension for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} %description netx This package contains the NetX extension for ROOT, i.e. a client for -the xrootd server. - -%package proof -Summary: PROOF extension for ROOT -Group: Applications/Engineering - -%description proof -This package contains the proof extension for ROOT. This provides a -client to use in a PROOF environment. - -%package proof-bench -Summary: PROOF benchmarking -Group: Applications/Engineering - -%description proof-bench -This package contains the steering class for PROOF benchmarks. - -%package proof-pq2 -Summary: PROOF Quick Query (pq2) -Group: Applications/Engineering - -%description proof-pq2 -Shell-based interface to the PROOF dataset handling. - -%package proof-sessionviewer -Summary: GUI to browse an interactive PROOF session -Group: Applications/Engineering - -%description proof-sessionviewer -This package contains a library for browsing an interactive PROOF -session in ROOT. - -%package clarens -Summary: Clarens extension for ROOT -Group: Applications/Engineering - -%description clarens -This package contains the Clarens extension for ROOT, for use in a -GRID enabled analysis environment. - -The Clarens Grid-Enabled Web Services Framework is an open source, -secure, high-performance "portal" for ubiquitous access to data and -computational resources provided by computing grids. - -%package peac -Summary: PEAC extension for ROOT - run-time libraries -Group: Applications/Engineering - -%description peac -This package contains the PEAC (Proof Enabled Analysis Center) -extension for ROOT. - -PEAC is an interactive distributed analysis framework that uses -Clarens as a "glue" protocol to advertise and communicate amongst -SAM, Global Manager (GM), Local Manager (LM), DCache, and PROOF -services. - -%package xproof -Summary: XPROOF extension for ROOT -Group: Applications/Engineering - -%description xproof -This package contains the xproof extension for ROOT. This provides a -client to be used in a PROOF environment. +the xrootd server. Only the new (NetXNG) version is provided. +%if %{roofit} %package roofit -Summary: ROOT extension for modeling expected distributions -Group: Applications/Engineering -License: BSD +Summary: ROOT extension for modeling expected distributions - toolkit +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +# Package split / Library split (from roofit) +Obsoletes: %{name}-roofit < 6.20.00 %description roofit The RooFit packages provide a toolkit for modeling the expected @@ -922,39 +1257,240 @@ primarily targeted to the high-energy physicists using the ROOT analysis environment, but the general nature of the package make it suitable for adoption in different disciplines as well. -%package sql-mysql -Summary: MySQL client plugin for ROOT -Group: Applications/Engineering +This package contains the RooFit toolkit classes. -%description sql-mysql -This package contains the MySQL plugin for ROOT. This plugin -provides a thin client (interface) to MySQL servers. Using this -client, one can obtain information from a MySQL database into the -ROOT environment. +%package roofit-core +Summary: ROOT extension for modeling expected distributions - core +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-foam%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-minuit2%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} +%if %{roofitmp} +Requires: %{name}-roofit-multiprocess%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-zmq%{?_isa} = %{version}-%{release} +%endif +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +# Package split / Library split (from roofit) +Obsoletes: %{name}-roofit < 6.20.00 +# Dataframe helpers are now part of core +Obsoletes: %{name}-roofit-dataframe-helpers < 6.34.00 -%package sql-odbc -Summary: ODBC plugin for ROOT -Group: Applications/Engineering +%description roofit-core +The RooFit packages provide a toolkit for modeling the expected +distribution of events in a physics analysis. Models can be used to +perform likelihood fits, produce plots, and generate "toy Monte +Carlo" samples for various studies. The RooFit tools are integrated +with the object-oriented and interactive ROOT graphical environment. -%description sql-odbc -This package contains the ODBC (Open DataBase Connectivity) plugin -for ROOT, that allows transparent access to any kind of database that -supports the ODBC protocol. +RooFit has been developed for the BaBar collaboration, a high energy +physics experiment at the Stanford Linear Accelerator Center, and is +primarily targeted to the high-energy physicists using the ROOT +analysis environment, but the general nature of the package make it +suitable for adoption in different disciplines as well. -%package sql-pgsql -Summary: PostgreSQL client plugin for ROOT -Group: Applications/Engineering +This package contains the core RooFit classes. -%description sql-pgsql -This package contains the PostGreSQL plugin for ROOT. This plugin -provides a thin client (interface) to PostGreSQL servers. Using this -client, one can obtain information from a PostGreSQL database into the +%package roofit-more +Summary: ROOT extension for modeling expected distributions - more +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-mathmore%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +# Package split / Library split (from roofit) +Obsoletes: %{name}-roofit < 6.20.00 + +%description roofit-more +The RooFit packages provide a toolkit for modeling the expected +distribution of events in a physics analysis. Models can be used to +perform likelihood fits, produce plots, and generate "toy Monte +Carlo" samples for various studies. The RooFit tools are integrated +with the object-oriented and interactive ROOT graphical environment. + +RooFit has been developed for the BaBar collaboration, a high energy +physics experiment at the Stanford Linear Accelerator Center, and is +primarily targeted to the high-energy physicists using the ROOT +analysis environment, but the general nature of the package make it +suitable for adoption in different disciplines as well. + +This package contains RooFit classes that use the mathmore library. + +%package roofit-batchcompute +Summary: Optimized computation functions for PDFs +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description roofit-batchcompute +While fitting, a significant amount of time and processing power is +spent on computing the probability function for every event and PDF +involved in the fitting model. To speed up this process, roofit can +use the computation functions provided in this library. The functions +provided here process whole data arrays (batches) instead of a single +event at a time, as in the legacy evaluate() function in roofit. In +addition, the code is written in a manner that allows for compiler +optimizations, notably auto-vectorization. This library is compiled +multiple times for different vector instruction set architectures and +the optimal code is executed during runtime, as a result of an +automatic hardware detection mechanism that this library contains. + +%package roofit-hs3 +Summary: RooFit HS3 +License: BSD-2-Clause +# roofit-jsoninterface was merged with roofit-hs3 +Provides: %{name}-roofit-jsoninterface = %{version}-%{release} +Obsoletes: %{name}-roofit-jsoninterface < 6.40.04 +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} + +%description roofit-hs3 +When using RooFit, statistical models can be conveniently handled and +stored as a RooWorkspace. However, for the sake of interoperability +with other statistical frameworks, and also ease of manipulation, it +may be useful to store statistical models in text form. This library +sets out to achieve exactly that, exporting to and importing from JSON. + +%package roofit-codegen +Summary: Code generation support for RooFit +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} + +%description roofit-codegen +This package contains a library providing classes that implement +code generation support for RooFit. + +%if %{roofitmp} +%package roofit-multiprocess +Summary: Multi-process support for RooFit +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-zmq%{?_isa} = %{version}-%{release} + +%description roofit-multiprocess +This package contains a library providing classes that implement +mult-process support for RooFit. + +%package roofit-zmq +Summary: ZeroMQ interface library for RooFit +License: BSD-2-Clause + +%description roofit-zmq +This package contains a helper library used by RooFit::MultiProcess to +interface to the ZeroMQ library. +%endif + +%package roostats +Summary: Statistical tools built on top of RooFit +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-minuit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +# Package split / Library split (from roofit) +Obsoletes: %{name}-roofit < 6.20.00 + +%description roostats +RooStats is a package containing statistical tools built on top of +RooFit. + +%package hist-factory +Summary: RooFit PDFs from ROOT histograms +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-io-xmlparser%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-roostats%{?_isa} = %{version}-%{release} + +%description hist-factory +Create RooFit probability density functions from ROOT histograms. + +%package xroofit +Summary: Extra tools for RooFit projects +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-fitpanel%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-hs3%{?_isa} = %{version}-%{release} +Requires: %{name}-roostats%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} + +%description xroofit +The RooFit packages provide a toolkit for modeling the expected +distribution of events in a physics analysis. Models can be used to +perform likelihood fits, produce plots, and generate "toy Monte +Carlo" samples for various studies. The RooFit tools are integrated +with the object-oriented and interactive ROOT graphical environment. + +RooFit has been developed for the BaBar collaboration, a high energy +physics experiment at the Stanford Linear Accelerator Center, and is +primarily targeted to the high-energy physicists using the ROOT +analysis environment, but the general nature of the package make it +suitable for adoption in different disciplines as well. + +This package contains extra tools for RooFit projects. +%endif + +%package sql-sqlite +Summary: Sqlite client plugin for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} + +%description sql-sqlite +This package contains the sqlite plugin for ROOT. This plugin +provides a thin client (interface) to sqlite servers. Using this +client, one can obtain information from a sqlite database into the ROOT environment. %package tmva Summary: Toolkit for multivariate data analysis -Group: Applications/Engineering -License: BSD +License: BSD-3-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-io-xml%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-minuit%{?_isa} = %{version}-%{release} +Requires: %{name}-mlp%{?_isa} = %{version}-%{release} +Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} +# Library split (tmva-utils from tmva) +Obsoletes: %{name}-tmva < 6.28.08 %description tmva The Toolkit for Multivariate Analysis (TMVA) provides a @@ -976,933 +1512,1481 @@ evaluation). In addition all these methods can be tested in parallel, and hence their performance on a particular data set may easily be compared. +%if %{dataframe} +%package tmva-utils +Summary: Toolkit for multivariate data analysis (dataframe utilities) +License: BSD-3-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +# Library split (tmva-utils from tmva) +Obsoletes: %{name}-tmva < 6.28.08 +# Library split (tree-ml from tmva-utils) +Obsoletes: %{name}-tmva-utils < 6.40.00 + +%description tmva-utils +TMVA utilities using dataframe. +%endif + +%package tmva-python +Summary: Toolkit for multivariate data analysis (Python) +License: BSD-3-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-tmva%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: python3-numpy +# Package split (tmva-sofie-parser-python from tmva-python) +Obsoletes: %{name}-tmva-python < 6.40.00 + +%description tmva-python +Python integration with TMVA. + +%if %{rrr} +%package tmva-r +Summary: Toolkit for multivariate data analysis (R) +License: BSD-3-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-r%{?_isa} = %{version}-%{release} +Requires: %{name}-tmva%{?_isa} = %{version}-%{release} + +%description tmva-r +R integration with TMVA. +%endif + +%package tmva-sofie +Summary: ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit) +License: BSD-3-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} + +%description tmva-sofie +ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit) +generates C++ functions easily invokable for the fast inference of +trained neural network models. It takes ONNX model files as inputs and +produces C++ header files that can be included and utilized in a +"plug-and-go" style. + +%if %{tmvasofieparser} +%package tmva-sofie-parser +Summary: ROOT/TMVA SOFIE Parsers +License: BSD-3-Clause AND MIT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release} + +%description tmva-sofie-parser +Parsers for ROOT/TMVA SOFIE + +%package tmva-sofie-parser-python +Summary: ROOT/TMVA SOFIE Parsers for Python +License: BSD-3-Clause AND MIT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release} +Requires: python3-numpy +# Package split (tmva-sofie-parser-python from tmva-python) +Obsoletes: %{name}-tmva-python < 6.40.00 + +%description tmva-sofie-parser-python +Parsers for ROOT/TMVA SOFIE for Python +%endif + +%package tmva-gui +Summary: Toolkit for multivariate data analysis GUI +License: BSD-3-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-io-xml%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-tmva%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-viewer%{?_isa} = %{version}-%{release} + +%description tmva-gui +GUI for the Toolkit for Multivariate Analysis (TMVA) + %package tree Summary: Tree library for ROOT -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} %description tree This package contains the Tree library for ROOT. +%if %{dataframe} +%package tree-dataframe +Summary: A high level interface to ROOT trees +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} +Requires: %{name}-vecops%{?_isa} = %{version}-%{release} +# Library split (tree-dataframe and vecops from tree-player) +Obsoletes: %{name}-tree-player < 6.14.00 + +%description tree-dataframe +This package contains a high level interface to ROOT trees. + +%package tree-ml +Summary: ROOT dataframe python +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-vecops%{?_isa} = %{version}-%{release} +# Library split (tree-ml from tmva-utils) +Obsoletes: %{name}-tmva-utils < 6.40.00 + +%description tree-ml +This package contains ... +%endif + %package tree-player Summary: Library to loop over a ROOT tree -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +# Library split (tree-dataframe and vecops from tree-player) +Obsoletes: %{name}-tree-player < 6.14.00 %description tree-player This package contains a plugin to loop over a ROOT tree. %package tree-viewer Summary: GUI to browse a ROOT tree -Group: Applications/Engineering +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} %description tree-viewer This package contains a plugin for browsing a ROOT tree in ROOT. -%package -n emacs-%{name} -Summary: Compiled elisp files to run root under GNU Emacs -Group: Applications/Engineering -%if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6 +%package tree-webviewer +Summary: ROOT tree web viewer library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} + +%description tree-webviewer +This package contains a plugin for browsing a ROOT tree in a web GUI. + +%package unfold +Summary: Distribution unfolding +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io-xmlparser%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} + +%description unfold +An algorithm to unfold distributions from detector to truth level. + +%package cli +Summary: ROOT command line utilities BuildArch: noarch -%endif -Requires: %{name} = %{version}-%{release} -%if "%{?rhel}" == "5" -Requires: emacs >= %{emacs_version} -%else -Requires: emacs(bin) >= %{emacs_version} +Requires: python3-%{name} = %{version}-%{release} + +%description cli +The ROOT command line utilities is a set of scripts for common tasks +written in python. + +%package gui-webdisplay +Summary: Web display for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} +Requires: %{name}-net-http%{?_isa} = %{version}-%{release} + +%description gui-webdisplay +This package contains a web display extension for ROOT. + +%ifarch %{qt6_qtwebengine_arches} +%package gui-qt6webdisplay +Summary: Qt6 Web display +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-net-http%{?_isa} = %{version}-%{release} + +%description gui-qt6webdisplay +This package contains a Qt6 web display extension for ROOT. %endif -%description -n emacs-%{name} -emacs-root is an add-on package for GNU Emacs. It provides integration -with ROOT. +%package gui-webgui6 +Summary: Web based GUI for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-net-http%{?_isa} = %{version}-%{release} -%package -n emacs-%{name}-el -Summary: Elisp source files for root under GNU Emacs -Group: Applications/Engineering -%if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6 -BuildArch: noarch +%description gui-webgui6 +This package provides a Web based GUI for ROOT. + +%package gui-browsable +Summary: ROOT GUI browsable providers +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-treemap%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple-browse%{?_isa} = %{version}-%{release} +# Package split (gui-browsable-v7 from gui-browsable) +Obsoletes: %{name}-gui-browsable < 6.32.06 + +%description gui-browsable +This package contains ROOT GUI browsable providers. + +%package gui-browserv7 +Summary: ROOT file browser and browser widgets +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-geom-webviewer%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webgui6%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-webviewer%{?_isa} = %{version}-%{release} +# Package split (gui-browserv7-v7 from gui-browserv7) +Obsoletes: %{name}-gui-browserv7 < 6.32.06 + +%description gui-browserv7 +This package contains the ROOT file browser (RBrowser) and browser widgets. + +%package geom-webviewer +Summary: Geometry web viewer library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-geom-painter%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d-csg%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} + +%description geom-webviewer +This package contains a library for viewing geometries in a web GUI. + +%package tree-ntuple +Summary: The new ROOT n-tuple class +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} + +%description tree-ntuple +This package contains the new ROOT n-tuple class (RNTuple). + +%package tree-ntuple-browse +Summary: N-Tuple browsing library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-treemap%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple-utils%{?_isa} = %{version}-%{release} + +%description tree-ntuple-browse +This package contains a library for browsing n-tuples. + +%package tree-ntuple-utils +Summary: Ntuple utility library +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} + +%description tree-ntuple-utils +This package contains utility functions for ntuples. + +%if %{root7} +%package graf-gpadv7 +Summary: Canvas and pad library for ROOT (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description graf-gpadv7 +This package contains a library for canvas and pad manipulations. + +%package graf-primitives +Summary: Graphics primitives (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} + +%description graf-primitives +This package contains graphics primitives for ROOT 7 + +%package graf3d-eve7 +Summary: Event display library for ROOT (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-geom-webviewer%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d-csg%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-montecarlo-eg%{?_isa} = %{version}-%{release} +Requires: %{name}-net-http%{?_isa} = %{version}-%{release} +Requires: %{name}-physics%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} + +%description graf3d-eve7 +This package contains a library for defining event displays in ROOT 7. + +%package gui-browsable-v7 +Summary: Additional ROOT GUI browsable providers (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-treemap%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple-browse%{?_isa} = %{version}-%{release} +# Package split (gui-browsable-v7 from gui-browsable) +Obsoletes: %{name}-gui-browsable < 6.32.06 + +%description gui-browsable-v7 +This package contains additional ROOT GUI browsable providers for ROOT 7. + +%package gui-browserv7-v7 +Summary: Additional ROOT browser widgets (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-browserv7%{?_isa} = %{version}-%{release} +# Package split (gui-browserv7-v7 from gui-browserv7) +Obsoletes: %{name}-gui-browserv7 < 6.32.06 + +%description gui-browserv7-v7 +This package contains additional ROOT browser widgets for ROOT 7. + +%package gui-canvaspainter +Summary: Canvas painter (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} + +%description gui-canvaspainter +This package contains a canvas painter extension for ROOT 7 + +%package gui-fitpanelv7 +Summary: GUI element for fits in ROOT (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} + +%description gui-fitpanelv7 +This package contains a library to show a pop-up dialog when fitting +various kinds of data. + +%package histv7 +Summary: Conversion functions from RHist to THist +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description histv7 +This package contains converters from the "old" THn* Hist library and +the "new" histv7 package. + +%package histv7util +Summary: Histogram library for ROOT 7 +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} + +%description histv7util +This package contains a library for histogramming in ROOT 7. %endif -Requires: emacs-%{name} = %{version}-%{release} - -%description -n emacs-%{name}-el -This package contains the elisp source files for root under GNU Emacs. You -do not need to install this package to run root. Install the emacs-root -package to use root with GNU Emacs. %prep -%setup -q -if pkg-config --max-version 2.1.2 ftgl ; then -%patch0 -p1 -fi -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 +%setup -q -a 1 -a 9 -find . '(' -name '*.cxx' -o -name '*.cpp' -o -name '*.C' -o -name '*.c' -o \ - -name '*.h' -o -name '*.hh' -o -name '*.hi' -o -name '*.py' -o \ - -name '*.html' -o -name '*.js' -o -name '*.css' -o \ - -name '*.xpm' -o -name '*.gif' -o -name '*.png' \ - ')' -exec chmod 644 {} ';' +%patch -P0 -p1 +%patch -P1 -p1 +%patch -P2 -p1 +%patch -P3 -p1 +%patch -P4 -p1 +%patch -P5 -p1 +%patch -P6 -p1 +%patch -P7 -p1 +%patch -P8 -p1 +%patch -P9 -p1 +%patch -P10 -p1 +%patch -P11 -p1 +%patch -P12 -p1 +%patch -P13 -p1 +%patch -P14 -p1 -chmod 644 cint/cint/include/makehpib \ - cint/cint/stl/_climits \ - test/DrawTest.sh \ - test/dt_RunDrawTest.sh \ - test/dt_MakeFiles.sh \ - test/ProofBench/make_event_par.sh \ - test/RootIDE/Makefile \ - tutorials/fitsio/sample1.fits - -# Badly named file - not python - aborts python byte compilation -mv tutorials/pyroot/fit1_py.py tutorials/pyroot/fit1_py.txt -sed s/fit1_py.py/fit1_py.txt/ -i tutorials/pyroot/fit1.py - -# Remove embedded sources in order to be sure they are not used -# * afterimage -%if %{?fedora}%{!?fedora:0} >= 13 || %{?rhel}%{!?rhel:0} >= 6 -rm -rf graf2d/asimage/src/libAfterImage -%else -rm -rf graf2d/asimage/src/libAfterImage/libjpeg -rm -rf graf2d/asimage/src/libAfterImage/libpng -rm -rf graf2d/asimage/src/libAfterImage/zlib -sed '/zlib\/zlib.h/d' -i graf2d/asimage/src/libAfterImage/.depend -%endif +# Remove bundled sources in order to be sure they are not used # * ftgl rm -rf graf3d/ftgl/src graf3d/ftgl/inc -# * freetype -rm -rf graf2d/freetype/src -# * glew -rm -rf graf3d/glew/src graf3d/glew/inc -# * pcre -rm -rf core/pcre/src -# * zlib -rm -rf core/zip/src/[a-z]* core/zip/inc/[a-z]* -# * lzma -rm -rf core/lzma/src/*.tar.gz -# * gl2ps -rm graf3d/gl/src/gl2ps.cxx graf3d/gl/inc/gl2ps.h -sed 's/^GLLIBS *:= .* $(OPENGLLIB)/& -lgl2ps/' -i graf3d/gl/Module.mk -# * unuran -rm -rf math/unuran/src/*.tar.gz -# * xrootd -rm -rf net/xrootd/src - -# Remove unsupported man page macros -sed -e '/^\.UR/d' -e '/^\.UE/d' -i man/man1/* - -# Make images local -sed 's!http://root.cern.ch/drupal/sites/all/themes/newsflash/images/blue/!!' \ - -i etc/html/ROOT.css -sed 's!http://root.cern.ch/drupal/sites/all/themes/newsflash/images/!!' \ - -i etc/html/ROOT.css -sed 's!http://root.cern.ch/drupal/sites/default/files/!!' \ - -i etc/html/header.html -install -p -m 644 %{SOURCE3} %{SOURCE4} %{SOURCE5} etc/html -sed '/CopyFileFromEtcDir("ROOT.css");/a\ - CopyFileFromEtcDir("info.png");\ - CopyFileFromEtcDir("root-banner.png");\ - CopyFileFromEtcDir("rootdrawing-logo.png");' -i html/src/THtml.cxx - -# Rename canvases to avoid name conflicts during doc generation -sed s/c1/c1c/g -i tutorials/graphics/earth.C -sed s/c3/c3c/g -i tutorials/graphs/multipalette.C -sed s/c1/c1simp/g -i tutorials/hsimple.C - -%if "%{?rhel}" == "5" -# Build PyROOT for python 2.6 -cp -pr bindings/pyroot bindings/pyroot26 -sed 's/python /python26 /' -i bindings/pyroot26/Module.mk +# * nlohmann +%if ! %{bundlejson} +rm builtins/nlohmann/json.hpp %endif +# * pcre +rm builtins/pcre/pcre-*.tar.bz2 +# * xxhash +rm builtins/xxhash/xxhash.c builtins/xxhash/xxhash.h +# * unuran +rm math/unuran/src/*.tar.gz +# * civetweb +rm -rf net/http/civetweb +# * x11 extension headers +rm -rf graf2d/x11/inc/X11 +# * jsroot +rm -rf js/[^f]* js/files/draw.htm js/files/online.htm + +# Additional documentation +install -p -m 644 %{SOURCE7} \ + bindings/pyroot/pythonizations/python/ROOT/_jupyroot %build -unset QTDIR -unset QTLIB -unset QTINC -./configure --prefix=%{_prefix} \ - --libdir=%{_libdir}/%{name} \ - --etcdir=%{_datadir}/%{name} \ - --docdir=%{_defaultdocdir}/%{name}-%{version} \ - --elispdir=%{emacs_lispdir}/%{name} \ -%if %{?fedora}%{!?fedora:0} >= 13 || %{?rhel}%{!?rhel:0} >= 6 - --disable-builtin-afterimage \ -%else - --enable-builtin-afterimage \ +%if %{?rhel}%{!?rhel:0} == 10 +# This package triggers a fault in LLVM when LTO is enabled. Until LLVM +# is analyzed and fixed, disable LTO +%define _lto_cflags %{nil} %endif - --disable-builtin-ftgl \ - --disable-builtin-freetype \ - --disable-builtin-glew \ - --disable-builtin-lzma \ - --disable-builtin-pcre \ - --disable-builtin-zlib \ - --enable-asimage \ - --enable-astiff \ - --enable-bonjour \ - --enable-clarens \ - --enable-dcache \ - --enable-exceptions \ - --enable-explicitlink \ - --enable-fftw3 \ - --enable-fitsio \ - --enable-gdml \ - --enable-genvector \ - --enable-globus \ - --enable-gsl-shared \ - --enable-gviz \ - --enable-krb5 \ - --enable-ldap \ - --enable-mathmore \ - --enable-memstat \ - --enable-minuit2 \ - --enable-mysql \ - --enable-odbc \ - --enable-opengl \ - --enable-peac \ - --enable-pgsql \ - --enable-python \ -%if %{?fedora}%{!?fedora:0} >= 9 || %{?rhel}%{!?rhel:0} >= 6 - --enable-qt \ - --enable-qtgsi \ -%else - --disable-qt \ - --disable-qtgsi \ -%endif - --enable-reflex \ - --enable-rfio \ - --with-rfio-incdir=%{_includedir}/dpm \ - --with-rfio-libdir=%{_libdir} \ - --enable-roofit \ - --enable-ruby \ - --enable-soversion \ - --enable-shadowpw \ - --enable-shared \ - --enable-ssl \ - --enable-table \ - --enable-tmva \ - --enable-unuran \ - --enable-x11 \ - --enable-xml \ - --enable-xft \ - --enable-xrootd \ - --with-xrootd-incdir=%{_includedir}/xrootd \ - --with-xrootd-libdir=%{_libdir} \ -%ifarch %{ix86} x86_64 - --enable-cintex \ -%else - --disable-cintex \ -%endif - --disable-afdsmgrd \ - --disable-afs \ - --disable-alien \ - --disable-alloc \ - --disable-castor \ - --disable-chirp \ - --disable-cling \ - --disable-gfal \ - --disable-glite \ - --disable-hdfs \ - --disable-monalisa \ - --disable-oracle \ - --disable-pythia6 \ - --disable-pythia8 \ - --disable-rpath \ - --disable-sapdb \ - --disable-srp \ - --fail-on-missing -make OPTFLAGS="%{optflags}" \ - EXTRA_LDFLAGS="%{?__global_ldflags}" %{?_smp_mflags} - -%if "%{?rhel}" == "5" -# Build PyROOT for python 2.6 -mkdir pyroot26 -cp bindings/pyroot26/ROOT.py pyroot26 -make OPTFLAGS="%{optflags}" \ - EXTRA_LDFLAGS="%{?__global_ldflags}" %{?_smp_mflags} \ - MODULES="build cint/cint core/utils bindings/pyroot26" \ - PYTHONINCDIR=/usr/include/python2.6 PYTHONLIB=-lpython2.6 \ - PYROOTLIB=pyroot26/libPyROOT.so ROOTPY=pyroot26/ROOT.py +%cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ + -DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir}/%{name} \ + -DCMAKE_INSTALL_PYTHONDIR:PATH=%{python3_sitearch} \ + -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_datadir}/%{name} \ + -DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \ + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON \ + -DPython3_EXECUTABLE:PATH=%{__python3} \ + -Dgnuinstall:BOOL=ON \ + -Dbuiltin_cfitsio:BOOL=OFF \ + -Dbuiltin_civetweb:BOOL=OFF \ + -Dbuiltin_clang:BOOL=ON \ + -Dbuiltin_cling:BOOL=ON \ + -Dbuiltin_cppzmq:BOOL=OFF \ + -Dbuiltin_fftw3:BOOL=OFF \ + -Dbuiltin_freetype:BOOL=OFF \ + -Dbuiltin_ftgl:BOOL=OFF \ + -Dbuiltin_gif:BOOL=OFF \ + -Dbuiltin_gl2ps:BOOL=OFF \ + -Dbuiltin_gsl:BOOL=OFF \ + -Dbuiltin_gtest:BOOL=OFF \ + -Dbuiltin_jpeg:BOOL=OFF \ + -Dbuiltin_llvm:BOOL=ON \ + -Dbuiltin_lz4:BOOL=OFF \ + -Dbuiltin_lzma:BOOL=OFF \ +%if %{bundlejson} + -Dbuiltin_nlohmannjson:BOOL=ON \ +%else + -Dbuiltin_nlohmannjson:BOOL=OFF \ %endif + -Dbuiltin_openssl:BOOL=OFF \ + -Dbuiltin_openui5:BOOL=ON \ + -Dbuiltin_pcre:BOOL=OFF \ + -Dbuiltin_png:BOOL=OFF \ + -Dbuiltin_tbb:BOOL=OFF \ + -Dbuiltin_unuran:BOOL=OFF \ + -Dbuiltin_vdt:BOOL=OFF \ + -Dbuiltin_xrootd:BOOL=OFF \ + -Dbuiltin_xxhash:BOOL=OFF \ + -Dbuiltin_zeromq:BOOL=OFF \ + -Dbuiltin_zlib:BOOL=OFF \ + -Dbuiltin_zstd:BOOL=OFF \ +%ifnarch %{ix86} %{arm} + -Darrow:BOOL=ON \ +%else + -Darrow:BOOL=OFF \ +%endif + -Dasimage:BOOL=ON \ + -Dasimage_tiff:BOOL=ON \ + -Dccache:BOOL=OFF \ + -Ddistcc:BOOL=OFF \ + -Dcefweb:BOOL=OFF \ + -Dcheck_connection:BOOL=OFF \ + -Dclad:BOOL=ON \ + -DCLAD_SOURCE_DIR:PATH=${PWD}/clad-2.3 \ + -Dcocoa:BOOL=OFF \ + -Dcuda:BOOL=OFF \ + -Dcurl:BOOL=ON \ + -Ddaos:BOOL=OFF \ +%if %{dataframe} + -Ddataframe:BOOL=ON \ +%else + -Ddataframe:BOOL=OFF \ +%endif +%if %{davix} + -Ddavix:BOOL=ON \ +%else + -Ddavix:BOOL=OFF \ +%endif + -Ddcache:BOOL=ON \ + -Ddev:BOOL=OFF \ + -Dexperimental_adaptivecpp=OFF \ + -Dexperimental_genvectorx=OFF \ + -Dfcgi:BOOL=ON \ + -Dfftw3:BOOL=ON \ + -DFIREFOX_EXECUTABLE:PATH=/usr/bin/firefox \ + -Dfitsio:BOOL=ON \ + -Dfortran:BOOL=ON \ + -Dgdml:BOOL=ON \ + -Dgeom:BOOL=ON \ + -Dgeombuilder:BOOL=ON \ + -Dgviz:BOOL=ON \ + -Dhttp:BOOL=ON \ + -Dimt:BOOL=ON \ + -Dlibcxx:BOOL=OFF \ + -Dmathmore:BOOL=ON \ + -Dmemory_termination:BOOL=OFF \ + -Dminuit2_mpi:BOOL=OFF \ + -Dminuit2_omp:BOOL=ON \ + -Dmpi:BOOL=OFF \ + -Dopengl:BOOL=ON \ + -Dpyroot:BOOL=ON \ + -Dpythia8:BOOL=ON \ +%ifarch %{qt6_qtwebengine_arches} + -Dqt6web:BOOL=ON \ +%else + -Dqt6web:BOOL=OFF \ +%endif +%if %{rrr} + -Dr:BOOL=ON \ +%else + -Dr:BOOL=OFF \ +%endif +%if %{roofit} + -Droofit:BOOL=ON \ +%if %{roofitmp} + -Droofit_multiprocess:BOOL=ON \ +%else + -Droofit_multiprocess:BOOL=OFF \ +%endif +%else + -Droofit:BOOL=OFF \ + -Droofit_multiprocess:BOOL=OFF \ +%endif + -Droofit_hs3_ryml:BOOL=OFF \ +%if %{root7} + -Droot7:BOOL=ON \ +%else + -Droot7:BOOL=OFF \ +%endif + -Druby:BOOL=OFF \ + -Druntime_cxxmodules:BOOL=OFF \ + -Dshadowpw:BOOL=ON \ + -Dshared:BOOL=ON \ + -Dsoversion:BOOL=ON \ + -Dspectrum:BOOL=ON \ + -Dsqlite:BOOL=ON \ + -Dssl:BOOL=ON \ + -Dthisroot_scripts:BOOL=OFF \ + -Dtmva:BOOL=ON \ + -Dtmva-cpu:BOOL=ON \ + -Dtmva-cudnn:BOOL=OFF \ + -Dtmva-gpu:BOOL=OFF \ + -Dtmva-pymva:BOOL=ON \ +%if %{rrr} + -Dtmva-rmva:BOOL=ON \ +%else + -Dtmva-rmva:BOOL=OFF \ +%endif +%if %{tmvasofieparser} + -Dtmva-sofie:BOOL=ON \ +%else + -Dtmva-sofie:BOOL=OFF \ +%endif + -Dtpython:BOOL=ON \ + -Dunfold:BOOL=ON \ + -Dunuran:BOOL=ON \ + -During:BOOL=ON \ + -Duse_gsl_cblas:BOOL=OFF \ + -Dvdt:BOOL=OFF \ + -Dvecgeom:BOOL=OFF \ + -Dwebgui:BOOL=ON \ + -Dx11:BOOL=ON \ + -Dxml:BOOL=ON \ + -Dxrootd:BOOL=ON \ + -Dfail-on-missing:BOOL=ON \ + -Dtesting:BOOL=ON \ + -Dtestsupport:BOOL=ON \ + -Dtest_distrdf_pyspark:BOOL=OFF \ + -Dtest_distrdf_dask:BOOL=OFF \ + -Dclingtest:BOOL=OFF \ + -Dcoverage:BOOL=OFF \ + -Droottest:BOOL=OFF \ + -Drootbench:BOOL=OFF \ + -Dasan:BOOL=OFF +%cmake_build %install -rm -rf $RPM_BUILD_ROOT -make install DESTDIR=$RPM_BUILD_ROOT +%cmake_install -# Move python modules to the sitelib -mkdir -p ${RPM_BUILD_ROOT}%{python_sitearch} -mv ${RPM_BUILD_ROOT}%{_libdir}/%{name}/*.py* \ - ${RPM_BUILD_ROOT}%{python_sitearch} - -# Do emacs byte compilation -emacs -batch -no-site-file -f batch-byte-compile \ - ${RPM_BUILD_ROOT}%{emacs_lispdir}/%{name}/*.el +# Let rpm redo the python byte compilation +find %{buildroot}%{python3_sitearch} -depth -type d -name __pycache__ -exec rm -r {} ';' # Install desktop entry and icon -mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/applications -mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/icons/hicolor/48x48/apps - -cat > root.desktop << EOF -[Desktop Entry] -Name=Root -GenericName=Root -Comment=Numerical data analysis framework -Exec=root -Icon=root -Terminal=true -Type=Application -MimeType=application/x-root; -Categories=Utility; -Encoding=UTF-8 -EOF - -desktop-file-install --dir=${RPM_BUILD_ROOT}%{_datadir}/applications \ - --vendor "" root.desktop -install -p -m 644 build/package/debian/root-system-bin.png \ - ${RPM_BUILD_ROOT}%{_datadir}/icons/hicolor/48x48/apps/root.png +mkdir -p %{buildroot}%{_datadir}/applications +mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps +desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE3} +install -p -m 644 %{SOURCE4} %{buildroot}%{_datadir}/icons/hicolor/48x48/apps # Install mime type and icon -mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/mime/packages -mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/icons/hicolor/48x48/mimetypes -install -p -m 644 build/package/debian/root-system-bin.sharedmimeinfo \ - ${RPM_BUILD_ROOT}%{_datadir}/mime/packages/root.xml -install -p -m 644 build/package/debian/application-x-root.png \ - ${RPM_BUILD_ROOT}%{_datadir}/icons/hicolor/48x48/mimetypes +mkdir -p %{buildroot}%{_datadir}/mime/packages +mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/mimetypes +install -p -m 644 %{SOURCE5} %{buildroot}%{_datadir}/mime/packages +install -p -m 644 %{SOURCE6} \ + %{buildroot}%{_datadir}/icons/hicolor/48x48/mimetypes -# Init scripts for services -mkdir -p ${RPM_BUILD_ROOT}%{_initrddir} -mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}/daemons/proofd.rc.d \ - ${RPM_BUILD_ROOT}%{_initrddir}/proofd -mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}/daemons/rootd.rc.d \ - ${RPM_BUILD_ROOT}%{_initrddir}/rootd +# Move python cli helper to its own directory +mkdir -p %{buildroot}%{_datadir}/%{name}/cli +mv %{buildroot}%{python3_sitearch}/cmdLineUtils.py \ + %{buildroot}%{_datadir}/%{name}/cli +sed -e '/^\#!/d' -i %{buildroot}%{_datadir}/%{name}/cli/cmdLineUtils.py -# Turn off services by default -sed 's/\(chkconfig: \)[0-9]*/\1-/' -i ${RPM_BUILD_ROOT}%{_initrddir}/* +# Install GDB pretty printers to auto load safe path +mkdir -p %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} +mv %{buildroot}%{_libdir}/%{name}/*-gdb.py \ + %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} -# The Python interface library must be in two places -mkdir -p ${RPM_BUILD_ROOT}%{python_sitearch} -mv ${RPM_BUILD_ROOT}%{_libdir}/%{name}/libPyROOT.so.%{libversion} \ - ${RPM_BUILD_ROOT}%{python_sitearch}/libPyROOT.so -%if "%{?rhel}" == "5" -touch ${RPM_BUILD_ROOT}%{_libdir}/%{name}/libPyROOT.so.%{libversion} -%else -ln -s ..`sed 's!%{_libdir}!!' <<< %{python_sitearch}`/libPyROOT.so \ - ${RPM_BUILD_ROOT}%{_libdir}/%{name}/libPyROOT.so.%{libversion} -%endif +# Fix python extension suffix +mv %{buildroot}%{python3_sitearch}/ROOT/libROOTPythonizations.so \ + %{buildroot}%{python3_sitearch}/ROOT/libROOTPythonizations%{python3_ext_suffix} +mv %{buildroot}%{python3_sitearch}/cppyy/libcppyy.so \ + %{buildroot}%{python3_sitearch}/cppyy/libcppyy%{python3_ext_suffix} -%if "%{?rhel}" == "5" -mkdir -p ${RPM_BUILD_ROOT}%{python26_sitearch} -install pyroot26/libPyROOT.so.%{libversion} \ - ${RPM_BUILD_ROOT}%{python26_sitearch}/libPyROOT.so -install -m 644 pyroot26/ROOT.py* ${RPM_BUILD_ROOT}%{python26_sitearch} -%endif +# Create .dist-info files so that rpm auto-generates provides +mkdir %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info +cat > %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info/METADATA << EOF +Name: ROOT +Version: %{version} +Provides-Extra: distrdf +Provides-Extra: jupyroot +EOF -# Same for the Ruby interface library -mkdir -p ${RPM_BUILD_ROOT}%{ruby_installdir} -mv ${RPM_BUILD_ROOT}%{_libdir}/%{name}/libRuby.so.%{libversion} \ - ${RPM_BUILD_ROOT}%{ruby_installdir}/libRuby.so -ln -s ..`sed 's!%{_libdir}!!' <<< %{ruby_installdir}`/libRuby.so \ - ${RPM_BUILD_ROOT}%{_libdir}/%{name}/libRuby.so.%{libversion} +# Put jupyter stuff in the right places +mkdir -p %{buildroot}%{_datadir}/jupyter/kernels -# These should be in PATH -mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}/proof/utils/pq2/pq2* \ - ${RPM_BUILD_ROOT}%{_bindir} +cp -pr %{buildroot}%{_datadir}/%{name}/notebook/kernels/root \ + %{buildroot}%{_datadir}/jupyter/kernels/root +sed -e 's!python[0-9]*\.[0-9]*!%{__python3}!' \ + -i %{buildroot}%{_datadir}/jupyter/kernels/root/kernel.json +sed -e '/^\#!/d' \ + -i %{buildroot}%{python3_sitearch}/ROOT/_jupyroot/kernel/rootkernel.py + +rm -rf %{buildroot}%{_datadir}/%{name}/notebook/custom +rm -rf %{buildroot}%{_datadir}/%{name}/notebook/html +rm -rf %{buildroot}%{_datadir}/%{name}/notebook/kernels +rm %{buildroot}%{_datadir}/%{name}/notebook/jupyter_notebook_config.py +rmdir %{buildroot}%{_datadir}/%{name}/notebook + +# Replace the rootnb.exe wrapper with a simpler one +cat > %{buildroot}%{_bindir}/rootnb.exe << EOF +#! /bin/sh +if [ -z "\$(type jupyter 2>/dev/null)" ] ; then + echo jupyter not found in path. Exiting. + exit 1 +fi +if [ -z "\$(type jupyter-notebook 2>/dev/null)" ] ; then + echo jupyter-notebook not found in path. Exiting. + exit 1 +fi +jupyter notebook "\$@" +EOF + +# Avoid /usr/bin/env shebangs (and adapt cli to cmdLineUtils location) +sed -e 's!/usr/bin/env bash!/bin/bash!' \ + -i %{buildroot}%{_bindir}/root-config \ + %{buildroot}%{_bindir}/rootssh +sed -e 's!/usr/bin/env python3!%{__python3}!' \ + -e '/import sys/d' \ + -e '/import cmdLineUtils/iimport sys' \ + -e '/import cmdLineUtils/isys.path.insert(0, "%{_datadir}/%{name}/cli")' \ + -i %{buildroot}%{_bindir}/rooteventselector \ + %{buildroot}%{_bindir}/rootmv \ + %{buildroot}%{_bindir}/rootprint \ + %{buildroot}%{_bindir}/rootslimtree +sed -e 's!/usr/bin/env python3!%{__python3}!' \ + -i %{buildroot}%{_bindir}/rootdrawtree +sed -e 's!/usr/bin/env python!%{__python3}!' \ + -i %{buildroot}%{_datadir}/%{name}/dictpch/makepch.py +sed -e 's!/usr/bin/python!%{__python3}!' \ + -i %{buildroot}%{_datadir}/%{name}/pdg_table_update.py # Remove some junk -rm ${RPM_BUILD_ROOT}%{_datadir}/%{name}/daemons/*.plist -rm ${RPM_BUILD_ROOT}%{_datadir}/%{name}/daemons/*.xinetd -rm ${RPM_BUILD_ROOT}%{_datadir}/%{name}/daemons/README -rm ${RPM_BUILD_ROOT}%{_datadir}/%{name}/hostcert.conf -rm ${RPM_BUILD_ROOT}%{_datadir}/%{name}/proof/*.sample -rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/proof/utils -rm ${RPM_BUILD_ROOT}%{_datadir}/%{name}/root.desktop -rm ${RPM_BUILD_ROOT}%{_datadir}/%{name}/system.plugins-ios -rm ${RPM_BUILD_ROOT}%{_datadir}/%{name}/svninfo.txt -%if %{?fedora}%{!?fedora:0} < 13 && %{?rhel}%{!?rhel:0} < 6 -rm ${RPM_BUILD_ROOT}%{_libdir}/%{name}/libAfterImage.a -%endif -rm ${RPM_BUILD_ROOT}%{_bindir}/setxrd* -rm ${RPM_BUILD_ROOT}%{_bindir}/thisroot* -rm ${RPM_BUILD_ROOT}%{_mandir}/man1/cint.1 -rm ${RPM_BUILD_ROOT}%{_mandir}/man1/g2rootold.1 -rm ${RPM_BUILD_ROOT}%{_mandir}/man1/makecint.1 -rm ${RPM_BUILD_ROOT}%{_mandir}/man1/proofserva.1 -rm ${RPM_BUILD_ROOT}%{_mandir}/man1/roota.1 -rm ${RPM_BUILD_ROOT}%{_mandir}/man1/setup-pq2.1 -%if %{?fedora}%{!?fedora:0} >= 9 || %{?rhel}%{!?rhel:0} >= 6 -rm ${RPM_BUILD_ROOT}%{_includedir}/%{name}/*.cw -rm ${RPM_BUILD_ROOT}%{_includedir}/%{name}/*.pri -%endif -rm ${RPM_BUILD_ROOT}%{_includedir}/%{name}/proofdp.h -rm ${RPM_BUILD_ROOT}%{_includedir}/%{name}/rootdp.h -rm ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-%{version}/BUILDSYSTEM -rm ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-%{version}/ChangeLog-2-24 -rm ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-%{version}/INSTALL -rm ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-%{version}/README.ALIEN -rm ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-%{version}/README.MONALISA - -# Remove cintdll sources - keep the prec_stl directory -rm -rf ${RPM_BUILD_ROOT}%{_libdir}/%{name}/cint/cint/lib/{[^p],p[^r]}* +rm %{buildroot}%{_datadir}/%{name}/root.desktop +rm %{buildroot}%{_pkgdocdir}/INSTALL +rm %{buildroot}%{_pkgdocdir}/README.CXXMODULES.md # Only used on Windows -rm ${RPM_BUILD_ROOT}%{_datadir}/%{name}/macros/fileopen.C +rm %{buildroot}%{_datadir}/%{name}/macros/fileopen.C # Remove plugin definitions for non-built and obsolete plugins -pushd ${RPM_BUILD_ROOT}%{_datadir}/%{name}/plugins -rm TAFS/P010_TAFS.C -rm TDataProgressDialog/P010_TDataProgressDialog.C -rm TFile/P030_TCastorFile.C -rm TFile/P050_TGFALFile.C -rm TFile/P060_TChirpFile.C -rm TFile/P070_TAlienFile.C -rm TFile/P110_THDFSFile.C +pushd %{buildroot}%{_datadir}/%{name}/plugins +%if ! %{rrr} +rm ROOT@@Math@@Minimizer/P090_RMinimizer.C +%endif +%if ! %{davix} +rm ROOT@@Internal@@RRawFile/P010_RRawFileDavix.C +rm TFile/P130_TDavixFile.C +rm TSystem/P045_TDavixSystem.C +%endif rm TGLManager/P020_TGWin32GLManager.C -rm TGrid/P010_TAlien.C -rm TGrid/P020_TGLite.C -%if %{?fedora}%{!?fedora:0} < 9 && %{?rhel}%{!?rhel:0} < 6 -rm TGuiFactory/P020_TQtRootGuiFactory.C -%endif -rm TImagePlugin/P010_TASPluginGS.C -rm TSQLServer/P030_TSapDBServer.C -rm TSQLServer/P040_TOracleServer.C -rm TSystem/P030_TAlienSystem.C -rm TSystem/P060_THDFSSystem.C -rm TViewerX3D/P020_TQtViewerX3D.C +rm TGLManager/P030_TGOSXGLManager.C +rm TVirtualGeoConverter/P010_TGeoVGConverter.C rm TVirtualGLImp/P020_TGWin32GL.C -rm TVirtualMonitoringWriter/P010_TMonaLisaWriter.C rm TVirtualX/P030_TGWin32.C -%if %{?fedora}%{!?fedora:0} < 9 && %{?rhel}%{!?rhel:0} < 6 -rm TVirtualX/P040_TGQt.C -%endif -rmdir TAFS -rmdir TDataProgressDialog -rmdir TGrid -rmdir TImagePlugin +rm TVirtualX/P050_TGQuartz.C +rmdir TVirtualGeoConverter popd -# Create ldconfig configuration -mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/ld.so.conf.d -echo %{_libdir}/%{name} > \ - ${RPM_BUILD_ROOT}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf +# Replace bundled jsroot with symlinks to system version +for x in build img mathjax modules scripts files/draw.htm files/online.htm ; do + ln -nrs %{buildroot}%{_jsdir}/jsroot/$x \ + %{buildroot}%{_datadir}/%{name}/js/$x +done -# Generate documentation -echo Rint.Includes: 0 > .rootrc -echo Cint.Includes: 0 >> .rootrc -echo Root.StacktraceScript: ${PWD}/etc/gdb-backtrace.sh >> .rootrc -echo Gui.MimeTypeFile: ${PWD}/etc/root.mimes >> .rootrc -sed "s!@PWD@!${PWD}!g" %{SOURCE2} > html.C -LD_LIBRARY_PATH=${PWD}/lib:${PWD}/cint/cint/include:${PWD}/cint/cint/stl \ -ROOTSYS=${PWD} ./bin/root.exe -l -b -q html.C -rm .rootrc -mv htmldoc ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name}-%{version}/html +# Create ldconfig configuration +mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d +echo %{_libdir}/%{name} > \ + %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf + +# Make ROOTConfig-targets.cmake not error on missing files to work better with +# subpackages +sed -e 's/FATAL_ERROR \(.*imported\)/WARNING \1/' \ + -e '/Possible reasons include/i\ +but this file does not exist.\ +If this target is used you need to install the package that provides this\ +file using \\"dnf install\\".\ +If this target is not used this warning can be ignored.'$'\x22'')' \ + -e '/Possible reasons include/,/)/d' \ + -i %{buildroot}%{_datadir}/%{name}/cmake/ROOTConfig-targets.cmake # Create includelist files ... -for module in `find * -name Module.mk` ; do - module=`dirname $module` - make -f %{SOURCE1} includelist MODULE=$module ROOT_SRCDIR=$PWD \ - HASXRD=yes CRYPTOLIB=yes SSLLIB=yes +for f in `find %{_vpath_builddir} -name cmake_install.cmake -a '!' -path '*/llvm-project/*'` ; do + l=`sed 's!%{_vpath_builddir}/\(.*\)/cmake_install.cmake!includelist-\1!' <<< $f` + l=`tr / - <<< $l` + tmpdir=`mktemp -d` + DESTDIR=$tmpdir cmake -DCMAKE_INSTALL_COMPONENT=headers -P $f > /dev/null + ( cd $tmpdir ; find . -type f) | sort | sed 's!^\.!!' > $l + rm -rf $tmpdir done # ... and merge some of them -cat includelist-core-[^w]* > includelist-core -cat includelist-geom-geom* > includelist-geom -cat includelist-roofit-roo* > includelist-roofit -cat includelist-gui-qt* > includelist-gui-qt +cat includelist-core-{[^mw],m[^au]}* > includelist-core cat includelist-graf2d-x11ttf >> includelist-graf2d-x11 -cat includelist-gui-guihtml >> includelist-gui-gui -cat includelist-io-xmlparser >> includelist-io-xml -cat includelist-proof-proofplayer >> includelist-proof-proof -%if "%{?rhel}" == "5" -# Python byte code compilation -%{__python} -c 'import compileall; compileall.compile_dir("'"$RPM_BUILD_ROOT%{_libdir}/%{name}/python"'", 10, "%{_libdir}/%{name}/python", 1)' > /dev/null -%{__python} -O -c 'import compileall; compileall.compile_dir("'"$RPM_BUILD_ROOT%{_libdir}/%{name}/python"'", 10, "%{_libdir}/%{name}/python", 1)' > /dev/null -%{__python} -c 'import compileall; compileall.compile_dir("'"$RPM_BUILD_ROOT%{python_sitearch}"'", 10, "%{python_sitearch}", 1)' > /dev/null -%{__python} -O -c 'import compileall; compileall.compile_dir("'"$RPM_BUILD_ROOT%{python_sitearch}"'", 10, "%{python_sitearch}", 1)' > /dev/null -%{__python26} -c 'import compileall; compileall.compile_dir("'"$RPM_BUILD_ROOT%{python26_sitearch}"'", 10, "%{python26_sitearch}", 1)' > /dev/null -%{__python26} -O -c 'import compileall; compileall.compile_dir("'"$RPM_BUILD_ROOT%{python26_sitearch}"'", 10, "%{python26_sitearch}", 1)' > /dev/null +# Do python byte compilation (for non-standard paths) +%py_byte_compile %{__python3} %{buildroot}%{_datadir}/%{name}/cli +%py_byte_compile %{__python3} %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} + +%check +pushd %{_vpath_builddir} +pushd test +ln -s ../../files files +popd +pushd runtutorials +ln -s ../../files files +ln -s ../../files/usa.root usa.root +popd +popd + +# Exclude some tests that can not be run +# +# - test-stressIOPlugins-http +# - test-stressIOPlugins-xroot +# requires network access (by design since they test the remote file IO) +# +# - tutorial-analysis-dataframe-df101_h1Analysis +# - tutorial-analysis-tree-run_h1analysis +# - tutorial-legacy-multicore-mp104_processH1 +# requires network access: http://root.cern.ch/files/h1/ +# +# - tutorial-io-tree-imt_parTreeProcessing +# requires input data: http://root.cern.ch/files/tp_process_imt.root (707 MB) +# +# - tutorial-analysis-dataframe-df###_SQlite* +# reads sqlite data over network: +# http://root.cern.ch/files/root_download_stats.sqlite +# +# - tutorial-analysis-dataframe-df033_Describe-py +# - tutorial-analysis-dataframe-df102_NanoAODDimuonAnalysis(-py)? +# - tutorial-hist-histv7-hist102_NanoAODDimuonAnalysis +# reads input data over network: +# root://eospublic.cern.ch//eos/opendata/cms/derived-data/ +# AOD2NanoAODOutreachTool/Run2012BC_DoubleMuParked_Muons.root +# +# - gtest-tree-treeplayer-treeprocessormt-remotefiles +# - tutorial-analysis-dataframe-df103_NanoAODHiggsAnalysis(-py)? +# - tutorial-hist-histv7-hist103_NanoAODHiggsAnalysis +# reads input data over network: +# root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/ +# +# - tutorial-analysis-dataframe-df104_HiggsToTwoPhotons-py +# - tutorial-analysis-dataframe-df105_WBosonAnalysis-py +# - tutorial-analysis-dataframe-df106_HiggsToFourLeptons(-py) +# - tutorial-analysis-dataframe-df107_SingleTopAnalysis-py +# - tutorial-visualisation-rcanvas-df104-py +# - tutorial-visualisation-rcanvas-df105-py +# reads input data over network: +# root://eospublic.cern.ch//eos/opendata/atlas/OutreachDatasets/2020-01-22/ +# +# - tutorial-analysis-dataframe-df014_CSVDataSource(-py) +# - tutorial-analysis-dataframe-df015_LazyDataSource +# reads input data over network: +# http://root.cern/files/tutorials/df014_CsvDataSource_MuRun2010B.csv +# +# - tutorial-hist-hist039_TH2Poly_usa-py +# reads input data over network: +# http://root.cern/files/usa.root +# +# - tutorial-io-ntuple-ntpl004_dimuon +# reads input data over network +# http://root.cern.ch/files/NanoAOD_DoubleMuon_CMS2011OpenData.root (1.5 GB) +# +# - tutorial-io-ntuple-ntpl008_import +# reads input data over network +# http://root.cern.ch/files/HiggsTauTauReduced/GluGluToHToTauTau.root (20 MB) +# +# - gtest-net-curl-rawfile-curl +# - gtest-net-curl-tfile-curl +# reads input file over network +# +# - gtest-net-davix-RRawFileDavix +# reads input file over network +# http://root.cern.ch/files/davix.test +# +# - gtest-net-netxng-RRawFileNetXNG +# reads input file over network +# root://eospublic.cern.ch/eos/root-eos/xrootd.test +# +# - gtest-net-netxng-TNetXNGFileTest +# - tutorial-analysis-parallel-mp_processSelector +# reads input file over network +# root://eospublic.cern.ch/eos/root-eos/h1/dstarmb.root +# +# - tutorial-machine_learning-tmva100_DataPreparation-py +# reads input data over network +# root://eospublic.cern.ch/eos/root-eos/cms_opendata_2012_nanoaod/SMHiggsToZZTo4L.root +# +# - test-webgui-ping +# error: Cannot display window in native +# +# - test-stressgraphics-firefox-skip3d +# requires firefox... +# +# - test-stressgraphics-svg +# Font metric differences +# +# - tutorial-visualisation-webcanv-fonts_ttf.cxx: +# Requires web graphics +excluded="\ +test-stressIOPlugins-http|\ +test-stressIOPlugins-xroot|\ +tutorial-analysis-dataframe-df101_h1Analysis|\ +tutorial-analysis-tree-run_h1analysis|\ +tutorial-legacy-multicore-mp104_processH1|\ +tutorial-io-tree-imt_parTreeProcessing|\ +tutorial-analysis-dataframe-df..._SQlite|\ +tutorial-analysis-dataframe-df033_Describe-py|\ +tutorial-analysis-dataframe-df102_NanoAODDimuonAnalysis|\ +tutorial-hist-histv7-hist102_NanoAODDimuonAnalysis|\ +gtest-tree-treeplayer-treeprocessormt-remotefiles|\ +tutorial-analysis-dataframe-df103_NanoAODHiggsAnalysis|\ +tutorial-hist-histv7-hist103_NanoAODHiggsAnalysis|\ +tutorial-analysis-dataframe-df104_HiggsToTwoPhotons-py|\ +tutorial-analysis-dataframe-df105_WBosonAnalysis-py|\ +tutorial-analysis-dataframe-df106_HiggsToFourLeptons|\ +tutorial-analysis-dataframe-df107_SingleTopAnalysis-py|\ +tutorial-visualisation-rcanvas-df104-py|\ +tutorial-visualisation-rcanvas-df105-py|\ +tutorial-analysis-dataframe-df014_CSVDataSource|\ +tutorial-analysis-dataframe-df015_LazyDataSource|\ +tutorial-hist-hist039_TH2Poly_usa-py|\ +tutorial-io-ntuple-ntpl004_dimuon|\ +tutorial-io-ntuple-ntpl008_import|\ +gtest-net-curl-rawfile-curl|\ +gtest-net-curl-tfile-curl|\ +gtest-net-davix-RRawFileDavix|\ +gtest-net-netxng-RRawFileNetXNG|\ +gtest-net-netxng-TNetXNGFileTest|\ +tutorial-analysis-parallel-mp_processSelector|\ +tutorial-machine_learning-tmva100_DataPreparation-py|\ +test-webgui-ping|\ +test-stressgraphics-firefox-skip3d|\ +test-stressgraphics-svg|\ +tutorial-visualisation-webcanv-fonts_ttf.cxx" + +%if %{?rhel}%{!?rhel:0} == 9 +# - pyunittests-bindings-pyroot-cppyy-cppyy-test-datatypes +# Fails on EPEL 9 (see patch above) +excluded="${excluded}|\ +pyunittests-bindings-pyroot-cppyy-cppyy-test-datatypes" %endif -%clean -rm -rf $RPM_BUILD_ROOT +%ifarch %{ix86} +# - gtest-hist-hist-TFormulaGradientTests +# out of memory +# +# - tmva-sofie-test-TestCustomModelsFromONNX +# many failures ... +# +# - pyunittests-bindings-pyroot-cppyy-cppyy-test-datatypes +# - pyunittests-bindings-pyroot-cppyy-cppyy-test-lowlevel +# - pyunittests-bindings-pyroot-cppyy-cppyy-test-regression +# cppyy tests failing +excluded="${excluded}|\ +gtest-hist-hist-TFormulaGradientTests|\ +tmva-sofie-test-TestCustomModelsFromONNX|\ +pyunittests-bindings-pyroot-cppyy-cppyy-test-datatypes|\ +pyunittests-bindings-pyroot-cppyy-cppyy-test-lowlevel|\ +pyunittests-bindings-pyroot-cppyy-cppyy-test-regression" +%endif -%post -touch --no-create %{_datadir}/icons/hicolor >/dev/null 2>&1 || : -update-desktop-database >/dev/null 2>&1 || : -update-mime-database %{_datadir}/mime >/dev/null 2>&1 || : +%ifarch %{power64} +# - gtest-tree-ntuple-ntuple-emulated +# - gtest-tree-ntuple-ntuple-evolution-shape +# waitpid() failed +excluded="${excluded}|\ +gtest-tree-ntuple-ntuple-emulated|\ +gtest-tree-ntuple-ntuple-evolution-shape" +%endif -%postun +%ifarch s390x +# - gtest-roofit-roofitcore-testNaNPacker +# Uses "Packed NaN" feature, not implemented for big endian. +excluded="${excluded}|\ +gtest-roofit-roofitcore-testNaNPacker" + +# - gtest-core-dictgen-dictgen-base +# - gtest-net-httpsniff-testRootSniffer +# - gtest-net-net-testParallelMergingFile +# - gtest-roofit-roofitcore-testLikelihoodGradientJob +# - gtest-tree-dataframe-dataframe-concurrency +# - gtest-tree-dataframe-dataframe-snapshot-interpreted-class-read +# - gtest-tree-dataframe-dataframe-snapshot-interpreted-class-write +# - gtest-tree-dataframe-dataframe-snapshot-ntuple +# - gtest-tree-dataframe-dataframe-unified-constructor +# - gtest-tree-dataframe-dataframe-vary +# - gtest-tree-dataframe-datasource-ntuple +# - gtest-tree-ntuple-ntuple-basics +# - gtest-tree-ntuple-ntuple-bulk +# - gtest-tree-ntuple-ntuple-cast +# - gtest-tree-ntuple-ntuple-compat +# - gtest-tree-ntuple-ntuple-evolution-type +# - gtest-tree-ntuple-ntuple-extended +# - gtest-tree-ntuple-ntuple-join-table +# - gtest-tree-ntuple-ntuple-largefile2 +# - gtest-tree-ntuple-ntuple-merger +# - gtest-tree-ntuple-ntuple-metrics +# - gtest-tree-ntuple-ntuple-model +# - gtest-tree-ntuple-ntuple-modelext +# - gtest-tree-ntuple-ntuple-multi-column +# - gtest-tree-ntuple-ntuple-packing +# - gtest-tree-ntuple-ntuple-parallel-writer +# - gtest-tree-ntuple-ntuple-processor +# - gtest-tree-ntuple-ntuple-processor-chain +# - gtest-tree-ntuple-ntuple-processor-join +# - gtest-tree-ntuple-ntuple-project +# - gtest-tree-ntuple-ntuple-show +# - gtest-tree-ntuple-ntuple-soa +# - gtest-tree-ntuple-ntuple-storage +# - gtest-tree-ntuple-ntuple-storage-daos +# - gtest-tree-ntuple-ntuple-types +# - gtest-tree-ntuple-ntuple-view +# - gtest-tree-ntuple-rfield-class +# - gtest-tree-ntuple-rfield-streamer +# - gtest-tree-ntuple-rfield-variant +# - gtest-tree-ntuple-rfield-vector +# - gtest-tree-ntupleutil-ntuple-importer +# - gtest-tree-ntupleutil-ntuple-inspector +# - gtest-tree-tree-testTTreeRegressions +# https://github.com/root-project/root/issues/12426 +# +# - pyunittests-bindings-distrdf-backend-distrdf-unit-backend-graph-caching +# - pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rtensor +# - pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-stl-vector +# - pyunittests-hist-histv7-hist-py +# - pyunittests-io-io-rfile-py +# - tmva-sofie-test-TestCustomModelsFromONNX +# - tutorial-analysis-dataframe-df006_ranges-py +# - tutorial-math-exampleFunction-py +# - tutorial-math-fit-combinedFit-py +# - tutorial-math-fit-NumericalMinimization-py +# - tutorial-visualisation-rcanvas-rbox-py +# https://github.com/root-project/root/issues/12429 +# +# - test-stresshistofit +# - test-stresshistofit-interpreted +# - test-stresshistogram +# - test-stresshistogram-interpreted +# +# - pyunittests-bindings-pyroot-cppyy-cppyy-test-* +excluded="${excluded}|\ +gtest-core-dictgen-dictgen-base|\ +gtest-net-httpsniff-testRootSniffer|\ +gtest-net-net-testParallelMergingFile|\ +gtest-roofit-roofitcore-testLikelihoodGradientJob|\ +gtest-tree-dataframe-dataframe-concurrency|\ +gtest-tree-dataframe-dataframe-snapshot-interpreted-class-read|\ +gtest-tree-dataframe-dataframe-snapshot-interpreted-class-write|\ +gtest-tree-dataframe-dataframe-snapshot-ntuple|\ +gtest-tree-dataframe-dataframe-unified-constructor|\ +gtest-tree-dataframe-dataframe-vary|\ +gtest-tree-dataframe-datasource-ntuple|\ +gtest-tree-ntuple-ntuple-basics|\ +gtest-tree-ntuple-ntuple-bulk|\ +gtest-tree-ntuple-ntuple-cast|\ +gtest-tree-ntuple-ntuple-compat|\ +gtest-tree-ntuple-ntuple-evolution-type|\ +gtest-tree-ntuple-ntuple-extended|\ +gtest-tree-ntuple-ntuple-join-table|\ +gtest-tree-ntuple-ntuple-largefile2|\ +gtest-tree-ntuple-ntuple-merger|\ +gtest-tree-ntuple-ntuple-metrics|\ +gtest-tree-ntuple-ntuple-model\$\$|\ +gtest-tree-ntuple-ntuple-modelext|\ +gtest-tree-ntuple-ntuple-multi-column|\ +gtest-tree-ntuple-ntuple-packing|\ +gtest-tree-ntuple-ntuple-parallel-writer|\ +gtest-tree-ntuple-ntuple-processor\$\$|\ +gtest-tree-ntuple-ntuple-processor-chain|\ +gtest-tree-ntuple-ntuple-processor-join|\ +gtest-tree-ntuple-ntuple-project|\ +gtest-tree-ntuple-ntuple-show|\ +gtest-tree-ntuple-ntuple-soa|\ +gtest-tree-ntuple-ntuple-storage\$\$|\ +gtest-tree-ntuple-ntuple-storage-daos|\ +gtest-tree-ntuple-ntuple-types|\ +gtest-tree-ntuple-ntuple-view|\ +gtest-tree-ntuple-rfield-class|\ +gtest-tree-ntuple-rfield-streamer|\ +gtest-tree-ntuple-rfield-variant|\ +gtest-tree-ntuple-rfield-vector|\ +gtest-tree-ntupleutil-ntuple-importer|\ +gtest-tree-ntupleutil-ntuple-inspector|\ +gtest-tree-tree-testTTreeRegressions|\ +pyunittests-bindings-distrdf-backend-distrdf-unit-backend-graph-caching|\ +pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rtensor|\ +pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-stl-vector|\ +pyunittests-hist-histv7-hist-py|\ +pyunittests-io-io-rfile-py|\ +tmva-sofie-test-TestCustomModelsFromONNX|\ +tutorial-analysis-dataframe-df006_ranges-py|\ +tutorial-math-exampleFunction-py|\ +tutorial-math-fit-combinedFit-py|\ +tutorial-math-fit-NumericalMinimization-py|\ +tutorial-visualisation-rcanvas-rbox-py|\ +test-stresshistofit\$\$|\ +test-stresshistofit-interpreted|\ +test-stresshistogram\$\$|\ +test-stresshistogram-interpreted|\ +pyunittests-bindings-pyroot-cppyy-cppyy-test" + +# The zlib-ng library is compiled with hardware acceleration support on s390x +# in Fedora 43 and later and RHEL 10.1 and later +# This means that some tests that compare the size of compressed data fail. +# - test-stress +%if %{?fedora}%{!?fedora:0} >= 43 || %{?rhel}%{!?rhel:0} >= 10 +excluded="${excluded}|\ +test-stress\$\$" +%endif +%endif + +# Fails with gcc 14 on aarch64, ppc64le and s390x (on EPEL 10 also x86_64) +# https://github.com/root-project/root/issues/14446 +# - gtest-math-matrix-testMatrixTSparse +%if %{?fedora}%{!?fedora:0} >= 40 +%ifarch aarch64 %{power64} s390x +excluded="${excluded}|\ +gtest-math-matrix-testMatrixTSparse" +%endif +%endif +%if %{?rhel}%{!?rhel:0} >= 10 +excluded="${excluded}|\ +gtest-math-matrix-testMatrixTSparse" +%endif + +# Filter out parts of tests that require remote network access +# gtest-io-io-rfile: RFile.RemoteRead +# gtest-io-io-RRawFile: RRawFile.Remote +# gtest-io-io-TFile: TFile.ReadWithoutGlobalRegistrationNet +# TFile.ReadWithoutGlobalRegistrationWeb +# TFile.ReadWithCacheWithoutGlobalRegistration +# gtest-tree-dataframe-datasource-csv: RCsvDS.Remote +# gtest-tree-dataframe-datasource-sqlite: RSqliteDS.Remote +# gtest-tree-ntuple-ntuple-storage: RNTuple.OpenHTTP +# gtest-tree-tree-testTChainParsing: TChainParsing.DoubleSlash +# TChainParsing.RemoteGlob +# +# Fails on ix86 (different alignment 64 bit (non)atomic) +# gtest-tree-ntuple-ntuple-types: RNTuple.StdAtomic +# +# Fails on ppc64le (no __float128 support) +# cppinterop-CppInterOpTests: CppInterOpTest/InProcessJIT.Interpreter_Evaluate +# +# Fails on s390x (big endian) +# https://github.com/root-project/root/issues/14512 +# cppinterop-CppInterOpTests: CppInterOpTest/InProcessJIT.Interpreter_Evaluate +# gtest-core-metacling-TClingTest: TClingDataMemberInfo.Offset +# gtest-io-io-rfile: RFile.RNTuple +# gtest-tree-treeplayer-treeplayer-branchobject: TTreeReaderBasic.LorentzVector32 +# gtest-tree-tree-testTTreeRegressions: TTreeRegressions.TTreeFormulaMemberIndex +# +# Fails on s390x (differnt compression size with zlib-ng) +# https://github.com/root-project/root/issues/18995 +# gtest-tree-tree-testTTreeRegressions: TTreeRegressions.PrintClustersRounding +export GTEST_FILTER=-\ +%ifarch %{ix86} +RNTuple.StdAtomic:\ +%endif +%ifarch %{power64} +CppInterOpTest/InProcessJIT.Interpreter_Evaluate:\ +%endif +%ifarch s390x +CppInterOpTest/InProcessJIT.Interpreter_Evaluate:\ +TClingDataMemberInfo.Offset:\ +RFile.RNTuple:\ +TTreeReaderBasic.LorentzVector32:\ +TTreeRegressions.TTreeFormulaMemberIndex:\ +TTreeRegressions.PrintClustersRounding:\ +%endif +RCsvDS.Remote:\ +RFile.RemoteRead:\ +RNTuple.OpenHTTP:\ +RRawFile.Remote:\ +RSqliteDS.Davix:\ +RSqliteDS.Remote:\ +TChainParsing.DoubleSlash:\ +TChainParsing.RemoteGlob:\ +TFile.ReadWithoutGlobalRegistrationNet:\ +TFile.ReadWithoutGlobalRegistrationWeb:\ +TFile.ReadWithCacheWithoutGlobalRegistration +%ctest -- -E "${excluded}" + +%pretrans net-http -p +path = "%{_datadir}/%{name}/js" +st = posix.stat(path) +if st and st.type == "link" then + os.remove(path) +end + +%post net-http +# Replace bundled jsroot with symlinks to system version +for x in build img mathjax modules scripts files/draw.htm files/online.htm ; do + ln -fnrs %{_jsdir}/jsroot/$x %{_datadir}/%{name}/js/$x +done + +%pre -n python3-%{name} +if [ -r /var/lib/alternatives/libPyROOT.so ] ; then + for alt in `grep python3.*/.*.so /var/lib/alternatives/libPyROOT.so` ; do + %{_sbindir}/update-alternatives --remove libPyROOT.so $alt + done +fi + +%post -n python3-root+jupyroot +mkdir -p /etc/jupyter +if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then + sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py +fi +cat << EOF >> /etc/jupyter/jupyter_notebook_config.py +# Extra static paths for JupyROOT - start - do not remove this line +c.NotebookApp.extra_static_paths.append('%{_jsdir}/jsroot') +# Extra static paths for JupyROOT - end - do not remove this line +EOF +if [ -e /etc/jupyter/jupyter_server_config.py ] ; then + sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py +fi +cat << EOF >> /etc/jupyter/jupyter_server_config.py +# Extra static paths for JupyROOT - start - do not remove this line +c.ServerApp.extra_static_paths.append('%{_jsdir}/jsroot') +# Extra static paths for JupyROOT - end - do not remove this line +EOF + +%postun -n python3-root+jupyroot if [ $1 -eq 0 ] ; then - touch --no-create %{_datadir}/icons/hicolor >/dev/null 2>&1 - gtk-update-icon-cache %{_datadir}/icons/hicolor >/dev/null 2>&1 || : + if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then + sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py + if [ ! -s /etc/jupyter/jupyter_notebook_config.py ] ; then + rm /etc/jupyter/jupyter_notebook_config.py + rmdir /etc/jupyter 2>/dev/null || : + fi + fi + if [ -e /etc/jupyter/jupyter_server_config.py ] ; then + sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py + if [ ! -s /etc/jupyter/jupyter_server_config.py ] ; then + rm /etc/jupyter/jupyter_server_config.py + rmdir /etc/jupyter 2>/dev/null || : + fi + fi fi -update-desktop-database >/dev/null 2>&1 || : -update-mime-database %{_datadir}/mime >/dev/null 2>&1 || : - -%posttrans -gtk-update-icon-cache %{_datadir}/icons/hicolor >/dev/null 2>&1 || : - -%post rootd -/sbin/chkconfig --add rootd - -%preun rootd -if [ $1 = 0 ] ; then - /sbin/service rootd stop >/dev/null 2>&1 - /sbin/chkconfig --del rootd -fi - -%postun rootd -if [ "$1" -ge "1" ] ; then - /sbin/service rootd condrestart >/dev/null 2>&1 || : -fi - -%post proofd -/sbin/chkconfig --add proofd - -%preun proofd -if [ $1 = 0 ] ; then - /sbin/service proofd stop >/dev/null 2>&1 - /sbin/chkconfig --del proofd -fi - -%postun proofd -if [ "$1" -ge "1" ] ; then - /sbin/service proofd condrestart >/dev/null 2>&1 || : -fi - -%if "%{?rhel}" == "5" -%post python -[ -h %{_libdir}/%{name}/libPyROOT.so.%{libversion} ] && \ - readlink %{_libdir}/%{name}/libPyROOT.so.%{libversion} | \ - grep -q site-packages && rm %{_libdir}/%{name}/libPyROOT.so.%{libversion} -%{_sbindir}/update-alternatives --install \ - %{_libdir}/%{name}/libPyROOT.so.%{libversion} \ - libPyROOT.so %{python_sitearch}/libPyROOT.so 20 -/sbin/ldconfig - -%postun python -p /sbin/ldconfig - -%preun python -if [ $1 = 0 ]; then - %{_sbindir}/update-alternatives --remove \ - libPyROOT.so %{python_sitearch}/libPyROOT.so -fi - -%post python26 -[ -h %{_libdir}/%{name}/libPyROOT.so.%{libversion} ] && \ - readlink %{_libdir}/%{name}/libPyROOT.so.%{libversion} | \ - grep -q site-packages && rm %{_libdir}/%{name}/libPyROOT.so.%{libversion} -%{_sbindir}/update-alternatives --install \ - %{_libdir}/%{name}/libPyROOT.so.%{libversion} \ - libPyROOT.so %{python26_sitearch}/libPyROOT.so 10 -/sbin/ldconfig - -%preun python26 -if [ $1 = 0 ]; then - %{_sbindir}/update-alternatives --remove \ - libPyROOT.so %{python26_sitearch}/libPyROOT.so -fi - -%postun python26 -p /sbin/ldconfig -%else -%post python -p /sbin/ldconfig -%postun python -p /sbin/ldconfig -%endif %post core -p /sbin/ldconfig %postun core -p /sbin/ldconfig -%post cint -p /sbin/ldconfig -%postun cint -p /sbin/ldconfig -%post reflex -p /sbin/ldconfig -%postun reflex -p /sbin/ldconfig -%ifarch %{ix86} x86_64 -%post cintex -p /sbin/ldconfig -%postun cintex -p /sbin/ldconfig -%endif -%post ruby -p /sbin/ldconfig -%postun ruby -p /sbin/ldconfig -%post genetic -p /sbin/ldconfig -%postun genetic -p /sbin/ldconfig -%post geom -p /sbin/ldconfig -%postun geom -p /sbin/ldconfig -%post gdml -p /sbin/ldconfig -%postun gdml -p /sbin/ldconfig -%post graf -p /sbin/ldconfig -%postun graf -p /sbin/ldconfig -%post graf-asimage -p /sbin/ldconfig -%postun graf-asimage -p /sbin/ldconfig -%post graf-fitsio -p /sbin/ldconfig -%postun graf-fitsio -p /sbin/ldconfig -%post graf-gpad -p /sbin/ldconfig -%postun graf-gpad -p /sbin/ldconfig -%post graf-gviz -p /sbin/ldconfig -%postun graf-gviz -p /sbin/ldconfig -%post graf-postscript -p /sbin/ldconfig -%postun graf-postscript -p /sbin/ldconfig -%if %{?fedora}%{!?fedora:0} >= 9 || %{?rhel}%{!?rhel:0} >= 6 -%post graf-qt -p /sbin/ldconfig -%postun graf-qt -p /sbin/ldconfig -%endif -%post graf-x11 -p /sbin/ldconfig -%postun graf-x11 -p /sbin/ldconfig -%post graf3d -p /sbin/ldconfig -%postun graf3d -p /sbin/ldconfig -%post graf3d-eve -p /sbin/ldconfig -%postun graf3d-eve -p /sbin/ldconfig -%post graf3d-gl -p /sbin/ldconfig -%postun graf3d-gl -p /sbin/ldconfig -%post graf3d-gviz3d -p /sbin/ldconfig -%postun graf3d-gviz3d -p /sbin/ldconfig -%post graf3d-x3d -p /sbin/ldconfig -%postun graf3d-x3d -p /sbin/ldconfig -%post gui -p /sbin/ldconfig -%postun gui -p /sbin/ldconfig -%post gui-fitpanel -p /sbin/ldconfig -%postun gui-fitpanel -p /sbin/ldconfig -%post gui-ged -p /sbin/ldconfig -%postun gui-ged -p /sbin/ldconfig -%post guibuilder -p /sbin/ldconfig -%postun guibuilder -p /sbin/ldconfig -%if %{?fedora}%{!?fedora:0} >= 9 || %{?rhel}%{!?rhel:0} >= 6 -%post gui-qt -p /sbin/ldconfig -%postun gui-qt -p /sbin/ldconfig -%endif -%post gui-recorder -p /sbin/ldconfig -%postun gui-recorder -p /sbin/ldconfig -%post hbook -p /sbin/ldconfig -%postun hbook -p /sbin/ldconfig -%post hist -p /sbin/ldconfig -%postun hist -p /sbin/ldconfig -%post hist-painter -p /sbin/ldconfig -%postun hist-painter -p /sbin/ldconfig -%post spectrum -p /sbin/ldconfig -%postun spectrum -p /sbin/ldconfig -%post spectrum-painter -p /sbin/ldconfig -%postun spectrum-painter -p /sbin/ldconfig -%post hist-factory -p /sbin/ldconfig -%postun hist-factory -p /sbin/ldconfig -%post html -p /sbin/ldconfig -%postun html -p /sbin/ldconfig -%post io -p /sbin/ldconfig -%postun io -p /sbin/ldconfig -%post io-dcache -p /sbin/ldconfig -%postun io-dcache -p /sbin/ldconfig -%post io-rfio -p /sbin/ldconfig -%postun io-rfio -p /sbin/ldconfig -%post io-sql -p /sbin/ldconfig -%postun io-sql -p /sbin/ldconfig -%post io-xml -p /sbin/ldconfig -%postun io-xml -p /sbin/ldconfig -%post foam -p /sbin/ldconfig -%postun foam -p /sbin/ldconfig -%post fftw -p /sbin/ldconfig -%postun fftw -p /sbin/ldconfig -%post fumili -p /sbin/ldconfig -%postun fumili -p /sbin/ldconfig -%post genvector -p /sbin/ldconfig -%postun genvector -p /sbin/ldconfig -%post mathcore -p /sbin/ldconfig -%postun mathcore -p /sbin/ldconfig -%post mathmore -p /sbin/ldconfig -%postun mathmore -p /sbin/ldconfig -%post matrix -p /sbin/ldconfig -%postun matrix -p /sbin/ldconfig -%post minuit -p /sbin/ldconfig -%postun minuit -p /sbin/ldconfig -%post minuit2 -p /sbin/ldconfig -%postun minuit2 -p /sbin/ldconfig -%post mlp -p /sbin/ldconfig -%postun mlp -p /sbin/ldconfig -%post physics -p /sbin/ldconfig -%postun physics -p /sbin/ldconfig -%post quadp -p /sbin/ldconfig -%postun quadp -p /sbin/ldconfig -%post smatrix -p /sbin/ldconfig -%postun smatrix -p /sbin/ldconfig -%post splot -p /sbin/ldconfig -%postun splot -p /sbin/ldconfig -%post unuran -p /sbin/ldconfig -%postun unuran -p /sbin/ldconfig -%post memstat -p /sbin/ldconfig -%postun memstat -p /sbin/ldconfig -%post table -p /sbin/ldconfig -%postun table -p /sbin/ldconfig -%post montecarlo-eg -p /sbin/ldconfig -%postun montecarlo-eg -p /sbin/ldconfig -%post montecarlo-vmc -p /sbin/ldconfig -%postun montecarlo-vmc -p /sbin/ldconfig -%post net -p /sbin/ldconfig -%postun net -p /sbin/ldconfig -%post net-rpdutils -p /sbin/ldconfig -%postun net-rpdutils -p /sbin/ldconfig -%post net-bonjour -p /sbin/ldconfig -%postun net-bonjour -p /sbin/ldconfig -%post net-auth -p /sbin/ldconfig -%postun net-auth -p /sbin/ldconfig -%post net-globus -p /sbin/ldconfig -%postun net-globus -p /sbin/ldconfig -%post net-krb5 -p /sbin/ldconfig -%postun net-krb5 -p /sbin/ldconfig -%post net-ldap -p /sbin/ldconfig -%postun net-ldap -p /sbin/ldconfig -%post netx -p /sbin/ldconfig -%postun netx -p /sbin/ldconfig -%post proof -p /sbin/ldconfig -%postun proof -p /sbin/ldconfig -%post proof-sessionviewer -p /sbin/ldconfig -%postun proof-sessionviewer -p /sbin/ldconfig -%post clarens -p /sbin/ldconfig -%postun clarens -p /sbin/ldconfig -%post peac -p /sbin/ldconfig -%postun peac -p /sbin/ldconfig -%post xproof -p /sbin/ldconfig -%postun xproof -p /sbin/ldconfig -%post roofit -p /sbin/ldconfig -%postun roofit -p /sbin/ldconfig -%post sql-mysql -p /sbin/ldconfig -%postun sql-mysql -p /sbin/ldconfig -%post sql-odbc -p /sbin/ldconfig -%postun sql-odbc -p /sbin/ldconfig -%post sql-pgsql -p /sbin/ldconfig -%postun sql-pgsql -p /sbin/ldconfig -%post tmva -p /sbin/ldconfig -%postun tmva -p /sbin/ldconfig -%post tree -p /sbin/ldconfig -%postun tree -p /sbin/ldconfig -%post tree-player -p /sbin/ldconfig -%postun tree-player -p /sbin/ldconfig -%post tree-viewer -p /sbin/ldconfig -%postun tree-viewer -p /sbin/ldconfig %files -%defattr(-,root,root,-) %{_bindir}/hadd %{_bindir}/root %{_bindir}/root.exe +%{_bindir}/rootbrowse +%{_bindir}/rootcp +%{_bindir}/rootls +%{_bindir}/rootmkdir %{_bindir}/rootn.exe +%{_bindir}/rootreadspeed +%{_bindir}/rootrm %{_bindir}/roots %{_bindir}/roots.exe -%{_bindir}/ssh2rpd +%{_bindir}/rootssh %{_mandir}/man1/hadd.1* %{_mandir}/man1/root.1* %{_mandir}/man1/root.exe.1* %{_mandir}/man1/rootn.exe.1* %{_mandir}/man1/roots.exe.1* -%{_mandir}/man1/ssh2rpd.1* %{_datadir}/applications/root.desktop %{_datadir}/icons/hicolor/48x48/apps/root.png %{_datadir}/icons/hicolor/48x48/mimetypes/application-x-root.png %{_datadir}/mime/packages/root.xml %files icons -%defattr(-,root,root,-) %{_datadir}/%{name}/icons +%files font-files +%{_datadir}/%{name}/fonts + +%files tutorial +%doc %{_pkgdocdir}/tutorials + %files core -f includelist-core -%defattr(-,root,root,-) -%{_bindir}/memprobe -%{_bindir}/rlibmap %{_bindir}/rmkdepend %{_bindir}/root-config -%{_mandir}/man1/memprobe.1* %{_mandir}/man1/rmkdepend.1* -%{_mandir}/man1/rlibmap.1* %{_mandir}/man1/root-config.1* +%dir %{_libdir}/%{name} %{_libdir}/%{name}/libCore.* +%{_libdir}/%{name}/libImt.* %{_libdir}/%{name}/libNew.* %{_libdir}/%{name}/libRint.* %{_libdir}/%{name}/libThread.* -%{_libdir}/%{name}/lib[^R]*Dict.* +%{_libdir}/%{name}/lib*Dict.* +%dir %{_datadir}/gdb/auto-load%{_libdir}/%{name} +%{_datadir}/gdb/auto-load%{_libdir}/%{name}/libCore.* +%dir %{_datadir}/gdb/auto-load%{_libdir}/%{name}/__pycache__ +%{_datadir}/gdb/auto-load%{_libdir}/%{name}/__pycache__/libCore.* %dir %{_datadir}/%{name} +%{_datadir}/%{name}/allDict.cxx.pch %{_datadir}/%{name}/class.rules %{_datadir}/%{name}/gdb-backtrace.sh +%{_datadir}/%{name}/gitinfo.txt +%{_datadir}/%{name}/helgrind-root.supp +%{_datadir}/%{name}/lsan-root.supp %{_datadir}/%{name}/Makefile.arch %{_datadir}/%{name}/root.mimes %{_datadir}/%{name}/system.rootauthrc %{_datadir}/%{name}/system.rootdaemonrc %{_datadir}/%{name}/system.rootrc +%{_datadir}/%{name}/valgrind-root.supp +%{_datadir}/%{name}/valgrind-root-python.supp %{_mandir}/man1/system.rootdaemonrc.1* +%dir %{_datadir}/%{name}/cmake +%{_datadir}/%{name}/cmake/*.cmake +%dir %{_datadir}/%{name}/cmake/modules +%{_datadir}/%{name}/cmake/modules/*.cmake %dir %{_datadir}/%{name}/macros %{_datadir}/%{name}/macros/Dialogs.C %dir %{_datadir}/%{name}/plugins %dir %{_datadir}/%{name}/plugins/* +%dir %{_includedir}/%{name} +%if %{bundlejson} +%dir %{_includedir}/%{name}/nlohmann +%{_includedir}/%{name}/nlohmann/json.hpp +%endif %{_includedir}/%{name}/RConfigOptions.h %{_includedir}/%{name}/RConfigure.h +%{_includedir}/%{name}/ROOT.modulemap %{_includedir}/%{name}/compiledata.h -%{_includedir}/%{name}/rmain.cxx %dir %{_includedir}/%{name}/Math -%{_datadir}/aclocal/root.m4 -%doc %{_defaultdocdir}/%{name}-%{version}/CREDITS -%doc %{_defaultdocdir}/%{name}-%{version}/LICENSE -%doc %{_defaultdocdir}/%{name}-%{version}/README - -%files cint -f includelist-cint-cint -%defattr(-,root,root,-) -%{_bindir}/rootcint -%{_mandir}/man1/rootcint.1* -%dir %{_libdir}/%{name} -%{_libdir}/%{name}/libCint.* -%{_libdir}/%{name}/cint -%dir %{_includedir}/%{name} +%dir %{_includedir}/%{name}/ROOT %config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf -%doc %dir %{_defaultdocdir}/%{name}-%{version} -%doc %{_defaultdocdir}/%{name}-%{version}/COPYING.CINT +%dir %{_pkgdocdir} +# CREDITS and LICENSE are used at runtime by the .credits and .license commands +# They therefore should not be marked doc. +%{_pkgdocdir}/CREDITS +%{_pkgdocdir}/LICENSE +%doc %{_pkgdocdir}/DEVELOPMENT.md +%doc %{_pkgdocdir}/ReleaseNotes +%doc %{_pkgdocdir}/root_citation.bib +%license LICENSE LGPL2_1.txt -%ifarch %{ix86} x86_64 -%files cintex -f includelist-cint-cintex -%defattr(-,root,root,-) -%{_libdir}/%{name}/libCintex.* -%{python_sitearch}/PyCintex.py* -%dir %{_includedir}/%{name}/Cintex -%endif +%files multiproc -f includelist-core-multiproc +%{_libdir}/%{name}/libMultiProc.* -%files reflex -f includelist-cint-reflex -%defattr(-,root,root,-) -%{_bindir}/genmap +%files cling %{_bindir}/genreflex -%{_bindir}/genreflex-rootcint -%{_mandir}/man1/genmap.1* -%{_mandir}/man1/genreflex.1* -%{_mandir}/man1/genreflex-rootcint.1* -%{_libdir}/%{name}/libReflex.* -%{_libdir}/%{name}/libReflexDict.* -%{_libdir}/%{name}/python -%dir %{_includedir}/%{name}/Reflex -%dir %{_includedir}/%{name}/Reflex/Builder -%dir %{_includedir}/%{name}/Reflex/internal +%{_bindir}/rootcint +%{_bindir}/rootcling +%{_mandir}/man1/rootcling.1* +%{_libdir}/%{name}/libCling.* +%{_datadir}/%{name}/cling +%{_datadir}/%{name}/dictpch +%doc interpreter/cling/CREDITS.txt +%doc interpreter/cling/README.md +%license interpreter/cling/LICENSE.TXT -%files doc -%defattr(-,root,root,-) -%doc %{_defaultdocdir}/%{name}-%{version}/html +%files testsupport +%{_includedir}/%{name}/ROOT/TestSupport.hxx +%{_libdir}/%{name}/libTestSupport +%doc core/testsupport/README.md -%files tutorial -%defattr(-,root,root,-) -%doc %{_defaultdocdir}/%{name}-%{version}/test -%doc %{_defaultdocdir}/%{name}-%{version}/tutorials +%files tpython -f includelist-bindings-tpython +%{_libdir}/%{name}/libROOTTPython.* +%{_libdir}/%{name}/libROOTTPython_rdict.pcm -%files proofd -%defattr(-,root,root,-) -%{_bindir}/proofd -%{_bindir}/proofexecv -%{_bindir}/proofserv -%{_bindir}/proofserv.exe -%{_bindir}/xproofd -%{_mandir}/man1/proofd.1* -%{_mandir}/man1/proofserv.1* -%{_mandir}/man1/xproofd.1* -%{_initrddir}/proofd +%files -n python3-%{name} -f includelist-bindings-pyroot +%{python3_sitearch}/cppyy +%{python3_sitearch}/ROOT +%exclude %{python3_sitearch}/ROOT/_distrdf +%exclude %{python3_sitearch}/ROOT/_jupyroot +%{python3_sitearch}/ROOT-*.dist-info +%{_libdir}/%{name}/libCPyCppyy.* +%dir %{_includedir}/%{name}/CPyCppyy -%files rootd -%defattr(-,root,root,-) -%{_bindir}/rootd -%{_mandir}/man1/rootd.1* -%{_initrddir}/rootd +%files -n python3-root+jupyroot +%{python3_sitearch}/ROOT/_jupyroot +%ghost %{python3_sitearch}/ROOT-*.dist-info +%{_datadir}/jupyter/kernels/root +%{_bindir}/rootnb.exe +%doc bindings/pyroot/pythonizations/python/ROOT/_jupyroot/README.md +%doc bindings/pyroot/pythonizations/python/ROOT/_jupyroot/JupyROOT-on-EPEL -%files python -f includelist-bindings-pyroot -%defattr(-,root,root,-) -%if "%{?rhel}" == "5" -%{_libdir}/%{name}/libPyROOT.rootmap -%{_libdir}/%{name}/libPyROOT.so -%{_libdir}/%{name}/libPyROOT.so.5 -%ghost %{_libdir}/%{name}/libPyROOT.so.%{libversion} -%else -%{_libdir}/%{name}/libPyROOT.* -%endif -%{python_sitearch}/libPyROOT.* -%{python_sitearch}/ROOT.py* - -%if "%{?rhel}" == "5" -%files python26 -f includelist-bindings-pyroot -%defattr(-,root,root,-) -%{_libdir}/%{name}/libPyROOT.rootmap -%{_libdir}/%{name}/libPyROOT.so -%{_libdir}/%{name}/libPyROOT.so.5 -%ghost %{_libdir}/%{name}/libPyROOT.so.%{libversion} -%{python26_sitearch}/libPyROOT.* -%{python26_sitearch}/ROOT.py* +%if %{distrdf} +%files -n python3-root+distrdf +%{python3_sitearch}/ROOT/_distrdf +%ghost %{python3_sitearch}/ROOT-*.dist-info %endif -%files ruby -f includelist-bindings-ruby -%defattr(-,root,root,-) -%{_libdir}/%{name}/libRuby.* -%{ruby_installdir}/libRuby.* +%if %{rrr} +%files r -f includelist-bindings-r +%{_libdir}/%{name}/libRInterface.* +%{_libdir}/%{name}/libRInterface_rdict.pcm +%doc bindings/r/doc/users-guide/*.md + +%files r-tools -f includelist-math-rtools +%{_libdir}/%{name}/libRtools.* +%{_libdir}/%{name}/libRtools_rdict.pcm +%{_datadir}/%{name}/plugins/ROOT@@Math@@Minimizer/P090_RMinimizer.C +%endif %files genetic -f includelist-math-genetic -%defattr(-,root,root,-) %{_libdir}/%{name}/libGenetic.* +%{_libdir}/%{name}/libGenetic_rdict.pcm %{_datadir}/%{name}/plugins/ROOT@@Math@@Minimizer/P080_GeneticMinimizer.C -%files geom -f includelist-geom -%defattr(-,root,root,-) +%files geom -f includelist-geom-geom %{_libdir}/%{name}/libGeom.* -%{_libdir}/%{name}/libGeomBuilder.* -%{_libdir}/%{name}/libGeomPainter.* -%{_datadir}/%{name}/plugins/TGeoManagerEditor/P010_TGeoManagerEditor.C -%{_datadir}/%{name}/plugins/TVirtualGeoPainter/P010_TGeoPainter.C +%{_libdir}/%{name}/libGeom_rdict.pcm %{_datadir}/%{name}/RadioNuclides.txt +%files geom-builder -f includelist-geom-geombuilder +%{_libdir}/%{name}/libGeomBuilder.* +%{_libdir}/%{name}/libGeomBuilder_rdict.pcm +%{_datadir}/%{name}/plugins/TGeoManagerEditor/P010_TGeoManagerEditor.C + +%files geom-painter -f includelist-geom-geompainter +%{_libdir}/%{name}/libGeomPainter.* +%{_libdir}/%{name}/libGeomPainter_rdict.pcm +%{_datadir}/%{name}/plugins/TVirtualGeoPainter/P010_TGeoPainter.C + %files gdml -f includelist-geom-gdml -%defattr(-,root,root,-) %{_libdir}/%{name}/libGdml.* -%{python_sitearch}/ROOTwriter.py* -%{python_sitearch}/writer.py* +%{_libdir}/%{name}/libGdml_rdict.pcm %files graf -f includelist-graf2d-graf -%defattr(-,root,root,-) %{_libdir}/%{name}/libGraf.* +%{_libdir}/%{name}/libGraf_rdict.pcm %{_datadir}/%{name}/plugins/TMinuitGraph/P010_TGraph.C %files graf-asimage -f includelist-graf2d-asimage -%defattr(-,root,root,-) %{_libdir}/%{name}/libASImage.* +%{_libdir}/%{name}/libASImage_rdict.pcm %{_libdir}/%{name}/libASImageGui.* +%{_libdir}/%{name}/libASImageGui_rdict.pcm %{_datadir}/%{name}/plugins/TImage/P010_TASImage.C +%{_datadir}/%{name}/plugins/TImagePlugin/P010_TASPluginGS.C %{_datadir}/%{name}/plugins/TPaletteEditor/P010_TASPaletteEditor.C %files graf-fitsio -f includelist-graf2d-fitsio -%defattr(-,root,root,-) %{_libdir}/%{name}/libFITSIO.* +%{_libdir}/%{name}/libFITSIO_rdict.pcm %files graf-gpad -f includelist-graf2d-gpad -%defattr(-,root,root,-) %{_libdir}/%{name}/libGpad.* +%{_libdir}/%{name}/libGpad_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualPad/P010_TPad.C %files graf-gviz -f includelist-graf2d-gviz -%defattr(-,root,root,-) %{_libdir}/%{name}/libGviz.* +%{_libdir}/%{name}/libGviz_rdict.pcm %files graf-postscript -f includelist-graf2d-postscript -%defattr(-,root,root,-) %{_libdir}/%{name}/libPostscript.* +%{_libdir}/%{name}/libPostscript_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualPS/P010_TPostScript.C %{_datadir}/%{name}/plugins/TVirtualPS/P020_TSVG.C %{_datadir}/%{name}/plugins/TVirtualPS/P030_TPDF.C %{_datadir}/%{name}/plugins/TVirtualPS/P040_TImageDump.C - -%if %{?fedora}%{!?fedora:0} >= 9 || %{?rhel}%{!?rhel:0} >= 6 -%files graf-qt -f includelist-graf2d-qt -%defattr(-,root,root,-) -%{_libdir}/%{name}/libGQt.* -%{_datadir}/%{name}/plugins/TVirtualX/P040_TGQt.C -%endif +%{_datadir}/%{name}/plugins/TVirtualPS/P050_TTeXDump.C %files graf-x11 -f includelist-graf2d-x11 -%defattr(-,root,root,-) %{_libdir}/%{name}/libGX11.* +%{_libdir}/%{name}/libGX11_rdict.pcm %{_libdir}/%{name}/libGX11TTF.* +%{_libdir}/%{name}/libGX11TTF_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualX/P010_TGX11.C %{_datadir}/%{name}/plugins/TVirtualX/P020_TGX11TTF.C %files graf3d -f includelist-graf3d-g3d -%defattr(-,root,root,-) %{_libdir}/%{name}/libGraf3d.* +%{_libdir}/%{name}/libGraf3d_rdict.pcm %{_datadir}/%{name}/plugins/TView/P010_TView3D.C +%files graf3d-csg -f includelist-graf3d-csg +%{_libdir}/%{name}/libRCsg.* +%{_libdir}/%{name}/libRCsg_rdict.pcm + %files graf3d-eve -f includelist-graf3d-eve -%defattr(-,root,root,-) %{_libdir}/%{name}/libEve.* +%{_libdir}/%{name}/libEve_rdict.pcm %files graf3d-gl -f includelist-graf3d-gl -%defattr(-,root,root,-) %{_libdir}/%{name}/libRGL.* +%{_libdir}/%{name}/libRGL_rdict.pcm %{_datadir}/%{name}/plugins/TGLHistPainter/P010_TGLHistPainter.C %{_datadir}/%{name}/plugins/TGLManager/P010_TX11GLManager.C %{_datadir}/%{name}/plugins/TVirtualGLImp/P010_TX11GL.C @@ -1910,158 +2994,140 @@ fi %{_datadir}/%{name}/plugins/TVirtualViewer3D/P020_TGLSAViewer.C %{_datadir}/%{name}/plugins/TVirtualViewer3D/P030_TGLViewer.C +%files graf3d-glad +%{_libdir}/%{name}/libROOTGlad.* + %files graf3d-gviz3d -f includelist-graf3d-gviz3d -%defattr(-,root,root,-) %{_libdir}/%{name}/libGviz3d.* +%{_libdir}/%{name}/libGviz3d_rdict.pcm %files graf3d-x3d -f includelist-graf3d-x3d -%defattr(-,root,root,-) %{_libdir}/%{name}/libX3d.* +%{_libdir}/%{name}/libX3d_rdict.pcm %{_datadir}/%{name}/plugins/TViewerX3D/P010_TViewerX3D.C -%{_datadir}/%{name}/plugins/TVirtualViewer3D/P010_TViewerX3D.C +%{_datadir}/%{name}/plugins/TVirtualViewer3D/P010_TVirtualViewerX3D.C %files gui -f includelist-gui-gui -%defattr(-,root,root,-) %{_libdir}/%{name}/libGui.* -%{_libdir}/%{name}/libGuiHtml.* +%{_libdir}/%{name}/libGui_rdict.pcm %{_datadir}/%{name}/plugins/TBrowserImp/P010_TRootBrowser.C %{_datadir}/%{name}/plugins/TBrowserImp/P020_TRootBrowserLite.C %{_datadir}/%{name}/plugins/TGPasswdDialog/P010_TGPasswdDialog.C %{_datadir}/%{name}/plugins/TGuiFactory/P010_TRootGuiFactory.C +%files gui-html -f includelist-gui-guihtml +%{_libdir}/%{name}/libGuiHtml.* +%{_libdir}/%{name}/libGuiHtml_rdict.pcm + %files gui-fitpanel -f includelist-gui-fitpanel -%defattr(-,root,root,-) %{_libdir}/%{name}/libFitPanel.* +%{_libdir}/%{name}/libFitPanel_rdict.pcm %{_datadir}/%{name}/plugins/TFitEditor/P010_TFitEditor.C %files gui-ged -f includelist-gui-ged -%defattr(-,root,root,-) %{_libdir}/%{name}/libGed.* +%{_libdir}/%{name}/libGed_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualPadEditor/P010_TGedEditor.C -%files guibuilder -f includelist-gui-guibuilder -%defattr(-,root,root,-) +%files gui-builder -f includelist-gui-guibuilder %{_libdir}/%{name}/libGuiBld.* +%{_libdir}/%{name}/libGuiBld_rdict.pcm %{_datadir}/%{name}/plugins/TGuiBuilder/P010_TRootGuiBuilder.C %{_datadir}/%{name}/plugins/TVirtualDragManager/P010_TGuiBldDragManager.C -%if %{?fedora}%{!?fedora:0} >= 9 || %{?rhel}%{!?rhel:0} >= 6 -%files gui-qt -f includelist-gui-qt -%defattr(-,root,root,-) -%{_libdir}/%{name}/libQtRoot.* -%{_libdir}/%{name}/libQtGSI.* -%{_datadir}/%{name}/plugins/TGuiFactory/P020_TQtRootGuiFactory.C -%endif - %files gui-recorder -f includelist-gui-recorder -%defattr(-,root,root,-) %{_libdir}/%{name}/libRecorder.* +%{_libdir}/%{name}/libRecorder_rdict.pcm + +%files gui-treemap -f includelist-gui-treemap +%{_libdir}/%{name}/libROOTTreeMap.* +%{_libdir}/%{name}/libROOTTreeMap_rdict.pcm %files hbook -f includelist-hist-hbook -%defattr(-,root,root,-) %{_bindir}/g2root %{_bindir}/h2root %{_mandir}/man1/g2root.1* %{_mandir}/man1/h2root.1* -%{_libdir}/%{name}/libminicern.* %{_libdir}/%{name}/libHbook.* +%{_libdir}/%{name}/libHbook_rdict.pcm %files hist -f includelist-hist-hist -%defattr(-,root,root,-) %{_libdir}/%{name}/libHist.* +%{_libdir}/%{name}/libHist_rdict.pcm +%dir %{_includedir}/%{name}/v5 %files hist-painter -f includelist-hist-histpainter -%defattr(-,root,root,-) %{_libdir}/%{name}/libHistPainter.* +%{_libdir}/%{name}/libHistPainter_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualHistPainter/P010_THistPainter.C %{_datadir}/%{name}/plugins/TVirtualGraphPainter/P010_TGraphPainter.C %files spectrum -f includelist-hist-spectrum -%defattr(-,root,root,-) %{_libdir}/%{name}/libSpectrum.* +%{_libdir}/%{name}/libSpectrum_rdict.pcm %files spectrum-painter -f includelist-hist-spectrumpainter -%defattr(-,root,root,-) %{_libdir}/%{name}/libSpectrumPainter.* - -%files hist-factory -f includelist-roofit-histfactory -%defattr(-,root,root,-) -%{_bindir}/hist2workspace -%{_bindir}/prepareHistFactory -%{_mandir}/man1/hist2workspace.1* -%{_mandir}/man1/prepareHistFactory.1* -%{_libdir}/%{name}/libHistFactory.* -%{_datadir}/%{name}/HistFactorySchema.dtd -%dir %{_includedir}/%{name}/RooStats/HistFactory -%doc roofit/histfactory/doc/README - -%files html -f includelist-html -%defattr(-,root,root,-) -%{_libdir}/%{name}/libHtml.* -%{_datadir}/%{name}/html -%{_datadir}/%{name}/macros/html.C +%{_libdir}/%{name}/libSpectrumPainter_rdict.pcm %files io -f includelist-io-io -%defattr(-,root,root,-) %{_libdir}/%{name}/libRIO.* %{_datadir}/%{name}/plugins/TArchiveFile/P010_TZIPFile.C %{_datadir}/%{name}/plugins/TVirtualStreamerInfo/P010_TStreamerInfo.C %files io-dcache -f includelist-io-dcache -%defattr(-,root,root,-) %{_libdir}/%{name}/libDCache.* +%{_libdir}/%{name}/libDCache_rdict.pcm %{_datadir}/%{name}/plugins/TFile/P040_TDCacheFile.C %{_datadir}/%{name}/plugins/TSystem/P020_TDCacheSystem.C -%files io-rfio -f includelist-io-rfio -%defattr(-,root,root,-) -%{_libdir}/%{name}/libRFIO.* -%{_datadir}/%{name}/plugins/TFile/P020_TRFIOFile.C -%{_datadir}/%{name}/plugins/TSystem/P010_TRFIOSystem.C - %files io-sql -f includelist-io-sql -%defattr(-,root,root,-) %{_libdir}/%{name}/libSQLIO.* -%{_datadir}/%{name}/plugins/TFile/P090_TSQLFile.C +%{_libdir}/%{name}/libSQLIO_rdict.pcm %files io-xml -f includelist-io-xml -%defattr(-,root,root,-) %{_libdir}/%{name}/libXMLIO.* -%{_libdir}/%{name}/libXMLParser.* +%{_libdir}/%{name}/libXMLIO_rdict.pcm %{_datadir}/%{name}/plugins/TFile/P080_TXMLFile.C +%files io-xmlparser -f includelist-io-xmlparser +%{_libdir}/%{name}/libXMLParser.* +%{_libdir}/%{name}/libXMLParser_rdict.pcm + %files foam -f includelist-math-foam -%defattr(-,root,root,-) %{_libdir}/%{name}/libFoam.* +%{_libdir}/%{name}/libFoam_rdict.pcm %{_datadir}/%{name}/plugins/ROOT@@Math@@DistSampler/P020_TFoamSampler.C %files fftw -f includelist-math-fftw -%defattr(-,root,root,-) %{_libdir}/%{name}/libFFTW.* +%{_libdir}/%{name}/libFFTW_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualFFT/P010_TFFTComplex.C %{_datadir}/%{name}/plugins/TVirtualFFT/P020_TFFTComplexReal.C %{_datadir}/%{name}/plugins/TVirtualFFT/P030_TFFTRealComplex.C %{_datadir}/%{name}/plugins/TVirtualFFT/P040_TFFTReal.C %files fumili -f includelist-math-fumili -%defattr(-,root,root,-) %{_libdir}/%{name}/libFumili.* +%{_libdir}/%{name}/libFumili_rdict.pcm %{_datadir}/%{name}/plugins/ROOT@@Math@@Minimizer/P070_TFumiliMinimizer.C %{_datadir}/%{name}/plugins/TVirtualFitter/P020_TFumili.C %files genvector -f includelist-math-genvector -%defattr(-,root,root,-) %{_libdir}/%{name}/libGenVector.* +%{_libdir}/%{name}/libGenVector_rdict.pcm +%{_libdir}/%{name}/libGenVector32.rootmap +%{_libdir}/%{name}/libGenVector_G__GenVector32_rdict.pcm %dir %{_includedir}/%{name}/Math/GenVector %files mathcore -f includelist-math-mathcore -%defattr(-,root,root,-) %{_libdir}/%{name}/libMathCore.* +%{_libdir}/%{name}/libMathCore_rdict.pcm %dir %{_includedir}/%{name}/Fit %files mathmore -f includelist-math-mathmore -%defattr(-,root,root,-) %{_libdir}/%{name}/libMathMore.* +%{_libdir}/%{name}/libMathMore_rdict.pcm %{_datadir}/%{name}/plugins/ROOT@@Math@@IRootFinderMethod/P010_Brent.C %{_datadir}/%{name}/plugins/ROOT@@Math@@IRootFinderMethod/P020_Bisection.C %{_datadir}/%{name}/plugins/ROOT@@Math@@IRootFinderMethod/P030_FalsePos.C @@ -2075,226 +3141,1699 @@ fi %{_datadir}/%{name}/plugins/ROOT@@Math@@VirtualIntegrator/P020_GSLMCIntegrator.C %files matrix -f includelist-math-matrix -%defattr(-,root,root,-) %{_libdir}/%{name}/libMatrix.* +%{_libdir}/%{name}/libMatrix_rdict.pcm %files minuit -f includelist-math-minuit -%defattr(-,root,root,-) %{_libdir}/%{name}/libMinuit.* +%{_libdir}/%{name}/libMinuit_rdict.pcm %{_datadir}/%{name}/plugins/ROOT@@Math@@Minimizer/P020_TMinuitMinimizer.C %{_datadir}/%{name}/plugins/ROOT@@Math@@Minimizer/P060_TLinearMinimizer.C %{_datadir}/%{name}/plugins/TVirtualFitter/P010_TFitter.C %files minuit2 -f includelist-math-minuit2 -%defattr(-,root,root,-) %{_libdir}/%{name}/libMinuit2.* +%{_libdir}/%{name}/libMinuit2_rdict.pcm %dir %{_includedir}/%{name}/Minuit2 %{_datadir}/%{name}/plugins/ROOT@@Math@@Minimizer/P010_Minuit2Minimizer.C -%{_datadir}/%{name}/plugins/TVirtualFitter/P030_TFitterMinuit.C -%{_datadir}/%{name}/plugins/TVirtualFitter/P040_TFitterFumili.C %files mlp -f includelist-math-mlp -%defattr(-,root,root,-) %{_libdir}/%{name}/libMLP.* +%{_libdir}/%{name}/libMLP_rdict.pcm %files physics -f includelist-math-physics -%defattr(-,root,root,-) %{_libdir}/%{name}/libPhysics.* +%{_libdir}/%{name}/libPhysics_rdict.pcm %files quadp -f includelist-math-quadp -%defattr(-,root,root,-) %{_libdir}/%{name}/libQuadp.* +%{_libdir}/%{name}/libQuadp_rdict.pcm %files smatrix -f includelist-math-smatrix -%defattr(-,root,root,-) %{_libdir}/%{name}/libSmatrix.* +%{_libdir}/%{name}/libSmatrix_rdict.pcm +%{_libdir}/%{name}/libSmatrix32.rootmap +%{_libdir}/%{name}/libSmatrix_G__Smatrix32_rdict.pcm %files splot -f includelist-math-splot -%defattr(-,root,root,-) %{_libdir}/%{name}/libSPlot.* +%{_libdir}/%{name}/libSPlot_rdict.pcm %files unuran -f includelist-math-unuran -%defattr(-,root,root,-) %{_libdir}/%{name}/libUnuran.* +%{_libdir}/%{name}/libUnuran_rdict.pcm %{_datadir}/%{name}/plugins/ROOT@@Math@@DistSampler/P010_TUnuranSampler.C -%files memstat -f includelist-misc-memstat -%defattr(-,root,root,-) -%{_libdir}/%{name}/libMemStat.* - -%files table -f includelist-misc-table -%defattr(-,root,root,-) -%{_libdir}/%{name}/libTable.* +%files vecops -f includelist-math-vecops +%{_libdir}/%{name}/libROOTVecOps.* +%{_libdir}/%{name}/libROOTVecOps_rdict.pcm %files montecarlo-eg -f includelist-montecarlo-eg -%defattr(-,root,root,-) %{_libdir}/%{name}/libEG.* +%{_libdir}/%{name}/libEG_rdict.pcm %{_datadir}/%{name}/pdg_table.txt -%doc %{_defaultdocdir}/%{name}-%{version}/cfortran.doc +%{_datadir}/%{name}/pdg_table_update.py +%doc %{_pkgdocdir}/cfortran.doc -%files montecarlo-vmc -f includelist-montecarlo-vmc -%defattr(-,root,root,-) -%{_libdir}/%{name}/libVMC.* -%{_datadir}/%{name}/vmc +%files montecarlo-pythia8 -f includelist-montecarlo-pythia8 +%{_libdir}/%{name}/libEGPythia8.* +%{_libdir}/%{name}/libEGPythia8_rdict.pcm %files net -f includelist-net-net -%defattr(-,root,root,-) %{_libdir}/%{name}/libNet.* +%{_libdir}/%{name}/libNet_rdict.pcm %{_datadir}/%{name}/plugins/TApplication/P010_TApplicationRemote.C %{_datadir}/%{name}/plugins/TApplication/P020_TApplicationServer.C %{_datadir}/%{name}/plugins/TFile/P010_TWebFile.C %{_datadir}/%{name}/plugins/TFile/P120_TNetFile.C -%{_datadir}/%{name}/plugins/TFile/P130_TAS3File.C -%{_datadir}/%{name}/plugins/TFile/P140_TGSFile.C +%{_datadir}/%{name}/plugins/TFile/P150_TS3WebFile.C %{_datadir}/%{name}/plugins/TFileStager/P020_TNetFileStager.C %{_datadir}/%{name}/plugins/TSystem/P050_TWebSystem.C %{_datadir}/%{name}/plugins/TSystem/P070_TNetSystem.C %{_datadir}/%{name}/plugins/TVirtualMonitoringWriter/P020_TSQLMonitoringWriter.C -%files net-rpdutils -f includelist-net-rpdutils -%defattr(-,root,root,-) +%files net-rpdutils %{_libdir}/%{name}/libSrvAuth.* -%files net-bonjour -f includelist-net-bonjour -%defattr(-,root,root,-) -%{_libdir}/%{name}/libBonjour.* - %files net-auth -f includelist-net-auth -%defattr(-,root,root,-) %{_libdir}/%{name}/libRootAuth.* +%{_libdir}/%{name}/libRootAuth_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualAuth/P010_TRootAuth.C -%doc %{_defaultdocdir}/%{name}-%{version}/README.AUTH +%doc %{_pkgdocdir}/README.AUTH -%files net-globus -%defattr(-,root,root,-) -%{_libdir}/%{name}/libGlobusAuth.* -%doc %{_defaultdocdir}/%{name}-%{version}/README.GLOBUS +%files net-curl -f includelist-net-curl +%{_libdir}/%{name}/libRCurlHttp.* +%{_libdir}/%{name}/libRCurlHttp_rdict.pcm +%{_datadir}/%{name}/plugins/ROOT@@Internal@@RRawFile/P015_RRawFileCurl.C +%{_datadir}/%{name}/plugins/TFile/P140_TCurlFile.C -%files net-krb5 -f includelist-net-krb5auth -%defattr(-,root,root,-) -%{_libdir}/%{name}/libKrb5Auth.* +%if %{davix} +%files net-davix -f includelist-net-davix +%{_libdir}/%{name}/libRDAVIX.* +%{_libdir}/%{name}/libRDAVIX_rdict.pcm +%{_datadir}/%{name}/plugins/TFile/P130_TDavixFile.C +%{_datadir}/%{name}/plugins/TSystem/P045_TDavixSystem.C +%{_datadir}/%{name}/plugins/ROOT@@Internal@@RRawFile/P010_RRawFileDavix.C +%endif -%files net-ldap -f includelist-net-ldap -%defattr(-,root,root,-) -%{_libdir}/%{name}/libRLDAP.* +%files net-http -f includelist-net-http +%{_libdir}/%{name}/libRHTTP.* +%{_libdir}/%{name}/libRHTTP_rdict.pcm +%dir %{_datadir}/%{name}/js +%dir %{_datadir}/%{name}/js/files +%{_datadir}/%{name}/js/files/canv_batch.htm +%{_datadir}/%{name}/js/files/geom_batch.htm +%{_datadir}/%{name}/js/files/web.config +%{_datadir}/%{name}/js/files/wslist.htm +%ghost %{_datadir}/%{name}/js/build +%ghost %{_datadir}/%{name}/js/img +%ghost %{_datadir}/%{name}/js/mathjax +%ghost %{_datadir}/%{name}/js/modules +%ghost %{_datadir}/%{name}/js/scripts +%ghost %{_datadir}/%{name}/js/files/draw.htm +%ghost %{_datadir}/%{name}/js/files/online.htm +%doc net/http/README.txt -%files netx -f includelist-net-netx -%defattr(-,root,root,-) -%{_libdir}/%{name}/libNetx.* +%files net-httpsniff -f includelist-net-httpsniff +%{_libdir}/%{name}/libRHTTPSniff.* +%{_libdir}/%{name}/libRHTTPSniff_rdict.pcm + +%files netx -f includelist-net-netxng +%{_libdir}/%{name}/libNetxNG.* +%{_libdir}/%{name}/libNetxNG_rdict.pcm %{_datadir}/%{name}/plugins/TFile/P100_TXNetFile.C %{_datadir}/%{name}/plugins/TFileStager/P010_TXNetFileStager.C %{_datadir}/%{name}/plugins/TSystem/P040_TXNetSystem.C +%{_datadir}/%{name}/plugins/ROOT@@Internal@@RRawFile/P020_RRawFileNetXNG.C -%files proof -f includelist-proof-proof -%defattr(-,root,root,-) -%{_libdir}/%{name}/libProof.* -%{_libdir}/%{name}/libProofDraw.* -%{_libdir}/%{name}/libProofPlayer.* -%{_datadir}/%{name}/plugins/TChain/P010_TProofChain.C -%{_datadir}/%{name}/plugins/TDataSetManager/P010_TDataSetManagerFile.C -%{_datadir}/%{name}/plugins/TProof/P010_TProofCondor.C -%{_datadir}/%{name}/plugins/TProof/P020_TProofSuperMaster.C -%{_datadir}/%{name}/plugins/TProof/P040_TProof.C -%{_datadir}/%{name}/plugins/TProofMonSender/P010_TProofMonSenderML.C -%{_datadir}/%{name}/plugins/TProofMonSender/P020_TProofMonSenderSQL.C -%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P010_TProofPlayer.C -%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P020_TProofPlayerRemote.C -%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P030_TProofPlayerLocal.C -%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P040_TProofPlayerSlave.C -%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P050_TProofPlayerSuperMaster.C -%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P060_TProofPlayerLite.C -%{_datadir}/%{name}/valgrind-root.supp -%doc %{_defaultdocdir}/%{name}-%{version}/README.PROOF - -%files proof-bench -f includelist-proof-proofbench -%defattr(-,root,root,-) -%{_libdir}/%{name}/libProofBench.* -%{_datadir}/%{name}/proof - -%files proof-pq2 -f includelist-proof-pq2 -%defattr(-,root,root,-) -%{_bindir}/pq2* -%{_mandir}/man1/pq2*.1* - -%files proof-sessionviewer -f includelist-gui-sessionviewer -%defattr(-,root,root,-) -%{_libdir}/%{name}/libSessionViewer.* -%{_datadir}/%{name}/plugins/TProofProgressDialog/P010_TProofProgressDialog.C -%{_datadir}/%{name}/plugins/TProofProgressLog/P010_TProofProgressLog.C -%{_datadir}/%{name}/plugins/TSessionViewer/P010_TSessionViewer.C - -%files clarens -f includelist-proof-clarens -%defattr(-,root,root,-) -%{_libdir}/%{name}/libClarens.* - -%files peac -f includelist-proof-peac -%defattr(-,root,root,-) -%{_libdir}/%{name}/libPeac.* -%{_libdir}/%{name}/libPeacGui.* -%{_datadir}/%{name}/plugins/TProof/P030_TProofPEAC.C - -%files xproof -f includelist-proof-proofx -%defattr(-,root,root,-) -%{_libdir}/%{name}/libProofx.* -%{_libdir}/%{name}/libXrdProofd.* -%{_datadir}/%{name}/plugins/TProofMgr/P010_TXProofMgr.C -%{_datadir}/%{name}/plugins/TProofServ/P010_TXProofServ.C -%{_datadir}/%{name}/plugins/TSlave/P010_TXSlave.C - -%files roofit -f includelist-roofit -%defattr(-,root,root,-) +%if %{roofit} +%files roofit -f includelist-roofit-roofit %{_libdir}/%{name}/libRooFit.* +%{_libdir}/%{name}/libRooFit_rdict.pcm + +%files roofit-core -f includelist-roofit-roofitcore %{_libdir}/%{name}/libRooFitCore.* +%{_libdir}/%{name}/libRooFitCore_rdict.pcm +%dir %{_includedir}/%{name}/RooFit +%dir %{_includedir}/%{name}/RooFit/Detail +%dir %{_includedir}/%{name}/RooFit/TestStatistics +%dir %{_includedir}/%{name}/RooFitLegacy +%{_datadir}/gdb/auto-load%{_libdir}/%{name}/libRooFitCore.* +%{_datadir}/gdb/auto-load%{_libdir}/%{name}/__pycache__/libRooFitCore.* + +%files roofit-more -f includelist-roofit-roofitmore +%{_libdir}/%{name}/libRooFitMore.* +%{_libdir}/%{name}/libRooFitMore_rdict.pcm + +%files roofit-batchcompute +%{_libdir}/%{name}/libRooBatchCompute.* +%{_libdir}/%{name}/libRooBatchCompute_* + +%files roofit-hs3 -f includelist-roofit-hs3 +%{_libdir}/%{name}/libRooFitHS3.* +%{_libdir}/%{name}/libRooFitHS3_rdict.pcm +%dir %{_includedir}/%{name}/RooFitHS3 + +%files roofit-codegen -f includelist-roofit-codegen +%{_libdir}/%{name}/libRooFitCodegen.* +%{_libdir}/%{name}/libRooFitCodegen_rdict.pcm + +%if %{roofitmp} +%files roofit-multiprocess -f includelist-roofit-multiprocess +%{_libdir}/%{name}/libRooFitMultiProcess.* +%dir %{_includedir}/%{name}/RooFit +%dir %{_includedir}/%{name}/RooFit/MultiProcess + +%files roofit-zmq +%{_libdir}/%{name}/libRooFitZMQ.* +%endif + +%files roostats -f includelist-roofit-roostats %{_libdir}/%{name}/libRooStats.* +%{_libdir}/%{name}/libRooStats_rdict.pcm %dir %{_includedir}/%{name}/RooStats -%files sql-mysql -f includelist-sql-mysql -%defattr(-,root,root,-) -%{_libdir}/%{name}/libRMySQL.* -%{_datadir}/%{name}/plugins/TSQLServer/P010_TMySQLServer.C +%files hist-factory -f includelist-roofit-histfactory +%{_bindir}/hist2workspace +%{_bindir}/prepareHistFactory +%{_mandir}/man1/hist2workspace.1* +%{_mandir}/man1/prepareHistFactory.1* +%{_libdir}/%{name}/libHistFactory.* +%{_libdir}/%{name}/libHistFactory_rdict.pcm +%{_datadir}/%{name}/HistFactorySchema.dtd +%dir %{_includedir}/%{name}/RooStats/HistFactory +%dir %{_includedir}/%{name}/RooStats/HistFactory/Detail +%doc roofit/histfactory/doc/README -%files sql-odbc -f includelist-sql-odbc -%defattr(-,root,root,-) -%{_libdir}/%{name}/libRODBC.* -%{_datadir}/%{name}/plugins/TSQLServer/P050_TODBCServer.C +%files xroofit -f includelist-roofit-xroofit +%{_libdir}/%{name}/libRooFitXRooFit.* +%{_libdir}/%{name}/libRooFitXRooFit_rdict.pcm +%dir %{_includedir}/%{name}/RooFit/xRooFit +%endif -%files sql-pgsql -f includelist-sql-pgsql -%defattr(-,root,root,-) -%{_libdir}/%{name}/libPgSQL.* -%{_datadir}/%{name}/plugins/TSQLServer/P020_TPgSQLServer.C +%files sql-sqlite -f includelist-sql-sqlite +%{_libdir}/%{name}/libRSQLite.* +%{_libdir}/%{name}/libRSQLite_rdict.pcm +%{_datadir}/%{name}/plugins/TSQLServer/P060_TSQLiteServer.C -%files tmva -f includelist-tmva -%defattr(-,root,root,-) +%files tmva -f includelist-tmva-tmva %{_libdir}/%{name}/libTMVA.* +%{_libdir}/%{name}/libTMVA_rdict.pcm %dir %{_includedir}/%{name}/TMVA -%doc tmva/doc/LICENSE +%dir %{_includedir}/%{name}/TMVA/DNN +%dir %{_includedir}/%{name}/TMVA/DNN/Architectures +%dir %{_includedir}/%{name}/TMVA/DNN/Architectures/Cpu +%dir %{_includedir}/%{name}/TMVA/DNN/Architectures/Reference +%dir %{_includedir}/%{name}/TMVA/DNN/CNN +%dir %{_includedir}/%{name}/TMVA/DNN/RNN +%license tmva/doc/LICENSE +%exclude %{_includedir}/%{name}/TMVA/RBDT.hxx +%exclude %{_includedir}/%{name}/TMVA/RInferenceUtils.hxx +%exclude %{_includedir}/%{name}/TMVA/RReader.hxx +%exclude %{_includedir}/%{name}/TMVA/RSofieReader.hxx +%exclude %{_includedir}/%{name}/TMVA/RStandardScaler.hxx +%exclude %{_includedir}/%{name}/TMVA/RTensorUtils.hxx + +%if %{dataframe} +%files tmva-utils +%{_libdir}/%{name}/libTMVAUtils.* +%{_libdir}/%{name}/libTMVAUtils_rdict.pcm +%dir %{_includedir}/%{name}/TMVA +%{_includedir}/%{name}/TMVA/RBDT.hxx +%{_includedir}/%{name}/TMVA/RInferenceUtils.hxx +%{_includedir}/%{name}/TMVA/RReader.hxx +%{_includedir}/%{name}/TMVA/RSofieReader.hxx +%{_includedir}/%{name}/TMVA/RStandardScaler.hxx +%{_includedir}/%{name}/TMVA/RTensorUtils.hxx +%endif + +%files tmva-python -f includelist-tmva-pymva +%{_libdir}/%{name}/libPyMVA.* +%{_libdir}/%{name}/libPyMVA_rdict.pcm + +%if %{rrr} +%files tmva-r -f includelist-tmva-rmva +%{_libdir}/%{name}/libRMVA.* +%{_libdir}/%{name}/libRMVA_rdict.pcm +%endif + +%files tmva-sofie -f includelist-tmva-sofie +%{_libdir}/%{name}/libROOTTMVASofie.* +%{_libdir}/%{name}/libROOTTMVASofie_rdict.pcm +%doc tmva/sofie/README.md + +%if %{tmvasofieparser} +%files tmva-sofie-parser -f includelist-tmva-sofie_parsers +%{_libdir}/%{name}/libROOTTMVASofieParser.* +%{_libdir}/%{name}/libROOTTMVASofieParser_rdict.pcm +%exclude %{_includedir}/%{name}/TMVA/RModelParser_Keras.h +%exclude %{_includedir}/%{name}/TMVA/RModelParser_PyTorch.h + +%files tmva-sofie-parser-python +%{_libdir}/%{name}/libROOTTMVASofiePyParsers.* +%{_includedir}/%{name}/TMVA/RModelParser_Keras.h +%{_includedir}/%{name}/TMVA/RModelParser_PyTorch.h +%endif + +%files tmva-gui -f includelist-tmva-tmvagui +%{_libdir}/%{name}/libTMVAGui.* +%{_libdir}/%{name}/libTMVAGui_rdict.pcm %files tree -f includelist-tree-tree -%defattr(-,root,root,-) %{_libdir}/%{name}/libTree.* -%doc %{_defaultdocdir}/%{name}-%{version}/README.SELECTOR +%{_libdir}/%{name}/libTree_rdict.pcm +%doc %{_pkgdocdir}/README.SELECTOR + +%if %{dataframe} +%files tree-dataframe -f includelist-tree-dataframe +%{_libdir}/%{name}/libROOTDataFrame.* +%{_libdir}/%{name}/libROOTDataFrame_rdict.pcm + +%files tree-ml -f includelist-tree-ml +%{_libdir}/%{name}/libROOTMLDataLoader.* +%{_libdir}/%{name}/libROOTMLDataLoader_rdict.pcm +%dir %{_includedir}/%{name}/ROOT/ML +%endif %files tree-player -f includelist-tree-treeplayer -%defattr(-,root,root,-) %{_libdir}/%{name}/libTreePlayer.* +%{_libdir}/%{name}/libTreePlayer_rdict.pcm %{_datadir}/%{name}/plugins/TFileDrawMap/P010_TFileDrawMap.C %{_datadir}/%{name}/plugins/TVirtualTreePlayer/P010_TTreePlayer.C %files tree-viewer -f includelist-tree-treeviewer -%defattr(-,root,root,-) %{_libdir}/%{name}/libTreeViewer.* +%{_libdir}/%{name}/libTreeViewer_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualTreeViewer/P010_TTreeViewer.C -%files -n emacs-%{name} -%defattr(-,root,root,-) -%dir %{emacs_lispdir}/root -%{emacs_lispdir}/root/*.elc +%files tree-webviewer -f includelist-tree-webviewer +%{_libdir}/%{name}/libROOTTreeViewer.* +%{_libdir}/%{name}/libROOTTreeViewer_rdict.pcm +%{_datadir}/%{name}/plugins/TVirtualTreeViewer/P020_RTreeViewer.C -%files -n emacs-%{name}-el -%defattr(-,root,root,-) -%{emacs_lispdir}/root/*.el +%files unfold -f includelist-hist-unfold +%{_libdir}/%{name}/libUnfold.* +%{_libdir}/%{name}/libUnfold_rdict.pcm + +%files cli +%{_bindir}/rootdrawtree +%{_bindir}/rooteventselector +%{_bindir}/rootmv +%{_bindir}/rootprint +%{_bindir}/rootslimtree +%{_datadir}/%{name}/cli + +%files gui-webdisplay -f includelist-gui-webdisplay +%{_libdir}/%{name}/libROOTWebDisplay.* +%{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm +%{_datadir}/%{name}/runfirefox.sh +%{_datadir}/%{name}/ui5 + +%ifarch %{qt6_qtwebengine_arches} +%files gui-qt6webdisplay +%{_libdir}/%{name}/libROOTQt6WebDisplay.* +%endif + +%files gui-webgui6 -f includelist-gui-webgui6 +%{_libdir}/%{name}/libWebGui6.* +%{_libdir}/%{name}/libWebGui6_rdict.pcm +%{_datadir}/%{name}/plugins/TCanvasImp/P010_TWebCanvas.C +%{_datadir}/%{name}/plugins/TControlBarImp/P010_TWebControlBar.C + +%files gui-browsable -f includelist-gui-browsable +%{_libdir}/%{name}/libROOTBrowsable.* +%{_libdir}/%{name}/libROOTBrowsable_rdict.pcm +%{_libdir}/%{name}/libROOTBranchBrowseProvider.* +%{_libdir}/%{name}/libROOTGeoBrowseProvider.* +%{_libdir}/%{name}/libROOTLeafDraw6Provider.* +%{_libdir}/%{name}/libROOTNTupleBrowseProvider.* +%{_libdir}/%{name}/libROOTNTupleDraw6Provider.* +%{_libdir}/%{name}/libROOTObjectDraw6Provider.* + +%files gui-browserv7 -f includelist-gui-browserv7 +%{_libdir}/%{name}/libROOTBrowserv7.* +%{_libdir}/%{name}/libROOTBrowserv7_rdict.pcm +%{_libdir}/%{name}/libROOTBrowserGeomWidget.* +%{_libdir}/%{name}/libROOTBrowserTCanvasWidget.* +%{_libdir}/%{name}/libROOTBrowserTreeWidget.* +%{_libdir}/%{name}/libROOTBrowserWidgets.* +%{_datadir}/%{name}/plugins/TBrowserImp/P030_RWebBrowserImp.C + +%files geom-checker -f includelist-geom-geomchecker +%{_libdir}/%{name}/libGeomChecker.* +%{_libdir}/%{name}/libGeomChecker_rdict.pcm +%{_datadir}/%{name}/plugins/TVirtualGeoChecker/P010_TGeoChecker.C + +%files geom-webviewer -f includelist-geom-webviewer +%{_libdir}/%{name}/libROOTGeomViewer.* +%{_libdir}/%{name}/libROOTGeomViewer_rdict.pcm +%{_datadir}/%{name}/plugins/TVirtualGeoPainter/P020_RGeoPainter.C + +%files tree-ntuple -f includelist-tree-ntuple +%{_libdir}/%{name}/libROOTNTuple.* +%{_libdir}/%{name}/libROOTNTuple_rdict.pcm +%dir %{_includedir}/%{name}/ROOT/libdaos_mock + +%files tree-ntuple-browse -f includelist-tree-ntuplebrowse +%{_libdir}/%{name}/libROOTNTupleBrowse.* +%{_libdir}/%{name}/libROOTNTupleBrowse_rdict.pcm + +%files tree-ntuple-utils -f includelist-tree-ntupleutil +%{_libdir}/%{name}/libROOTNTupleUtil.* +%{_libdir}/%{name}/libROOTNTupleUtil_rdict.pcm + +%if %{root7} +%files graf-gpadv7 -f includelist-graf2d-gpadv7 +%{_libdir}/%{name}/libROOTGpadv7.* +%{_libdir}/%{name}/libROOTGpadv7_rdict.pcm + +%files graf-primitives -f includelist-graf2d-primitivesv7 +%{_libdir}/%{name}/libROOTGraphicsPrimitives.* +%{_libdir}/%{name}/libROOTGraphicsPrimitives_rdict.pcm + +%files graf3d-eve7 -f includelist-graf3d-eve7 +%{_libdir}/%{name}/libROOTEve.* +%{_libdir}/%{name}/libROOTEve_rdict.pcm + +%files gui-browsable-v7 +%{_libdir}/%{name}/libROOTLeafDraw7Provider.* +%{_libdir}/%{name}/libROOTNTupleDraw7Provider.* +%{_libdir}/%{name}/libROOTObjectDraw7Provider.* + +%files gui-browserv7-v7 +%{_libdir}/%{name}/libROOTBrowserRCanvasWidget.* + +%files gui-canvaspainter +%{_libdir}/%{name}/libROOTCanvasPainter.* + +%files gui-fitpanelv7 -f includelist-gui-fitpanelv7 +%{_libdir}/%{name}/libROOTFitPanelv7.* +%{_libdir}/%{name}/libROOTFitPanelv7_rdict.pcm + +%files histv7 -f includelist-hist-histv7 +%{_libdir}/%{name}/libROOTHist.* +%{_libdir}/%{name}/libROOTHist_rdict.pcm + +%files histv7util -f includelist-hist-histv7util +%{_libdir}/%{name}/libROOTHistUtil.* +%{_libdir}/%{name}/libROOTHistUtil_rdict.pcm +%dir %{_includedir}/%{name}/ROOT/Hist +%endif %changelog +* Sat Aug 29 2026 Mattias Ellert - 6.40.04-1 +- Update to 6.40.04 +- The root-roofit-jsoninterface package was merged with root-roofit-hs3 +- Fix calculation of kerning distances in generated PDF files +- Dropped patches: 1 +- New patches: 2 + +* Wed Aug 26 2026 Mattias Ellert - 6.40.02-5 +- Use the system civetweb library since it now supports web sockets +- Drop the davix module for Fedora 45+ (davix will soon be retired) + +* Wed Aug 19 2026 Jaroslav Škarvada - 6.40.02-4 +- Rebuilt for new graphviz + +* Wed Jul 22 2026 Python Maint - 6.40.02-3 +- Rebuilt for Python 3.15.0b4 ABI change + +* Thu Jul 16 2026 Fedora Release Engineering - 6.40.02-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Sat Jun 20 2026 Mattias Ellert - 6.40.02-1 +- Update to 6.40.02 +- Rename the jupyroot and distrdf packages to reflect that they are + now submodules of the main python package +- New subpackages: root-graf3d-glad, root-net-curl, + root-tmva-sofie-parser-python, root-tree-ml, root-histv7util +- Dropped patches: 2 +- New patches: 7 + +* Fri Jun 12 2026 Yaakov Selkowitz - 6.38.04-7 +- Rebuilt for openssl 4.0 + +* Thu Jun 04 2026 Python Maint - 6.38.04-6 +- Rebuilt for Python 3.15 + +* Wed May 06 2026 Mattias Ellert - 6.38.04-6 +- Combined rebuild for xrootd and R + +* Sat Apr 25 2026 Iñaki Úcar - 6.38.04-5 +- R-maint-sig mass rebuild + +* Wed Apr 22 2026 Mattias Ellert - 6.38.04-4 +- Rebuilt for xrootd 6 + +* Thu Apr 09 2026 Mattias Ellert - 6.38.04-3 +- Run some tests on aarch64 Fedora 44+ again (gcc 16 regression fixed) + +* Sun Apr 05 2026 Mattias Ellert - 6.38.04-2 +- Compatibility with Python 3.15 + +* Fri Mar 13 2026 Mattias Ellert - 6.38.04-1 +- Update to 6.38.04 +- Rebuild for pythia8 8.3.17 +- Dropped patches: 11 +- New patches: 1 + +* Sat Jan 17 2026 Fedora Release Engineering - 6.38.00-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Mon Jan 12 2026 Mattias Ellert - 6.38.00-6 +- Fixes for gcc 16 + +* Thu Dec 25 2025 Mattias Ellert - 6.38.00-5 +- Fix test for stricter syntax in numpy 2.4.0 (backport) + +* Fri Dec 19 2025 Mattias Ellert - 6.38.00-4 +- Exclude tests for Fedora 43+ on s390x that fail due to hardware + acceleration in the zlib-ng library. + +* Thu Dec 18 2025 Mattias Ellert - 6.38.00-3 +- Don't install the python modules twice +- Fix Requires and Provides in the python3-root rpm + +* Thu Dec 11 2025 Mattias Ellert - 6.38.00-2 +- Skip RPATH using -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON (replaces + previously used root specific -Drpath:BOOL=OFF no longer available) +- Backport fixes to python module +- Rebuild for pythia8 8.3.16 + +* Tue Dec 09 2025 Mattias Ellert - 6.38.00-1 +- Update to 6.38.00 +- Removed subpackages: root-proof, root-proof-bench, root-proof-player, + root-proof-sessionviewer, root-sql-mysql, root-sql-odbc, root-sql-pgsql +- New subpackages: root-geom-checker, root-gui-treemap, + root-tree-ntuple-browse, root-histv7 +- JsMVA python (sub)module dropped from python3-root package +- Compile minuit2 with Open MP support +- Dropped patches: 7 +- New patches: 4 + +* Wed Oct 29 2025 Stephen Gallagher - 6.36.04-4 +- Rebuild for libarrow 22 + +* Thu Oct 09 2025 Jaroslav Škarvada - 6.36.04-3 +- Rebuilt for new graphviz + +* Fri Sep 19 2025 Python Maint - 6.36.04-2 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Mon Aug 25 2025 Mattias Ellert - 6.36.04-1 +- Update to 6.36.04 + +* Wed Aug 20 2025 Jerry James - 6.36.02-7 +- Rebuild for tbb 2022.2.0 + +* Tue Aug 19 2025 Mattias Ellert - 6.36.02-6 +- Support libarrow 21 + +* Mon Aug 18 2025 Orion Poplawski - 6.36.02-5 +- Rebuild for libarrow 21 + +* Fri Aug 15 2025 Python Maint - 6.36.02-4 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Wed Aug 13 2025 Orion Poplawski - 6.36.02-3 +- Rebuild for libarrow 21 + +* Fri Jul 25 2025 Fedora Release Engineering - 6.36.02-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Sun Jul 13 2025 Mattias Ellert - 6.36.02-1 +- Update to 6.36.02 + +* Thu Jul 10 2025 Stephen Gallagher - 6.36.00-3 +- Rebuilt for libarrow 20 + +* Sat Jun 21 2025 Mattias Ellert - 6.36.00-2 +- Add root-tree-ntuple and root-tree-ntuple-utils dependensies to root-core + (listed in root-config --libs) +- Rename root-fonts package to root-font-files +- Add optional test dependency python3-pandas now available in EPEL 10 +- Add dependency jupyter-notebook to root-jupyroot for EPEL 10.1 and later +- Fix Python 3.14 refcount issues in tests + +* Sat Jun 07 2025 Mattias Ellert - 6.36.00-1 +- Update to 6.36.00 +- Enable the R interface for EPEL 10.1 +- Removed subpackages: root-gui-qt5webdisplay, -hist-draw, -histv7 and -html +- New subpackage: root-roofit-codegen + +* Tue Jun 03 2025 Python Maint - 6.34.08-5 +- Rebuilt for Python 3.14 + +* Fri Apr 18 2025 Iñaki Úcar - 6.34.08-4 +- R-maint-sig mass rebuild + +* Fri Apr 18 2025 Iñaki Úcar - 6.34.08-3 +- R-maint-sig mass rebuild + +* Fri Apr 18 2025 Iñaki Úcar - 6.34.08-2 +- R-maint-sig mass rebuild + +* Thu Apr 17 2025 Mattias Ellert - 6.34.08-1 +- Update to 6.34.08 + +* Fri Mar 28 2025 Mattias Ellert - 6.34.06-1 +- Update to 6.34.06 +- Drop patches accepted upstream or previously backported + +* Wed Feb 19 2025 Mattias Ellert - 6.34.04-2 +- Fix roofit/roostats test failures with gcc 15 + +* Fri Feb 14 2025 Mattias Ellert - 6.34.04-1 +- Update to 6.34.04 +- Drop patches accepted upstream or previously backported + +* Fri Feb 14 2025 Benjamin A. Beasley - 6.34.02-8 +- Rebuilt for libarrow 19 + +* Sun Feb 02 2025 Orion Poplawski - 6.34.02-7 +- Rebuild with gsl 2.8 + +* Sat Feb 01 2025 Björn Esser - 6.34.02-6 +- Add explicit BR: libxcrypt-devel + +* Fri Jan 31 2025 Mattias Ellert - 6.34.02-5 +- Apply patches to fix build with gcc 15 +- Enable roofit-multiprocess for EPEL 10 (dependencies available) +- Rebuild for pythia8 8.3.13 + +* Sat Jan 18 2025 Fedora Release Engineering - 6.34.02-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Jan 15 2025 Mattias Ellert - 6.34.02-3 +- Don't add dependencies on root-roofit-multiprocess and root-roofit-zmq + to root-roofit-core for EPEL builds + +* Sun Jan 12 2025 Mattias Ellert - 6.34.02-2 +- Adjust stressGraphics.ref +- Build for EPEL 10 +- Disable the R interface for EPEL 10 (R not yet abailable) +- Enable uring support for EPEL 9 (supported in kernel since RHEL 9.3) + +* Wed Dec 25 2024 Mattias Ellert - 6.34.02-1 +- Update to 6.34.02 +- Build CLAD plugin +- Removed package: root-roofit-dataframe-helpers + +* Wed Nov 27 2024 Richard W.M. Jones - 6.32.08-2 +- Rebuild for libarrow 18 + +* Thu Nov 14 2024 Mattias Ellert - 6.32.08-1 +- Update to 6.32.08 + +* Mon Sep 23 2024 Mattias Ellert - 6.32.06-1 +- Update to 6.32.06 +- Split out ROOT 7 dependent parts of root-browsable to a separate package +- Split out ROOT 7 dependent parts of root-browserv7 to a separate package + +* Wed Aug 21 2024 Mattias Ellert - 6.32.04-2 +- Re-enable Qt5 Web display for Fedora 41+ (qt5-qtwebengine fixed) + +* Wed Aug 14 2024 Mattias Ellert - 6.32.04-1 +- Update to 6.32.04 +- Drop patches accepted upstream +- Disable Qt5 Web display for Fedora 41+ (broken qt5-qtwebengine package) + +* Sun Jul 21 2024 Mattias Ellert - 6.32.02-4 +- Update ROOT's R interface for Rcpp 1.0.13 + +* Fri Jul 19 2024 Fedora Release Engineering - 6.32.02-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Thu Jul 11 2024 Mattias Ellert - 6.32.02-2 +- Add openssl-devel-engine build requirement on Fedora 41+ +- Fixes for TUri class (PCRE2 compatibility) +- Fix test failure with tbb 2021.13.0 + +* Tue Jun 18 2024 Mattias Ellert - 6.32.02-1 +- Update to 6.32.02 +- Drop patches accepted upstream + +* Mon Jun 17 2024 Mattias Ellert - 6.32.00-5 +- Add dependency on liburing-devel to root-io +- Exclude failing tutorial-tmva-RBatchGenerator_filters_vectors-py test + on aarch64 (Fedora 40+) + +* Mon Jun 10 2024 Mattias Ellert - 6.32.00-4 +- Backport fix for failing test with Python 3.13 + +* Sun Jun 09 2024 Python Maint - 6.32.00-3 +- Rebuilt for Python 3.13 + +* Sat Jun 08 2024 Mattias Ellert - 6.32.00-2 +- Python 3.13 compatibility + +* Mon Jun 03 2024 Mattias Ellert - 6.32.00-1 +- Update to 6.32.00 +- Drop EPEL 8 build (now requires Python >= 3.7 and tbb >= 2020) +- Dropped patches: 12 +- New patches: 6 +- The JsMVA python module is now a submodule of the ROOT python module +- The notebook package was merged with the JupyROOT package + +* Wed May 15 2024 Mattias Ellert - 6.30.06-5 +- Rebuilt for libarrow.so.1601 +- Improved fontconfig support + +* Sun Apr 28 2024 Benjamin A. Beasley - 6.30.06-4 +- Do not test with Pandas on 32-bit architectures + +* Thu Apr 25 2024 Iñaki Úcar - 6.30.06-3 +- R-maint-sig mass rebuild + +* Tue Apr 23 2024 Mattias Ellert - 6.30.06-2 +- Rebuilt for libarrow.so.1600 + +* Fri Apr 05 2024 Mattias Ellert - 6.30.06-1 +- Update to 6.30.06 + +* Mon Mar 25 2024 Mattias Ellert - 6.30.04-2 +- Support StandardSymbolsPS.otf + +* Wed Jan 31 2024 Mattias Ellert - 6.30.04-1 +- Update to 6.30.04 +- Drop patch root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch + (accepted upstrem) +- Exclude failing TClingDataMemberInfo.Offset test on s390x + +* Fri Jan 26 2024 Mattias Ellert - 6.30.02-9 +- Rebuilt for libarrow.so.1500 + +* Fri Jan 26 2024 Mattias Ellert - 6.30.02-8 +- Exclude failing gtest-math-matrix-test-testMatrixTSparse on Fedora 40 + (aarch64, ppc64le and s390x) + +* Mon Jan 22 2024 Fedora Release Engineering - 6.30.02-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jan 17 2024 Jonathan Wakely - 6.30.02-6 +- Rebuilt for TBB 2021.11 + +* Fri Jan 12 2024 Mattias Ellert - 6.30.02-5 +- Define PYTHON_EXECUTABLE when calling cmake (Fixes EPEL 8 build) + +* Thu Dec 21 2023 Mattias Ellert - 6.30.02-4 +- Adjust tests for zlib-ng + +* Mon Dec 18 2023 Mattias Ellert - 6.30.02-3 +- Use "standardsymbolsps" instead of "symbol" when searching for the + Symbols font in order to not find Noto Symbols instead + +* Fri Dec 15 2023 Mattias Ellert - 6.30.02-2 +- Exclude pyunittests-pyroot-numbadeclare test + +* Sat Dec 02 2023 Mattias Ellert - 6.30.02-1 +- Update to 6.30.02 + +* Sat Nov 25 2023 Mattias Ellert - 6.30.00-1 +- Update to 6.30.00 +- Removed subpackages: root-io-gfal and root-roofit-common +- Dropped patches: 6 +- New patches: 6 + +* Thu Nov 02 2023 Mattias Ellert - 6.28.08-3 +- Rebuilt for libarrow.so.1400 + +* Wed Nov 01 2023 Mattias Ellert - 6.28.08-2 +- Enable RooFit::MultiProcess on Fedora 40+ + +* Sat Oct 14 2023 Mattias Ellert - 6.28.08-1 +- Update to 6.28.08 +- New subpackage root-tmva-utils (split off from root-tmva) +- Port to pcre2 + +* Tue Sep 05 2023 Mattias Ellert - 6.28.06-1 +- Update to 6.28.06 +- Drop patches root-testRooAbsL-test-compares-two-doubles-and-fails.patch and + root-strlcpy.patch (fixed upstream) + +* Sun Aug 06 2023 Mattias Ellert - 6.28.04-5 +- Rebuilt for libarrow.so.1300 + +* Fri Jul 21 2023 Fedora Release Engineering - 6.28.04-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sun Jul 09 2023 Mattias Ellert - 6.28.04-3 +- Fix build on Fedora 39+ where glibc has strlcpy and strlcat +- Enable build of root-gui-qt6webdisplay sub-package if Qt6 is available + +* Mon Jun 26 2023 Orion Poplawski - 6.28.04-2 +- Rebuilt for Python 3.12 + +* Mon May 08 2023 Mattias Ellert - 6.28.04-1 +- Update to 6.28.04 +- Drop patch root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch + (previously backported) +- Enable Apache Arrow support (64 bit architectures only) + +* Fri Apr 21 2023 Iñaki Úcar - 6.28.02-3 +- R-maint-sig mass rebuild + +* Thu Mar 23 2023 Mattias Ellert - 6.28.02-2 +- Disable uring in EPEL 9 (liburing is available, but uring not + supported by kernel) + +* Wed Mar 22 2023 Mattias Ellert - 6.28.02-1 +- Update to 6.28.02 +- Dropped patches: 13 +- New patches: 1 + +* Sat Mar 18 2023 Mattias Ellert - 6.28.00-1 +- Update to 6.28.00 +- ROOT now uses llvm/clang version 13 (updated from version 9) +- Clean up specfile by removing EPEL 7 conditionals +- Drop dataframe, roofit and tmva-sofieparser on EPEL 8 ppc64le due to + "pure virtual method called" errors +- Split the root-geom sub-package into three separate sub-packages: + root-geom, root-geom-builder and root-geom-painter +- Enable uring support in EPEL 9 (liburing now available) +- New sub-packages: root-geom-webviewer, root-roofit-jsoninterface, + root-testsupport, root-tree-ntuple-utils, root-tree-webviewer, root-xroofit +- Dropped patches: 31 +- New patches: 17 +- Updated patches: 4 + +* Mon Jan 30 2023 Miro Hrončok - 6.26.10-2 +- Rebuilt to change Python shebangs to /usr/bin/python3.6 on EPEL 8 + +* Mon Jan 30 2023 Mattias Ellert - 6.26.10-5 +- Adapt to numpy 1.24 + +* Fri Jan 20 2023 Mattias Ellert - 6.26.10-4 +- Add missing #include + +* Fri Jan 20 2023 Fedora Release Engineering - 6.26.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Dec 29 2022 Maxwell G - 6.26.10-2 +- Rebuild for cfitsio 4.2 + +* Wed Nov 16 2022 Mattias Ellert - 6.26.10-1 +- Update to 6.26.10 +- Drop patches root-Fixes-for-garbage-collection-in-Python-3.11.patch + and root-Guard-gInterpreterMutex-in-TClingClassInfo-IsEnum.patch + (fixed upstream) +- Use different filenames in io/loopdir tests +- Update root-test-timeout.patch to address one more issue + +* Fri Oct 28 2022 Mattias Ellert - 6.26.08-2 +- Avoid race condition between C++ and Python version of a roofit test + +* Wed Oct 19 2022 Mattias Ellert - 6.26.08-1 +- Update to 6.26.08 +- Drop patch root-move-private-decl.patch (fixed upstream) +- Drop some previously backported patches +- Rename patch root-blas-linking-and-ignore-prefix.patch (partially fixed) +- Backport locking of gInterpreterMutex in TClingClassInfo::IsEnum + +* Sat Oct 01 2022 Mattias Ellert - 6.26.06-5 +- Use upstream's proposed change for the Python garbage collection issue + +* Tue Aug 23 2022 Mamoru TASAKA - 6.26.06-4 +- Rebuild for gsl-2.7.1 + +* Fri Aug 19 2022 Mattias Ellert - 6.26.06-3 +- Use the json 3.11 fix upstream settled on + +* Wed Aug 17 2022 Mattias Ellert - 6.26.06-2 +- Compatibility with nlohmann json 3.11+ +- Enable gfal support in EPEL 9 (gfal2 now available) + +* Sat Jul 30 2022 Mattias Ellert - 6.26.06-1 +- Update to 6.26.06 + +* Sat Jul 23 2022 Fedora Release Engineering - 6.26.04-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Jul 18 2022 Mattias Ellert - 6.26.04-4 +- Don't use yuicompressor on Fedora (Java no longer available on ix86) + +* Sun Jul 03 2022 Mattias Ellert - 6.26.04-3 +- Backport python 3.11 fixes from upstream +- Backport additional python 3.11 fixes from CPyCppyy upstream +- Exclude some failing tests on Fedora 37+ + (segfaults during Python garbage collection with Python 3.11) +- Adjust some test timeouts + +* Wed Jun 15 2022 Python Maint - 6.26.04-2 +- Rebuilt for Python 3.11 + +* Tue Jun 14 2022 Mattias Ellert - 6.26.04-1 +- Update to 6.26.04 +- Drop patch root-missing-include.patch (accepted upstream) + +* Fri May 20 2022 Mattias Ellert - 6.26.02-3 +- Rebuild for gcc 12.1 (Fedora 36) +- Update the root-tmva-threads patch + +* Fri Apr 29 2022 Mattias Ellert - 6.26.02-2 +- Rebuild for gcc 11.3 (Fedora 35) +- Use upstream's version of the dataframe-snapshot on 32 bit patch + +* Thu Apr 14 2022 Mattias Ellert - 6.26.02-1 +- Update to 6.26.02 +- Drop patch root-roofit-overflow.patch (previously backported) + +* Sat Mar 26 2022 Mattias Ellert - 6.26.00-1 +- Update to 6.26.00 +- New subpackages: root-roofit-common, root-roofit-dataframe-helpers, + root-roofit-hs3, root-tmva-sofie and root-tmva-sofie-parser +- Removed subpackages: root-memstat and root-montecarlo-vmc +- Drop the doxygen generated root-doc package (doxygen runs out of memory) +- Dropped patches: 17 +- New patches: 22 +- Updated patches: 5 + +* Thu Feb 10 2022 Orion Poplawski - 6.24.06-6 +- Rebuild for glew 2.2 + +* Fri Jan 28 2022 Mattias Ellert - 6.24.06-5 +- Exclude failing test on Fedora 36 ppc64le: + test-stressHistFactory(-interpreted) +- Disable package note flags + +* Fri Jan 21 2022 Fedora Release Engineering - 6.24.06-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Sun Jan 16 2022 Mattias Ellert - 6.24.06-3 +- Backport gcc 12 fix from LLVM +- Fix test failure on ppc64le and aarch64 with gcc 12 + +* Tue Dec 07 2021 Mattias Ellert - 6.24.06-2 +- Fix segfaults on ppc64le when using the large code model + +* Thu Nov 04 2021 Mattias Ellert - 6.24.06-1 +- Update to 6.24.06 + +* Tue Sep 14 2021 Sahana Prasad - 6.24.04-2 +- Rebuilt with OpenSSL 3.0.0 + +* Fri Aug 27 2021 Mattias Ellert - 6.24.04-1 +- Update to 6.24.04 +- Add dependency on json-devel to root-core +- Disable uring in EPEL 8 (liburing is available, but uring not + supported by kernel) + +* Wed Aug 04 2021 Mattias Ellert - 6.24.02-1 +- Update to 6.24.02 +- ROOT now uses llvm/clang version 9 (updated from version 5) +- No longer exclude arch s390x (better supported in llvm/clang 9) +- Drop patches accepted upstream or previously backported +- Backport some fixes that make more tests work +- New subpackages: python{2,3}-distrdf, root-roofit-batchcompute +- Require js-jsroot >= 6 + +* Mon Jul 26 2021 Mattias Ellert - 6.22.08-11 +- Drop the memstat module for Fedora 35+ + The required __malloc_hook was removed from glibc 2.33.9000-48 + The memstat module is deprecated and will be removed in root 6.26 + +* Fri Jul 23 2021 Fedora Release Engineering - 6.22.08-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Jun 17 2021 Mattias Ellert - 6.22.08-9 +- Backport fix for jsroot loading in jupyterlab + +* Mon Jun 14 2021 Mattias Ellert - 6.22.08-8 +- Add configuration for jupyterlab + +* Sun Jun 13 2021 Mattias Ellert - 6.22.08-7 +- cmake in EPEL 8 no longer provides cmake3 + +* Fri Jun 04 2021 Python Maint - 6.22.08-6 +- Rebuilt for Python 3.10 + +* Thu Jun 03 2021 Mattias Ellert - 6.22.08-5 +- Use C++17 for Fedora 34+ (gcc 11) + +* Tue Jun 01 2021 Mattias Ellert - 6.22.08-4 +- Adapt to new Python RPM generators (empty .egg-info no longer works) +- Filter out parts of tests that require remote network access instead of + excluding the whole test +- Fix multicore tests when running on machines with few cores + +* Mon May 10 2021 Jonathan Wakely - 6.22.08-3 +- Rebuilt for removed libstdc++ symbols (#1937698) + +* Tue Mar 30 2021 Jonathan Wakely - 6.22.08-2 +- Rebuilt for removed libstdc++ symbol (#1937698) + +* Fri Mar 19 2021 Mattias Ellert - 6.22.08-1 +- Update to 6.22.08 + +* Mon Feb 08 2021 Pavel Raiskup - 6.22.06-4 +- rebuild for libpq ABI fix rhbz#1908268 + +* Wed Feb 03 2021 Mattias Ellert - 6.22.06-3 +- Rebuilt for cfitsio 3.490 + +* Wed Jan 27 2021 Fedora Release Engineering - 6.22.06-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Nov 28 2020 Mattias Ellert - 6.22.06-1 +- Update to 6.22.06 +- Filter out additional vDSO names for ppc + +* Thu Nov 26 2020 Mattias Ellert - 6.22.04-2 +- Do not attempt to load_library the ROOT Pythonizations module + +* Fri Nov 13 2020 Mattias Ellert - 6.22.04-1 +- Update to 6.22.04 +- Drop patch root-xrootd5-compat.patch (accepted upstream) + +* Sat Nov 07 2020 Mattias Ellert - 6.22.02-4 +- Rebuild for C++ standard library __GLIBCXX__ 20201016 + +* Fri Oct 02 2020 Mattias Ellert - 6.22.02-3 +- Drop obsolete patch root-add-flexiblas-detection.patch (cmake's + FindBLAS.cmake supports flexiblas now) +- Drop the workaround for the bug in doxygen causing different results + on 32 and 64 bit architectures (use doxygen < 1.8.17 or >= 1.8.20-3) +- Build require xrootd 5 (Fedora 33+, EPEL 7+) + +* Sun Aug 30 2020 Mattias Ellert - 6.22.02-2 +- Adapt to xrootd 5 (Fedora 33+, EPEL 7+) + - Don't build the old proof client (xproofd) + - Don't build the old NetX module + +* Fri Aug 21 2020 Mattias Ellert - 6.22.02-1 +- Update to 6.22.02 +- Drop patch previously backported: root-doxygen-endof-part1.patch +- Drop patch accepted upstream: root-python2-compat.patch +- Add back line accidentally removed in root-config +- Install headers in new PyROOT with COMPONENT headers +- Increase test timeout for ppc64le + +* Thu Aug 20 2020 Mattias Ellert - 6.22.00-7 +- Avoid unneeded build requirement on srm-ifce-devel +- Do not export Python modules in CMake config +- Drop patch root-clang-ignore-gcc-options.patch + ("Recent ROOT does not send all possible compiler flags to rootcling.") + +* Sun Aug 16 2020 Iñaki Úcar - 6.22.00-6 +- https://fedoraproject.org/wiki/Changes/FlexiBLAS_as_BLAS/LAPACK_manager + +* Tue Aug 11 2020 Mattias Ellert - 6.22.00-5 +- Fix wrong symlinks in EPEL 7 python2-root package + +* Sat Aug 01 2020 Fedora Release Engineering - 6.22.00-4 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 6.22.00-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 15 2020 Mattias Ellert - 6.22.00-2 +- Fix broken update on EPEL 7 with python34-root installed + +* Tue Jul 14 2020 Mattias Ellert - 6.22.00-1 +- Update to 6.22.00 +- Drop patches accepted upstream + - root-FitData-assert-fix.patch + - root-clang-altivec-vector.patch + - root-format-fix.patch + - root-moved-file.patch + - root-xmlmodify-dep.patch +- New and improved Python bindings +- The new Python bindings can be built for both Python 2 and Python 3 + out of the box. Dropped the workaround in specfile for this (EPEL 7) +- Dropped the python3-other packages (EPEL 7) +- The new Python bindings has split the TPython interface to a separate + library. Now in a separate root-tpython package +- root-tpython and root-tmva-python are now using Python 3 on EPEL 7 +- New subpackage root-gui-browsable +- New patches (submitted upstream) + - Fix too aggressive -Werror replacements + - Add missing call to TFile::SetCacheFileDir in a TMVA tutorial + - Adjust stressGraphics.ref + - Fix off-by-one error in histogram v7 bin iterator + - Compatibility with python 2.7 versions before 2.7.9 + - Fix the RNTuple.LargeFile test on 32bit (i386 and armv7hf) + - Fix doxygen issues + - Fix bad regex in TProofMgr + - Compatibility with xrootd 5 +- Add workaround for a bug in doxygen 1.8.17 and later causing different + results on 32 and 64 bit + +* Sat Jul 11 2020 Jeff Law - 6.20.06-2 +- Disable LTO + +* Thu Jun 11 2020 Mattias Ellert - 6.20.06-1 +- Update to 6.20.06 +- Fix test failure on ppc64le and aarch64 + +* Tue May 26 2020 Miro Hrončok - 6.20.04-3 +- Rebuilt for Python 3.9 + +* Fri Apr 10 2020 Mattias Ellert - 6.20.04-2 +- Replace BR qt5-devel with qt5-qtbase-devel + +* Wed Apr 01 2020 Mattias Ellert - 6.20.04-1 +- Update to 6.20.04 +- Drop previously backported patch root-tutorials-unique-filenames.patch +- Improved patch for the PyROOT issue on EPEL 7 ppc64le + +* Sun Mar 22 2020 Mattias Ellert - 6.20.02-1 +- Update to 6.20.02 +- Drop patches accepted upstream + - root-dont-download-input-file-if-it-already-exists.patch + - root-fix-plugin-definition.patch + - root-man-install.patch + - root-pretty-printers.patch + - root-python3.patch + - root-stress-aarch64-ppc64le.patch +- Drop patches no longer relevant due to changes to the code + - root-missing-include-string.patch + - root-static-constexpr.patch +- Add workaround for PyROOT issues on ppc64le in EPEL 7 + - root-epel7-ppc64le-pyroot.patch (patch conditionally applied) +- Fix path to moved data file in tutorial + - root-moved-file.patch +- Split the root-roofit subpackage into four different packages + - root-roofit, root-roofit-core, root-roofit-more and root-roostats + - The root-roofit-more library splits out the part of roofit that depends on + the root-mathmore package +- New subpackage: root-histv7 + +* Sat Mar 14 2020 Mattias Ellert - 6.18.04-6 +- Build for 32 bit ARM again - gcc-10.0.1-0.9 fixes the problem + +* Sat Feb 22 2020 Mattias Ellert - 6.18.04-5 +- Fixes and workarounds for gcc 10 +- ExcludeArch for 32 bit ARM because rootcling_stage1 segfaults (bug #1811604) + +* Thu Jan 30 2020 Fedora Release Engineering - 6.18.04-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Dec 04 2019 Mattias Ellert - 6.18.04-3 +- Fix shebangs in root-cli for EPEL 8 + +* Tue Dec 03 2019 Mattias Ellert - 6.18.04-2 +- Remove workarounds for RHEL 7 aarch64 (architecture dropped by EPEL 7) +- Enable QtWebEngine dependent modules on EPEL 8 (now available) + +* Mon Sep 30 2019 Mattias Ellert - 6.18.04-1 +- Update to 6.18.04 +- First build for EPEL 8 + +* Thu Sep 12 2019 Mattias Ellert - 6.18.02-2 +- Rebuild for g++ 9.2 + +* Mon Aug 26 2019 Mattias Ellert - 6.18.02-1 +- Update to 6.18.02 +- Add workarounds for issues caused by the RHEL 7.7 update, that left the + aarch64 architecture at RHEL 7.6. + +* Tue Aug 20 2019 Susi Lehtola - 6.18.00-5 +- Rebuilt for GSL 2.6. + +* Mon Aug 19 2019 Miro Hrončok - 6.18.00-4 +- Rebuilt for Python 3.8 + +* Wed Jul 31 2019 Mattias Ellert - 6.18.00-3 +- Root 6.18 requires pcm files to be in the same directory as libraries +- Add libPyROOT.rootmap and libPyROOT_rdict.pcm as slaves to libPyROOT.so + in update-alternatives + +* Fri Jul 26 2019 Fedora Release Engineering - 6.18.00-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Jun 26 2019 Mattias Ellert - 6.18.00-1 +- Update to 6.18.00 +- Drop patches accepted upstream: + - root-avoid-gui-crash.patch + - root-doxygen-generation-with-python-3.patch +- Drop patches with alternative fix implemented upstream: + - root-dont-install-eve7-files.patch + - root-ix32-geom-opt.patch +- Drop ppc64 specific workaround (ppc64 no longer built in Fedora or EPEL): + - root-ppc64-doc.patch +- Dropped subpackages: + - root-geocad + - root-graf-qt + - root-gui-qt + - root-gui-qtgsi + - root-io-hdfs + - root-io-rfio + - root-net-bonjour + - root-net-globus + - root-net-ldap + - root-net-krb5 + - root-table +- Drop BuildRequires needed by the dropped subpackages +- New subpackages: + - root-graf3d-csg (split off from root-graf3d-gl) + - root-gui-browserv7 + - root-tree-ntuple +- Don't build python2-root for Fedora >= 31 +- Include desktop and MIME type files in source RPM (removed from source) +- Install man pages in correct directory +- Use correct library names in plugin definitions +- Don't download test input file if it already exists +- Python 3 fixes +- Increase test tolerance (aarch64 and ppc64le) +- Fix GDB pretty printers install name and location + +* Tue Jun 11 2019 Mattias Ellert - 6.16.00-6 +- Use python-embed pkg-config module if it exists (python 3.8 compatibility) + +* Fri May 17 2019 Mattias Ellert - 6.16.00-5 +- Build without HDFS support on Fedora 31+ + - Hadoop is FTBFS and uninstallable due to missing Java dependencies +- Build without HDFS support for 32 bit architectures on Fedora 30 + - Hadoop is not installable due to missing Eclipse dependencies + +* Fri Mar 08 2019 Troy Dawson - 6.16.00-4 +- Rebuilt to change main python from 3.4 to 3.6 + +* Mon Feb 18 2019 Mattias Ellert - 6.16.00-3 +- Fix typo in patch (missing space) + +* Sun Feb 17 2019 Igor Gnatenko - 6.16.00-2 +- Rebuild for readline 8.0 + +* Mon Feb 11 2019 Mattias Ellert - 6.16.00-1 +- Update to 6.16.00 +- Drop patches accepted upstream: + - root-adjust-allowed-test-difference-for-32-bit-ix86.patch + - root-crypto.patch + - root-js-syntax.patch + - root-missing-header.patch + - root-set-cache-file-dir.patch + - root-stressgraphics-ref.patch + - root-test-compilation-epel7.patch + - root-test-subdirs.patch + - root-unique-filenames.patch +- Dropped subpackages: + - root-rootd (obsolete - use xrootd) + - root-proofd (obsolete - use root-xproofd) + - root-proof-pq2 +- New ROOT 7 subpackage: + - root-graf3d-eve7 + - root-gui-webgui6 +- Make tutorial/v7/line.cxx run in batch mode + +* Mon Feb 04 2019 Mattias Ellert - 6.14.08-4 +- Remove obsolete /sbin/ldconfig scriptlets +- The root-core package installs a file in /etc/ld.so.conf.d, so it should + always call /sbin/ldconfig and not use the macros + +* Sat Feb 02 2019 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 14 2019 Björn Esser - 6.14.08-2 +- Rebuilt for libcrypt.so.2 (#1666033) + +* Fri Nov 23 2018 Mattias Ellert - 6.14.08-1 +- Update to 6.14.08 +- Make tutorial filenames unique to avoid overwrites + +* Tue Nov 06 2018 Mattias Ellert - 6.14.06-1 +- Update to 6.14.06 +- Let clang ignore some gcc options it hasn't implemented +- Don't build python2-jupyroot/jsmva packages for Fedora >= 29 +- Drop previously backported patch root-TGHtmlBrowser-crash.patch + +* Thu Oct 25 2018 Mattias Ellert - 6.14.04-3 +- Fix crash in TBrowser when root-gui-html is not installed +- Use empty .egg-info files instead of empty .dist-info files to make + virtualenv happy +- Add Requires on root-mathmore to root-mathcore (for default integrator) + +* Sat Oct 13 2018 Jerry James - 6.14.04-2 +- Rebuild for tbb 2019_U1 + +* Fri Aug 24 2018 Mattias Ellert - 6.14.04-1 +- Update to 6.14.04 +- Drop patch accepted upstream: root-python-3.7.patch + +* Thu Aug 23 2018 Nicolas Chauvet - 6.14.02-2 +- Rebuilt for glew 2.1.0 + +* Mon Aug 06 2018 Mattias Ellert - 6.14.02-1 +- Update to 6.14.02 +- Make python3 the preferred python for Fedora 29+: + - Give python3 libPyROOT higher priority than python2 libPyROOT + - The python scripts in root-cli use python3-root + - Let root-tmva-python use python3-numpy +- Fix build issue with undefined symbols in libSrvAuth +- Make ROOTConfig-targets.cmake not error on missing files to work better with + subpackages + +* Sat Jul 14 2018 Fedora Release Engineering - 6.14.00-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu Jul 12 2018 Mattias Ellert - 6.14.00-2 +- Add Python 3.6 packages for EPEL 7 + +* Sun Jul 01 2018 Mattias Ellert - 6.14.00-1 +- Update to 6.14.00 +- Drop patches previously backported: + - root-doxygen-makefile.patch + - root-crash-fix.patch + - root-test-stress-32bit.patch +- Drop patches accepted upstream: + - root-test-subdirs.patch + - root-test-fixes.patch + - root-out-of-bounds.patch + - root-doxygen-tilde.patch + - root-noinst.patch +- Drop patches for issues fixed upstream: + - root-dont-link-jvm.patch + - root-system-pythia.patch +- Drop patch root-urw-otf-hack.patch - broken font file no longer present +- Drop Google Droid Sans Fallback font from EPEL 7 root-fonts package + (the font is now available in EPEL 7) +- Use two more patches from Fedora's llvm5.0 package +- New root-test-subdirs.patch patch for more instances of the same issue +- Fix a test not setting cache file directory so that it works offline +- Fix a compatibility issue with the EPEL 7 gtest version +- Fix a missing include +- Workaround optimization problems in the Geom library +- New subpackages due to library splits + - root-tree-dataframe and root-vecops from root-tree-player + - root-net-httpsniff from root-net-http +- New subpackages due to package splits + - root-gui-html from root-gui + - root-gui-qtgsi from root-gui-qt + - root-io-xmlparser from root-io-xml + - root-proof-player from root-proof +- New ROOT 7 subpackages + - root-graf-gpadv7 + - root-graf-primitives + - root-gui-fitpanelv7 + - root-gui-qt5webdisplay +- Rename root-guibuilder package to root-gui-builder +- Create empty .dist-info files so that rpm auto-generates provides + +* Sat Jun 30 2018 Mattias Ellert - 6.12.06-5 +- Adjust Vavilov test for Fedora 29 ix86 +- Adapt to python 3.7 + +* Tue Jun 19 2018 Miro Hrončok - 6.12.06-4 +- Rebuilt for Python 3.7 + +* Sat May 26 2018 Christian Dersch - 6.12.06-3 +- rebuilt for cfitsio 3.450 +- Adjust allowed deviation for PDF file sizes in stressGraphics test (aarch64) + +* Fri Feb 23 2018 Christian Dersch - 6.12.06-2 +- rebuilt for cfitsio 3.420 (so version bump) +- modified patch 13 to also produce smaller debuginfo on x86 (ld out of memory) +- disabled test gtest-tree-treeplayer-test-dataframe-snapshot on ARM + +* Sat Feb 17 2018 Mattias Ellert - 6.12.06-1 +- Update to 6.12.06 +- Drop patch root-Fix-constructing-the-GSL-MC-Integrator.patch (previously + backported) + +* Fri Feb 16 2018 Mattias Ellert - 6.12.04-4 +- Fix test failures found with new default compiler flags in Fedora 28 + +* Fri Feb 09 2018 Fedora Release Engineering - 6.12.04-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Jan 20 2018 Björn Esser - 6.12.04-2 +- Rebuilt for switch to libxcrypt + +* Tue Dec 19 2017 Mattias Ellert - 6.12.04-1 +- Update to 6.12.04 +- Drop patches accepted upstream +- Drop previously backported patches +- Unbundle jsroot in root-net-http +- Add hack to work around broken charmaps in StandardSymbolsPS.otf +- Use local static script and style files for JupyROOT +- Fix some javascript errors +- Fix build rules for test binaries so that they are not installed +- Address memory usage issue for ARM build +- Drop pre-minified javascript and style files (Fedora packaging guidelines) +- Enable builds on ppc/ppc64/ppc64le (do not pass all tests, but the list + of failing tests is much shorter with this release) +- Add dependency on python[23]-jsmva to python[23]-jupyroot +- New sub-packages: root-gui-canvaspainter, root-gui-webdisplay and + root-hist-draw (not for EPEL 7 since they are root7 specific and + require c++-14) + +* Fri Oct 20 2017 Mattias Ellert - 6.10.08-1 +- Update to 6.10.08 +- Add BuildRequires on lz4-devel and xxhash-devel +- Workaround for missing gmock libraries only needed for gmock < 0.1.8 +- Address some warnings during documentation generation + +* Wed Sep 27 2017 Mattias Ellert - 6.10.06-1 +- Update to 6.10.06 +- Fixes for new mysql_config + +* Sat Aug 05 2017 Mattias Ellert - 6.10.04-1 +- Update to 6.10.04 +- Add temporary workaround for broken mariadb headers in Fedora 27 + +* Thu Aug 03 2017 Fedora Release Engineering - 6.10.02-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 6.10.02-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jul 12 2017 Mattias Ellert - 6.10.02-3 +- Remove additional references in cmake files + +* Mon Jul 10 2017 Mattias Ellert - 6.10.02-2 +- Fix removal of mathtext, minicern and JupyROOT references from cmake files + +* Fri Jul 07 2017 Mattias Ellert - 6.10.02-1 +- Update to 6.10.02 + +* Wed Jun 14 2017 Mattias Ellert - 6.10.00-1 +- Update to 6.10.00 +- Drop patches accepted upstream +- Drop previously backported patches +- New sub-package: root-unfold +- Dropped sub-package: root-vdt + +* Tue May 16 2017 Mattias Ellert - 6.08.06-7 +- Remove JupyROOT references from cmake files +- Do not generate autoprovides for libJupyROOT.so + +* Mon May 15 2017 Fedora Release Engineering - 6.08.06-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + +* Fri May 12 2017 Mattias Ellert - 6.08.06-5 +- Fix for macro scope issue (backport from upstream) +- Fix a problem loading the libJupyROOT CDLL module (use absolute path) +- Add ipython dependencies to the jupyroot packages +- Exclude s390x - endian issues +- Re-enable two tests on 32 bit arm - no longer failing +- Add BuildRequires on blas-devel (for TMVA) + +* Thu May 11 2017 Richard Shaw - 6.08.06-4 +- Rebuild for OCE 0.18.1. + +* Fri Apr 21 2017 Mattias Ellert - 6.08.06-3 +- Python 3 compatibility fixes (backport from upstream) + +* Wed Mar 15 2017 Mattias Ellert - 6.08.06-2 +- Fix relocation problems on aarch64 - using patch from the llvm package +- Re-enable building on aarch64 - works again with the above patch + +* Thu Mar 02 2017 Mattias Ellert - 6.08.06-1 +- Update to 6.08.06 +- Drop obsolete patch: root-tformulaparsingtests.patch +- Drop patches accepted upstream: root-spectrum-batch.patch and + root-missing-header-gcc7.patch +- Disable failing tests on s390x + +* Wed Mar 01 2017 Mattias Ellert - 6.08.04-3 +- Disable building on aarch64 (it is now broken again) +- Add missing header (gcc 7) +- Fix a test failure on Fedora 26 i686 +- Fix some format warnings/errors in GlobusAuth +- Use the right delimiter when splitting the icon path in TASImage +- Disable two more tests on 32 bit arm + +* Sat Feb 11 2017 Fedora Release Engineering - 6.08.04-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Sat Jan 14 2017 Mattias Ellert - 6.08.04-1 +- Update to 6.08.04 +- Fix broken TPad::WaitPrimitive (backport from git) +- Rebuild for gcc 6.3 + +* Thu Jan 12 2017 Igor Gnatenko - 6.08.02-4 +- Rebuild for readline 7.x + +* Tue Jan 10 2017 Orion Poplawski - 6.08.02-3 +- Rebuild for glew 2.0.0 + +* Thu Dec 22 2016 Miro Hrončok - 6.08.02-2 +- Rebuild for Python 3.6 + +* Tue Dec 06 2016 Mattias Ellert - 6.08.02-1 +- Update to 6.08.02 +- Drop patches accepted upstream +- Drop previously backported patches +- Drop obsolete patches +- Enable hadoop/hdfs support for all architectures + * libhdfs is now available for more architectures than ix86 and x86_64 +- Enable building on aarch64 +- Rename the python packages to python2-root and python3-root +- New sub-packages: python{2,3}-jupyroot, python{2,3}-jsmva +- Dropped sub-package: root-rootaas (replaced by python{2,3}-jupyroot) + +* Wed Sep 28 2016 Mattias Ellert - 6.06.08-2 +- Rebuild for gcc 6.2 + +* Thu Sep 08 2016 Mattias Ellert - 6.06.08-1 +- Update to 6.06.08 +- Add the packages providing the libraries listed by "root-config --libs" + as dependencies to root-core +- Add missing scriptlets to root-multiproc + +* Sun Aug 14 2016 Mattias Ellert - 6.06.06-4 +- Convert init scripts to systemd unit files + +* Tue Jul 19 2016 Fedora Release Engineering - 6.06.06-3 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Mon Jul 18 2016 Mattias Ellert - 6.06.06-2 +- Add requires on redhat-rpm-config to root-cling + +* Sun Jul 10 2016 Mattias Ellert - 6.06.06-1 +- Update to 6.06.06 +- Drop patches root-gfal2.patch and root-keysymbols.patch +- Make root-vdt package noarch + +* Sun Jun 19 2016 Mattias Ellert - 6.06.04-4 +- Add GuiTypes.h, KeySymbols.h and Buttons.h to dict (backport) +- Minor updates to patches - mostly backported from upstream +- Reenable hadoop/hdfs support for F24+ + +* Mon Jun 13 2016 Mattias Ellert - 6.06.04-3 +- Remove mathtext and minicern references from cmake files +- Fix the spelling of CMAKE_Fortran_FLAGS in a few places + +* Sat Jun 04 2016 Mattias Ellert - 6.06.04-2 +- Disable hadoop/hdfs support for F24+ (hadoop was retired) + +* Mon May 09 2016 Mattias Ellert - 6.06.04-1 +- Update to 6.06.04 +- Drop patch root-no-hexfloat-const.patch +- Add requires on gcc-c++ to root-cling + +* Fri Apr 15 2016 Mattias Ellert - 6.06.02-2 +- Rebuild for OCE-0.17.1 + +* Fri Apr 08 2016 Mattias Ellert - 6.06.02-1 +- Update to 6.06.02 (F24+, EPEL7) +- Change to cmake configuration (was using ./configure) +- Change to doxygen documentation generation (was using THTML) +- Run the test suite +- Remove compatibility with older EPEL (Group tags, BuildRoot tag, etc.) +- New sub-packages: root-multiproc, root-cling, root-r, root-r-tools, + root-geocad, root-tmva-python, root-tmva-r, root-tmva-gui, root-cli, + root-notebook and root-rootaas +- New subpackage for EPEL7: root-python34 +- Dropped sub-packages: root-cint, root-reflex, root-cintex, root-ruby + +* Fri Apr 08 2016 Mattias Ellert - 5.34.36-1 +- Update to 5.34.36 + +* Thu Feb 04 2016 Fedora Release Engineering - 5.34.32-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Sat Jan 16 2016 Mamoru TASAKA - 5.34.32-8 +- Rebuild again for https://fedoraproject.org/wiki/Changes/Ruby_2.3 + +* Thu Jan 14 2016 Adam Jackson - 5.34.32-7 +- Rebuild for glew 1.13 + +* Tue Jan 12 2016 Vít Ondruch - 5.34.32-6 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.3 + +* Tue Nov 17 2015 Mattias Ellert - 5.34.32-5 +- Adapt to gfal 2.10 - uses a different #define +- Exclude ppc64le - has the same issues with cint as ppc and ppc64 + +* Tue Nov 10 2015 Fedora Release Engineering - 5.34.32-4 +- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 + +* Fri Sep 25 2015 Mattias Ellert - 5.34.32-3 +- Add versioned dependencies between packages +- Reenable hadoop/hdfs support for F23+ + +* Wed Sep 16 2015 David Abdurachmanov - 5.34.32-2 +- Disable run-time dependency on gccxml in Reflex (allows installing on aarch64) (#1263206) +- Enable Cintex on aarch64 + +* Thu Jul 02 2015 Mattias Ellert - 5.34.32-1 +- Update to 5.34.32 +- New sub-package: root-fonts (STIX version 0.9 required by TMathText) +- Use GNU Free instead of Liberation, works better with TMathText +- Fix segfault when embedding Type 1 fonts +- Drop patch root-no-extra-formats.patch (workaround for above problem) + +* Thu Jun 18 2015 Fedora Release Engineering - 5.34.30-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Apr 24 2015 Mattias Ellert - 5.34.30-1 +- Update to 5.34.30 +- New sub-package: root-python3 +- Disable hadoop/hdfs support for F23+ (not installable) +- Drop previously backported gcc 5 patches + +* Fri Apr 03 2015 Mattias Ellert - 5.34.28-1 +- Update to 5.34.28 +- Merge emacs support files into main package (guidelines updated) + +* Tue Feb 24 2015 Mattias Ellert - 5.34.26-1 +- Update to 5.34.26 +- Drop patch root-xrdversion.patch + +* Thu Jan 29 2015 Mattias Ellert - 5.34.24-3 +- Rebuild with fixed cairo (bz 1183242) + +* Sat Jan 17 2015 Mamoru TASAKA - 5.34.24-2 +- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_2.2 + +* Fri Dec 19 2014 Mattias Ellert - 5.34.24-1 +- Update to 5.34.24 +- Drop patch root-bsd-misc.patch + +* Thu Aug 28 2014 Mattias Ellert - 5.34.20-2 +- Move xproofd binaries from root-proofd to root-xproof +- Adjust EPEL 7 font dependencies +- Rebuild using new binutils (ld bug fixed - F21+) + +* Wed Aug 20 2014 Mattias Ellert - 5.34.20-1 +- Update to 5.34.20 +- Re-enable xrootd support for F21+ and EPEL7 (now ported to xrootd 4) +- Do not depend on wine's fonts +- Drop patch root-gccopt.patch + +* Mon Aug 18 2014 Fedora Release Engineering - 5.34.19-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Mon Jul 14 2014 Mattias Ellert - 5.34.19-1 +- Update to 5.34.19 +- Disable xrootd support for F21+ and EPEL7 (root not yet ported to xrootd 4) +- New sub-package: root-net-http +- Drop patches root-thtml-revert.patch, root-gfal2.patch and + root-proofx-link-iolib.patch + +* Mon Jun 30 2014 Mattias Ellert - 5.34.18-4 +- Add Requires on root-tree-player to root-gui-ged + +* Sun Jun 08 2014 Fedora Release Engineering - 5.34.18-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sun May 04 2014 Mattias Ellert - 5.34.18-2 +- Rebuild for ruby 2.1 +- Fix build failure on F21 (missing symbol in libProofx linking) + +* Sat Mar 22 2014 Mattias Ellert - 5.34.18-1 +- Update to 5.34.18 +- Build GFAL module using libgfal2 +- New sub-package: root-vdt + +* Wed Feb 26 2014 Mattias Ellert - 5.34.17-1 +- Update to 5.34.17 + +* Fri Feb 14 2014 Mattias Ellert - 5.34.15-1 +- Update to 5.34.15 +- Drop patch root-davix.patch + +* Thu Jan 09 2014 Mattias Ellert - 5.34.14-3 +- Rebuild for cfitsio 3.360 + +* Mon Dec 23 2013 Mattias Ellert - 5.34.14-2 +- Adapt to davix >= 0.2.8 + +* Thu Dec 19 2013 Mattias Ellert - 5.34.14-1 +- Update to 5.34.14 +- New sub-package: root-net-davix +- Drop patch root-pythia8-incdir.patch + +* Tue Dec 03 2013 Mattias Ellert - 5.34.13-1 +- Update to 5.34.13 +- Remove java-devel build dependency (not needed with Fedora's libhdfs) +- Adapt to pythia8 >= 8.1.80 + +* Mon Nov 25 2013 Orion Poplawski - 5.34.10-3 +- Fix hadoop lib location + +* Mon Nov 18 2013 Dave Airlie - 5.34.10-2 +- rebuilt for GLEW 1.10 + +* Mon Sep 09 2013 Mattias Ellert - 5.34.10-1 +- Update to 5.34.10 +- New sub-package: root-io-hdfs (Fedora 20+) +- New sub-package: root-sql-sqlite + +* Thu Aug 08 2013 Mattias Ellert - 5.34.09-5 +- Exclude armv7hl - cint is not working +- Use _pkgdocdir when defined +- Use texlive-stix + +* Sun Aug 04 2013 Fedora Release Engineering - 5.34.09-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Thu Jul 18 2013 Petr Pisar - 5.34.09-3 +- Perl 5.18 rebuild + +* Tue Jul 16 2013 Mattias Ellert - 5.34.09-2 +- Rebuild for cfitsio 3.350 + +* Fri Jun 28 2013 Mattias Ellert - 5.34.09-1 +- Update to 5.34.09 +- New sub-package: root-montecarlo-pythia8 +- Drop patch root-gfal-bits.patch +- Use xz compression for source tarfile +- Update ancient root version in EPEL + +* Sat Apr 27 2013 Mattias Ellert - 5.34.07-1 +- Update to 5.34.07 + +* Sat Apr 27 2013 Mattias Ellert - 5.34.06-1 +- Update to 5.34.06 +- Drop patches root-gviz.patch, root-ruby-version.patch, + root-rev48681.patch and root-rev48831.patch + +* Wed Mar 20 2013 Mattias Ellert - 5.34.05-2 +- Rebuild for ruby 2.0 +- Rebuild for cfitsio 3.340 + +* Wed Feb 27 2013 Mattias Ellert - 5.34.05-1 +- Update to 5.34.05 +- Rebuild for xrootd 3.3 +- Patch for latest graphviz (libcgraph) +- Drop patches root-glibc.patch and root-tclass-fix.patch + +* Thu Feb 14 2013 Fedora Release Engineering - 5.34.02-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Dec 13 2012 Adam Jackson - 5.34.02-2 +- Rebuild for glew 1.9.0 + +* Fri Oct 12 2012 Mattias Ellert - 5.34.02-1 +- Update to 5.34.02 + +* Sat Jul 28 2012 Mattias Ellert - 5.34.01-2 +- Rebuild for glew 1.7 + +* Tue Jul 17 2012 Mattias Ellert - 5.34.01-1 +- Update to 5.34.01 +- Remove sub-packages root-clarens and root-peac (dropped by upstream) + +* Thu Jul 05 2012 Mattias Ellert - 5.34.00-2 +- Do the glibc 2.16 patch properly + +* Sat Jun 09 2012 Mattias Ellert - 5.34.00-1 +- Update to 5.34.00 +- New sub-package: root-io-gfal + * Thu May 17 2012 Mattias Ellert - 5.32.03-1 - Update to 5.32.03 @@ -2465,7 +5004,7 @@ fi - Enable dCache support - dcap library is now in Fedora - Use system unuran library instead of embedded sources -* Mon Feb 1 2010 Mattias Ellert - 5.26.00a-1 +* Mon Feb 01 2010 Mattias Ellert - 5.26.00a-1 - Update to 5.26.00a - Disable cintex package for non-intel architectures - Remove embedded gl2ps sources diff --git a/root.xml b/root.xml new file mode 100644 index 0000000..956f69e --- /dev/null +++ b/root.xml @@ -0,0 +1,15 @@ + + + + ROOT data file + ROOT Datei + ROOT banque de donnees + ROOT data fil + ROOT data fil + ROOT data fil + + + + + + diff --git a/rootdrawing-logo.png b/rootdrawing-logo.png deleted file mode 100644 index 20ac823..0000000 Binary files a/rootdrawing-logo.png and /dev/null differ diff --git a/sources b/sources index 94d2889..a9df00b 100644 --- a/sources +++ b/sources @@ -1 +1,3 @@ -18a3b912155d2ec6e493d335a23d7abe root-5.32.03.tar.gz +SHA512 (root-6.40.04.tar.xz) = 674ea3de3f58d3bde15637925bec80984552cb5c4f6259ec68c2f7dc566014d9a3b2ee005e0f89b5cf20d9e5188dc5c9185d886a6701e315bb4771b068939282 +SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670 +SHA512 (clad-2.3.tar.gz) = 2d7e008ad88dd9e4b44d73e3187f8b1883e475845f5ac2d3b2c8e728508422e1e60e279940fefe322995751490f61f7d4768498c3660f9afa1206cc0e83bea33