Compare commits

..

3 commits

Author SHA1 Message Date
Mattias Ellert
380269c3e7 Backport fixes for using aclic with versioned libraries
- New sub-package: root-io-gfal
2012-06-29 06:56:04 +02:00
Mattias Ellert
782c9c4d89 Rebuild for xrootd 3.1.1 2012-03-17 19:23:08 +01:00
Mattias Ellert
530201be85 Update to 5.30.06 2012-02-13 15:52:46 +01:00
35 changed files with 2208 additions and 5707 deletions

2
.gitignore vendored
View file

@ -1,3 +1 @@
/*.tar.gz
/*.tar.xz
/usa.root

View file

@ -1,37 +0,0 @@
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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

BIN
info.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -1,53 +0,0 @@
From ac806becc2aa69898d1c5ca3b195d8fa3003238a Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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<NG; i++) {
diff --git a/tree/tree/test/CMakeLists.txt b/tree/tree/test/CMakeLists.txt
index 4e903b06daa..2ad9bb52171 100644
--- a/tree/tree/test/CMakeLists.txt
+++ b/tree/tree/test/CMakeLists.txt
@@ -13,13 +13,9 @@ target_include_directories(testTOffsetGeneration PRIVATE ${CMAKE_CURRENT_SOURCE_
ROOT_STANDARD_LIBRARY_PACKAGE(SillyStruct NO_INSTALL_HEADERS HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/SillyStruct.h SOURCES SillyStruct.cxx LINKDEF SillyStructLinkDef.h DEPENDENCIES RIO)
ROOT_SET_OUTPUT_DIRECTORIES(SillyStruct)
ROOT_ADD_GTEST(testBulkApi BulkApi.cxx LIBRARIES RIO Tree TreePlayer)
-#FIXME: tests are having timeout on 32bit CERN VM (in docker container everything is fine),
-# to be reverted after investigation.
-if(NOT CMAKE_SIZEOF_VOID_P EQUAL 4)
- ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000)
- ROOT_ADD_GTEST(testBulkApiVarLength BulkApiVarLength.cxx LIBRARIES RIO Tree TreePlayer)
- ROOT_ADD_GTEST(testBulkApiSillyStruct BulkApiSillyStruct.cxx LIBRARIES RIO Tree TreePlayer SillyStruct)
-endif()
+ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000)
+ROOT_ADD_GTEST(testBulkApiVarLength BulkApiVarLength.cxx LIBRARIES RIO Tree TreePlayer)
+ROOT_ADD_GTEST(testBulkApiSillyStruct BulkApiSillyStruct.cxx LIBRARIES RIO Tree TreePlayer SillyStruct)
ROOT_ADD_GTEST(testTBasket TBasket.cxx LIBRARIES RIO Tree)
ROOT_ADD_GTEST(testTBranch TBranch.cxx LIBRARIES RIO Tree MathCore)
ROOT_ADD_GTEST(testTIOFeatures TIOFeatures.cxx LIBRARIES RIO Tree)
--
2.54.0

View file

@ -1,46 +0,0 @@
From 9d2d6c1a104302e2f84659324b4e8b317cb9ab95 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

View file

@ -1,47 +0,0 @@
From 9fc24a9cc827028d78c983eea5d18ac6a705e806 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

View file

@ -1,60 +0,0 @@
From 4da50ef374cd231163dff77493f9367cd62583d9 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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 <geom_name>_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

View file

@ -1,48 +0,0 @@
From a5b9525ea1575706a523296bb47ac15f33935838 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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} $<TARGET_OBJECTS:ClingUtils>)
+
+# 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

View file

@ -0,0 +1,82 @@
diff -ur root-5.30.06.orig/core/unix/src/TUnixSystem.cxx root-5.30.06/core/unix/src/TUnixSystem.cxx
--- root-5.30.06.orig/core/unix/src/TUnixSystem.cxx 2012-01-10 16:14:31.000000000 +0100
+++ root-5.30.06/core/unix/src/TUnixSystem.cxx 2012-06-29 06:29:42.030017840 +0200
@@ -440,6 +440,9 @@
TString lib = _dyld_get_image_name(i++);
+ TRegexp sovers = "libCore\\.[0-9]+\\.*[0-9]*\\.so";
+ TRegexp dyvers = "libCore\\.[0-9]+\\.*[0-9]*\\.dylib";
+
#ifndef ROOTPREFIX
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
// first loaded is the app so set ROOTSYS to app bundle
@@ -454,7 +457,8 @@
}
}
#else
- if (lib.EndsWith("libCore.dylib") || lib.EndsWith("libCore.so")) {
+ if (lib.EndsWith("libCore.dylib") || lib.EndsWith("libCore.so") ||
+ lib.Index(sovers) != kNPOS || lib.Index(dyvers) != kNPOS) {
char respath[kMAXPATHLEN];
if (!realpath(lib, respath)) {
if (!gSystem->Getenv("ROOTSYS"))
@@ -476,9 +480,23 @@
// add all libs loaded before libSystem.B.dylib
if (!gotFirstSo && (lib.EndsWith(".dylib") || lib.EndsWith(".so"))) {
- if (linkedDylibs.Length())
- linkedDylibs += " ";
- linkedDylibs += lib;
+ sovers = "\\.[0-9]+\\.*[0-9]*\\.so";
+ Ssiz_t idx = lib.Index(sovers);
+ if (idx != kNPOS) {
+ lib.Remove(idx);
+ lib += ".so";
+ }
+ dyvers = "\\.[0-9]+\\.*[0-9]*\\.dylib";
+ idx = lib.Index(dyvers);
+ if (idx != kNPOS) {
+ lib.Remove(idx);
+ lib += ".dylib";
+ }
+ if (!gSystem->AccessPathName(lib, kReadPermission)) {
+ if (linkedDylibs.Length())
+ linkedDylibs += " ";
+ linkedDylibs += lib;
+ }
}
}
#endif
@@ -2838,9 +2856,11 @@
delete [] exe;
exe = longerexe;
}
+ TRegexp sovers = "\\.so\\.[0-9]+";
#else
const char *cLDD="ldd";
const char *cSOEXT=".so";
+ TRegexp sovers = "\\.so\\.[0-9]+";
#endif
FILE *p = OpenPipe(TString::Format("%s %s", cLDD, exe), "r");
TString ldd;
@@ -2858,10 +2878,15 @@
}
if (solibName) {
TString solib = solibName->String();
- if (solib.EndsWith(cSOEXT)) {
- if (!linkedLibs.IsNull())
- linkedLibs += " ";
- linkedLibs += solib;
+ Ssiz_t idx = solib.Index(sovers);
+ if (solib.EndsWith(cSOEXT) || idx != kNPOS) {
+ if (idx != kNPOS)
+ solib.Remove(idx+3);
+ if (!AccessPathName(solib, kReadPermission)) {
+ if (!linkedLibs.IsNull())
+ linkedLibs += " ";
+ linkedLibs += solib;
+ }
}
}
delete tok;

BIN
root-banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

View file

@ -1,27 +0,0 @@
From 2920a892a5db1c24bb8af34c63aacc1438a18247 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

View file

@ -1,13 +0,0 @@
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})

File diff suppressed because it is too large Load diff

55
root-ftgl.patch Normal file
View file

@ -0,0 +1,55 @@
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 <FTGL/ftgl.h>
+# include <FTGL/FTFont.h>
+# include <FTGL/FTGLExtrdFont.h>
+# include <FTGL/FTGLOutlineFont.h>
+# include <FTGL/FTGLPolygonFont.h>
+# include <FTGL/FTGLTextureFont.h>
+# include <FTGL/FTGLPixmapFont.h>
+# include <FTGL/FTGLBitmapFont.h>
#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 <FTGL/ftgl.h>
+# include <FTGL/FTFont.h>
+# include <FTGL/FTGLExtrdFont.h>
+# include <FTGL/FTGLOutlineFont.h>
+# include <FTGL/FTGLPolygonFont.h>
+# include <FTGL/FTGLTextureFont.h>
+# include <FTGL/FTGLPixmapFont.h>
+# include <FTGL/FTGLBitmapFont.h>
#else
# include "FTFont.h"
# include "FTGLExtrdFont.h"

View file

@ -1,6 +0,0 @@
#!/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}

35
root-html.C Normal file
View file

@ -0,0 +1,35 @@
{
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");
gInterpreter->AddIncludePath("@PWD@/include");
gInterpreter->AddIncludePath("@PWD@/cint/cint/include");
gInterpreter->AddIncludePath("@PWD@/cint/cint/stl");
gInterpreter->AddIncludePath("@PWD@/cint/cint/lib");
#include <RtypesCint.h>
#include <iostream>
#include <string>
#include <DllImport.h>
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();
}

11
root-includelist Normal file
View file

@ -0,0 +1,11 @@
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

View file

@ -1,15 +0,0 @@
--- 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)

44
root-meta.patch Normal file
View file

@ -0,0 +1,44 @@
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 <RtypesCint.h>");
- 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 <RtypesCint.h>");
+ delete[] whichTypesCint;
+ }
+ }
}

View file

@ -1,54 +0,0 @@
From ea7bed3a096949588b1b9086ddf66b2f7892a385 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

View file

@ -1,68 +0,0 @@
From 87e5571eef573a1ab802c9b5b68e4215045689b9 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

View file

@ -1,87 +0,0 @@
#! /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

View file

@ -1,146 +0,0 @@
From 2fec5822e305b9b203894aa0fe3e4dded1f673cc Mon Sep 17 00:00:00 2001
From: Jonas Rembser <jonas.rembser@cern.ch>
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 <stdexcept>
#include <string>
+#include <cstring>
#include <memory>
#include <cassert>
#include <iostream>
@@ -155,6 +156,45 @@ struct ExtractDataFromTP<int64_t> {
}
};
+#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 <std::size_t N>
+void CopyBswap(void *dest, const void *source, std::size_t nbytes)
+{
+ using value_type = typename RByteSwap<N>::value_type;
+ auto dst = static_cast<unsigned char *>(dest);
+ auto src = static_cast<const unsigned char *>(source);
+ for (std::size_t k = 0; k < nbytes; k += N) {
+ value_type v;
+ std::memcpy(&v, src + k, N);
+ v = RByteSwap<N>::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<void> RModelParser_ONNX::GetInitializedTensorData(onnx::TensorProto *tensorproto, size_t tensor_size, ETensorType tensor_type)
{
@@ -172,34 +212,7 @@ std::shared_ptr<void> 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<typename RByteSwap<sizeof(float)>::value_type *>(data.get()))[k] =
- RByteSwap<sizeof(float)>::bswap((reinterpret_cast<const typename RByteSwap<sizeof(float)>::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<typename RByteSwap<sizeof(double)>::value_type *>(data.get()))[k] =
- RByteSwap<sizeof(double)>::bswap((reinterpret_cast<const typename RByteSwap<sizeof(double)>::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<typename RByteSwap<sizeof(int32_t)>::value_type *>(data.get()))[k] =
- RByteSwap<sizeof(int32_t)>::bswap((reinterpret_cast<const typename RByteSwap<sizeof(int32_t)>::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<typename RByteSwap<sizeof(int64_t)>::value_type *>(data.get()))[k] =
- RByteSwap<sizeof(int64_t)>::bswap((reinterpret_cast<const typename RByteSwap<sizeof(int64_t)>::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<void> RModelParser_ONNX::GetInitializedTensorData(onnx::TensorPr
fDataFile.seekg(offset);
fDataFile.read(reinterpret_cast<char *>(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

View file

@ -1,68 +0,0 @@
From 8554bf49749efd8de5538bf99c12a04d2691102d Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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<void> 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<typename RByteSwap<sizeof(uint8_t)>::value_type *>(data.get()))[k] =
- RByteSwap<sizeof(T)>::bswap((reinterpret_cast<const typename RByteSwap<sizeof(uint8_t)>::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<typename RByteSwap<sizeof(float)>::value_type *>(data.get()))[k] =
+ RByteSwap<sizeof(float)>::bswap((reinterpret_cast<const typename RByteSwap<sizeof(float)>::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<typename RByteSwap<sizeof(double)>::value_type *>(data.get()))[k] =
+ RByteSwap<sizeof(double)>::bswap((reinterpret_cast<const typename RByteSwap<sizeof(double)>::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<typename RByteSwap<sizeof(int32_t)>::value_type *>(data.get()))[k] =
+ RByteSwap<sizeof(int32_t)>::bswap((reinterpret_cast<const typename RByteSwap<sizeof(int32_t)>::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<typename RByteSwap<sizeof(int64_t)>::value_type *>(data.get()))[k] =
+ RByteSwap<sizeof(int64_t)>::bswap((reinterpret_cast<const typename RByteSwap<sizeof(int64_t)>::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<float>::Copy(tensorproto, data.get(), tensor_size/ 4);
@@ -200,7 +224,7 @@ std::shared_ptr<void> 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

View file

@ -1,25 +0,0 @@
From 58b38e29586975e714deee6ac195b286eb9a73cf Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

View file

@ -1,32 +0,0 @@
From 07cbb0515e4f45808696037adce7c0f1bc5e903d Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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<RField<double>>("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<FloatAndDouble *>(entry->GetPtr<void>("r1").get());
ptrFloatAndDouble->pt = 2.0;
--
2.54.0

39
root-unuran.patch Normal file
View file

@ -0,0 +1,39 @@
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)

70
root-xrootd.patch Normal file
View file

@ -0,0 +1,70 @@
diff -ur root-5.30.04.orig/configure root-5.30.04/configure
--- root-5.30.04.orig/configure 2011-11-08 14:28:55.000000000 +0100
+++ root-5.30.04/configure 2011-11-16 05:48:21.224144395 +0100
@@ -4424,13 +4424,15 @@
if test "x$externalxrd" = "xyes"; then
buildxrd="no"
# Check if bonjour is available for code potentially using it ...
- if test "x$enable_bonjour" = "xyes"; then
- check_symbol XrdOucBonjour "libXrdOuc.a" "$xrdlibdir"
- if test $found_symbol -eq 0 ; then
- bjrcomm="External xrootd has no bonjour support: disabling bonjour in XrdProofd"
- bonjourcppflags=
- fi
- fi
+ ## This test is broken and will always fail.
+ ##if test "x$enable_bonjour" = "xyes"; then
+ ## check_symbol XrdOucBonjour "libXrdOuc.a" "$xrdlibdir"
+ ## if test $found_symbol -eq 0 ; then
+ ## bjrcomm="External xrootd has no bonjour support: disabling bonjour in XrdProofd"
+ ## bonjourcppflags=
+ ## fi
+ ##fi
+ bonjourcppflags=
fi
else
buildxrd="no"
diff -ur root-5.30.04.orig/proof/proofd/Module.mk root-5.30.04/proof/proofd/Module.mk
--- root-5.30.04.orig/proof/proofd/Module.mk 2011-11-08 14:28:15.000000000 +0100
+++ root-5.30.04/proof/proofd/Module.mk 2011-11-16 07:29:54.315314349 +0100
@@ -129,12 +129,10 @@
XPDINCEXTRA += $(PROOFDDIRI:%=-I%)
ifeq ($(HASXRDUTILS),no)
-XPDLIBEXTRA += -L$(XROOTDDIRL) -lXrdOuc -lXrdNet -lXrdSys \
- -lXrdClient -lXrdSut $(DNSSDLIB)
-XPROOFDEXELIBS := $(XROOTDDIRL)/libXrd.a $(XROOTDDIRL)/libXrdClient.a \
- $(XROOTDDIRL)/libXrdNet.a \
- $(XROOTDDIRL)/libXrdOuc.a \
- $(XROOTDDIRL)/libXrdSys.a $(XROOTDDIRL)/libXrdSut.a
+XPDLIBEXTRA += -L$(XROOTDDIRL) -lXrd -lXrdClient -lXrdSut \
+ -lXrdNet -lXrdOuc -lXrdSys $(DNSSDLIB)
+XPROOFDEXELIBS := -L$(XROOTDDIRL) -lXrd -lXrdClient -lXrdSut \
+ -lXrdNet -lXrdOuc -lXrdSys
# Starting from Jul 2010 XrdNet has been split in two libs: XrdNet and XrdNetUtil;
# both are needed
XRDNETUTIL :=
@@ -144,8 +142,8 @@
fi)
endif
ifeq ($(XRDNETUTIL),yes)
-XPDLIBEXTRA += -L$(XROOTDDIRL) -lXrdNetUtil
-XPROOFDEXELIBS += $(XROOTDDIRL)/libXrdNetUtil.a
+XPDLIBEXTRA += -lXrdNetUtil
+XPROOFDEXELIBS += -lXrdNetUtil
endif
else
@@ -191,10 +189,10 @@
$(LD) $(LDFLAGS) -o $@ $(PROOFDEXEO) $(RPDUTILO) $(GLBPATCHO) \
$(RSAO) $(SNPRINTFO) $(CRYPTLIBS) $(AUTHLIBS) $(STRLCPYO) $(SYSLIBS)
-$(XPROOFDEXE): $(XPDO) $(XPROOFDEXELIBS) $(XRDPROOFXD) $(RPDCONNO)
+$(XPROOFDEXE): $(XPDO) $(XRDPROOFXD) $(RPDCONNO)
$(LD) $(LDFLAGS) -o $@ $(XPDO) $(RPDCONNO) $(XPROOFDEXELIBS) $(SYSLIBS) $(XPROOFDEXESYSLIBS)
-$(XPDLIB): $(XPDO) $(XPDH) $(ORDER_) $(XPROOFDEXELIBS) $(MAINLIBS) $(XRDPROOFXD) $(RPDCONNO)
+$(XPDLIB): $(XPDO) $(XPDH) $(ORDER_) $(MAINLIBS) $(XRDPROOFXD) $(RPDCONNO)
@$(MAKELIB) $(PLATFORM) $(LD) "$(LDFLAGS)" \
"$(SOFLAGS)" libXrdProofd.$(SOEXT) $@ "$(XPDO) $(RPDCONNO)" \
"$(XPDLIBEXTRA)"

View file

@ -1,11 +0,0 @@
[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

BIN
root.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

5384
root.spec

File diff suppressed because it is too large Load diff

View file

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-root">
<comment>ROOT data file</comment>
<comment xml:lang="de">ROOT Datei</comment>
<comment xml:lang="fr">ROOT banque de donnees</comment>
<comment xml:lang="sv">ROOT data fil</comment>
<comment xml:lang="no">ROOT data fil</comment>
<comment xml:lang="da">ROOT data fil</comment>
<glob pattern="*.root"/>
<magic priority="80">
<match type="string" value="ROOT" offset="0:3"/>
</magic>
</mime-type>
</mime-info>

BIN
rootdrawing-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -1,3 +1 @@
SHA512 (root-6.40.04.tar.xz) = 674ea3de3f58d3bde15637925bec80984552cb5c4f6259ec68c2f7dc566014d9a3b2ee005e0f89b5cf20d9e5188dc5c9185d886a6701e315bb4771b068939282
SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670
SHA512 (clad-2.3.tar.gz) = 2d7e008ad88dd9e4b44d73e3187f8b1883e475845f5ac2d3b2c8e728508422e1e60e279940fefe322995751490f61f7d4768498c3660f9afa1206cc0e83bea33
0a0e24e890f33b3606f8983fe8765a09 root-5.30.06.tar.gz