Compare commits
3 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
875cd941a6 | ||
|
|
df2ea0dd20 | ||
|
|
43094d8676 |
38 changed files with 3082 additions and 5675 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1,3 +1 @@
|
|||
/*.tar.gz
|
||||
/*.tar.xz
|
||||
/usa.root
|
||||
|
|
|
|||
|
|
@ -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
BIN
info.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2 KiB |
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
86
root-aclic-versioned-libs.patch
Normal file
86
root-aclic-versioned-libs.patch
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
diff -ur root-5.32.03.orig/core/unix/src/TUnixSystem.cxx root-5.32.03/core/unix/src/TUnixSystem.cxx
|
||||
--- root-5.32.03.orig/core/unix/src/TUnixSystem.cxx 2012-05-09 12:59:38.000000000 +0200
|
||||
+++ root-5.32.03/core/unix/src/TUnixSystem.cxx 2012-06-28 19:25:22.486639614 +0200
|
||||
@@ -453,6 +453,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
|
||||
@@ -467,7 +470,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"))
|
||||
@@ -489,9 +493,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
|
||||
@@ -2849,12 +2867,15 @@
|
||||
delete [] exe;
|
||||
exe = longerexe;
|
||||
}
|
||||
+ TRegexp sovers = "\\.so\\.[0-9]+";
|
||||
#else
|
||||
const char *cLDD="ldd";
|
||||
#if defined(R__AIX)
|
||||
const char *cSOEXT=".a";
|
||||
+ TRegexp sovers = "\\.a\\.[0-9]+";
|
||||
#else
|
||||
const char *cSOEXT=".so";
|
||||
+ TRegexp sovers = "\\.so\\.[0-9]+";
|
||||
#endif
|
||||
#endif
|
||||
FILE *p = OpenPipe(TString::Format("%s %s", cLDD, exe), "r");
|
||||
@@ -2874,10 +2895,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
BIN
root-banner.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 129 KiB |
|
|
@ -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
|
||||
|
||||
|
|
@ -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
55
root-ftgl.patch
Normal 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"
|
||||
|
|
@ -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}
|
||||
61
root-gfal-bits.patch
Normal file
61
root-gfal-bits.patch
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
diff -ur root-5.28.00h.orig/config/Makefile.in root-5.28.00h/config/Makefile.in
|
||||
--- root-5.28.00h.orig/config/Makefile.in 2011-11-24 17:12:55.000000000 +0100
|
||||
+++ root-5.28.00h/config/Makefile.in 2013-03-02 08:09:02.230002472 +0100
|
||||
@@ -154,6 +154,7 @@
|
||||
GFALLIBDIR := @gfallibdir@
|
||||
GFALCLILIB := @gfallib@
|
||||
GFALINCDIR := $(filter-out /usr/include, @gfalincdir@)
|
||||
+SRMIFCEINCDIR := $(filter-out /usr/include, @srmifceincdir@)
|
||||
|
||||
BUILDGLITE := @buildglite@
|
||||
GLITELIBDIR := @glitelibdir@
|
||||
diff -ur root-5.28.00h.orig/configure root-5.28.00h/configure
|
||||
--- root-5.28.00h.orig/configure 2011-11-24 17:12:57.000000000 +0100
|
||||
+++ root-5.28.00h/configure 2013-03-02 08:10:33.684863607 +0100
|
||||
@@ -1426,6 +1426,7 @@
|
||||
gviz-incdir Graphviz support, location of gvc.h
|
||||
gviz-libdir Graphviz support, location of libgvplugin_core
|
||||
gfal-incdir GFAL support, location of gfal_api.h
|
||||
+ srm-ifce-incdir GFAL support, location of gfal_srm_ifce_types.h
|
||||
gfal-libdir GFAL support, location of libgfal
|
||||
glew-incdir GLEW support, location of glew.h
|
||||
glew-libdir GLEW support, location of libGLEW
|
||||
@@ -1733,6 +1734,7 @@
|
||||
--with-gviz-libdir=*) gvizlibdir=$optarg ; enable_gviz="yes" ;;
|
||||
--with-gfal-incdir=*) gfalincdir=$optarg ; enable_gfal="yes" ;;
|
||||
--with-gfal-libdir=*) gfallibdir=$optarg ; enable_gfal="yes" ;;
|
||||
+ --with-srm-ifce-incdir=*) srmifceincdir=$optarg;;
|
||||
--with-glew-incdir=*) glewincdir=$optarg ; enable_builtin_glew=no;;
|
||||
--with-glew-libdir=*) glewlibdir=$optarg ; enable_builtin_glew=no;;
|
||||
--with-gsl-incdir=*) gslincdir=$optarg ; enable_gsl="yes" ;;
|
||||
@@ -3199,6 +3201,12 @@
|
||||
gfallib=$found_lib
|
||||
gfallibdir=$found_dir
|
||||
|
||||
+ check_header "gfal_srm_ifce_types.h" "$srmifceincdir" \
|
||||
+ /opt/lcg/include /opt/srm-ifce/include /usr/local/lcg/include \
|
||||
+ /usr/local/srm-ifce/include
|
||||
+ srmifceinc=$found_hdr
|
||||
+ srmifceincdir=$found_dir
|
||||
+
|
||||
if test "x$gfalincdir" = "x" || test "x$gfallib" = "x"; then
|
||||
enable_gfal="no"
|
||||
fi
|
||||
@@ -6341,6 +6349,7 @@
|
||||
-e "s|@exceptions@|$enable_exceptions|" \
|
||||
-e "s|@explicitlink@|$enable_explicitlink|" \
|
||||
-e "s|@gfalincdir@|$gfalincdir|" \
|
||||
+ -e "s|@srmifceincdir@|$srmifceincdir|" \
|
||||
-e "s|@gfallib@|$gfallib|" \
|
||||
-e "s|@gfallibdir@|$gfallibdir|" \
|
||||
-e "s|@enable_xft@|$enable_xft|" \
|
||||
diff -ur root-5.28.00h.orig/io/gfal/Module.mk root-5.28.00h/io/gfal/Module.mk
|
||||
--- root-5.28.00h.orig/io/gfal/Module.mk 2011-11-24 17:12:56.000000000 +0100
|
||||
+++ root-5.28.00h/io/gfal/Module.mk 2013-03-02 08:04:00.349761906 +0100
|
||||
@@ -70,3 +70,6 @@
|
||||
##### extra rules ######
|
||||
$(GFALO) $(GFALDO): CXXFLAGS := $(filter-out -Wshadow,$(CXXFLAGS))
|
||||
$(GFALO): CXXFLAGS += $(GFALINCDIR:%=-I%)
|
||||
+$(GFALO): CXXFLAGS += $(SRMIFCEINCDIR:%=-I%)
|
||||
+$(GFALO): CXXFLAGS += $(shell pkg-config --cflags glib-2.0)
|
||||
+$(GFALO): CXXFLAGS += -D_FILE_OFFSET_BITS=64
|
||||
35
root-glibc.patch
Normal file
35
root-glibc.patch
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
diff -ur root-5.34.00.orig/build/rmkdepend/main.c root-5.34.00/build/rmkdepend/main.c
|
||||
--- root-5.34.00.orig/build/rmkdepend/main.c 2012-06-05 15:31:46.000000000 +0200
|
||||
+++ root-5.34.00/build/rmkdepend/main.c 2012-07-05 20:42:58.938953353 +0200
|
||||
@@ -60,7 +60,7 @@
|
||||
# endif
|
||||
# elif defined(__CYGWIN__)
|
||||
extern int fchmod(int, mode_t);
|
||||
-#else
|
||||
+# elif !defined(__GLIBC__) || __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 16)
|
||||
extern int fchmod(int, int);
|
||||
# endif
|
||||
#endif
|
||||
diff -ur root-5.34.00.orig/cint/tool/rmkdepend/main.c root-5.34.00/cint/tool/rmkdepend/main.c
|
||||
--- root-5.34.00.orig/cint/tool/rmkdepend/main.c 2012-06-05 15:31:30.000000000 +0200
|
||||
+++ root-5.34.00/cint/tool/rmkdepend/main.c 2012-07-05 20:42:58.492949104 +0200
|
||||
@@ -58,7 +58,7 @@
|
||||
#if !defined(MAC_OS_X_VERSION_10_4)
|
||||
extern int fchmod();
|
||||
#endif
|
||||
-#else
|
||||
+#elif !defined(__GLIBC__) || __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 16)
|
||||
extern int fchmod();
|
||||
#endif
|
||||
#endif
|
||||
diff -ur root-5.34.00.orig/core/unix/src/TUnixSystem.cxx root-5.34.00/core/unix/src/TUnixSystem.cxx
|
||||
--- root-5.34.00.orig/core/unix/src/TUnixSystem.cxx 2012-06-05 15:31:17.000000000 +0200
|
||||
+++ root-5.34.00/core/unix/src/TUnixSystem.cxx 2012-07-05 20:29:29.969242837 +0200
|
||||
@@ -98,6 +98,7 @@
|
||||
#include <pwd.h>
|
||||
#include <grp.h>
|
||||
#include <errno.h>
|
||||
+#include <sys/resource.h>
|
||||
#include <sys/wait.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
35
root-html.C
Normal file
35
root-html.C
Normal 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");
|
||||
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 <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
11
root-includelist
Normal 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
|
||||
|
|
@ -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
44
root-meta.patch
Normal 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;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
25
root-qt.patch
Normal file
25
root-qt.patch
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
diff -ur root-5.28.00h.orig/configure root-5.28.00h/configure
|
||||
--- root-5.28.00h.orig/configure 2011-11-24 17:12:57.000000000 +0100
|
||||
+++ root-5.28.00h/configure 2013-03-02 12:52:21.823338782 +0100
|
||||
@@ -2955,21 +2955,6 @@
|
||||
check_library "libQt3Support Qt3Support Qt3Support$qt4suffix Qt3Support4" \
|
||||
"$enable_shared" "$found_raw_dir" ""
|
||||
qtlib="$qtlib $found_lib"
|
||||
- check_library "libQtOpenGL QtOpenGL QtOpenGL$qt4suffix QtOpenGL4" \
|
||||
- "$enable_shared" "$found_raw_dir" ""
|
||||
- qtlib="$qtlib $found_lib"
|
||||
- check_library "libQtSvg QtSvg QtSvg$qt4suffix QtSvg4" \
|
||||
- "$enable_shared" "$found_raw_dir" ""
|
||||
- qtlib="$qtlib $found_lib"
|
||||
- check_library "libQtXml QtXml QtXml$qt4suffix QtXml4" \
|
||||
- "$enable_shared" "$found_raw_dir" ""
|
||||
- qtlib="$qtlib $found_lib"
|
||||
- check_library "libQtWebKit QtWebKit QtWebKit$qt4suffix QtWebKit4" \
|
||||
- "$enable_shared" "$found_raw_dir" ""
|
||||
- qtlib="$qtlib $found_lib"
|
||||
- check_library "libQtNetwork QtNetwork QtNetwork$qt4suffix QtNetwork4" \
|
||||
- "$enable_shared" "$found_raw_dir" ""
|
||||
- qtlib="$qtlib $found_lib"
|
||||
else
|
||||
qtinc=
|
||||
qtmainincdir=
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
39
root-unuran.patch
Normal 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)
|
||||
809
root-xrootd.patch
Normal file
809
root-xrootd.patch
Normal file
|
|
@ -0,0 +1,809 @@
|
|||
diff -Nur root-5.32.04.orig/cmake/modules/FindXROOTD.cmake root-5.32.04/cmake/modules/FindXROOTD.cmake
|
||||
--- root-5.32.04.orig/cmake/modules/FindXROOTD.cmake 2012-07-13 15:54:18.000000000 +0200
|
||||
+++ root-5.32.04/cmake/modules/FindXROOTD.cmake 2013-03-08 07:23:10.891952543 +0100
|
||||
@@ -28,32 +28,37 @@
|
||||
)
|
||||
|
||||
if (XROOTD_INCLUDE_DIR)
|
||||
- file(STRINGS ${XROOTD_INCLUDE_DIR}/XrdVersion.hh xrdvers REGEX "^#define XrdVERSION")
|
||||
+ file(STRINGS ${XROOTD_INCLUDE_DIR}/XrdVersion.hh xrdvers REGEX "^#define XrdVERSION ")
|
||||
string(REGEX REPLACE "#define[ ]+XrdVERSION[ ]+" "" xrdvers ${xrdvers})
|
||||
string(REGEX REPLACE "[^v\\.]+" "" xrdversdots ${xrdvers})
|
||||
if (${xrdversdots} STREQUAL "v..")
|
||||
# Regular version string; parse it out
|
||||
string(REGEX MATCH "[0-9\\.]+" xrdvers ${xrdvers})
|
||||
- string(REGEX MATCH "[0-9]" xrdversmajor ${xrdvers})
|
||||
- string(REPLACE "${xrdversmajor}." "" xrdversminor ${xrdvers})
|
||||
- string(REGEX MATCH "[0-9]" xrdversminor ${xrdversminor})
|
||||
- string(REPLACE "${xrdversmajor}.${xrdversminor}." "" xrdverspatch ${xrdvers})
|
||||
- string(REGEX MATCH "[0-9]+" xrdverspatch ${xrdverspatch})
|
||||
+ string(REGEX REPLACE "^([^.]*)\\.(.*)\\.(.*)" "\\1" xrdversmajor ${xrdvers})
|
||||
+ string(REGEX REPLACE "^([^.]*)\\.(.*)\\.(.*)" "\\2" xrdversminor ${xrdvers})
|
||||
+ string(REGEX REPLACE "^([^.]*)\\.(.*)\\.(.*)" "\\3" xrdverspatch ${xrdvers})
|
||||
math(EXPR xrdversnum ${xrdversmajor}*100000000+${xrdversminor}*10000+${xrdverspatch})
|
||||
else ()
|
||||
# Old version string: we keep only the first numerics, i.e. the date
|
||||
string(REGEX REPLACE "[v\"]" "" xrdvers ${xrdvers})
|
||||
- message(STATUS "Found Xrootd version ${xrdvers}")
|
||||
- string(REGEX REPLACE "[^0-9-]+" " " xrdvers ${xrdvers})
|
||||
string(SUBSTRING ${xrdvers} 0 8 xrdversnum)
|
||||
endif ()
|
||||
+ if ( ${xrdversnum} EQUAL 300030000 )
|
||||
+ SET(XROOTD_FOUND FALSE)
|
||||
+ message(WARNING " >>> Cannot build with XRootD version 3.3.0: please install >=3.3.1 or <= 3.2.x")
|
||||
+ else()
|
||||
+ SET(XROOTD_FOUND TRUE)
|
||||
+ endif ()
|
||||
+endif()
|
||||
+
|
||||
+if(XROOTD_FOUND)
|
||||
# This we used as a compiler macro variable
|
||||
if(NOT XROOTD_FIND_QUIETLY )
|
||||
- message(STATUS "Found Xrootd version num: ${xrdvers}")
|
||||
+ message(STATUS "Found Xrootd version num: ${xrdvers} (setting -DROOTXRDVERS=${xrdversnum})")
|
||||
endif()
|
||||
SET(XROOTD_CFLAGS "-DROOTXRDVERS=${xrdversnum}")
|
||||
|
||||
- if ( ${xrdversnum} LESS 300010000 )
|
||||
+ if ( ${xrdversnum} LESS 300010000 AND ${xrdversnum} LESS 20111022)
|
||||
SET(XROOTD_OLDPACK TRUE)
|
||||
message(STATUS "Setting OLDPACK TRUE")
|
||||
else()
|
||||
@@ -72,14 +77,16 @@
|
||||
XrdOuc/XrdOucPthread.hh
|
||||
XrdOuc/XrdOucSemWait.hh
|
||||
XrdOuc/XrdOucTimer.hh
|
||||
+ PATHS
|
||||
${XROOTD_INCLUDE_DIR}
|
||||
)
|
||||
else()
|
||||
- if ( ${xrdversnum} LESS 300010000 )
|
||||
+ if ( ${xrdversnum} LESS 300010000 AND ${xrdversnum} LESS 20111022)
|
||||
# DNS stuff was under XrdNet
|
||||
find_path(XROOTD_INCLUDE_DIR
|
||||
NAMES
|
||||
XrdNet/XrdNetDNS.hh
|
||||
+ PATHS
|
||||
${XROOTD_INCLUDE_DIR}
|
||||
)
|
||||
else ()
|
||||
@@ -87,6 +94,7 @@
|
||||
find_path(XROOTD_INCLUDE_DIR
|
||||
NAMES
|
||||
XrdSys/XrdSysDNS.hh
|
||||
+ PATHS
|
||||
${XROOTD_INCLUDE_DIR}
|
||||
)
|
||||
endif ()
|
||||
@@ -101,9 +109,20 @@
|
||||
XrdSys/XrdSysPthread.hh
|
||||
XrdSys/XrdSysSemWait.hh
|
||||
XrdSys/XrdSysTimer.hh
|
||||
+ PATHS
|
||||
${XROOTD_INCLUDE_DIR}
|
||||
)
|
||||
endif()
|
||||
+
|
||||
+ if (XROOTD_INCLUDE_DIR)
|
||||
+ # Check for additional headers in new directories
|
||||
+ find_path(XROOTD_PRIVATE_INCLUDE_DIR
|
||||
+ NAMES
|
||||
+ XrdSys/XrdSysPriv.hh
|
||||
+ PATHS
|
||||
+ ${XROOTD_INCLUDE_DIR}/private
|
||||
+ )
|
||||
+ endif()
|
||||
endif()
|
||||
if (XROOTD_INCLUDE_DIR)
|
||||
SET(XROOTD_FOUND TRUE)
|
||||
@@ -152,7 +171,7 @@
|
||||
if(XROOTD_LIBRARIES)
|
||||
set(XROOTD_FOUND TRUE)
|
||||
if(NOT XROOTD_FIND_QUIETLY )
|
||||
- message(STATUS " include_dir: ${XROOTD_INCLUDE_DIR}")
|
||||
+ message(STATUS " include_dir: ${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR}")
|
||||
message(STATUS " libraries: ${XROOTD_LIBRARIES}")
|
||||
endif()
|
||||
else ()
|
||||
@@ -160,7 +179,8 @@
|
||||
endif ()
|
||||
endif()
|
||||
|
||||
-mark_as_advanced(XROOTD_INCLUDE_DIR
|
||||
+mark_as_advanced(XROOTD_INCLUDE_DIR
|
||||
+ XROOTD_PRIVATE_INCLUDE_DIR
|
||||
XROOTD_XrdMain_LIBRARY
|
||||
XROOTD_XrdUtils_LIBRARY
|
||||
XROOTD_XrdClient_LIBRARY
|
||||
diff -Nur root-5.32.04.orig/config/Makefile.in root-5.32.04/config/Makefile.in
|
||||
--- root-5.32.04.orig/config/Makefile.in 2012-07-13 15:55:01.000000000 +0200
|
||||
+++ root-5.32.04/config/Makefile.in 2013-03-08 07:23:10.901952610 +0100
|
||||
@@ -251,6 +251,7 @@
|
||||
EXTRA_XRDFLAGS := @extraxrdflags@
|
||||
XRDVERSION := @xrdversion@
|
||||
HASXRDUTILS := @hasxrdutils@
|
||||
+XRDINCPRIVATE := @xrdincprivate@
|
||||
|
||||
SRPLIBDIR := @srplibdir@
|
||||
SRPLIB := @srplib@
|
||||
diff -Nur root-5.32.04.orig/configure root-5.32.04/configure
|
||||
--- root-5.32.04.orig/configure 2012-07-13 15:55:07.000000000 +0200
|
||||
+++ root-5.32.04/configure 2013-03-08 07:23:10.895952570 +0100
|
||||
@@ -4473,9 +4473,16 @@
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
- echo "$xrdver"
|
||||
+ # Protect against 3.3.0, first version with 'include/xrootd/private'
|
||||
+ if [ $decver -eq 300030000 ] ; then
|
||||
+ echo "Cannot build against version $xrdver (missing headers)"
|
||||
+ enable_xrootd="no"
|
||||
+ else
|
||||
+ echo "$xrdver"
|
||||
+ fi
|
||||
fi
|
||||
|
||||
+xrdincprivate="no"
|
||||
if test "x$enable_xrootd" = "xyes" ; then
|
||||
|
||||
extraxrdflags="-DROOTXRDVERS=$decver"
|
||||
@@ -4514,14 +4521,27 @@
|
||||
done
|
||||
|
||||
#
|
||||
+ # Check also if 'include/private' exists: we need to signal this to the build modules
|
||||
+ # for correct location of some headers available form the dlevel packages for version >= 3.3.x
|
||||
+ if test "x$enable_xrootd" = "xyes"; then
|
||||
+ if test -d "$xrdincdir/private"; then
|
||||
+ xrdincprivate="yes"
|
||||
+ fi
|
||||
+ fi
|
||||
+
|
||||
+ #
|
||||
# Check if bonjour is available for code potentially using it ...
|
||||
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
|
||||
@@ -6667,6 +6687,7 @@
|
||||
-e "s|@xpmlibdir@|$xpmlibdir|" \
|
||||
-e "s|@xrdlibdir@|$xrdlibdir|" \
|
||||
-e "s|@xrdincdir@|$xrdincdir|" \
|
||||
+ -e "s|@xrdincprivate@|$xrdincprivate|" \
|
||||
-e "s|@xrdversion@|$decver|" \
|
||||
-e "s|@hasxrdutils@|$hasxrdutils|" \
|
||||
-e "s|@cfitsioincdir@|$cfitsioincdir|" \
|
||||
diff -Nur root-5.32.04.orig/net/netx/CMakeLists.txt root-5.32.04/net/netx/CMakeLists.txt
|
||||
--- root-5.32.04.orig/net/netx/CMakeLists.txt 2012-07-13 15:54:54.000000000 +0200
|
||||
+++ root-5.32.04/net/netx/CMakeLists.txt 2013-03-08 07:23:10.901952610 +0100
|
||||
@@ -6,7 +6,7 @@
|
||||
ROOT_USE_PACKAGE(net/net)
|
||||
ROOT_USE_PACKAGE(proof/proofd)
|
||||
|
||||
-include_directories(${XROOTD_INCLUDE_DIR})
|
||||
+include_directories(${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR})
|
||||
add_definitions(${XROOTD_CFLAGS})
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
diff -Nur root-5.32.04.orig/net/netx/Module.mk root-5.32.04/net/netx/Module.mk
|
||||
--- root-5.32.04.orig/net/netx/Module.mk 2012-07-13 15:54:54.000000000 +0200
|
||||
+++ root-5.32.04/net/netx/Module.mk 2013-03-08 07:23:10.900952603 +0100
|
||||
@@ -55,6 +55,9 @@
|
||||
ifneq ($(EXTRA_XRDFLAGS),)
|
||||
NETXINCEXTRA += -I$(ROOT_SRCDIR)/proof/proofd/inc
|
||||
endif
|
||||
+ifeq ($(XRDINCPRIVATE),yes)
|
||||
+NETXINCEXTRA += -I$(XRDINCDIR)/private
|
||||
+endif
|
||||
|
||||
# Xrootd client libs
|
||||
ifeq ($(PLATFORM),win32)
|
||||
diff -Nur root-5.32.04.orig/net/netx/src/TXNetFile.cxx root-5.32.04/net/netx/src/TXNetFile.cxx
|
||||
--- root-5.32.04.orig/net/netx/src/TXNetFile.cxx 2012-07-13 15:54:54.000000000 +0200
|
||||
+++ root-5.32.04/net/netx/src/TXNetFile.cxx 2013-03-08 07:27:48.977933665 +0100
|
||||
@@ -56,6 +56,7 @@
|
||||
#include "TVirtualPerfStats.h"
|
||||
|
||||
#include <XrdClient/XrdClient.hh>
|
||||
+#include <XrdClient/XrdClientConn.hh>
|
||||
#include <XrdClient/XrdClientConst.hh>
|
||||
#include <XrdClient/XrdClientEnv.hh>
|
||||
#include <XProtocol/XProtocol.hh>
|
||||
diff -Nur root-5.32.04.orig/proof/proofd/CMakeLists.txt root-5.32.04/proof/proofd/CMakeLists.txt
|
||||
--- root-5.32.04.orig/proof/proofd/CMakeLists.txt 2012-07-13 15:54:19.000000000 +0200
|
||||
+++ root-5.32.04/proof/proofd/CMakeLists.txt 2013-03-08 07:23:10.899952597 +0100
|
||||
@@ -7,7 +7,7 @@
|
||||
ROOT_USE_PACKAGE(net/rpdutils)
|
||||
ROOT_USE_PACKAGE(net/auth)
|
||||
|
||||
-include_directories(${XROOTD_INCLUDE_DIR})
|
||||
+include_directories(${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR})
|
||||
add_definitions(${XROOTD_CFLAGS})
|
||||
|
||||
if(WIN32)
|
||||
diff -Nur root-5.32.04.orig/proof/proofd/inc/XpdObject.h root-5.32.04/proof/proofd/inc/XpdObject.h
|
||||
--- root-5.32.04.orig/proof/proofd/inc/XpdObject.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ root-5.32.04/proof/proofd/inc/XpdObject.h 2013-03-08 07:23:10.898952590 +0100
|
||||
@@ -0,0 +1,100 @@
|
||||
+// @(#)root/proofd:$Id$
|
||||
+// Author: Gerardo Ganis Feb 2013
|
||||
+
|
||||
+/*************************************************************************
|
||||
+ * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers. *
|
||||
+ * All rights reserved. *
|
||||
+ * *
|
||||
+ * For the licensing terms see $ROOTSYS/LICENSE. *
|
||||
+ * For the list of contributors see $ROOTSYS/README/CREDITS. *
|
||||
+ *************************************************************************/
|
||||
+
|
||||
+//////////////////////////////////////////////////////////////////////////
|
||||
+// //
|
||||
+// XpdObject //
|
||||
+// //
|
||||
+// Authors: G. Ganis, CERN, 2013 //
|
||||
+// //
|
||||
+// Auxilliary class to stack protocols. //
|
||||
+// Adapted version of XrdObject. //
|
||||
+// //
|
||||
+//////////////////////////////////////////////////////////////////////////
|
||||
+
|
||||
+#ifndef ROOT_XpdObject
|
||||
+#define ROOT_XpdObject
|
||||
+
|
||||
+#include <string.h>
|
||||
+#include <strings.h>
|
||||
+#include <time.h>
|
||||
+#include <sys/types.h>
|
||||
+#include "Xrd/XrdJob.hh"
|
||||
+#include "XrdOuc/XrdOucTrace.hh"
|
||||
+#include "XrdSys/XrdSysPthread.hh"
|
||||
+
|
||||
+class XpdObjectQ;
|
||||
+class XrdProofdProtocol;
|
||||
+class XrdScheduler;
|
||||
+
|
||||
+class XpdObject {
|
||||
+public:
|
||||
+ friend class XpdObjectQ;
|
||||
+
|
||||
+ // Item() supplies the item value associated with itself (used with Next()).
|
||||
+ XrdProofdProtocol *objectItem() { return fItem; }
|
||||
+
|
||||
+ // Next() supplies the next list node.
|
||||
+ XpdObject *nextObject() { return fNext; }
|
||||
+
|
||||
+ // Set the item pointer
|
||||
+ void setItem(XrdProofdProtocol *ival) { fItem = ival; }
|
||||
+
|
||||
+ XpdObject(XrdProofdProtocol *ival=0) { fNext = 0; fItem = ival; fQTime = 0; }
|
||||
+ ~XpdObject() {}
|
||||
+
|
||||
+private:
|
||||
+ XpdObject *fNext;
|
||||
+ XrdProofdProtocol *fItem;
|
||||
+ time_t fQTime; // Only used for time-managed objects
|
||||
+};
|
||||
+
|
||||
+/******************************************************************************/
|
||||
+/* x r d _ O b j e c t Q */
|
||||
+/******************************************************************************/
|
||||
+
|
||||
+// Note to properly cleanup this type of queue you must call Set() at least
|
||||
+// once to cause the time element to be sceduled.
|
||||
+
|
||||
+class XrdOucTrace;
|
||||
+
|
||||
+class XpdObjectQ : public XrdJob {
|
||||
+public:
|
||||
+
|
||||
+ XrdProofdProtocol *Pop();
|
||||
+ void Push(XpdObject *Node);
|
||||
+ void Set(int inQMax, time_t agemax=1800);
|
||||
+ void Set(XrdScheduler *sp, XrdOucTrace *tp, int traceChk = 0)
|
||||
+ {fSched = sp; fTrace = tp; fTraceON = traceChk;}
|
||||
+ void DoIt();
|
||||
+
|
||||
+ XpdObjectQ(const char *id, const char *desc) : XrdJob(desc)
|
||||
+ {fCurage = fCount = 0; fMaxage = 0; fTraceID = id;
|
||||
+ fMaxinQ = 32; fMininQ = 16; fFirst = 0; }
|
||||
+
|
||||
+ ~XpdObjectQ() {}
|
||||
+
|
||||
+private:
|
||||
+
|
||||
+ XrdSysMutex fQMutex;
|
||||
+ XpdObject *fFirst;
|
||||
+ int fCount;
|
||||
+ int fCurage;
|
||||
+ int fMininQ;
|
||||
+ int fMaxinQ;
|
||||
+ time_t fMaxage;
|
||||
+ XrdOucTrace *fTrace;
|
||||
+ XrdScheduler *fSched;
|
||||
+ int fTraceON;
|
||||
+ const char *fTraceID;
|
||||
+};
|
||||
+
|
||||
+#endif
|
||||
diff -Nur root-5.32.04.orig/proof/proofd/inc/XrdProofdProofServMgr.h root-5.32.04/proof/proofd/inc/XrdProofdProofServMgr.h
|
||||
--- root-5.32.04.orig/proof/proofd/inc/XrdProofdProofServMgr.h 2012-07-13 15:54:19.000000000 +0200
|
||||
+++ root-5.32.04/proof/proofd/inc/XrdProofdProofServMgr.h 2013-03-08 07:21:22.170070457 +0100
|
||||
@@ -41,6 +41,9 @@
|
||||
#define PSMMAXCNTS 3
|
||||
#define PSMCNTOK(t) (t >= 0 && t < PSMMAXCNTS)
|
||||
|
||||
+// Security handle
|
||||
+typedef int (*XrdSecCredsSaver_t)(XrdSecCredentials *, const char *fn, const XrdProofUI &ui);
|
||||
+
|
||||
// Aux structure for session set env inputs
|
||||
typedef struct {
|
||||
XrdProofdProofServ *fPS;
|
||||
@@ -158,6 +161,8 @@
|
||||
std::list<XrdProofdProofServ *> fActiveSessions; // List of active sessions (non-idle)
|
||||
std::list<XpdClientSessions *> *fRecoverClients; // List of client potentially recovering
|
||||
|
||||
+ XrdSecCredsSaver_t fCredsSaver; // If defined, function to be used to save the credentials
|
||||
+
|
||||
int DoDirectiveProofServMgr(char *, XrdOucStream *, bool);
|
||||
int DoDirectivePutEnv(char *, XrdOucStream *, bool);
|
||||
int DoDirectivePutRc(char *, XrdOucStream *, bool);
|
||||
@@ -263,8 +268,6 @@
|
||||
|
||||
int SetProofServEnv(XrdProofdProtocol *p, void *in);
|
||||
int SetProofServEnvOld(XrdProofdProtocol *p, void *in);
|
||||
-
|
||||
- int SaveAFSkey(XrdSecCredentials *c, const char *fn, XrdProofUI ui);
|
||||
int SetUserEnvironment(XrdProofdProtocol *p);
|
||||
|
||||
static int SetProofServEnv(XrdProofdManager *m, XrdROOT *r);
|
||||
diff -Nur root-5.32.04.orig/proof/proofd/inc/XrdProofdProtocol.h root-5.32.04/proof/proofd/inc/XrdProofdProtocol.h
|
||||
--- root-5.32.04.orig/proof/proofd/inc/XrdProofdProtocol.h 2012-07-13 15:54:19.000000000 +0200
|
||||
+++ root-5.32.04/proof/proofd/inc/XrdProofdProtocol.h 2013-03-08 07:23:10.898952590 +0100
|
||||
@@ -37,10 +37,10 @@
|
||||
#include "XpdSysPthread.h"
|
||||
|
||||
#include "Xrd/XrdLink.hh"
|
||||
-#include "Xrd/XrdObject.hh"
|
||||
#include "Xrd/XrdProtocol.hh"
|
||||
#include "XrdOuc/XrdOucString.hh"
|
||||
#include "XrdSec/XrdSecInterface.hh"
|
||||
+#include "XpdObject.h"
|
||||
#include "XProofProtocol.h"
|
||||
|
||||
class XrdBuffer;
|
||||
@@ -130,7 +130,7 @@
|
||||
//
|
||||
// Protocol variables
|
||||
|
||||
- XrdObject<XrdProofdProtocol> fProtLink;
|
||||
+ XpdObject fProtLink;
|
||||
XrdBuffer *fArgp;
|
||||
|
||||
XrdLink *fLink;
|
||||
@@ -175,7 +175,7 @@
|
||||
//
|
||||
static bool fgConfigDone;
|
||||
static int fgCount;
|
||||
- static XrdObjectQ<XrdProofdProtocol> fgProtStack;
|
||||
+ static XpdObjectQ fgProtStack;
|
||||
static XrdBuffManager *fgBPool; // Buffer manager
|
||||
static int fgMaxBuffsz; // Maximum buffer size we can have
|
||||
static XrdSysRecMutex fgBMutex; // Buffer management mutex
|
||||
diff -Nur root-5.32.04.orig/proof/proofd/Module.mk root-5.32.04/proof/proofd/Module.mk
|
||||
--- root-5.32.04.orig/proof/proofd/Module.mk 2012-07-13 15:54:19.000000000 +0200
|
||||
+++ root-5.32.04/proof/proofd/Module.mk 2013-03-08 07:23:10.899952597 +0100
|
||||
@@ -127,6 +127,10 @@
|
||||
ifeq ($(HASXRD),yes)
|
||||
XPDINCEXTRA := $(XROOTDDIRI:%=-I%)
|
||||
XPDINCEXTRA += $(PROOFDDIRI:%=-I%)
|
||||
+ifeq ($(XRDINCPRIVATE),yes)
|
||||
+XPDINCEXTRA += -I$(XRDINCDIR)/private
|
||||
+endif
|
||||
+
|
||||
|
||||
ifeq ($(HASXRDUTILS),no)
|
||||
|
||||
diff -Nur root-5.32.04.orig/proof/proofd/src/XpdObject.cxx root-5.32.04/proof/proofd/src/XpdObject.cxx
|
||||
--- root-5.32.04.orig/proof/proofd/src/XpdObject.cxx 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ root-5.32.04/proof/proofd/src/XpdObject.cxx 2013-03-08 07:23:10.896952577 +0100
|
||||
@@ -0,0 +1,125 @@
|
||||
+// @(#)root/proofd:$Id$
|
||||
+// Author: Gerardo Ganis Feb 2013
|
||||
+
|
||||
+/*************************************************************************
|
||||
+ * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers. *
|
||||
+ * All rights reserved. *
|
||||
+ * *
|
||||
+ * For the licensing terms see $ROOTSYS/LICENSE. *
|
||||
+ * For the list of contributors see $ROOTSYS/README/CREDITS. *
|
||||
+ *************************************************************************/
|
||||
+
|
||||
+//////////////////////////////////////////////////////////////////////////
|
||||
+// //
|
||||
+// XpdObject //
|
||||
+// //
|
||||
+// Authors: G. Ganis, CERN, 2013 //
|
||||
+// //
|
||||
+// Auxilliary class to stack protocols. //
|
||||
+// //
|
||||
+//////////////////////////////////////////////////////////////////////////
|
||||
+
|
||||
+#include "XpdObject.h"
|
||||
+#include "XrdProofdAux.h"
|
||||
+#include "XrdProofdProtocol.h"
|
||||
+#include "Xrd/XrdScheduler.hh"
|
||||
+#include "XrdOuc/XrdOucTrace.hh"
|
||||
+
|
||||
+//_______________________________________________________________________
|
||||
+XrdProofdProtocol *XpdObjectQ::Pop()
|
||||
+{
|
||||
+ // Pop up a protocol object
|
||||
+
|
||||
+ XpdObject *node;
|
||||
+ fQMutex.Lock();
|
||||
+ if ((node = fFirst)) {
|
||||
+ fFirst = fFirst->fNext;
|
||||
+ fCount--;
|
||||
+ }
|
||||
+ fQMutex.UnLock();
|
||||
+ if (node) return node->fItem;
|
||||
+ return (XrdProofdProtocol *)0;
|
||||
+}
|
||||
+
|
||||
+//_______________________________________________________________________
|
||||
+void XpdObjectQ::Push(XpdObject *node)
|
||||
+{
|
||||
+ // Push back a protocol
|
||||
+
|
||||
+ node->fQTime = fCurage;
|
||||
+ fQMutex.Lock();
|
||||
+ if (fCount >= fMaxinQ) {
|
||||
+ delete node->fItem;
|
||||
+ } else {
|
||||
+ node->fNext = fFirst;
|
||||
+ fFirst = node;
|
||||
+ fCount++;
|
||||
+ }
|
||||
+ fQMutex.UnLock();
|
||||
+}
|
||||
+
|
||||
+//_______________________________________________________________________
|
||||
+void XpdObjectQ::Set(int inQMax, time_t agemax)
|
||||
+{
|
||||
+ // Lock the data area and set the values
|
||||
+
|
||||
+ fQMutex.Lock();
|
||||
+ fMaxinQ = inQMax; fMaxage = agemax;
|
||||
+ if (!(fMininQ = inQMax/2)) fMininQ = 1;
|
||||
+ fQMutex.UnLock();
|
||||
+
|
||||
+ // Schedule ourselves using the new values
|
||||
+ if (agemax > 0)
|
||||
+ fSched->Schedule((XrdJob *)this, agemax + time(0));
|
||||
+}
|
||||
+
|
||||
+//_______________________________________________________________________
|
||||
+void XpdObjectQ::DoIt()
|
||||
+{
|
||||
+ // Process method
|
||||
+
|
||||
+ XpdObject *pp, *p;
|
||||
+ int oldcnt, agemax;
|
||||
+
|
||||
+ // Lock the anchor and see if we met the threshold for deletion
|
||||
+ //
|
||||
+ fQMutex.Lock();
|
||||
+ agemax = fMaxage;
|
||||
+ if ((oldcnt = fCount) > fMininQ) {
|
||||
+
|
||||
+ // Prepare to scan down the queue.
|
||||
+ if ((pp = fFirst)) {
|
||||
+ p = pp->fNext;
|
||||
+ } else { p = 0; }
|
||||
+
|
||||
+ // Find the first object that's been idle for too long
|
||||
+ while(p && (p->fQTime >= fCurage)) { pp = p; p = p->fNext;}
|
||||
+
|
||||
+ // Now delete half of the idle objects. The object queue element must be
|
||||
+ // part of the actual object being deleted for this to properly work.
|
||||
+ if (pp) {
|
||||
+ while (p) {
|
||||
+ pp->fNext = p->fNext;
|
||||
+ delete p->fItem;
|
||||
+ fCount--;
|
||||
+ p = ((pp = pp->fNext) ? pp->fNext : 0);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // Increase the age and unlock the queue
|
||||
+ fCurage++;
|
||||
+ fQMutex.UnLock();
|
||||
+
|
||||
+ // Trace as needed
|
||||
+ if (fTraceON && fTrace->Tracing(fTraceON))
|
||||
+ {fTrace->Beg(fTraceID);
|
||||
+ cerr <<Comment <<" trim done; " <<fCount <<" of " <<oldcnt <<" kept";
|
||||
+ fTrace->End();
|
||||
+ }
|
||||
+
|
||||
+ // Reschedule ourselves if we must do so
|
||||
+ if (agemax > 0)
|
||||
+ fSched->Schedule((XrdJob *)this, agemax+time(0));
|
||||
+}
|
||||
+
|
||||
diff -Nur root-5.32.04.orig/proof/proofd/src/XrdProofConn.cxx root-5.32.04/proof/proofd/src/XrdProofConn.cxx
|
||||
--- root-5.32.04.orig/proof/proofd/src/XrdProofConn.cxx 2012-07-13 15:54:19.000000000 +0200
|
||||
+++ root-5.32.04/proof/proofd/src/XrdProofConn.cxx 2013-03-08 07:23:10.896952577 +0100
|
||||
@@ -31,7 +31,6 @@
|
||||
|
||||
#include "XrdClient/XrdClientConnMgr.hh"
|
||||
#include "XrdClient/XrdClientConst.hh"
|
||||
-#include "XrdClient/XrdClientDebug.hh"
|
||||
#include "XrdClient/XrdClientEnv.hh"
|
||||
#include "XrdClient/XrdClientLogConnection.hh"
|
||||
#include "XrdClient/XrdClientPhyConnection.hh"
|
||||
@@ -40,6 +39,7 @@
|
||||
#include "XrdOuc/XrdOucErrInfo.hh"
|
||||
#include "XrdOuc/XrdOucString.hh"
|
||||
#include "XrdSec/XrdSecInterface.hh"
|
||||
+#include "XrdSys/XrdSysLogger.hh"
|
||||
#include "XrdSys/XrdSysPlatform.hh"
|
||||
|
||||
// Dynamic libs
|
||||
diff -Nur root-5.32.04.orig/proof/proofd/src/XrdProofdProofServMgr.cxx root-5.32.04/proof/proofd/src/XrdProofdProofServMgr.cxx
|
||||
--- root-5.32.04.orig/proof/proofd/src/XrdProofdProofServMgr.cxx 2012-07-13 15:54:19.000000000 +0200
|
||||
+++ root-5.32.04/proof/proofd/src/XrdProofdProofServMgr.cxx 2013-03-08 07:21:22.173070483 +0100
|
||||
@@ -32,8 +32,7 @@
|
||||
#include "XrdOuc/XrdOucRash.hh"
|
||||
#include "XrdOuc/XrdOucStream.hh"
|
||||
#include "XrdSys/XrdSysPriv.hh"
|
||||
-#include "XrdSut/XrdSutAux.hh"
|
||||
-
|
||||
+#include "XrdSys/XrdSysPlugin.hh"
|
||||
#include "XrdProofdClient.h"
|
||||
#include "XrdProofdClientMgr.h"
|
||||
#include "XrdProofdManager.h"
|
||||
@@ -286,6 +285,8 @@
|
||||
fCurrentSessions = 0;
|
||||
|
||||
fSeqSessionN = 0;
|
||||
+
|
||||
+ fCredsSaver = 0;
|
||||
|
||||
// Defaults can be changed via 'proofservmgr'
|
||||
fCheckFrequency = 30;
|
||||
@@ -3067,26 +3068,20 @@
|
||||
putenv(ev);
|
||||
TRACE(DBG, "XrdSecCREDS set");
|
||||
|
||||
- // If 'pwd', save AFS key, if any
|
||||
- if (!strncmp(p->AuthProt()->Entity.prot, "pwd", 3)) {
|
||||
+ if (fCredsSaver) {
|
||||
XrdOucString credsdir = udir;
|
||||
credsdir += "/.creds";
|
||||
// Make sure the directory exists
|
||||
if (!XrdProofdAux::AssertDir(credsdir.c_str(), p->Client()->UI(), fMgr->ChangeOwn())) {
|
||||
- if (SaveAFSkey(creds, credsdir.c_str(), p->Client()->UI()) == 0) {
|
||||
- ev = new char[strlen("ROOTPROOFAFSCREDS=")+credsdir.length()+strlen("/.afs")+2];
|
||||
- sprintf(ev, "ROOTPROOFAFSCREDS=%s/.afs", credsdir.c_str());
|
||||
- putenv(ev);
|
||||
- fprintf(fenv, "ROOTPROOFAFSCREDS has been set\n");
|
||||
- TRACE(DBG, ev);
|
||||
- } else {
|
||||
- TRACE(DBG, "problems in saving AFS key");
|
||||
+ if ((*fCredsSaver)(creds, credsdir.c_str(), p->Client()->UI()) != 0) {
|
||||
+ TRACE(DBG, "problems in saving authentication creds under "<<credsdir);
|
||||
}
|
||||
} else {
|
||||
TRACE(XERR, "unable to create creds dir: "<<credsdir);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
+ fclose(fenv);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3532,26 +3527,20 @@
|
||||
PutEnv(ev, in->fOld);
|
||||
TRACE(DBG, "XrdSecCREDS set");
|
||||
|
||||
- // If 'pwd', save AFS key, if any
|
||||
- if (!strncmp(p->AuthProt()->Entity.prot, "pwd", 3)) {
|
||||
+ if (fCredsSaver) {
|
||||
XrdOucString credsdir = p->Client()->Sandbox()->Dir();
|
||||
credsdir += "/.creds";
|
||||
// Make sure the directory exists
|
||||
if (!XrdProofdAux::AssertDir(credsdir.c_str(), p->Client()->UI(), fMgr->ChangeOwn())) {
|
||||
- if (SaveAFSkey(creds, credsdir.c_str(), p->Client()->UI()) == 0) {
|
||||
- ev = new char[strlen("ROOTPROOFAFSCREDS=")+credsdir.length()+strlen("/.afs")+2];
|
||||
- sprintf(ev, "ROOTPROOFAFSCREDS=%s/.afs", credsdir.c_str());
|
||||
- fprintf(fenv, "ROOTPROOFAFSCREDS has been set\n");
|
||||
- TRACE(DBG, ev);
|
||||
- PutEnv(ev, in->fOld);
|
||||
- } else {
|
||||
- TRACE(DBG, "problems in saving AFS key");
|
||||
+ if ((*fCredsSaver)(creds, credsdir.c_str(), p->Client()->UI()) != 0) {
|
||||
+ TRACE(DBG, "problems in saving authentication creds under "<<credsdir);
|
||||
}
|
||||
} else {
|
||||
TRACE(XERR, "unable to create creds dir: "<<credsdir);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
+ fclose(fenv);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4514,84 +4503,6 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
-//______________________________________________________________________________
|
||||
-int XrdProofdProofServMgr::SaveAFSkey(XrdSecCredentials *c,
|
||||
- const char *dir, XrdProofUI ui)
|
||||
-{
|
||||
- // Save the AFS key, if any, for usage in proofserv in file 'dir'/.afs .
|
||||
- // Return 0 on success, -1 on error.
|
||||
- XPDLOC(SMGR, "ProofServMgr::SaveAFSkey")
|
||||
-
|
||||
- // Check file name
|
||||
- if (!dir || strlen(dir) <= 0) {
|
||||
- TRACE(XERR, "dir name undefined");
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- // Check credentials
|
||||
- if (!c) {
|
||||
- TRACE(XERR, "credentials undefined");
|
||||
- return -1;
|
||||
- }
|
||||
- TRACE(REQ, "dir: "<<dir);
|
||||
-
|
||||
- // Decode credentials
|
||||
- int lout = 0;
|
||||
- char *out = new char[c->size];
|
||||
- if (XrdSutFromHex(c->buffer, out, lout) != 0) {
|
||||
- TRACE(XERR, "problems unparsing hex string");
|
||||
- delete [] out;
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- // Locate the key
|
||||
- char *key = out + 5;
|
||||
- if (strncmp(key, "afs:", 4)) {
|
||||
- TRACE(DBG, "string does not contain an AFS key");
|
||||
- delete [] out;
|
||||
- return 0;
|
||||
- }
|
||||
- key += 4;
|
||||
-
|
||||
- // Save to file, if not existing already
|
||||
- XrdOucString fn = dir;
|
||||
- fn += "/.afs";
|
||||
-
|
||||
- int rc = 0;
|
||||
- struct stat st;
|
||||
- if (stat(fn.c_str(), &st) != 0 && errno == ENOENT) {
|
||||
-
|
||||
- // Open the file, truncating if already existing
|
||||
- int fd = open(fn.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0600);
|
||||
- if (fd <= 0) {
|
||||
- TRACE(XERR, "problems creating file - errno: " << errno);
|
||||
- delete [] out;
|
||||
- return -1;
|
||||
- }
|
||||
- // Write out the key
|
||||
- int lkey = lout - 9;
|
||||
- if (XrdProofdAux::Write(fd, key, lkey) != lkey) {
|
||||
- TRACE(XERR, "problems writing to file - errno: " << errno);
|
||||
- rc = -1;
|
||||
- }
|
||||
-
|
||||
- // Cleanup
|
||||
- delete [] out;
|
||||
- close(fd);
|
||||
- } else {
|
||||
- TRACE(XERR, "cannot stat existing file "<<fn<<" - errno: " << errno);
|
||||
- delete [] out;
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- // Make sure the file is owned by the user
|
||||
- if (XrdProofdAux::ChangeOwn(fn.c_str(), ui) != 0) {
|
||||
- TRACE(XERR, "can't change ownership of "<<fn);
|
||||
- }
|
||||
-
|
||||
- return rc;
|
||||
-}
|
||||
-
|
||||
//__________________________________________________________________________
|
||||
XrdProofdProofServ *XrdProofdProofServMgr::GetActiveSession(int pid)
|
||||
{
|
||||
diff -Nur root-5.32.04.orig/proof/proofd/src/XrdProofdProtocol.cxx root-5.32.04/proof/proofd/src/XrdProofdProtocol.cxx
|
||||
--- root-5.32.04.orig/proof/proofd/src/XrdProofdProtocol.cxx 2012-07-13 15:54:19.000000000 +0200
|
||||
+++ root-5.32.04/proof/proofd/src/XrdProofdProtocol.cxx 2013-03-08 07:23:10.897952583 +0100
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
#include "XrdVersion.hh"
|
||||
#include "Xrd/XrdBuffer.hh"
|
||||
+#include "Xrd/XrdScheduler.hh"
|
||||
|
||||
#include "XrdProofdClient.h"
|
||||
#include "XrdProofdClientMgr.h"
|
||||
@@ -54,8 +55,7 @@
|
||||
//
|
||||
// Static area: general protocol managing section
|
||||
int XrdProofdProtocol::fgCount = 0;
|
||||
-XrdObjectQ<XrdProofdProtocol>
|
||||
- XrdProofdProtocol::fgProtStack("ProtStack",
|
||||
+XpdObjectQ XrdProofdProtocol::fgProtStack("ProtStack",
|
||||
"xproofd protocol anchor");
|
||||
XrdSysRecMutex XrdProofdProtocol::fgBMutex; // Buffer management mutex
|
||||
XrdBuffManager *XrdProofdProtocol::fgBPool = 0;
|
||||
@@ -542,8 +542,12 @@
|
||||
// Schedule protocol object cleanup; the maximum number of objects
|
||||
// and the max age are taken from XrdXrootdProtocol: this may need
|
||||
// some optimization in the future.
|
||||
+#if 1
|
||||
fgProtStack.Set(pi->Sched, XrdProofdTrace, TRACE_MEM);
|
||||
fgProtStack.Set((pi->ConnMax/3 ? pi->ConnMax/3 : 30), 60*60);
|
||||
+#else
|
||||
+ fgProtStack.Set(pi->Sched, 3600);
|
||||
+#endif
|
||||
|
||||
// Default tracing options: always trace logins and errors for all
|
||||
// domains; if the '-d' option was specified on the command line then
|
||||
@@ -790,6 +794,13 @@
|
||||
|
||||
// Push ourselves on the stack
|
||||
fgProtStack.Push(&fProtLink);
|
||||
+#if 0
|
||||
+ if(fgProtStack.Push(&fProtLink) != 0) {
|
||||
+ XrdProofdProtocol *xp = fProtLink.objectItem();
|
||||
+ fProtLink.setItem(0);
|
||||
+ delete xp;
|
||||
+ }
|
||||
+#endif
|
||||
}
|
||||
|
||||
//______________________________________________________________________________
|
||||
diff -Nur root-5.32.04.orig/proof/proofx/CMakeLists.txt root-5.32.04/proof/proofx/CMakeLists.txt
|
||||
--- root-5.32.04.orig/proof/proofx/CMakeLists.txt 2012-07-13 15:54:19.000000000 +0200
|
||||
+++ root-5.32.04/proof/proofx/CMakeLists.txt 2013-03-08 07:23:10.900952603 +0100
|
||||
@@ -16,7 +16,7 @@
|
||||
file(GLOB sources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cxx)
|
||||
endif()
|
||||
|
||||
-include_directories(${XROOTD_INCLUDE_DIR})
|
||||
+include_directories(${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR})
|
||||
link_directories(${XROOTD_LIBRARY_DIR})
|
||||
add_definitions(${XROOTD_CFLAGS})
|
||||
|
||||
diff -Nur root-5.32.04.orig/proof/proofx/Module.mk root-5.32.04/proof/proofx/Module.mk
|
||||
--- root-5.32.04.orig/proof/proofx/Module.mk 2012-07-13 15:54:19.000000000 +0200
|
||||
+++ root-5.32.04/proof/proofx/Module.mk 2013-03-08 07:23:10.899952597 +0100
|
||||
@@ -63,6 +63,9 @@
|
||||
PROOFXINCEXTRA := $(PROOFXDIRI:%=-I%)
|
||||
PROOFXINCEXTRA += $(XROOTDDIRI:%=-I%)
|
||||
PROOFXINCEXTRA += $(PROOFDDIRI:%=-I%)
|
||||
+ifeq ($(XRDINCPRIVATE),yes)
|
||||
+PROOFXINCEXTRA += -I$(XRDINCDIR)/private
|
||||
+endif
|
||||
|
||||
# Xrootd client libs
|
||||
ifeq ($(PLATFORM),win32)
|
||||
11
root.desktop
11
root.desktop
|
|
@ -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
BIN
root.png
Binary file not shown.
|
Before Width: | Height: | Size: 3.4 KiB |
15
root.xml
15
root.xml
|
|
@ -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
BIN
rootdrawing-logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
4
sources
4
sources
|
|
@ -1,3 +1 @@
|
|||
SHA512 (root-6.40.04.tar.xz) = 674ea3de3f58d3bde15637925bec80984552cb5c4f6259ec68c2f7dc566014d9a3b2ee005e0f89b5cf20d9e5188dc5c9185d886a6701e315bb4771b068939282
|
||||
SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670
|
||||
SHA512 (clad-2.3.tar.gz) = 2d7e008ad88dd9e4b44d73e3187f8b1883e475845f5ac2d3b2c8e728508422e1e60e279940fefe322995751490f61f7d4768498c3660f9afa1206cc0e83bea33
|
||||
a7ab4544dc165a28a7a95f8eef1ae3d8 root-5.32.04.tar.gz
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue