Architecture specific change in rpms/rust-vcsgraph.git
by githook-noreply@fedoraproject.org
The package rpms/rust-vcsgraph.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-vcsgraph.git/commit/?id=7c06....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit 7c061196acb00a2bf8b3d40e07aa9dc1e32ae89d
Author: Aleksei Bavshin <alebastr(a)fedoraproject.org>
Date: Mon Apr 4 22:35:10 2022 -0700
Initial import (#2064155)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1e13678
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.crate
+*.src.rpm
+results_*/
diff --git a/rust-vcsgraph.spec b/rust-vcsgraph.spec
new file mode 100644
index 0000000..b6cd6aa
--- /dev/null
+++ b/rust-vcsgraph.spec
@@ -0,0 +1,108 @@
+# Generated by rust2rpm 21
+# Generated with `rust2rpm -a --all-features vcsgraph` to enable optional
+# `cli` feature with binary files.
+# This is required because of https://pagure.io/fedora-rust/rust2rpm/issue/110
+%bcond_without check
+
+%global crate vcsgraph
+
+Name: rust-%{crate}
+Version: 0.2.0
+Release: %autorelease
+Summary: Library to perform various computation of a version control graph
+
+# Upstream license specification: GPL-2.0-or-later
+License: GPLv2+
+URL: https://crates.io/crates/vcsgraph
+Source: %{crates_source}
+
+ExclusiveArch: %{rust_arches}
+
+BuildRequires: rust-packaging >= 21
+
+%global _description %{expand:
+Library to perform various computation of a version control graph.}
+
+%description %{_description}
+
+%package -n %{crate}
+Summary: %{summary}
+
+%description -n %{crate} %{_description}
+
+%files -n %{crate}
+# Missing license file: https://foss.heptapod.net/mercurial/vcsgraph/-/issues/16
+%doc README.md
+%{_bindir}/analytics
+%{_bindir}/testing
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "%{crate}" crate.
+
+%files devel
+# Missing license file: https://foss.heptapod.net/mercurial/vcsgraph/-/issues/16
+%doc %{crate_instdir}/README.md
+%{crate_instdir}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "default" feature of the "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%package -n %{name}+cli-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+cli-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "cli" feature of the "%{crate}" crate.
+
+%files -n %{name}+cli-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%package -n %{name}+structopt-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+structopt-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "structopt" feature of the "%{crate}" crate.
+
+%files -n %{name}+structopt-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+%generate_buildrequires
+%cargo_generate_buildrequires -a
+
+%build
+%cargo_build -a
+
+%install
+%cargo_install -a
+
+%if %{with check}
+%check
+%cargo_test -a
+%endif
+
+%changelog
+%autochangelog
diff --git a/sources b/sources
new file mode 100644
index 0000000..09222a8
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (vcsgraph-0.2.0.crate) = af91f8537f48153d9e472f43f59ec9c7c7d5874cc46dd5339f8717f2bebe1f483fcc118ba0ede84fd7cd613484754f6f8d2ec888fe4ffc477c93247364d9f534
2 years
Architecture specific change in rpms/rust-twox-hash.git
by githook-noreply@fedoraproject.org
The package rpms/rust-twox-hash.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-twox-hash.git/commit/?id=bf4....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit bf4854ec5d51b3e842a1f5284c5c6cf4b02e5248
Author: Aleksei Bavshin <alebastr(a)fedoraproject.org>
Date: Mon Apr 4 22:35:09 2022 -0700
Initial import (#2064142)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1e13678
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.crate
+*.src.rpm
+results_*/
diff --git a/.rust2rpm.conf b/.rust2rpm.conf
new file mode 100644
index 0000000..63f94c6
--- /dev/null
+++ b/.rust2rpm.conf
@@ -0,0 +1,4 @@
+[fedora]
+# The compat package for `digest` = 0.8 is not available in Fedora
+unwanted-features =
+ digest
diff --git a/rust-twox-hash.spec b/rust-twox-hash.spec
new file mode 100644
index 0000000..f7b524e
--- /dev/null
+++ b/rust-twox-hash.spec
@@ -0,0 +1,155 @@
+# Generated by rust2rpm 21
+%bcond_without check
+
+%global crate twox-hash
+
+Name: rust-%{crate}
+Version: 1.6.2
+Release: %autorelease
+Summary: Rust implementation of the XXHash and XXH3 algorithms
+
+# Upstream license specification: MIT
+License: MIT
+URL: https://crates.io/crates/twox-hash
+Source: %{crates_source}
+# Address test failures on non-x86 platforms
+Patch0: https://github.com/shepmaster/twox-hash/pull/86.patch#/twox-hash-1.6.2-Su...
+Patch1: https://github.com/shepmaster/twox-hash/pull/87.patch#/twox-hash-1.6.2-Fi...
+
+ExclusiveArch: %{rust_arches}
+
+BuildRequires: rust-packaging >= 21
+
+%global _description %{expand:
+Rust implementation of the XXHash and XXH3 algorithms.}
+
+%description %{_description}
+
+%package -n %{crate}
+Summary: %{summary}
+
+%description -n %{crate} %{_description}
+
+%files -n %{crate}
+%license LICENSE.txt
+%doc README.md
+%{_bindir}/hash_file
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "%{crate}" crate.
+
+%files devel
+%license %{crate_instdir}/LICENSE.txt
+%doc %{crate_instdir}/README.md
+%{crate_instdir}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "default" feature of the "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%package -n %{name}+digest_0_10-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+digest_0_10-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "digest_0_10" feature of the "%{crate}" crate.
+
+%files -n %{name}+digest_0_10-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%package -n %{name}+digest_0_9-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+digest_0_9-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "digest_0_9" feature of the "%{crate}" crate.
+
+%files -n %{name}+digest_0_9-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%package -n %{name}+rand-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+rand-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "rand" feature of the "%{crate}" crate.
+
+%files -n %{name}+rand-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%package -n %{name}+serde-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+serde-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "serde" feature of the "%{crate}" crate.
+
+%files -n %{name}+serde-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%package -n %{name}+serialize-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+serialize-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "serialize" feature of the "%{crate}" crate.
+
+%files -n %{name}+serialize-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%package -n %{name}+std-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+std-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "std" feature of the "%{crate}" crate.
+
+%files -n %{name}+std-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%changelog
+%autochangelog
diff --git a/sources b/sources
new file mode 100644
index 0000000..49ccf14
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (twox-hash-1.6.2.crate) = 8171cf6970f18143cf2bd186014fe5a72d3ec5b2cd1e718b45dbc94e5cb6bea1b2485a6f6332d52411ffb85d746266c408b3b3dbd6c7c18a98cc0dc953cc21b1
diff --git a/twox-hash-1.6.2-Fix-XXH3-generic-fallback.patch b/twox-hash-1.6.2-Fix-XXH3-generic-fallback.patch
new file mode 100644
index 0000000..0251569
--- /dev/null
+++ b/twox-hash-1.6.2-Fix-XXH3-generic-fallback.patch
@@ -0,0 +1,26 @@
+From f085fe2e12321dcb5ecbb145ffde5c9c6fccd4aa Mon Sep 17 00:00:00 2001
+From: Ulrich Weigand <ulrich.weigand(a)de.ibm.com>
+Date: Fri, 4 Mar 2022 15:06:31 +0100
+Subject: [PATCH] Fix XXH3 generic fallback
+
+The generic fallback code used on non-Intel platforms seems to
+have a bug that makes the computed hashes different from the
+SSE and AVX code pathes (and the test cases). This patch makes
+the generic path also pass the tests.
+---
+ src/xxh3.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/xxh3.rs b/src/xxh3.rs
+index b793a521a..0ffc54189 100644
+--- a/src/xxh3.rs
++++ b/src/xxh3.rs
+@@ -754,7 +754,7 @@ mod generic {
+ let data_key1 = key1 ^ in1;
+ let data_key2 = key2 ^ in2;
+ acc[i] = acc[i].wrapping_add(mul32_to64(data_key1, data_key1 >> 32));
+- acc[i + 1] = acc[i].wrapping_add(mul32_to64(data_key2, data_key2 >> 32));
++ acc[i + 1] = acc[i + 1].wrapping_add(mul32_to64(data_key2, data_key2 >> 32));
+
+ if acc_width == AccWidth::Acc128Bits {
+ acc[i] = acc[i].wrapping_add(in2);
diff --git a/twox-hash-1.6.2-Support-big-endian-platforms.patch b/twox-hash-1.6.2-Support-big-endian-platforms.patch
new file mode 100644
index 0000000..8bf4138
--- /dev/null
+++ b/twox-hash-1.6.2-Support-big-endian-platforms.patch
@@ -0,0 +1,78 @@
+From 2fac078713ad979b8a56fcb5ccf5725d474c4325 Mon Sep 17 00:00:00 2001
+From: Ulrich Weigand <ulrich.weigand(a)de.ibm.com>
+Date: Fri, 4 Mar 2022 15:01:20 +0100
+Subject: [PATCH] Support big-endian platforms
+
+When using the UnalignedBuffer mechanism to operate on
+multiple input bytes at once, the resulting u32 or u64
+needs to be byte-swapped on big-endian platforms.
+---
+ src/sixty_four.rs | 12 ++++++------
+ src/thirty_two.rs | 10 +++++-----
+ 2 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/src/sixty_four.rs b/src/sixty_four.rs
+index 9bd351c15..c15158693 100644
+--- a/src/sixty_four.rs
++++ b/src/sixty_four.rs
+@@ -65,10 +65,10 @@ impl XxCore {
+ let mut v4 = self.v4;
+
+ for [n1, n2, n3, n4] in values {
+- v1 = ingest_one_number(v1, n1);
+- v2 = ingest_one_number(v2, n2);
+- v3 = ingest_one_number(v3, n3);
+- v4 = ingest_one_number(v4, n4);
++ v1 = ingest_one_number(v1, n1.to_le());
++ v2 = ingest_one_number(v2, n2.to_le());
++ v3 = ingest_one_number(v3, n3.to_le());
++ v4 = ingest_one_number(v4, n4.to_le());
+ }
+
+ self.v1 = v1;
+@@ -221,7 +221,7 @@ impl XxHash64 {
+
+ let mut buffered_u64s = UnalignedBuffer::<u64>::new(self.buffer.data());
+ for buffered_u64 in &mut buffered_u64s {
+- let mut k1 = buffered_u64.wrapping_mul(PRIME_2);
++ let mut k1 = buffered_u64.to_le().wrapping_mul(PRIME_2);
+ k1 = k1.rotate_left(31);
+ k1 = k1.wrapping_mul(PRIME_1);
+ hash ^= k1;
+@@ -232,7 +232,7 @@ impl XxHash64 {
+
+ let mut buffered_u32s = UnalignedBuffer::<u32>::new(buffered_u64s.remaining());
+ for buffered_u32 in &mut buffered_u32s {
+- let k1 = u64::from(buffered_u32).wrapping_mul(PRIME_1);
++ let k1 = u64::from(buffered_u32.to_le()).wrapping_mul(PRIME_1);
+ hash ^= k1;
+ hash = hash.rotate_left(23);
+ hash = hash.wrapping_mul(PRIME_2);
+diff --git a/src/thirty_two.rs b/src/thirty_two.rs
+index 86b2b1957..cfa44cdbc 100644
+--- a/src/thirty_two.rs
++++ b/src/thirty_two.rs
+@@ -70,10 +70,10 @@ impl XxCore {
+ let mut v4 = self.v4;
+
+ for [n1, n2, n3, n4] in values {
+- v1 = ingest_one_number(v1, n1);
+- v2 = ingest_one_number(v2, n2);
+- v3 = ingest_one_number(v3, n3);
+- v4 = ingest_one_number(v4, n4);
++ v1 = ingest_one_number(v1, n1.to_le());
++ v2 = ingest_one_number(v2, n2.to_le());
++ v3 = ingest_one_number(v3, n3.to_le());
++ v4 = ingest_one_number(v4, n4.to_le());
+ }
+
+ self.v1 = v1;
+@@ -211,7 +211,7 @@ impl XxHash32 {
+
+ let mut buffered_u32s = UnalignedBuffer::<u32>::new(self.buffer.data());
+ for buffered_u32 in &mut buffered_u32s {
+- let k1 = buffered_u32.wrapping_mul(PRIME_3);
++ let k1 = buffered_u32.to_le().wrapping_mul(PRIME_3);
+ hash = hash.wrapping_add(k1);
+ hash = hash.rotate_left(17);
+ hash = hash.wrapping_mul(PRIME_4);
2 years
Architecture specific change in rpms/rust-micro-timer.git
by githook-noreply@fedoraproject.org
The package rpms/rust-micro-timer.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-micro-timer.git/commit/?id=3....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit 3d987abdcfd4f537430eb2b27e23e3966d36800c
Author: Aleksei Bavshin <alebastr(a)fedoraproject.org>
Date: Mon Apr 4 22:35:08 2022 -0700
Initial import (#2064141)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1e13678
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.crate
+*.src.rpm
+results_*/
diff --git a/rust-micro-timer.spec b/rust-micro-timer.spec
new file mode 100644
index 0000000..4c3d334
--- /dev/null
+++ b/rust-micro-timer.spec
@@ -0,0 +1,74 @@
+# Generated by rust2rpm 21
+%bcond_without check
+%global debug_package %{nil}
+
+%global crate micro-timer
+
+Name: rust-%{crate}
+Version: 0.4.0
+Release: %autorelease
+Summary: Dumb tiny logging timer
+
+# Upstream license specification: None
+# Upstream license file: MIT
+License: MIT
+
+URL: https://crates.io/crates/micro-timer
+Source: %{crates_source}
+
+ExclusiveArch: %{rust_arches}
+
+BuildRequires: rust-packaging >= 21
+
+%global _description %{expand:
+Dumb tiny logging timer.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "%{crate}" crate.
+
+%files devel
+%license %{crate_instdir}/LICENCE
+%doc %{crate_instdir}/CHANGELOG.md
+%doc %{crate_instdir}/README.md
+%{crate_instdir}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "default" feature of the "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%changelog
+%autochangelog
diff --git a/sources b/sources
new file mode 100644
index 0000000..925de04
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (micro-timer-0.4.0.crate) = 33f1b5c65d9fb293fd86d52509687b7f9adb7af6bdcb3904f24740a9ad58ba9b30987d2a63fc19afcd6a55467f294ab098401f53bafafbd15c48b30d87232585
2 years
Architecture specific change in rpms/rust-micro-timer-macros.git
by githook-noreply@fedoraproject.org
The package rpms/rust-micro-timer-macros.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-micro-timer-macros.git/commi....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit 92df81643dbb2d62ee1e69f13fbbb51cd111a70e
Author: Aleksei Bavshin <alebastr(a)fedoraproject.org>
Date: Mon Apr 4 22:35:07 2022 -0700
Initial import (#2064140)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1e13678
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.crate
+*.src.rpm
+results_*/
diff --git a/rust-micro-timer-macros.spec b/rust-micro-timer-macros.spec
new file mode 100644
index 0000000..2ab2cd6
--- /dev/null
+++ b/rust-micro-timer-macros.spec
@@ -0,0 +1,73 @@
+# Generated by rust2rpm 21
+%bcond_without check
+%global debug_package %{nil}
+
+%global crate micro-timer-macros
+
+Name: rust-%{crate}
+Version: 0.4.0
+Release: %autorelease
+Summary: Macros for the micro-timer crate
+
+# Upstream license specification: None
+# Upstream license file: MIT
+License: MIT
+
+URL: https://crates.io/crates/micro-timer-macros
+Source: %{crates_source}
+
+ExclusiveArch: %{rust_arches}
+
+BuildRequires: rust-packaging >= 21
+
+%global _description %{expand:
+Macros for the micro-timer crate.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "%{crate}" crate.
+
+%files devel
+%license %{crate_instdir}/LICENCE
+%doc %{crate_instdir}/README.md
+%{crate_instdir}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "default" feature of the "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%changelog
+%autochangelog
diff --git a/sources b/sources
new file mode 100644
index 0000000..8bdcd99
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (micro-timer-macros-0.4.0.crate) = e1f141a0d331078be270cb9ad623348c39e18d355b32822f5285f29e325f1cc5d07d8833c130f03a43783590ccc4076d950d96b10468999f4285bcb521e194d0
2 years
Architecture specific change in rpms/rust-format-bytes.git
by githook-noreply@fedoraproject.org
The package rpms/rust-format-bytes.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-format-bytes.git/commit/?id=....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit b803e6315383712430c80fa8279223b0e29ef484
Author: Aleksei Bavshin <alebastr(a)fedoraproject.org>
Date: Mon Apr 4 22:35:06 2022 -0700
Initial import (#2064137)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1e13678
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.crate
+*.src.rpm
+results_*/
diff --git a/rust-format-bytes.spec b/rust-format-bytes.spec
new file mode 100644
index 0000000..d17d163
--- /dev/null
+++ b/rust-format-bytes.spec
@@ -0,0 +1,75 @@
+# Generated by rust2rpm 21
+%bcond_without check
+%global debug_package %{nil}
+
+%global crate format-bytes
+
+Name: rust-%{crate}
+Version: 0.3.0
+Release: %autorelease
+Summary: Macro to format bytestrings
+
+# Upstream license specification: None
+# Upstream license file: MIT
+License: MIT
+
+URL: https://crates.io/crates/format-bytes
+Source: %{crates_source}
+
+ExclusiveArch: %{rust_arches}
+
+BuildRequires: rust-packaging >= 21
+
+%global _description %{expand:
+Macro to format bytestrings.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "%{crate}" crate.
+
+%files devel
+%license %{crate_instdir}/LICENCE
+%doc %{crate_instdir}/README.md
+%{crate_instdir}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "default" feature of the "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+%if %{with check}
+%check
+# the tests were generated with a different rust compiler version
+export TRYBUILD=overwrite
+%cargo_test
+%endif
+
+%changelog
+%autochangelog
diff --git a/sources b/sources
new file mode 100644
index 0000000..6c155b6
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (format-bytes-0.3.0.crate) = e128da40c9bff56e3fd92174407faa5161d46cbcbff5ab62b5222239b3b174ca92009285db13c85816d5fd61640a89d56232e9a9310da43778ed0cd75df3d613
2 years
Architecture specific change in rpms/rust-format-bytes-macros.git
by githook-noreply@fedoraproject.org
The package rpms/rust-format-bytes-macros.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-format-bytes-macros.git/comm....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit fc63fe10dba85c5a244da1246851caec39892883
Author: Aleksei Bavshin <alebastr(a)fedoraproject.org>
Date: Mon Apr 4 22:35:06 2022 -0700
Initial import (#2064136)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1e13678
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.crate
+*.src.rpm
+results_*/
diff --git a/rust-format-bytes-macros.spec b/rust-format-bytes-macros.spec
new file mode 100644
index 0000000..c821ea9
--- /dev/null
+++ b/rust-format-bytes-macros.spec
@@ -0,0 +1,73 @@
+# Generated by rust2rpm 21
+%bcond_without check
+%global debug_package %{nil}
+
+%global crate format-bytes-macros
+
+Name: rust-%{crate}
+Version: 0.4.0
+Release: %autorelease
+Summary: Macros for the format-bytes crate
+
+# Upstream license specification: None
+# Upstream license file: MIT
+License: MIT
+
+URL: https://crates.io/crates/format-bytes-macros
+Source: %{crates_source}
+
+ExclusiveArch: %{rust_arches}
+
+BuildRequires: rust-packaging >= 21
+
+%global _description %{expand:
+Macros for the format-bytes crate.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "%{crate}" crate.
+
+%files devel
+%license %{crate_instdir}/LICENCE
+%doc %{crate_instdir}/README.md
+%{crate_instdir}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "default" feature of the "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%changelog
+%autochangelog
diff --git a/sources b/sources
new file mode 100644
index 0000000..2dbc596
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (format-bytes-macros-0.4.0.crate) = 5f95fc8c7589e8edacea8244742afbcf34a15c7f397d33c127ca02eb08e88599d66d1ecf7e5aef429dec44836233897d3cbe7cf56debf5f9867b179bc657efec
2 years
Architecture specific change in rpms/rust-bytes-cast.git
by githook-noreply@fedoraproject.org
The package rpms/rust-bytes-cast.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-bytes-cast.git/commit/?id=e3....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit e3c06ea0ef22f378f9dac2a999485dc17e284a1d
Author: Aleksei Bavshin <alebastr(a)fedoraproject.org>
Date: Mon Apr 4 22:35:05 2022 -0700
Initial import (#2064133)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1e13678
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.crate
+*.src.rpm
+results_*/
diff --git a/rust-bytes-cast.spec b/rust-bytes-cast.spec
new file mode 100644
index 0000000..68225a7
--- /dev/null
+++ b/rust-bytes-cast.spec
@@ -0,0 +1,74 @@
+# Generated by rust2rpm 21
+%bcond_without check
+%global debug_package %{nil}
+
+%global crate bytes-cast
+
+Name: rust-%{crate}
+Version: 0.2.0
+Release: %autorelease
+Summary: Safely re-interpreting &[u8] bytes as custom structs without copying, for efficiently reading structured binary data
+
+# Upstream license specification: Zlib OR Apache-2.0 OR MIT
+License: zlib or ASL 2.0 or MIT
+URL: https://crates.io/crates/bytes-cast
+Source: %{crates_source}
+
+ExclusiveArch: %{rust_arches}
+
+BuildRequires: rust-packaging >= 21
+
+%global _description %{expand:
+Safely re-interpreting &[u8] bytes as custom structs without copying, for
+efficiently reading structured binary data.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "%{crate}" crate.
+
+%files devel
+%license %{crate_instdir}/LICENSE-APACHE
+%license %{crate_instdir}/LICENSE-MIT
+%license %{crate_instdir}/LICENSE-ZLIB
+%doc %{crate_instdir}/README.md
+%{crate_instdir}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "default" feature of the "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%changelog
+%autochangelog
diff --git a/sources b/sources
new file mode 100644
index 0000000..d78dc20
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (bytes-cast-0.2.0.crate) = 70de77e9e8f33efe58d6883541b8762c0cbdfe6e401ed738104184fccc49cf2ec1d924f68123edaccc2b29c618eea245cdaad646498a41010044ebbec15bc186
2 years
Architecture specific change in rpms/rust-bytes-cast-derive.git
by githook-noreply@fedoraproject.org
The package rpms/rust-bytes-cast-derive.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-bytes-cast-derive.git/commit....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit 316da1e2fa8d7cbad0eb63e707ef254e3f7a9f74
Author: Aleksei Bavshin <alebastr(a)fedoraproject.org>
Date: Mon Apr 4 22:35:04 2022 -0700
Initial import (#2064132)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1e13678
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.crate
+*.src.rpm
+results_*/
diff --git a/rust-bytes-cast-derive.spec b/rust-bytes-cast-derive.spec
new file mode 100644
index 0000000..0bc2322
--- /dev/null
+++ b/rust-bytes-cast-derive.spec
@@ -0,0 +1,75 @@
+# Generated by rust2rpm 21
+%bcond_without check
+%global debug_package %{nil}
+
+%global crate bytes-cast-derive
+
+Name: rust-%{crate}
+Version: 0.1.1
+Release: %autorelease
+Summary: Safely re-interpreting &[u8] bytes as custom structs without copying, for efficiently reading structured binary data
+
+# Upstream license specification: Zlib OR Apache-2.0 OR MIT
+License: zlib or ASL 2.0 or MIT
+URL: https://crates.io/crates/bytes-cast-derive
+Source: %{crates_source}
+
+ExclusiveArch: %{rust_arches}
+
+BuildRequires: rust-packaging >= 21
+
+%global _description %{expand:
+Safely re-interpreting &[u8] bytes as custom structs without copying, for
+efficiently reading structured binary data. Procedural macro for compile-time
+soundness checking.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "%{crate}" crate.
+
+%files devel
+%license %{crate_instdir}/LICENSE-APACHE
+%license %{crate_instdir}/LICENSE-MIT
+%license %{crate_instdir}/LICENSE-ZLIB
+%doc %{crate_instdir}/README.md
+%{crate_instdir}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "default" feature of the "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%changelog
+%autochangelog
diff --git a/sources b/sources
new file mode 100644
index 0000000..02def68
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (bytes-cast-derive-0.1.1.crate) = c52c3366345b70c88f6298968fafc64750e9c5adb56510e6f5998d8476cfbcd5d56eef95241846f54e2ec1c1f2284bc223f7c913d002da323e9ff94e2f3f9e5c
2 years
Architecture specific change in rpms/root.git
by githook-noreply@fedoraproject.org
The package rpms/root.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/root.git/commit/?id=2f8e3d96d1a2b....
Change:
-%ifarch %{qt5_qtwebengine_arches}
Thanks.
Full change:
============
commit 2f8e3d96d1a2bbe2f9cd8a9a87d4ab147df9e60b
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Tue Apr 5 14:39:21 2022 +0200
Update to 6.24.04
New subpackages: root-roofit-common, root-roofit-dataframe-helpers,
root-roofit-hs3, root-tmva-sofie and root-tmva-sofie-parser
Removed subpackages: root-memstat and root-montecarlo-vmc
Drop the doxygen generated root-doc package (doxygen runs out of memory)
Dropped patches: 17
New patches: 22
Updated patches: 5
diff --git a/root-32bit-dataframe.patch b/root-32bit-dataframe.patch
index f9ff85f..89e3c95 100644
--- a/root-32bit-dataframe.patch
+++ b/root-32bit-dataframe.patch
@@ -1,21 +1,24 @@
-diff -ur root-6.24.02.orig/bindings/pyroot_legacy/ROOT.py root-6.24.02/bindings/pyroot_legacy/ROOT.py
---- root-6.24.02.orig/bindings/pyroot_legacy/ROOT.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/bindings/pyroot_legacy/ROOT.py 2021-08-11 10:44:16.895804556 +0200
-@@ -438,9 +438,7 @@
- # This function is injected as method to the respective classes in Pythonize.cxx.
- _root._RDataFrameAsNumpy = _RDataFrameAsNumpy
-
--# This Pythonisation is there only for 64 bits builds
--if (sys.maxsize > 2**32): # https://docs.python.org/3/library/platform.html#cross-platform
-- _root.CreateScopeProxy( "TTree" ).AsMatrix = _TTreeAsMatrix
-+_root.CreateScopeProxy( "TTree" ).AsMatrix = _TTreeAsMatrix
-
-
- ### RINT command emulation ------------------------------------------------------
-diff -ur root-6.24.02.orig/build/unix/makepchinput.py root-6.24.02/build/unix/makepchinput.py
---- root-6.24.02.orig/build/unix/makepchinput.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/build/unix/makepchinput.py 2021-08-11 10:44:16.926804638 +0200
-@@ -252,9 +252,6 @@
+From 686d5011df607fde2a42c729d6bd446486163784 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Fri, 13 Mar 2020 16:20:17 +0100
+Subject: [PATCH] Restore 32-bit dataframe
+
+---
+ build/unix/makepchinput.py | 3 ---
+ cmake/modules/RootBuildOptions.cmake | 5 -----
+ tree/dataframe/test/dataframe_cache.cxx | 4 ----
+ tree/dataframe/test/datasource_arrow.cxx | 4 ----
+ tree/dataframe/test/datasource_csv.cxx | 4 ----
+ tree/dataframe/test/datasource_root.cxx | 4 ----
+ tree/dataframe/test/datasource_trivial.cxx | 4 ----
+ tutorials/CMakeLists.txt | 5 -----
+ 8 files changed, 33 deletions(-)
+
+diff --git a/build/unix/makepchinput.py b/build/unix/makepchinput.py
+index 1adff487de..eec73f946d 100755
+--- a/build/unix/makepchinput.py
++++ b/build/unix/makepchinput.py
+@@ -252,9 +252,6 @@ def isDirForPCH(dirName, legacyPyROOT):
"math/vdt",
"tmva/rmva"]
@@ -25,10 +28,27 @@ diff -ur root-6.24.02.orig/build/unix/makepchinput.py root-6.24.02/build/unix/ma
accepted = isAnyPatternInString(PCHPatternsWhitelist,dirName) and \
not isAnyPatternInString(PCHPatternsBlacklist,dirName)
-diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/tree/dataframe/test/dataframe_cache.cxx
---- root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/dataframe_cache.cxx 2021-08-11 10:44:16.927804641 +0200
-@@ -224,8 +224,6 @@
+diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake
+index 7886c5f3e9..6fbd8873f1 100644
+--- a/cmake/modules/RootBuildOptions.cmake
++++ b/cmake/modules/RootBuildOptions.cmake
+@@ -344,11 +344,6 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES aarch64)
+ set(runtime_cxxmodules_defvalue OFF)
+ endif()
+
+-# Disable RDataFrame on 32-bit UNIX platforms due to ROOT-9236
+-if(UNIX AND CMAKE_SIZEOF_VOID_P EQUAL 4)
+- set(dataframe_defvalue OFF)
+-endif()
+-
+ # MultiProcess is not possible on Windows, so fail if it is manually set:
+ if(roofit_multiprocess AND WIN32)
+ message(FATAL_ERROR ">>> Option 'roofit_multiprocess' is not supported on Windows.")
+diff --git a/tree/dataframe/test/dataframe_cache.cxx b/tree/dataframe/test/dataframe_cache.cxx
+index 77be488052..8475b98acb 100644
+--- a/tree/dataframe/test/dataframe_cache.cxx
++++ b/tree/dataframe/test/dataframe_cache.cxx
+@@ -224,8 +224,6 @@ TEST(Cache, evtCounter)
}
@@ -37,7 +57,7 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/
TEST(Cache, Regex)
{
-@@ -335,8 +333,6 @@
+@@ -329,8 +327,6 @@ TEST(Cache, Carrays)
gSystem->Unlink(fileName);
}
@@ -46,10 +66,11 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/
// ROOT-10563
TEST(Cache, Alias)
{
-diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx root-6.24.02/tree/dataframe/test/datasource_arrow.cxx
---- root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/datasource_arrow.cxx 2021-08-11 10:44:16.927804641 +0200
-@@ -177,8 +177,6 @@
+diff --git a/tree/dataframe/test/datasource_arrow.cxx b/tree/dataframe/test/datasource_arrow.cxx
+index 5ac9fcf09a..5f5f94a666 100644
+--- a/tree/dataframe/test/datasource_arrow.cxx
++++ b/tree/dataframe/test/datasource_arrow.cxx
+@@ -177,8 +177,6 @@ TEST(RArrowDS, SetNSlotsTwice)
}
#endif
@@ -58,16 +79,17 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx root-6.24.02
TEST(RArrowDS, FromARDF)
{
std::unique_ptr<RDataSource> tds(new RArrowDS(createTestTable(), {}));
-@@ -250,5 +248,3 @@
+@@ -250,5 +248,3 @@ TEST(RArrowDS, FromARDFWithJittingMT)
}
#endif // R__USE_IMT
-
-#endif // R__B64
-diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx root-6.24.02/tree/dataframe/test/datasource_csv.cxx
---- root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/datasource_csv.cxx 2021-08-11 10:44:16.927804641 +0200
-@@ -207,8 +207,6 @@
+diff --git a/tree/dataframe/test/datasource_csv.cxx b/tree/dataframe/test/datasource_csv.cxx
+index 6554719f98..d93117b67a 100644
+--- a/tree/dataframe/test/datasource_csv.cxx
++++ b/tree/dataframe/test/datasource_csv.cxx
+@@ -210,8 +210,6 @@ TEST(RCsvDS, SetNSlotsTwice)
}
#endif
@@ -76,16 +98,17 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx root-6.24.02/t
TEST(RCsvDS, FromARDF)
{
std::unique_ptr<RDataSource> tds(new RCsvDS(fileName0));
-@@ -321,5 +319,3 @@
+@@ -324,5 +322,3 @@ TEST(RCsvDS, ProgressiveReadingRDFMT)
}
#endif // R__USE_IMT
-
-#endif // R__B64
-diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx root-6.24.02/tree/dataframe/test/datasource_root.cxx
---- root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/datasource_root.cxx 2021-08-11 10:44:16.928804644 +0200
-@@ -117,8 +117,6 @@
+diff --git a/tree/dataframe/test/datasource_root.cxx b/tree/dataframe/test/datasource_root.cxx
+index 79840d9fff..4c795fee6f 100644
+--- a/tree/dataframe/test/datasource_root.cxx
++++ b/tree/dataframe/test/datasource_root.cxx
+@@ -117,8 +117,6 @@ TEST(TRootTDS, SetNSlotsTwice)
}
#endif
@@ -93,17 +116,18 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx root-6.24.02/
-
TEST(TRootTDS, FromARDF)
{
- std::unique_ptr<RDataSource> tds(new RRootDS(treeName, fileGlob));
-@@ -190,5 +188,3 @@
+ std::unique_ptr<RDataSource> tds(new ROOT::Internal::RDF::RRootDS(treeName, fileGlob));
+@@ -190,5 +188,3 @@ TEST(TRootTDS, FromARDFWithJittingMT)
}
#endif // R__USE_IMT
-
-#endif // R__B64
-diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx root-6.24.02/tree/dataframe/test/datasource_trivial.cxx
---- root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/datasource_trivial.cxx 2021-08-11 10:44:16.928804644 +0200
-@@ -141,8 +141,6 @@
+diff --git a/tree/dataframe/test/datasource_trivial.cxx b/tree/dataframe/test/datasource_trivial.cxx
+index 7da675c83b..deb89301c7 100644
+--- a/tree/dataframe/test/datasource_trivial.cxx
++++ b/tree/dataframe/test/datasource_trivial.cxx
+@@ -141,8 +141,6 @@ TEST(RTrivialDS, EarlyQuitWithRange)
EXPECT_EQ(df.Range(10).Count().GetValue(), 10);
}
@@ -112,16 +136,17 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx root-6.24.
TEST(RTrivialDS, FromARDFWithJitting)
{
std::unique_ptr<RDataSource> tds(new RTrivialDS(32));
-@@ -245,5 +243,3 @@
+@@ -245,5 +243,3 @@ TEST(RTrivialDS, SkipEntriesMT)
}
#endif // R__USE_IMT
-
-#endif // R__B64
-diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMakeLists.txt
---- root-6.24.02.orig/tutorials/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/CMakeLists.txt 2021-08-11 10:44:16.974804766 +0200
-@@ -279,10 +279,6 @@
+diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt
+index a6e5c97703..12bb610d67 100644
+--- a/tutorials/CMakeLists.txt
++++ b/tutorials/CMakeLists.txt
+@@ -332,10 +332,6 @@ else()
list(APPEND root7_veto ${v7_veto_files})
endif()
@@ -129,10 +154,10 @@ diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMake
- set(bits32_veto dataframe/*.C graphs/timeSeriesFrom*.C v7/ntuple/ntpl004_dimuon.C)
-endif()
-
- #---These ones are disabled !!! ------------------------------------
- set(extra_veto
- legacy/benchmarks.C
-@@ -335,7 +331,6 @@
+ if (APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES arm64)
+ set(macm1_veto dataframe/df107_SingleTopAnalysis.py)
+ endif()
+@@ -391,7 +387,6 @@ set(all_veto hsimple.C
${classic_veto}
${pythia_veto}
${root7_veto}
@@ -140,3 +165,6 @@ diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMake
${xrootd_veto}
${mlp_veto}
${spectrum_veto}
+--
+2.35.1
+
diff --git a/root-add-RCutFlowReport-to-LinkDef-file.patch b/root-add-RCutFlowReport-to-LinkDef-file.patch
deleted file mode 100644
index 9ec99a1..0000000
--- a/root-add-RCutFlowReport-to-LinkDef-file.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 2e3fabbe5423f50ee98ce848d8e85ec7a2a2106d Mon Sep 17 00:00:00 2001
-From: Enrico Guiraud <enrico.guiraud(a)cern.ch>
-Date: Thu, 15 Jul 2021 12:17:56 +0200
-Subject: [PATCH] [DF] Add RCutFlowReport to LinkDef
-
-This should fix some sporadic failures in cling's symbol resolution
-in builds without runtime cxx modules.
----
- tree/dataframe/inc/LinkDef.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h
-index 8103468082..684fc3b6f1 100644
---- a/tree/dataframe/inc/LinkDef.h
-+++ b/tree/dataframe/inc/LinkDef.h
-@@ -58,6 +58,7 @@
- #pragma link C++ class ROOT::Detail::RDF::RMergeableValue<TProfile>+;
- #pragma link C++ class ROOT::Detail::RDF::RMergeableValue<TProfile2D>+;
- #pragma link C++ class TNotifyLink<ROOT::Internal::RDF::RDataBlockFlag>;
-+#pragma link C++ class ROOT::RDF::RCutFlowReport;
-
- #endif
-
---
-2.31.1
-
diff --git a/root-add-RDisplay-to-LinkDef-file.patch b/root-add-RDisplay-to-LinkDef-file.patch
deleted file mode 100644
index e86880c..0000000
--- a/root-add-RDisplay-to-LinkDef-file.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From d9e15857c189edcfa75af5c6244ff68fac74f06f Mon Sep 17 00:00:00 2001
-From: Enrico Guiraud <enrico.guiraud(a)cern.ch>
-Date: Thu, 10 Jun 2021 10:00:32 +0200
-Subject: [PATCH] [DF] Add RDisplay to LinkDef
-
-To help cling autoloading.
----
- tree/dataframe/inc/LinkDef.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h
-index 3879ac8d5d..8103468082 100644
---- a/tree/dataframe/inc/LinkDef.h
-+++ b/tree/dataframe/inc/LinkDef.h
-@@ -20,6 +20,7 @@
- #pragma link C++ namespace ROOT::Internal::RDF::GraphDrawing;
- #pragma link C++ namespace ROOT::Detail::RDF;
- #pragma link C++ namespace ROOT::RDF;
-+#pragma link C++ class ROOT::RDF::RDisplay-;
- #pragma link C++ class ROOT::Internal::RDF::RActionBase-;
- #pragma link C++ class ROOT::Internal::RDF::RJittedAction-;
- #pragma link C++ class ROOT::Detail::RDF::RFilterBase-;
---
-2.31.1
-
diff --git a/root-add-TTreeProcessorMP-to-LinkDef-file.patch b/root-add-TTreeProcessorMP-to-LinkDef-file.patch
deleted file mode 100644
index c8a0b1f..0000000
--- a/root-add-TTreeProcessorMP-to-LinkDef-file.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 56d52ccf2fad2736e49d3cfc4c9df22492e1dbfc Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Tue, 8 Jun 2021 02:46:18 +0200
-Subject: [PATCH] Add TTreeProcessorMP to LinkDef
-
-This fixes test failure:
-
- 745/1157 Test #729: tutorial-multicore-mp102_readNtuplesFillHistosAndFit ................***Failed 1.55 sec
-Processing /builddir/build/BUILD/root-6.25.01/tutorials/multicore/mp102_readNtuplesFillHistosAndFit.C...
-IncrementalExecutor::executeFunction: symbol '_ZN4ROOT16TTreeProcessorMPC1Ej' unresolved while linking [cling interface function]!
-You are probably missing the definition of ROOT::TTreeProcessorMP::TTreeProcessorMP(unsigned int)
-Maybe you need to load the corresponding shared library?
-IncrementalExecutor::executeFunction: symbol '_ZN4ROOT16TTreeProcessorMP11ReplyToIdleEP7TSocket' unresolved while linking [cling interface function]!
-You are probably missing the definition of ROOT::TTreeProcessorMP::ReplyToIdle(TSocket*)
-Maybe you need to load the corresponding shared library?
-CMake Error at /builddir/build/BUILD/root-6.25.01/x86_64-redhat-linux-gnu/RootTestDriver.cmake:237 (message):
- error code: 1
----
- tree/treeplayer/inc/LinkDef.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tree/treeplayer/inc/LinkDef.h b/tree/treeplayer/inc/LinkDef.h
-index e7fdd7c9bf..d195536a40 100644
---- a/tree/treeplayer/inc/LinkDef.h
-+++ b/tree/treeplayer/inc/LinkDef.h
-@@ -30,6 +30,7 @@
- #pragma link C++ class TSimpleAnalysis+;
- #ifndef _MSC_VER
- #pragma link C++ class TMPWorkerTree+;
-+#pragma link C++ class ROOT::TTreeProcessorMP-;
- #endif
- #ifdef R__USE_IMT
- #pragma link C++ class ROOT::TTreeProcessorMT-;
---
-2.31.1
-
diff --git a/root-avoid-deleting-TFormulas-twice.patch b/root-avoid-deleting-TFormulas-twice.patch
new file mode 100644
index 0000000..af758ed
--- /dev/null
+++ b/root-avoid-deleting-TFormulas-twice.patch
@@ -0,0 +1,37 @@
+From c7dd58f3bc012690bab16763b1d73a4b7106ced9 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Tue, 29 Mar 2022 15:40:35 +0200
+Subject: [PATCH] Avoid deleting TFormulas twice
+
+Example failure:
+
+ 562/1224 Test #541: tutorial-gl-gltf3 ...................................................***Failed Error regular expression found in output. Regex=[Error in <] 1.36 sec
+Processing /builddir/build/BUILD/root-6.26.00/tutorials/gl/gltf3.C...
+Error in <TList::Delete>: A list is accessing an object (0x7fffd1c959a0) already deleted (list name = Functions)
+Error in <TList::Delete>: A list is accessing an object (0x7fffd1c95750) already deleted (list name = Functions)
+
+The commit also changes the filename used in
+tutorials/hist/fillrandom.py to be different form the one used in
+tutorials/hist/fillrandom.C (and tutorials/pyroot/fillrandom.py)
+---
+ tutorials/gl/gltf3.C | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tutorials/gl/gltf3.C b/tutorials/gl/gltf3.C
+index 3697e69b7a..4089f0d2b7 100644
+--- a/tutorials/gl/gltf3.C
++++ b/tutorials/gl/gltf3.C
+@@ -27,8 +27,8 @@ void gltf3()
+ TPad *tf3Pad = new TPad("box", "box", 0.04, 0.04, 0.96, 0.8);
+ tf3Pad->Draw();
+
+- TFormula f1 = TFormula("f1", "x*x + y*y + z*z + 2*y - 1");
+- TFormula f2 = TFormula("f2", "x*x + y*y + z*z - 2*y - 1");
++ TFormula *f1 = new TFormula("f1", "x*x + y*y + z*z + 2*y - 1");
++ TFormula *f2 = new TFormula("f2", "x*x + y*y + z*z - 2*y - 1");
+
+ // Klein bottle with cut top&bottom parts
+ // The Klein bottle is a closed non-orientable surface that has no
+--
+2.35.1
+
diff --git a/root-big-endian-byte-swap.patch b/root-big-endian-byte-swap.patch
new file mode 100644
index 0000000..0d9f41a
--- /dev/null
+++ b/root-big-endian-byte-swap.patch
@@ -0,0 +1,40 @@
+From d9e03aad7a5132fe9db9992eecb47ee4e91c354c Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Fri, 25 Mar 2022 11:13:12 +0100
+Subject: [PATCH] Byte swap values read from the protobuf raw data stream on
+ big endian
+
+---
+ tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
+index 3b0a30cdb0..23e41d746f 100644
+--- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
++++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
+@@ -1,3 +1,4 @@
++#include "Byteswap.h"
+ #include "TMVA/RModelParser_ONNX.hxx"
+ #include "TMVA/OperatorList.hxx"
+ #include "onnx_proto3.pb.h"
+@@ -980,9 +981,14 @@ RModel RModelParser_ONNX::Parse(std::string filename){
+ //void* data = malloc (fLength * sizeof(float));
+ std::shared_ptr<void> data(malloc(fLength * sizeof(float)), free);
+
+- if (tensorproto->raw_data().empty() == false){
+- auto raw_data_ptr = reinterpret_cast<float*>(const_cast<char*>(tensorproto->raw_data().c_str()));
+- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(float));
++ if (!tensorproto->raw_data().empty()) {
++#ifdef R__BYTESWAP
++ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(float));
++#else
++ for (std::size_t k = 0; k < fLength; ++k)
++ (reinterpret_cast<UInt_t*>(data.get()))[k] =
++ R__bswap_32((reinterpret_cast<const UInt_t*>(tensorproto->raw_data().c_str()))[k]);
++#endif
+ }else{
+ tensorproto->mutable_float_data()->ExtractSubrange(0, tensorproto->float_data_size(), static_cast<float*>(data.get()));
+ }
+--
+2.35.1
+
diff --git a/root-blas-linking-and-ignore-prefix.patch b/root-blas-linking-and-ignore-prefix.patch
new file mode 100644
index 0000000..abe53f7
--- /dev/null
+++ b/root-blas-linking-and-ignore-prefix.patch
@@ -0,0 +1,74 @@
+From 1aa9231becda09a89ec576e4a17ca4d9b6e2f310 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Tue, 15 Mar 2022 14:55:37 +0100
+Subject: [PATCH] Link to the blas library found by cmake, not hardcoded
+ "blas". Set ROOTIGNOREPREFIX=1 when running built binaries during build. Make
+ sure PCH is created before running emitters.
+
+---
+ tmva/sofie/test/CMakeLists.txt | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/tmva/sofie/test/CMakeLists.txt b/tmva/sofie/test/CMakeLists.txt
+index e4f9d28748..a3a2c9ae16 100644
+--- a/tmva/sofie/test/CMakeLists.txt
++++ b/tmva/sofie/test/CMakeLists.txt
+@@ -43,7 +43,7 @@ target_compile_options(emitFromONNX PRIVATE -Wno-unused-parameter -Wno-array-bou
+
+ # Automatic compilation of headers from onnx files
+ add_custom_target(SofieCompileModels_ONNX)
+-add_dependencies(SofieCompileModels_ONNX emitFromONNX)
++add_dependencies(SofieCompileModels_ONNX emitFromONNX onepcm)
+
+ # Finding .onnx files to be compiled and creating the appropriate command
+ file(GLOB ONNX_FILES "${ONNX_MODELS_DIR}/*.onnx")
+@@ -51,7 +51,7 @@ foreach(onnx_file ${ONNX_FILES})
+ get_filename_component(fname ${onnx_file} NAME_WE)
+ get_filename_component(fdir ${onnx_file} DIRECTORY)
+ add_custom_command(TARGET SofieCompileModels_ONNX POST_BUILD
+- COMMAND ./emitFromONNX ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname}
++ COMMAND ${CMAKE_COMMAND} -E env ROOTIGNOREPREFIX=1 ./emitFromONNX ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname}
+ USES_TERMINAL
+ )
+ endforeach()
+@@ -60,7 +60,8 @@ endforeach()
+ ROOT_ADD_GTEST(TestCustomModelsFromONNX TestCustomModelsFromONNX.cxx
+ LIBRARIES
+ ROOTTMVASofie
+- blas
++ ${BLAS_LINKER_FLAGS}
++ ${BLAS_LIBRARIES}
+ INCLUDE_DIRS
+ ${CMAKE_CURRENT_BINARY_DIR}
+ )
+@@ -92,7 +93,7 @@ target_compile_options(emitFromROOT PRIVATE -Wno-unused-parameter -Wno-array-bou
+
+ # Automatic compilation of headers from root files
+ add_custom_target(SofieCompileModels_ROOT)
+-add_dependencies(SofieCompileModels_ROOT emitFromROOT)
++add_dependencies(SofieCompileModels_ROOT emitFromROOT onepcm)
+
+ # Finding .onnx files to be parsed and creating the appropriate command
+ file(GLOB ONNX_FILES "${ONNX_MODELS_DIR}/*.onnx")
+@@ -100,7 +101,7 @@ foreach(onnx_file ${ONNX_FILES})
+ get_filename_component(fname ${onnx_file} NAME_WE)
+ get_filename_component(fdir ${onnx_file} DIRECTORY)
+ add_custom_command(TARGET SofieCompileModels_ROOT POST_BUILD
+- COMMAND ./emitFromROOT ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname}
++ COMMAND ${CMAKE_COMMAND} -E env ROOTIGNOREPREFIX=1 ./emitFromROOT ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname}
+ USES_TERMINAL
+ )
+ endforeach()
+@@ -109,7 +110,8 @@ endforeach()
+ ROOT_ADD_GTEST(TestCustomModelsFromROOT TestCustomModelsFromROOT.cxx
+ LIBRARIES
+ ROOTTMVASofie
+- blas
++ ${BLAS_LINKER_FLAGS}
++ ${BLAS_LIBRARIES}
+ INCLUDE_DIRS
+ ${CMAKE_CURRENT_BINARY_DIR}
+ )
+--
+2.35.1
+
diff --git a/root-core-base-test.patch b/root-core-base-test.patch
new file mode 100644
index 0000000..c268390
--- /dev/null
+++ b/root-core-base-test.patch
@@ -0,0 +1,31 @@
+From 12d52a60629e1639ced23a1919bd85628d9135ea Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sun, 3 Apr 2022 23:23:00 +0200
+Subject: [PATCH] Fix library link order
+
+Fixes undefined references when linking CoreBaseTests
+
+../../../lib/libCling.so.6.26.00: undefined reference to `TMemFile::TMemFile(char const*, TMemFile::ZeroCopyView_t const&)'
+../../../lib/libCling.so.6.26.00: undefined reference to `TFile::TFile(char const*, char const*, char const*, int)'
+../../../lib/libCling.so.6.26.00: undefined reference to `TFile::~TFile()'
+../../../lib/libCling.so.6.26.00: undefined reference to `TStreamerInfo::TStreamerInfo()'
+../../../lib/libCling.so.6.26.00: undefined reference to `TMemFile::~TMemFile()'
+---
+ core/base/test/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/core/base/test/CMakeLists.txt b/core/base/test/CMakeLists.txt
+index 4b08cb0390..9b52e83405 100644
+--- a/core/base/test/CMakeLists.txt
++++ b/core/base/test/CMakeLists.txt
+@@ -22,6 +22,6 @@ ROOT_ADD_GTEST(CoreBaseTests
+ TExceptionHandlerTests.cxx
+ TStringTest.cxx
+ TBitsTests.cxx
+- LIBRARIES Core RIO ${extralibs})
++ LIBRARIES ${extralibs} RIO Core)
+
+ ROOT_ADD_GTEST(CoreErrorTests TErrorTests.cxx LIBRARIES Core)
+--
+2.35.1
+
diff --git a/root-dataframe-callback.patch b/root-dataframe-callback.patch
new file mode 100644
index 0000000..57ffc08
--- /dev/null
+++ b/root-dataframe-callback.patch
@@ -0,0 +1,45 @@
+From d849bc502eec4ec95d15ca41319ba0467ab22759 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 15:55:29 +0100
+Subject: [PATCH] =?UTF-8?q?NENTRIES=20is=20not=20always=20a=20multiple=20o?=
+ =?UTF-8?q?f=20the=20expected=20size.=20NENTRIES=20is=2010.=20On=20a=204?=
+ =?UTF-8?q?=20core=20machine=20the=20expected=20size=20in=202=20=C3=97=204?=
+ =?UTF-8?q?=20=3D=208.=20Looping=20over=20the=208=20IDs,=202=20have=202=20?=
+ =?UTF-8?q?entries=20the=20remaining=206=20have=201=20entry=20for=20a=20to?=
+ =?UTF-8?q?tal=20of=2010=20(NENTRIES)=20entries.=20The=20test=20checked=20?=
+ =?UTF-8?q?that=20each=20ID=20had=20NENTRIES/(expected=20size)=20entries,?=
+ =?UTF-8?q?=20which=20in=20this=20case=20with=20integer=20division=20equal?=
+ =?UTF-8?q?s=201=20entry,=20which=20was=20not=20the=20correct=20test.=20Th?=
+ =?UTF-8?q?is=20commit=20chenges=20to=20test=20to=20check=20that=20the=20t?=
+ =?UTF-8?q?otal=20number=20of=20entries=20summed=20for=20all=20IDs=20equal?=
+ =?UTF-8?q?s=20NENTRIES.?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+---
+ tree/dataframe/test/dataframe_samplecallback.cxx | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/tree/dataframe/test/dataframe_samplecallback.cxx b/tree/dataframe/test/dataframe_samplecallback.cxx
+index 188d58dd31..d387ea5f86 100644
+--- a/tree/dataframe/test/dataframe_samplecallback.cxx
++++ b/tree/dataframe/test/dataframe_samplecallback.cxx
+@@ -125,11 +125,13 @@ TEST_P(RDFSampleCallback, EmptySourceSampleID) {
+ // RDF with empty sources tries to produce 2 tasks per slot when MT is enabled
+ const auto expectedSize = std::min(NENTRIES, df.GetNSlots() * 2ull);
+ ASSERT_EQ(result->size(), expectedSize);
++ ULong64_t entries = 0;
+ for (auto &id : *result) {
+ // check that all entries start with the expected string
+ EXPECT_TRUE(id.AsString().rfind("Empty source, range: {", 0) == 0);
+- EXPECT_EQ(id.NEntries(), NENTRIES / expectedSize);
++ entries += id.NEntries();
+ }
++ EXPECT_EQ(entries, NENTRIES);
+ } else {
+ ASSERT_EQ(result->size(), 1);
+ const auto &id = result->at(0);
+--
+2.35.1
+
diff --git a/root-doc-no-notebooks.patch b/root-doc-no-notebooks.patch
deleted file mode 100644
index f94d31f..0000000
--- a/root-doc-no-notebooks.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -ur root-6.20.02.orig/documentation/doxygen/filter.cxx root-6.20.02/documentation/doxygen/filter.cxx
---- root-6.20.02.orig/documentation/doxygen/filter.cxx 2020-03-15 16:21:25.000000000 +0100
-+++ root-6.20.02/documentation/doxygen/filter.cxx 2020-03-15 20:05:59.047270429 +0100
-@@ -378,16 +378,7 @@
-
- // notebook found
- if (gLineString.find("\\notebook") != string::npos) {
-- ExecuteCommand(StringFormat("%s converttonotebook.py %s %s/notebooks/",
-- gPythonExec.c_str(),
-- gFileName.c_str(), gOutDir.c_str()));
-- if (gPython){
-- gLineString = "## ";
-- }
-- else{
-- gLineString = "/// ";
-- }
-- gLineString += StringFormat( "\\htmlonly <a href=\"https://nbviewer.jupyter.org/url/root.cern/doc/master/notebooks/%s.nbconv..." target=\"_blank\"><img src= notebook.gif alt=\"View in nbviewer\" style=\"height:1em\" ></a> <a href=\"https://cern.ch/swanserver/cgi-bin/go?projurl=https://root.cern/doc/maste..." target=\"_blank\"><img src=\"https://swanserver.web.cern.ch/swanserver/images/badge_swan_white_150.png\" alt=\"Open in SWAN\" style=\"height:1em\" ></a> \\endhtmlonly \n", gMacroName.c_str() , gMacroName.c_str());
-+ gLineString = "";
- }
-
- // \macro_output found
diff --git a/root-doxygen-crash-el7.patch b/root-doxygen-crash-el7.patch
deleted file mode 100644
index 28fb075..0000000
--- a/root-doxygen-crash-el7.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-diff -ur root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C
---- root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200
-+++ root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C 2021-11-05 18:09:46.916687882 +0100
-@@ -5,7 +5,6 @@
- /// This tutorial shows how a histogram can be filled in parallel
- /// with a multiprocess approach.
- ///
--/// \macro_image
- /// \macro_code
- ///
- /// \date January 2016
-diff -ur root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C
---- root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200
-+++ root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C 2021-12-06 18:19:08.498933048 +0100
-@@ -10,7 +10,6 @@
- /// method. This method is not thread safe: in presence of ROOT histograms, the
- /// system will not crash but the result is not uniquely defined.
- ///
--/// \macro_image
- /// \macro_code
- ///
- /// \date January 2016
-diff -ur root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C root-6.24.06/tutorials/multicore/mt304_fillHistos.C
---- root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C 2021-09-01 10:08:19.000000000 +0200
-+++ root-6.24.06/tutorials/multicore/mt304_fillHistos.C 2021-12-06 19:54:20.634373797 +0100
-@@ -5,7 +5,6 @@
- /// Illustrates use of power-of-two autobin algorithm
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date November 2017
- /// \author Gerardo Ganis
-diff -ur root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C
---- root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200
-+++ root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-12-06 19:54:22.174377227 +0100
-@@ -5,7 +5,6 @@
- /// This tutorial shows how a histogram can be filled in parallel
- /// with a multiprocess approach.
- ///
--/// \macro_image
- /// \macro_code
- ///
- /// \date January 2016
diff --git a/root-doxygen-crash.patch b/root-doxygen-crash.patch
deleted file mode 100644
index d69d7e7..0000000
--- a/root-doxygen-crash.patch
+++ /dev/null
@@ -1,275 +0,0 @@
-diff -ur root-6.24.02.orig/tutorials/dataframe/df002_dataModel.C root-6.24.02/tutorials/dataframe/df002_dataModel.C
---- root-6.24.02.orig/tutorials/dataframe/df002_dataModel.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df002_dataModel.C 2021-08-11 03:55:11.021149115 +0200
-@@ -7,7 +7,6 @@
- /// complex than flat ntuples with RDataFrame
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date December 2016
- /// \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df002_dataModel.py root-6.24.02/tutorials/dataframe/df002_dataModel.py
---- root-6.24.02.orig/tutorials/dataframe/df002_dataModel.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df002_dataModel.py 2021-08-11 03:55:11.084149272 +0200
-@@ -7,7 +7,6 @@
- ## complex than flat ntuples with RDataFrame
- ##
- ## \macro_code
--## \macro_image
- ##
- ## \date May 2017
- ## \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df003_profiles.C root-6.24.02/tutorials/dataframe/df003_profiles.C
---- root-6.24.02.orig/tutorials/dataframe/df003_profiles.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df003_profiles.C 2021-08-11 03:55:11.148149432 +0200
-@@ -7,7 +7,6 @@
- /// RDataFrame. See the documentation of TProfile and TProfile2D to better
- /// understand the analogy of this code with the example one.
- ///
--/// \macro_image
- /// \macro_code
- ///
- /// \date February 2017
-diff -ur root-6.24.02.orig/tutorials/dataframe/df003_profiles.py root-6.24.02/tutorials/dataframe/df003_profiles.py
---- root-6.24.02.orig/tutorials/dataframe/df003_profiles.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df003_profiles.py 2021-08-11 03:55:11.211149590 +0200
-@@ -8,7 +8,6 @@
- ## understand the analogy of this code with the example one.
- ##
- ## \macro_code
--## \macro_image
- ##
- ## \date February 2017
- ## \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df005_fillAnyObject.C root-6.24.02/tutorials/dataframe/df005_fillAnyObject.C
---- root-6.24.02.orig/tutorials/dataframe/df005_fillAnyObject.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df005_fillAnyObject.C 2021-08-11 03:55:11.275149750 +0200
-@@ -7,7 +7,6 @@
- /// `Fill` method.
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date March 2017
- /// \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df007_snapshot.C root-6.24.02/tutorials/dataframe/df007_snapshot.C
---- root-6.24.02.orig/tutorials/dataframe/df007_snapshot.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df007_snapshot.C 2021-08-11 03:55:11.338149907 +0200
-@@ -5,7 +5,6 @@
- ///
- /// This tutorial shows how to write out datasets in ROOT format using the RDataFrame
- ///
--/// \macro_image
- /// \macro_code
- ///
- /// \date April 2017
-diff -ur root-6.24.02.orig/tutorials/dataframe/df007_snapshot.py root-6.24.02/tutorials/dataframe/df007_snapshot.py
---- root-6.24.02.orig/tutorials/dataframe/df007_snapshot.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df007_snapshot.py 2021-08-11 03:55:11.402150067 +0200
-@@ -5,7 +5,6 @@
- ##
- ## This tutorial shows how to write out datasets in ROOT format using the RDataFrame
- ##
--## \macro_image
- ## \macro_code
- ##
- ## \date April 2017
-diff -ur root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.C root-6.24.02/tutorials/dataframe/df014_CSVDataSource.C
---- root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df014_CSVDataSource.C 2021-08-11 03:55:11.465150225 +0200
-@@ -14,7 +14,6 @@
- /// DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700).
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date October 2017
- /// \author Enric Tejedor (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.py root-6.24.02/tutorials/dataframe/df014_CSVDataSource.py
---- root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df014_CSVDataSource.py 2021-08-11 03:55:11.529150385 +0200
-@@ -14,7 +14,6 @@
- ## DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700).
- ##
- ## \macro_code
--## \macro_image
- ##
- ## \date October 2017
- ## \author Enric Tejedor (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df015_LazyDataSource.C root-6.24.02/tutorials/dataframe/df015_LazyDataSource.C
---- root-6.24.02.orig/tutorials/dataframe/df015_LazyDataSource.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df015_LazyDataSource.C 2021-08-11 03:55:11.593150545 +0200
-@@ -14,7 +14,6 @@
- /// From the ROOT website: https://root.cern.ch/files/tutorials/tdf014_CsvDataSource_MuRun2010B.csv
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date February 2018
- /// \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df016_vecOps.C root-6.24.02/tutorials/dataframe/df016_vecOps.C
---- root-6.24.02.orig/tutorials/dataframe/df016_vecOps.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df016_vecOps.C 2021-08-11 03:55:11.656150702 +0200
-@@ -7,7 +7,6 @@
- /// stored in datasets, a situation very common in HEP data analysis.
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date February 2018
- /// \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df016_vecOps.py root-6.24.02/tutorials/dataframe/df016_vecOps.py
---- root-6.24.02.orig/tutorials/dataframe/df016_vecOps.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df016_vecOps.py 2021-08-11 03:55:11.720150862 +0200
-@@ -6,7 +6,6 @@
- ## This tutorial shows the potential of the VecOps approach for treating collections
- ## stored in datasets, a situation very common in HEP data analysis.
- ##
--## \macro_image
- ## \macro_code
- ##
- ## \date February 2018
-diff -ur root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.C root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.C
---- root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.C 2021-08-11 03:55:11.783151020 +0200
-@@ -11,7 +11,6 @@
- /// greater than 100.
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date March 2018
- /// \authors Danilo Piparo (CERN), Andre Vieira Silva
-diff -ur root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.py root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.py
---- root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.py 2021-08-11 03:55:11.846151177 +0200
-@@ -7,7 +7,6 @@
- ## model typically adopted in HEP for analysis.
- ##
- ## \macro_code
--## \macro_image
- ##
- ## \date March 2018
- ## \authors Danilo Piparo (CERN), Andre Vieira Silva
-diff -ur root-6.24.02.orig/tutorials/dataframe/df019_Cache.C root-6.24.02/tutorials/dataframe/df019_Cache.C
---- root-6.24.02.orig/tutorials/dataframe/df019_Cache.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df019_Cache.C 2021-08-11 03:55:11.910151337 +0200
-@@ -18,7 +18,6 @@
- /// only when the event loop is triggered on it.
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date June 2018
- /// \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df019_Cache.py root-6.24.02/tutorials/dataframe/df019_Cache.py
---- root-6.24.02.orig/tutorials/dataframe/df019_Cache.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df019_Cache.py 2021-08-11 03:55:11.973151495 +0200
-@@ -18,7 +18,6 @@
- ## only when the event loop is triggered on it.
- ##
- ## \macro_code
--## \macro_image
- ##
- ## \date June 2018
- ## \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.C root-6.24.02/tutorials/dataframe/df021_createTGraph.C
---- root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df021_createTGraph.C 2021-08-11 03:55:12.037151655 +0200
-@@ -4,7 +4,6 @@
- /// Fill a TGraph using RDataFrame.
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date July 2018
- /// \authors Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.py root-6.24.02/tutorials/dataframe/df021_createTGraph.py
---- root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df021_createTGraph.py 2021-08-11 03:55:12.100151813 +0200
-@@ -4,7 +4,6 @@
- ## Fill a TGraph using RDataFrame.
- ##
- ## \macro_code
--## \macro_image
- ##
- ## \date July 2018
- ## \authors Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino)
-diff -ur root-6.24.02.orig/tutorials/tmva/tmva003_RReader.C root-6.24.02/tutorials/tmva/tmva003_RReader.C
---- root-6.24.02.orig/tutorials/tmva/tmva003_RReader.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/tmva/tmva003_RReader.C 2021-08-11 04:16:33.833359421 +0200
-@@ -5,7 +5,6 @@
- /// TMVA XML files.
- ///
- /// \macro_code
--/// \macro_output
- ///
- /// \date July 2019
- /// \author Stefan Wunsch
-diff -ur root-6.24.02.orig/tutorials/tmva/tmva103_Application.C root-6.24.02/tutorials/tmva/tmva103_Application.C
---- root-6.24.02.orig/tutorials/tmva/tmva103_Application.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/tmva/tmva103_Application.C 2021-08-11 21:56:49.387390340 +0200
-@@ -6,7 +6,6 @@
- /// event-by-event inference, batch inference and pipelines with RDataFrame.
- ///
- /// \macro_code
--/// \macro_output
- ///
- /// \date December 2018
- /// \author Stefan Wunsch
-diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_CNN_Classification.C root-6.24.02/tutorials/tmva/TMVA_CNN_Classification.C
---- root-6.24.02.orig/tutorials/tmva/TMVA_CNN_Classification.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/tmva/TMVA_CNN_Classification.C 2021-08-10 15:21:03.306171069 +0200
-@@ -6,7 +6,6 @@
- /// This is an example of using a CNN in TMVA. We do classification using a toy image data set
- /// that is generated when running the example macro
- ///
--/// \macro_image
- /// \macro_output
- /// \macro_code
- ///
-diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_Higgs_Classification.C root-6.24.02/tutorials/tmva/TMVA_Higgs_Classification.C
---- root-6.24.02.orig/tutorials/tmva/TMVA_Higgs_Classification.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/tmva/TMVA_Higgs_Classification.C 2021-08-10 15:21:33.974251559 +0200
-@@ -7,7 +7,6 @@
- /// used in this paper: Baldi, P., P. Sadowski, and D. Whiteson. “Searching for Exotic Particles in High-energy Physics
- /// with Deep Learning.” Nature Communications 5 (July 2, 2014).
- ///
--/// \macro_image
- /// \macro_output
- /// \macro_code
- ///
-diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_RNN_Classification.C root-6.24.02/tutorials/tmva/TMVA_RNN_Classification.C
---- root-6.24.02.orig/tutorials/tmva/TMVA_RNN_Classification.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/tmva/TMVA_RNN_Classification.C 2021-08-10 15:21:15.657203486 +0200
-@@ -6,7 +6,6 @@
- /// This is an example of using a RNN in TMVA. We do classification using a toy time dependent data set
- /// that is generated when running this example macro
- ///
--/// \macro_image
- /// \macro_output
- /// \macro_code
- ///
-diff -ur root-6.24.02.orig/tutorials/v7/line.cxx root-6.24.02/tutorials/v7/line.cxx
---- root-6.24.02.orig/tutorials/v7/line.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/v7/line.cxx 2021-08-16 14:25:32.528867781 +0200
-@@ -6,7 +6,6 @@
- /// "normal" coordinates' system and changing the line color linearly from black
- /// to red.
- ///
--/// \macro_image (line.png)
- /// \macro_code
- ///
- /// \date 2018-03-18
-diff -ur root-6.24.02.orig/tutorials/v7/ntuple/ntpl005_introspection.C root-6.24.02/tutorials/v7/ntuple/ntpl005_introspection.C
---- root-6.24.02.orig/tutorials/v7/ntuple/ntpl005_introspection.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/v7/ntuple/ntpl005_introspection.C 2021-08-10 15:22:06.504336763 +0200
-@@ -4,7 +4,6 @@
- /// Write and read an RNTuple from a user-defined class. Adapted from tv3.C
- /// Illustrates various RNTuple introspection methods.
- ///
--/// \macro_image
- /// \macro_code
- ///
- /// \date April 2020
diff --git a/root-doxygen-fix1.patch b/root-doxygen-fix1.patch
deleted file mode 100644
index 9525bf4..0000000
--- a/root-doxygen-fix1.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From e303e0105b6f7bd7848a4385fcb62bedb847abb4 Mon Sep 17 00:00:00 2001
-From: Olivier Couet <olivier.couet(a)cern.ch>
-Date: Mon, 12 Apr 2021 16:22:49 +0200
-Subject: [PATCH] RLogScopedVerbosity doxygen doc fix (#7830)
-
-* RLogScopedVerbosity doxygen doc was not visible because source code was under ``` instead of ~~~
-
-* [foundation] RLogger doc (NFC) - thanks, Sergey!
-
-Co-authored-by: Axel Naumann <Axel.Naumann(a)cern.ch>
----
- core/foundation/inc/ROOT/RLogger.hxx | 20 ++++++++++----------
- 1 file changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/core/foundation/inc/ROOT/RLogger.hxx b/core/foundation/inc/ROOT/RLogger.hxx
-index d753bbc358..c1a1b22690 100644
---- a/core/foundation/inc/ROOT/RLogger.hxx
-+++ b/core/foundation/inc/ROOT/RLogger.hxx
-@@ -109,7 +109,7 @@ public:
- /// Construct an anonymous channel.
- RLogChannel() = default;
-
-- /// Construct an anonymous channel with a default vebosity.
-+ /// Construct an anonymous channel with a default verbosity.
- explicit RLogChannel(ELogLevel verbosity) : fVerbosity(verbosity) {}
-
- /// Construct a log channel given its name, which is part of the diagnostics.
-@@ -202,11 +202,11 @@ namespace Detail {
-
- This builder can be used through the utility preprocessor macros R__LOG_ERROR,
- R__LOG_WARNING etc like this:
-- ```c++
-+~~~ {.cpp}
- R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42;
- const int decreasedInfoLevel = 5;
- R__LOG_XDEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details";
-- ```
-+~~~
- This will automatically capture the current class and function name, the file and line number.
- */
-
-@@ -235,10 +235,10 @@ public:
- Change the verbosity level (global or specific to the RLogChannel passed to the
- constructor) for the lifetime of this object.
- Example:
-- ```c++
-+~~~ {.cpp}
- RLogScopedVerbosity debugThis(gFooLog, ELogLevel::kDebug);
- Foo::SomethingToDebug();
-- ```
-+~~~
- */
- class RLogScopedVerbosity {
- RLogChannel *fChannel;
-@@ -331,10 +331,10 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons
-
- - The conditional `RLogBuilder` use prevents stream operators from being called if
- verbosity is too low, i.e.:
-- ````
-+ ~~~
- RLogScopedVerbosity silence(RLogLevel::kFatal);
- R__LOG_DEBUG(7) << WillNotBeCalled();
-- ```
-+ ~~~
- - To update counts of warnings / errors / fatal errors, those RLogEntries must
- always be created, even if in the end their emission will be silenced. This
- should be fine, performance-wise, as they should not happen frequently.
-@@ -350,13 +350,13 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons
-
- /// \name LogMacros
- /// Macros to log diagnostics.
--/// ```c++
-+/// ~~~ {.cpp}
- /// R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42;
- ///
- /// RLogScopedVerbosity verbose(kDebug + 5);
- /// const int decreasedInfoLevel = 5;
--/// R__LOG_DEBUG(decreasedInfoLevel, ROOT::Experimental::WebGUILog()) << "nitty-gritty details";
--/// ```
-+/// R__LOG_DEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details";
-+/// ~~~
- ///\{
- #define R__LOG_FATAL(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kFatal, __VA_ARGS__)
- #define R__LOG_ERROR(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kError, __VA_ARGS__)
---
-2.33.1
-
diff --git a/root-doxygen-fix2.patch b/root-doxygen-fix2.patch
deleted file mode 100644
index 1fa75e7..0000000
--- a/root-doxygen-fix2.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 37a1a43347bc1ecb492b13e2f06d80c16779c84f Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Sun, 5 Dec 2021 21:51:32 +0100
-Subject: [PATCH] Fix doxygen warning
-
-warning: reached end of file while inside a ~~~ block!
----
- gui/webdisplay/src/RWebDisplayHandle.cxx | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gui/webdisplay/src/RWebDisplayHandle.cxx b/gui/webdisplay/src/RWebDisplayHandle.cxx
-index 44a544bb51..84ff7a6990 100644
---- a/gui/webdisplay/src/RWebDisplayHandle.cxx
-+++ b/gui/webdisplay/src/RWebDisplayHandle.cxx
-@@ -608,7 +608,7 @@ std::unique_ptr<RWebDisplayHandle> RWebDisplayHandle::Display(const RWebDisplayA
- /// Browser can specified when starting `root --web=firefox`
- /// Returns true when browser started
- /// It is convenience method, equivalent to:
--/// ~~~
-+/// ~~~
- /// RWebDisplayArgs args;
- /// args.SetUrl(url);
- /// args.SetStandalone(false);
---
-2.33.1
-
diff --git a/root-endian-warn.patch b/root-endian-warn.patch
new file mode 100644
index 0000000..77cd6b9
--- /dev/null
+++ b/root-endian-warn.patch
@@ -0,0 +1,33 @@
+From ba0dc65e558fd916dbe18f8dbe8208a3be932c25 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Mon, 28 Mar 2022 09:20:18 +0200
+Subject: [PATCH 2/2] Ignore warnings about RooNaNPacker not being implemented
+ for big endian
+
+This warning is triggered in many tests, so it makes sense to put it
+in the default ignored set.
+---
+ test/unit_testing_support/ROOTUnitTestSupport.cxx | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/test/unit_testing_support/ROOTUnitTestSupport.cxx b/test/unit_testing_support/ROOTUnitTestSupport.cxx
+index 259ab4e09c..79cd476950 100644
+--- a/test/unit_testing_support/ROOTUnitTestSupport.cxx
++++ b/test/unit_testing_support/ROOTUnitTestSupport.cxx
+@@ -73,6 +73,13 @@ static struct ForbidDiagnostics {
+ return;
+ }
+
++ // FIXME: RooNaNPacker warns about not being implemented for big endian
++ if (level == kWarning
++ && strcmp(msg, "Fast recovery from undefined function values only implemented for little-endian machines. If necessary, request an extension of functionality on https://root.cern") == 0) {
++ std::cerr << "Warning in " << location << " " << msg << std::endl;
++ return;
++ }
++
+ FAIL() << "Received unexpected diagnostic of severity "
+ << level
+ << " at '" << location << "' reading '" << msg << "'.\n"
+--
+2.35.1
+
diff --git a/root-epel7-ppc64le-pyroot.patch b/root-epel7-ppc64le-pyroot.patch
deleted file mode 100644
index 4619bf0..0000000
--- a/root-epel7-ppc64le-pyroot.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -ur root-6.22.04.orig/bindings/pyroot/pythonizations/python/ROOT/__init__.py root-6.22.04/bindings/pyroot/pythonizations/python/ROOT/__init__.py
---- root-6.22.04.orig/bindings/pyroot/pythonizations/python/ROOT/__init__.py 2020-11-13 11:42:09.000000000 +0100
-+++ root-6.22.04/bindings/pyroot/pythonizations/python/ROOT/__init__.py 2020-11-14 15:38:24.462463625 +0100
-@@ -19,6 +19,12 @@
- # Prevent cppyy from filtering ROOT libraries
- environ['CPPYY_NO_ROOT_FILTER'] = '1'
-
-+try:
-+ from ctypes import cdll
-+ libCore = cdll.LoadLibrary("libCore.so")
-+except:
-+ print("An exception occurred while loading libCore.so with ctypes")
-+
- import cppyy
- if not 'ROOTSYS' in environ:
- # Revert setting made by cppyy
diff --git a/root-fix-TMVA-tutorial-using-internally-python.patch b/root-fix-TMVA-tutorial-using-internally-python.patch
new file mode 100644
index 0000000..e1cae2a
--- /dev/null
+++ b/root-fix-TMVA-tutorial-using-internally-python.patch
@@ -0,0 +1,177 @@
+From db974bbe72b97c798b7db52d2481aa24c2ce2b76 Mon Sep 17 00:00:00 2001
+From: moneta <lorenzo.moneta(a)cern.ch>
+Date: Thu, 17 Mar 2022 16:28:42 +0100
+Subject: [PATCH] Fix TMVA tutorial using internally pyton for MacOS 12.3
+
+With the new MacOS update python (and python2) is not existing anymore, only python3.
+Add then a new function TMVA::Python_executable() using ROOT config to determine if ROOT is using python version 2 or 3. In case of 3 returns as executable "python3".
+
+Fix also the correct location of the input ONNX file for TMVA_SOFIE_ONNX.C (copying the file at configure time)
+---
+ tmva/pymva/inc/TMVA/PyMethodBase.h | 6 ++++++
+ tmva/pymva/src/PyMethodBase.cxx | 20 ++++++++++++++++++++
+ tutorials/CMakeLists.txt | 5 ++++-
+ tutorials/tmva/TMVA_CNN_Classification.C | 5 +++--
+ tutorials/tmva/TMVA_RNN_Classification.C | 2 +-
+ tutorials/tmva/TMVA_SOFIE_Keras.C | 2 +-
+ tutorials/tmva/TMVA_SOFIE_ONNX.C | 2 +-
+ tutorials/tmva/TMVA_SOFIE_PyTorch.C | 2 +-
+ 8 files changed, 37 insertions(+), 7 deletions(-)
+
+diff --git a/tmva/pymva/inc/TMVA/PyMethodBase.h b/tmva/pymva/inc/TMVA/PyMethodBase.h
+index 31a5caada9..a213c3fbad 100644
+--- a/tmva/pymva/inc/TMVA/PyMethodBase.h
++++ b/tmva/pymva/inc/TMVA/PyMethodBase.h
+@@ -53,6 +53,12 @@ namespace TMVA {
+ class MethodBoost;
+ class DataSetInfo;
+
++ /// Function to find current Python executable
++ /// used by ROOT
++ /// If Python2 is installed return "python"
++ /// Instead if "Python3" return "python3"
++ TString Python_Executable();
++
+ class PyMethodBase : public MethodBase {
+
+ friend class Factory;
+diff --git a/tmva/pymva/src/PyMethodBase.cxx b/tmva/pymva/src/PyMethodBase.cxx
+index 86f979e006..26b0f31135 100644
+--- a/tmva/pymva/src/PyMethodBase.cxx
++++ b/tmva/pymva/src/PyMethodBase.cxx
+@@ -19,6 +19,9 @@
+ #include "TMVA/MsgLogger.h"
+ #include "TMVA/Results.h"
+ #include "TMVA/Timer.h"
++#include "TMVA/Tools.h"
++
++#include "TSystem.h"
+
+ #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
+ #include <numpy/arrayobject.h>
+@@ -37,6 +40,23 @@ public:
+ ~PyGILRAII() { PyGILState_Release(m_GILState); }
+ };
+ } // namespace Internal
++
++/// get current Python executable used by ROOT
++TString Python_Executable() {
++ TString python_version = gSystem->GetFromPipe("root-config --python-version");
++ if (python_version.IsNull()) {
++ TMVA::gTools().Log() << kFATAL << "Can't find a valid Python version used to build ROOT" << Endl;
++ return nullptr;
++ }
++ if(python_version[0] == '2')
++ return "python";
++ else if (python_version[0] == '3')
++ return "python3";
++
++ TMVA::gTools().Log() << kFATAL << "Invalid Python version used to build ROOT : " << python_version << Endl;
++ return nullptr;
++}
++
+ } // namespace TMVA
+
+ ClassImp(PyMethodBase);
+diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt
+index de77aaa787..f1f1abda71 100644
+--- a/tutorials/CMakeLists.txt
++++ b/tutorials/CMakeLists.txt
+@@ -281,8 +281,11 @@ else()
+ endif()
+ if (NOT tmva-sofie)
+ list(APPEND tmva_veto tmva/TMVA_SOFIE_ONNX.C)
++ else()
++ #copy ONNX file needed for the tutorial
++ configure_file(${CMAKE_SOURCE_DIR}/tmva/sofie/test/input_models/Linear_16.onnx ${CMAKE_BINARY_DIR}/tutorials/tmva/Linear_16.onnx COPYONLY)
+ endif()
+-
++
+ endif()
+
+ if (NOT ROOT_pythia6_FOUND)
+diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C
+index fa03562a8f..31172bb729 100644
+--- a/tutorials/tmva/TMVA_CNN_Classification.C
++++ b/tutorials/tmva/TMVA_CNN_Classification.C
+@@ -145,6 +145,7 @@ void TMVA_CNN_Classification(std::vector<bool> opt = {1, 1, 1, 1, 1})
+ TMVA::PyMethodBase::PyInitialize();
+ #else
+ useKerasCNN = false;
++ usePyTorchCNN = false;
+ #endif
+
+ TFile *outputFile = nullptr;
+@@ -445,7 +446,7 @@ void TMVA_CNN_Classification(std::vector<bool> opt = {1, 1, 1, 1, 1})
+
+ m.SaveSource("make_cnn_model.py");
+ // execute
+- gSystem->Exec("python make_cnn_model.py");
++ gSystem->Exec(TMVA::Python_Executable() + " make_cnn_model.py");
+
+ if (gSystem->AccessPathName("model_cnn.h5")) {
+ Warning("TMVA_CNN_Classification", "Error creating Keras model file - skip using Keras");
+@@ -465,7 +466,7 @@ void TMVA_CNN_Classification(std::vector<bool> opt = {1, 1, 1, 1, 1})
+ Info("TMVA_CNN_Classification", "Using Convolutional PyTorch Model");
+ TString pyTorchFileName = gROOT->GetTutorialDir() + TString("/tmva/PyTorch_Generate_CNN_Model.py");
+ // check that pytorch can be imported and file defining the model and used later when booking the method is existing
+- if (gSystem->Exec("python -c 'import torch'") || gSystem->AccessPathName(pyTorchFileName) ) {
++ if (gSystem->Exec(TMVA::Python_Executable() + " -c 'import torch'") || gSystem->AccessPathName(pyTorchFileName) ) {
+ Warning("TMVA_CNN_Classification", "PyTorch is not installed or model building file is not existing - skip using PyTorch");
+ }
+ else {
+diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C
+index eb26d03a2f..b49e4d91c4 100644
+--- a/tutorials/tmva/TMVA_RNN_Classification.C
++++ b/tutorials/tmva/TMVA_RNN_Classification.C
+@@ -431,7 +431,7 @@ the option string
+
+ m.SaveSource("make_rnn_model.py");
+ // execute
+- gSystem->Exec("python make_rnn_model.py");
++ gSystem->Exec(TMVA::Python_Executable() + " make_rnn_model.py");
+
+ if (gSystem->AccessPathName(modelName)) {
+ Warning("TMVA_RNN_Classification", "Error creating Keras recurrent model file - Skip using Keras");
+diff --git a/tutorials/tmva/TMVA_SOFIE_Keras.C b/tutorials/tmva/TMVA_SOFIE_Keras.C
+index e9fdbba21a..a87269f7f4 100644
+--- a/tutorials/tmva/TMVA_SOFIE_Keras.C
++++ b/tutorials/tmva/TMVA_SOFIE_Keras.C
+@@ -45,7 +45,7 @@ void TMVA_SOFIE_Keras(){
+ TMacro m;
+ m.AddLine(pythonSrc);
+ m.SaveSource("make_keras_model.py");
+- gSystem->Exec("python make_keras_model.py");
++ gSystem->Exec(TMVA::Python_Executable() + " make_keras_model.py");
+
+ //Parsing the saved Keras .h5 file into RModel object
+ SOFIE::RModel model = SOFIE::PyKeras::Parse("KerasModel.h5");
+diff --git a/tutorials/tmva/TMVA_SOFIE_ONNX.C b/tutorials/tmva/TMVA_SOFIE_ONNX.C
+index 30148db4fa..bf66c38896 100644
+--- a/tutorials/tmva/TMVA_SOFIE_ONNX.C
++++ b/tutorials/tmva/TMVA_SOFIE_ONNX.C
+@@ -13,7 +13,7 @@ using namespace TMVA::Experimental;
+ void TMVA_SOFIE_ONNX(){
+ //Creating parser object to parse ONNX files
+ SOFIE::RModelParser_ONNX Parser;
+- SOFIE::RModel model = Parser.Parse("../../tmva/sofie/test/input_models/Linear_16.onnx");
++ SOFIE::RModel model = Parser.Parse(std::string(gROOT->GetTutorialsDir()) + "/tmva/Linear_16.onnx");
+
+ //Generating inference code
+ model.Generate();
+diff --git a/tutorials/tmva/TMVA_SOFIE_PyTorch.C b/tutorials/tmva/TMVA_SOFIE_PyTorch.C
+index b208b042d7..580787cae1 100644
+--- a/tutorials/tmva/TMVA_SOFIE_PyTorch.C
++++ b/tutorials/tmva/TMVA_SOFIE_PyTorch.C
+@@ -47,7 +47,7 @@ void TMVA_SOFIE_PyTorch(){
+ TMacro m;
+ m.AddLine(pythonSrc);
+ m.SaveSource("make_pytorch_model.py");
+- gSystem->Exec("python make_pytorch_model.py");
++ gSystem->Exec(TMVA::Python_Executable() + " make_pytorch_model.py");
+
+ //Parsing a PyTorch model requires the shape and data-type of input tensor
+ //Data-type of input tensor defaults to Float if not specified
+--
+2.35.1
+
diff --git a/root-fix-multicore-tests-with-few-cores.patch b/root-fix-multicore-tests-with-few-cores.patch
deleted file mode 100644
index 55ad56e..0000000
--- a/root-fix-multicore-tests-with-few-cores.patch
+++ /dev/null
@@ -1,168 +0,0 @@
-From 153f1c3de0e24f5678fd3a706f902ac12b11048e Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Sun, 18 Apr 2021 07:28:41 +0200
-Subject: [PATCH] Fix multicore tests when running on machines with few cores
-
-When running on machines with few cores, enabling multithreading can
-give you fewer cores than requested. For most of the tests this does
-not matter. However, some tests verify the number of threads used.
-This commit adapts those tests for this situation.
----
- tree/dataframe/test/dataframe_concurrency.cxx | 18 +++++++++-------
- tree/dataframe/test/dataframe_interface.cxx | 7 +++++--
- tree/dataframe/test/dataframe_simple.cxx | 2 +-
- tree/dataframe/test/dataframe_snapshot.cxx | 6 ++++--
- .../test/treeprocmt/treeprocessormt.cxx | 21 +++++++++++++++----
- 5 files changed, 37 insertions(+), 17 deletions(-)
-
-diff --git a/tree/dataframe/test/dataframe_concurrency.cxx b/tree/dataframe/test/dataframe_concurrency.cxx
-index d1b25493e5..a4bce595f8 100644
---- a/tree/dataframe/test/dataframe_concurrency.cxx
-+++ b/tree/dataframe/test/dataframe_concurrency.cxx
-@@ -57,33 +57,35 @@ TEST(RDFConcurrency, NestedParallelismBetweenDefineCalls)
- // [DF] Warn on mismatch between slot pool size and effective number of slots
- TEST(RDFSimpleTests, ThrowOnPoolSizeMismatch)
- {
-+ const unsigned int nslots = std::min(3u, std::thread::hardware_concurrency());
-+
- // pool created after RDF
-- {
-+ if (nslots > 1) {
- ROOT::RDataFrame df(1);
-- ROOT::EnableImplicitMT(3);
-+ ROOT::EnableImplicitMT(nslots);
- try {
- df.Count().GetValue();
- } catch (const std::runtime_error &e) {
- const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the number of slots required "
-- "was 1, but when starting the event loop it was 3. Maybe EnableImplicitMT() was "
-+ "was 1, but when starting the event loop it was " + std::to_string(nslots) + ". Maybe EnableImplicitMT() was "
- "called after the RDataFrame was constructed?";
-- EXPECT_STREQ(e.what(), expected_msg);
-+ EXPECT_STREQ(e.what(), expected_msg.c_str());
- }
- ROOT::DisableImplicitMT();
- }
-
- // pool deleted after RDF creation
-- {
-- ROOT::EnableImplicitMT(3);
-+ if (nslots > 1) {
-+ ROOT::EnableImplicitMT(nslots);
- ROOT::RDataFrame df(1);
- ROOT::DisableImplicitMT();
- try {
- df.Count().GetValue();
- } catch (const std::runtime_error &e) {
- const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the number of slots required "
-- "was 3, but when starting the event loop it was 1. Maybe DisableImplicitMT() was "
-+ "was " + std::to_string(nslots) + ", but when starting the event loop it was 1. Maybe DisableImplicitMT() was "
- "called after the RDataFrame was constructed?";
-- EXPECT_STREQ(e.what(), expected_msg);
-+ EXPECT_STREQ(e.what(), expected_msg.c_str());
- }
- }
- }
-diff --git a/tree/dataframe/test/dataframe_interface.cxx b/tree/dataframe/test/dataframe_interface.cxx
-index afdd8360ef..90e052f1a7 100644
---- a/tree/dataframe/test/dataframe_interface.cxx
-+++ b/tree/dataframe/test/dataframe_interface.cxx
-@@ -7,6 +7,8 @@
-
- #include "gtest/gtest.h"
-
-+#include <thread>
-+
- using namespace ROOT;
- using namespace ROOT::RDF;
-
-@@ -351,9 +353,10 @@ TEST(RDataFrameInterface, GetNSlots)
- ROOT::RDataFrame df0(1);
- EXPECT_EQ(1U, df0.GetNSlots());
- #ifdef R__USE_IMT
-- ROOT::EnableImplicitMT(3);
-+ unsigned int nslots = std::min(3U, std::thread::hardware_concurrency());
-+ ROOT::EnableImplicitMT(nslots);
- ROOT::RDataFrame df3(1);
-- EXPECT_EQ(3U, df3.GetNSlots());
-+ EXPECT_EQ(nslots, df3.GetNSlots());
- ROOT::DisableImplicitMT();
- ROOT::RDataFrame df1(1);
- EXPECT_EQ(1U, df1.GetNSlots());
-diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx
-index c6aba48b3e..e6b92be776 100644
---- a/tree/dataframe/test/dataframe_simple.cxx
-+++ b/tree/dataframe/test/dataframe_simple.cxx
-@@ -26,7 +26,7 @@ using namespace ROOT::VecOps;
- // Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially
- class RDFSimpleTests : public ::testing::TestWithParam<bool> {
- protected:
-- RDFSimpleTests() : NSLOTS(GetParam() ? 4u : 1u)
-+ RDFSimpleTests() : NSLOTS(GetParam() ? std::min(4u, std::thread::hardware_concurrency()) : 1u)
- {
- if (GetParam())
- ROOT::EnableImplicitMT(NSLOTS);
-diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx
-index 3ce9254442..92444feff1 100644
---- a/tree/dataframe/test/dataframe_snapshot.cxx
-+++ b/tree/dataframe/test/dataframe_snapshot.cxx
-@@ -10,6 +10,7 @@
- #include "gtest/gtest.h"
- #include <limits>
- #include <memory>
-+#include <thread>
- using namespace ROOT; // RDataFrame
- using namespace ROOT::RDF; // RInterface
- using namespace ROOT::VecOps; // RVec
-@@ -1041,9 +1042,10 @@ TEST(RDFSnapshotMore, EmptyBuffersMT)
- {
- const auto fname = "emptybuffersmt.root";
- const auto treename = "t";
-- ROOT::EnableImplicitMT(4);
-+ const unsigned int nslots = std::min(4U, std::thread::hardware_concurrency());
-+ ROOT::EnableImplicitMT(nslots);
- ROOT::RDataFrame d(10);
-- auto dd = d.DefineSlot("x", [](unsigned int s) { return s == 3 ? 0 : 1; })
-+ auto dd = d.DefineSlot("x", [&](unsigned int s) { return s == nslots - 1 ? 0 : 1; })
- .Filter([](int x) { return x == 0; }, {"x"}, "f");
- auto r = dd.Report();
- dd.Snapshot<int>(treename, fname, {"x"});
-diff --git a/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx b/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx
-index 5d5b2cbf42..963ce8a1b1 100644
---- a/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx
-+++ b/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx
-@@ -294,14 +294,27 @@ TEST(TreeProcessorMT, LimitNTasks_CheckEntries)
- }
- };
-
-- ROOT::EnableImplicitMT(4);
-+ const unsigned int nslots = std::min(4U, std::thread::hardware_concurrency());
-+ ROOT::EnableImplicitMT(nslots);
-
- ROOT::TTreeProcessorMT p(filename, treename);
- p.Process(f);
-
-- EXPECT_EQ(nTasks, 96U) << "Wrong number of tasks generated!\n";
-- EXPECT_EQ(nEntriesCountsMap[10], 65U) << "Wrong number of tasks with 10 clusters each!\n";
-- EXPECT_EQ(nEntriesCountsMap[11], 31U) << "Wrong number of tasks with 11 clusters each!\n";
-+ if (nslots == 4) {
-+ EXPECT_EQ(nTasks, 96U) << "Wrong number of tasks generated!\n";
-+ EXPECT_EQ(nEntriesCountsMap[10], 65U) << "Wrong number of tasks with 10 clusters each!\n";
-+ EXPECT_EQ(nEntriesCountsMap[11], 31U) << "Wrong number of tasks with 11 clusters each!\n";
-+ }
-+ else if (nslots == 2) {
-+ EXPECT_EQ(nTasks, 48U) << "Wrong number of tasks generated!\n";
-+ EXPECT_EQ(nEntriesCountsMap[20], 17U) << "Wrong number of tasks with 20 clusters each!\n";
-+ EXPECT_EQ(nEntriesCountsMap[21], 31U) << "Wrong number of tasks with 21 clusters each!\n";
-+ }
-+ else if (nslots == 1) {
-+ EXPECT_EQ(nTasks, 24U) << "Wrong number of tasks generated!\n";
-+ EXPECT_EQ(nEntriesCountsMap[41], 17U) << "Wrong number of tasks with 41 clusters each!\n";
-+ EXPECT_EQ(nEntriesCountsMap[42], 7U) << "Wrong number of tasks with 42 clusters each!\n";
-+ }
-
- gSystem->Unlink(filename);
- ROOT::DisableImplicitMT();
---
-2.30.2
-
diff --git a/root-fix-ppc64le-compilation-with-gcc-10.patch b/root-fix-ppc64le-compilation-with-gcc-10.patch
deleted file mode 100644
index 2624de8..0000000
--- a/root-fix-ppc64le-compilation-with-gcc-10.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 5b8e969ca045aa238c685009e0aa48d74cbdbf22 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 13 Mar 2020 17:09:03 +0100
-Subject: [PATCH 1/2] Fix ppc64le compilation with gcc 10
-
-Reapply fix lost in the LLVM 9 upgrade. This fix is in LLVM 10.
-
-Backported from llvm upstream
-https://reviews.llvm.org/D74129
----
- interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp b/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp
-index c8ed42d266..16bb00d2e9 100644
---- a/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp
-+++ b/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp
-@@ -2546,7 +2546,7 @@ bool Lexer::SkipBlockComment(Token &Result, const char *CurPtr,
- '/', '/', '/', '/', '/', '/', '/', '/'
- };
- while (CurPtr+16 <= BufferEnd &&
-- !vec_any_eq(*(const vector unsigned char*)CurPtr, Slashes))
-+ !vec_any_eq(*(const __vector unsigned char*)CurPtr, Slashes))
- CurPtr += 16;
- #else
- // Scan for '/' quickly. Many block comments are very large.
---
-2.30.2
-
diff --git a/root-get-src.sh b/root-get-src.sh
new file mode 100755
index 0000000..d83c34a
--- /dev/null
+++ b/root-get-src.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+VERSION=$1
+wget -N https://root.cern/download/root_v${VERSION}.source.tar.gz
+tar -z -x -f root_v${VERSION}.source.tar.gz
+find root-${VERSION}/fonts -type f -a '!' -name 'STIX*' -exec rm {} ';'
+tar -J -c --group root --owner root -f root-${VERSION}.tar.xz root-${VERSION}
diff --git a/root-jsmva-static.patch b/root-jsmva-static.patch
index a81848a..2550f4d 100644
--- a/root-jsmva-static.patch
+++ b/root-jsmva-static.patch
@@ -29,7 +29,7 @@ diff -ur root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.24.02/etc/noteb
(function(factory){
-- var JSROOT_source_dir = "https://root.cern.ch/js/notebook/scripts/";
+- var JSROOT_source_dir = "https://root.cern/js/5.9.1/scripts/";
+ var JSROOT_source_dir = "/static/scripts/";
var url = "";
diff --git a/root-longlong.patch b/root-longlong.patch
new file mode 100644
index 0000000..856e015
--- /dev/null
+++ b/root-longlong.patch
@@ -0,0 +1,52 @@
+From 7fe5ef049baf614626d985b05cb0b335f9764a3c Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 16:15:00 +0100
+Subject: [PATCH] Fix test when long is 32 bits
+
+This test tests support for 64 bit values. But it uses a long type,
+which fails on platforme where a long is 32 bits.
+
+This commit changes the test to use a long long type instead.
+---
+ tree/dataframe/test/dataframe_snapshot.cxx | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx
+index 05354e83d5..a30440558e 100644
+--- a/tree/dataframe/test/dataframe_snapshot.cxx
++++ b/tree/dataframe/test/dataframe_snapshot.cxx
+@@ -470,11 +470,11 @@ void ReadWriteCarray(const char *outFileNameBase)
+ auto size = 0;
+ int v[maxArraySize];
+ bool vb[maxArraySize];
+- long int vl[maxArraySize];
++ long long int vl[maxArraySize];
+ t.Branch("size", &size, "size/I");
+ t.Branch("v", v, "v[size]/I");
+ t.Branch("vb", vb, "vb[size]/O");
+- t.Branch("vl", vl, "vl[size]/G");
++ t.Branch("vl", vl, "vl[size]/L");
+
+ // Size 1
+ size = 1;
+@@ -518,7 +518,7 @@ void ReadWriteCarray(const char *outFileNameBase)
+ TTreeReader r(treename, &f2);
+ TTreeReaderArray<int> rv(r, "v");
+ TTreeReaderArray<bool> rvb(r, "vb");
+- TTreeReaderArray<long int> rvl(r, "vl");
++ TTreeReaderArray<long long int> rvl(r, "vl");
+
+ // Size 1
+ EXPECT_TRUE(r.Next());
+@@ -571,7 +571,7 @@ void ReadWriteCarray(const char *outFileNameBase)
+
+ const auto outfname2 = outFileNameBaseStr + "_out2.root";
+ RDataFrame(treename, fname)
+- .Snapshot<int, RVec<int>, RVec<bool>, RVec<long int>>(treename, outfname2, {"size", "v", "vb", "vl"});
++ .Snapshot<int, RVec<int>, RVec<bool>, RVec<long long int>>(treename, outfname2, {"size", "v", "vb", "vl"});
+ outputChecker(outfname2.c_str());
+
+ gSystem->Unlink(fname.c_str());
+--
+2.35.1
+
diff --git a/root-make-dyld-based-library-search-behavior-default.patch b/root-make-dyld-based-library-search-behavior-default.patch
new file mode 100644
index 0000000..9b88576
--- /dev/null
+++ b/root-make-dyld-based-library-search-behavior-default.patch
@@ -0,0 +1,147 @@
+From 6ae602bba7d33c900a117c9de0187ab5a28e14b8 Mon Sep 17 00:00:00 2001
+From: Vassil Vassilev <v.g.vassilev(a)gmail.com>
+Date: Mon, 21 Mar 2022 22:16:54 +0000
+Subject: [PATCH] Make the dyld-based library search behavior default for
+ non-modules.
+
+The dyld-based system was developed in the context on C++ modules but it turned
+into a modules-agnostic feature. Instead of having to maintain more code, we
+should rely on it even for non-modules build of ROOT.
+---
+ core/metacling/src/TCling.cxx | 109 +++-------------------------------
+ 1 file changed, 8 insertions(+), 101 deletions(-)
+
+diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx
+index dec399cf2b..3eae1c8570 100644
+--- a/core/metacling/src/TCling.cxx
++++ b/core/metacling/src/TCling.cxx
+@@ -6501,14 +6501,18 @@ bool TCling::LibraryLoadingFailed(const std::string& errmessage, const std::stri
+ return false;
+ }
+
+-static void* LazyFunctionCreatorAutoloadForModule(const std::string &mangled_name,
+- const cling::DynamicLibraryManager &DLM) {
++////////////////////////////////////////////////////////////////////////////////
++/// Autoload a library based on a missing symbol.
++
++void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) {
++
++ const cling::DynamicLibraryManager &DLM = *GetInterpreterImpl()->getDynamicLibraryManager();
+ R__LOCKGUARD(gInterpreterMutex);
+
+ auto LibLoader = [](const std::string& LibName) -> bool {
+ if (gSystem->Load(LibName.c_str(), "", false) < 0) {
+- Error("TCling__LazyFunctionCreatorAutoloadForModule",
+- "Failed to load library %s", LibName.c_str());
++ ::Error("TCling__LazyFunctionCreatorAutoloadForModule",
++ "Failed to load library %s", LibName.c_str());
+ return false;
+ }
+ return true; //success.
+@@ -6536,103 +6540,6 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string &mangled_nam
+ return nullptr;
+
+ return llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name);
+-
+-}
+-
+-////////////////////////////////////////////////////////////////////////////////
+-/// Autoload a library based on a missing symbol.
+-
+-void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) {
+- if (fCxxModulesEnabled)
+- return LazyFunctionCreatorAutoloadForModule(mangled_name,
+- *GetInterpreterImpl()->getDynamicLibraryManager());
+-
+- // First see whether the symbol is in the library that we are currently
+- // loading. It will have access to the symbols of its dependent libraries,
+- // thus checking "back()" is sufficient.
+- if (!fRegisterModuleDyLibs.empty()) {
+- if (void* addr = dlsym(fRegisterModuleDyLibs.back(),
+- mangled_name.c_str())) {
+- return addr;
+- }
+- }
+-
+- int err = 0;
+- char* demangled_name_c = TClassEdit::DemangleName(mangled_name.c_str(), err);
+- if (err) {
+- return 0;
+- }
+-
+- std::string name(demangled_name_c);
+- free(demangled_name_c);
+-
+- //fprintf(stderr, "demangled name: '%s'\n", demangled_name);
+- //
+- // Separate out the class or namespace part of the
+- // function name.
+- //
+-
+- std::string::size_type pos = name.find("__thiscall ");
+- if (pos != std::string::npos) {
+- name.erase(0, pos + sizeof("__thiscall ")-1);
+- }
+- pos = name.find("__cdecl ");
+- if (pos != std::string::npos) {
+- name.erase(0, pos + sizeof("__cdecl ")-1);
+- }
+- if (!strncmp(name.c_str(), "typeinfo for ", sizeof("typeinfo for ")-1)) {
+- name.erase(0, sizeof("typeinfo for ")-1);
+- } else if (!strncmp(name.c_str(), "vtable for ", sizeof("vtable for ")-1)) {
+- name.erase(0, sizeof("vtable for ")-1);
+- } else if (!strncmp(name.c_str(), "operator", sizeof("operator")-1)
+- && !isalnum(name[sizeof("operator")])) {
+- // operator...(A, B) - let's try with A!
+- name.erase(0, sizeof("operator")-1);
+- pos = name.rfind('(');
+- if (pos != std::string::npos) {
+- name.erase(0, pos + 1);
+- pos = name.find(",");
+- if (pos != std::string::npos) {
+- // remove next arg up to end, leaving only the first argument type.
+- name.erase(pos);
+- }
+- pos = name.rfind(" const");
+- if (pos != std::string::npos) {
+- name.erase(pos, strlen(" const"));
+- }
+- while (!name.empty() && strchr("&*", name.back()))
+- name.erase(name.length() - 1);
+- }
+- } else {
+- TClassEdit::FunctionSplitInfo fsi;
+- TClassEdit::SplitFunction(name, fsi);
+- name = fsi.fScopeName;
+- }
+- //fprintf(stderr, "name: '%s'\n", name.c_str());
+- // Now we have the class or namespace name, so do the lookup.
+- TString libs = GetClassSharedLibs(name.c_str());
+- if (libs.IsNull()) {
+- // Not found in the map, all done.
+- return 0;
+- }
+- //fprintf(stderr, "library: %s\n", iter->second.c_str());
+- // Now we have the name of the libraries to load, so load them.
+-
+- TString lib;
+- Ssiz_t posLib = 0;
+- while (libs.Tokenize(lib, posLib)) {
+- if (gSystem->Load(lib, "", kFALSE /*system*/) < 0) {
+- // The library load failed, all done.
+- //fprintf(stderr, "load failed: %s\n", errmsg.c_str());
+- return 0;
+- }
+- }
+-
+- //fprintf(stderr, "load succeeded.\n");
+- // Get the address of the function being called.
+- void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str());
+- //fprintf(stderr, "addr: %016lx\n", reinterpret_cast<unsigned long>(addr));
+- return addr;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+--
+2.35.1
+
diff --git a/root-memory-usage.patch b/root-memory-usage.patch
index aad7f1c..713d565 100644
--- a/root-memory-usage.patch
+++ b/root-memory-usage.patch
@@ -1,43 +1,30 @@
-From 21395b23947df7e2b5e0c93626453aeacdee026c Mon Sep 17 00:00:00 2001
+From 5618a02bd7ca4107f545e07a19b8a0762f31e45a Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Tue, 16 Jan 2018 10:25:50 +0100
-Subject: [PATCH] Reduce the needed memory for compilation
+Date: Mon, 16 Aug 2021 19:45:00 +0200
+Subject: [PATCH] Reduce memory usage for all builds - not only debug builds
-The linking of rootcling_stage1 and libCling requires a lot of memory.
-Since these are linked from mostly the same objects, the build is
-ready to link them at the same time. If you make a parallel build this
-means that the two targets that require the most amount of memory are
-being linked in parallel. This exhausts the available memory, and the
-computer starts swapping.
-
-This commit adds a dependency of one of the targets to the other. The
-dependency is not really there since it is not needed for building,
-but it prevents the two memory consuming targets to be built in
-parallel.
-
-A similar dependency existed before the latest code changes (see
-commit 2638f6fc7f54b0995f2f9d60363daaf8aae2386e), then between
-rootcling and libCling.
---
- core/metacling/src/CMakeLists.txt | 5 +++++
- 1 file changed, 5 insertions(+)
+ core/metacling/src/CMakeLists.txt | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt
-index 2923345f7c..b44a4d4115 100644
+index 8cbbe4ba08..f205b24602 100644
--- a/core/metacling/src/CMakeLists.txt
+++ b/core/metacling/src/CMakeLists.txt
-@@ -114,6 +114,11 @@ ROOT_LINKER_LIBRARY(Cling
+@@ -107,11 +107,8 @@ ROOT_LINKER_LIBRARY(Cling
$<TARGET_OBJECTS:MetaCling>
LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS} ${CLING_PLUGIN_LINK_LIBS})
-+# The dependency on rootcling_stage1 was added to prevent Cling (libCling) and
-+# rootcling_stage1 from being linked in parallel.
-+# This avoids doing two memory consuming operations in parallel.
+-string(TOUPPER "${LLVM_BUILD_TYPE}" THE_BUILD_TYPE)
+-if("${THE_BUILD_TYPE}" STREQUAL DEBUG OR "${THE_BUILD_TYPE}" STREQUAL RELWITHDEBINFO)
+- # When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm.
+- add_dependencies(Cling rootcling_stage1)
+-endif()
++# When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm.
+add_dependencies(Cling rootcling_stage1)
-+
+
if(MSVC)
set_target_properties(Cling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
- set(cling_exports
--
-2.26.2
+2.35.1
diff --git a/root-missing-include.patch b/root-missing-include.patch
new file mode 100644
index 0000000..8c6bc17
--- /dev/null
+++ b/root-missing-include.patch
@@ -0,0 +1,32 @@
+From 235e446b0ac14170e49c15d5725fbe6dd315351f Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Tue, 15 Mar 2022 09:08:39 +0100
+Subject: [PATCH] Add #include <cstring> for std::memcpy
+
+In file included from /builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/RModel.hxx:14,
+ from /builddir/build/BUILD/root-6.26.00/tmva/sofie/src/RModel.cxx:3:
+/builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/SOFIE_common.hxx: In member function 'void TMVA::Experimental::SOFIE::InitializedTensor::CastPersistentToShared()':
+/builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/SOFIE_common.hxx:75:12: error: 'memcpy' is not a member of 'std'; did you mean 'wmemcpy'?
+ 75 | std::memcpy(tData.get(), fPersistentData,fSize * sizeof(float));
+ | ^~~~~~
+ | wmemcpy
+gmake[2]: *** [tmva/sofie/CMakeFiles/ROOTTMVASofie.dir/build.make:79: tmva/sofie/CMakeFiles/ROOTTMVASofie.dir/src/RModel.cxx.o] Error 1
+---
+ tmva/sofie/inc/TMVA/SOFIE_common.hxx | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tmva/sofie/inc/TMVA/SOFIE_common.hxx b/tmva/sofie/inc/TMVA/SOFIE_common.hxx
+index a663855004..7876727eef 100644
+--- a/tmva/sofie/inc/TMVA/SOFIE_common.hxx
++++ b/tmva/sofie/inc/TMVA/SOFIE_common.hxx
+@@ -6,6 +6,7 @@
+
+ #include <type_traits>
+ #include <cstdint>
++#include <cstring>
+ #include <string>
+ #include <vector>
+ #include <memory>
+--
+2.35.1
+
diff --git a/root-move-private-decl.patch b/root-move-private-decl.patch
new file mode 100644
index 0000000..aa81617
--- /dev/null
+++ b/root-move-private-decl.patch
@@ -0,0 +1,405 @@
+From 9cdd51029f54aba874608f34580ea0ba94b670c7 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 17 Mar 2022 07:40:28 +0100
+Subject: [PATCH] Move private declarations away from the public header file
+
+This fixes warnings such as these:
+
+IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE8INTERNAL19make_ROperator_SeluERKN4onnx9NodeProtoERKNS3_10GraphProtoERSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11ETensorTypeESt4hashISG_ESt8equal_toISG_ESaISt4pairIKSG_SH_EEE' unresolved while linking function '_GLOBAL__sub_I_cling_module_0'!
+You are probably missing the definition of TMVA::Experimental::SOFIE::INTERNAL::make_ROperator_Selu(onnx::NodeProto const&, onnx::GraphProto const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, TMVA::Experimental::SOFIE::ETensorType, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TMVA::Experimental::SOFIE::ETensorType> > >&)
+Maybe you need to load the corresponding shared library?
+---
+ .../inc/TMVA/RModelParser_ONNX.hxx | 61 -------
+ tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 164 +++++++++++++++---
+ 2 files changed, 139 insertions(+), 86 deletions(-)
+
+diff --git a/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx b/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx
+index 9e9764c0b6..09bcd34fe1 100644
+--- a/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx
++++ b/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx
+@@ -1,81 +1,20 @@
+ #ifndef TMVA_SOFIE_RMODELPARSER_ONNX
+ #define TMVA_SOFIE_RMODELPARSER_ONNX
+
+-
+-
+ #include "TMVA/SOFIE_common.hxx"
+ #include "TMVA/RModel.hxx"
+-#include "TMVA/OperatorList.hxx"
+
+ #include <string>
+-#include <fstream>
+-#include <memory>
+-#include <ctime>
+-
+-//forward delcaration
+-namespace onnx{
+- class NodeProto;
+- class GraphProto;
+-}
+
+ namespace TMVA{
+ namespace Experimental{
+ namespace SOFIE{
+
+-namespace INTERNAL{
+-
+-std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_BatchNormalization(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto &nodeproto, const onnx::GraphProto &graphproto, std::unordered_map<std::string, ETensorType> &tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto &nodeproto, const onnx::GraphProto &graphproto, std::unordered_map<std::string, ETensorType> &tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto &nodeproto, const onnx::GraphProto &graphproto, std::unordered_map<std::string, ETensorType> &tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-
+-
+-using factoryMethodMap = std::unordered_map<std::string, std::unique_ptr<ROperator> (*)(const onnx::NodeProto&, const onnx::GraphProto&, std::unordered_map<std::string, ETensorType>&)>;
+-const factoryMethodMap mapOptypeOperator = {
+- {"Gemm", &make_ROperator_Gemm},
+- {"Transpose", &make_ROperator_Transpose},
+- {"Relu", &make_ROperator_Relu},
+- {"Conv", &make_ROperator_Conv},
+- {"RNN", &make_ROperator_RNN},
+- {"Selu", &make_ROperator_Selu},
+- {"Sigmoid", &make_ROperator_Sigmoid},
+- {"LSTM", &make_ROperator_LSTM},
+- {"GRU", &make_ROperator_GRU},
+- {"BatchNormalization", &make_ROperator_BatchNormalization},
+- {"AveragePool", &make_ROperator_Pool},
+- {"GlobalAveragePool", &make_ROperator_Pool},
+- {"MaxPool", &make_ROperator_Pool},
+- {"Add", &make_ROperator_Add},
+- {"Reshape", &make_ROperator_Reshape},
+- {"Flatten", &make_ROperator_Reshape},
+- {"Slice", &make_ROperator_Slice},
+- {"Squeeze", &make_ROperator_Reshape},
+- {"Unsqueeze", &make_ROperator_Reshape},
+- {"Flatten", &make_ROperator_Reshape}
+-};
+-
+-std::unique_ptr<ROperator> make_ROperator(size_t idx, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-}//INTERNAL
+-
+-
+-
+ class RModelParser_ONNX{
+ public:
+ RModel Parse(std::string filename);
+ };
+
+-
+-
+ }//SOFIE
+ }//Experimental
+ }//TMVA
+diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
+index 3b0a30cdb0..5f89bf66bd 100644
+--- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
++++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
+@@ -1,9 +1,12 @@
+ #include "TMVA/RModelParser_ONNX.hxx"
++#include "TMVA/OperatorList.hxx"
+ #include "onnx_proto3.pb.h"
+
+ #include <string>
++#include <fstream>
+ #include <memory>
+ #include <cassert>
++#include <ctime>
+
+ namespace TMVA{
+ namespace Experimental{
+@@ -11,7 +14,84 @@ namespace SOFIE{
+
+ namespace INTERNAL{
+
+-std::unique_ptr<ROperator> make_ROperator(size_t idx, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type){
++static std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_BatchNorm(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++using factoryMethodMap =
++ std::unordered_map<std::string, std::unique_ptr<ROperator> (*)(const onnx::NodeProto &, const onnx::GraphProto &,
++ std::unordered_map<std::string, ETensorType> &)>;
++
++static const factoryMethodMap mapOptypeOperator = {
++ {"Gemm", &make_ROperator_Gemm}, {"Transpose", &make_ROperator_Transpose},
++ {"Relu", &make_ROperator_Relu}, {"Conv", &make_ROperator_Conv},
++ {"RNN", &make_ROperator_RNN}, {"Selu", &make_ROperator_Selu},
++ {"Sigmoid", &make_ROperator_Sigmoid}, {"LSTM", &make_ROperator_LSTM},
++ {"GRU", &make_ROperator_GRU}, {"BatchNormalization", &make_ROperator_BatchNorm},
++ {"AveragePool", &make_ROperator_Pool}, {"GlobalAveragePool", &make_ROperator_Pool},
++ {"MaxPool", &make_ROperator_Pool}, {"Add", &make_ROperator_Add},
++ {"Reshape", &make_ROperator_Reshape}, {"Flatten", &make_ROperator_Reshape},
++ {"Slice", &make_ROperator_Slice}, {"Squeeze", &make_ROperator_Reshape},
++ {"Unsqueeze", &make_ROperator_Reshape}, {"Flatten", &make_ROperator_Reshape}};
++
++static std::unique_ptr<ROperator> make_ROperator(size_t idx, const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator(size_t idx, const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+ const auto& nodeproto = graphproto.node(idx);
+ auto find = mapOptypeOperator.find(nodeproto.op_type());
+ if (find == mapOptypeOperator.end()){
+@@ -24,7 +104,10 @@ std::unique_ptr<ROperator> make_ROperator(size_t idx, const onnx::GraphProto& gr
+ }
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type){
++static std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type = ETensorType::UNDEFINED;
+
+@@ -59,7 +142,11 @@ std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto& nodeproto,
+
+ return op;
+ }
+-std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto*/, std::unordered_map<std::string, ETensorType>& tensor_type){
++
++static std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto*/,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -99,7 +186,10 @@ std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto& nodep
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type){
++static std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -131,7 +221,10 @@ std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto& nodeproto,
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type){
++static std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -163,7 +256,10 @@ std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto& nodeproto,
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type){
++static std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -195,7 +291,10 @@ std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto& nodepro
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type){
++static std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /* graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -252,7 +351,11 @@ std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto& nodeproto,
+
+ return op;
+ }
+-std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type) {
++
++static std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /* graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -344,7 +447,10 @@ std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto& nodeproto,
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type) {
++static std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /* graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -408,7 +514,10 @@ std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto& nodeproto,
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type) {
++static std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /* graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -485,14 +594,13 @@ std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto& nodeproto,
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto &nodeproto,
+- const onnx::GraphProto & /*graphproto */,
+- std::unordered_map<std::string, ETensorType> &tensor_type)
++static std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
+ {
+ // make Reshape operator
+ ETensorType input_type = ETensorType::UNDEFINED;
+
+-
+ ReshapeOpMode opMode = Reshape;
+ if (nodeproto.op_type() == "Flatten")
+ opMode = Flatten;
+@@ -501,7 +609,6 @@ std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto &nodepro
+ else if (nodeproto.op_type() == "Unsqueeze")
+ opMode = Unsqueeze;
+
+-
+ //bool hasShapeInput = (opMode == Reshape) ? true : false;
+
+ // reshape has as extra input shape tensor (int64) but
+@@ -553,9 +660,9 @@ std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto &nodepro
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto &nodeproto,
+- const onnx::GraphProto & /*graphproto */,
+- std::unordered_map<std::string, ETensorType> &tensor_type)
++static std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
+ {
+ // make Slice operator
+ ETensorType input_type = ETensorType::UNDEFINED;
+@@ -634,7 +741,10 @@ std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto &nodeproto
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type) {
++static std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /* graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -722,7 +832,10 @@ std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto& nodeproto,
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type) {
++static std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /* graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -825,9 +938,10 @@ std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto& nodeproto,
+
+ return op;
+ }
+-std::unique_ptr<ROperator> make_ROperator_BatchNormalization(const onnx::NodeProto &nodeproto,
+- const onnx::GraphProto &/*graphproto*/,
+- std::unordered_map<std::string, ETensorType> &tensor_type)
++
++static std::unique_ptr<ROperator> make_ROperator_BatchNorm(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto*/,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
+ {
+
+ ETensorType input_type;
+@@ -843,8 +957,8 @@ std::unique_ptr<ROperator> make_ROperator_BatchNormalization(const onnx::NodePro
+
+ std::unique_ptr<ROperator> op;
+ float fepsilon = 1e-05;
+- float fmomentum = 0.9;
+- std::size_t ftraining_mode = 0;
++ float fmomentum = 0.9;
++ std::size_t ftraining_mode = 0;
+
+ switch(input_type) {
+ case ETensorType::FLOAT:
+--
+2.35.1
+
diff --git a/root-namespace-pymva.patch b/root-namespace-pymva.patch
new file mode 100644
index 0000000..cd2fa57
--- /dev/null
+++ b/root-namespace-pymva.patch
@@ -0,0 +1,31 @@
+From 0a969f5376af248e76cbcee45c9bdb6463e18c05 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 21:20:07 +0100
+Subject: [PATCH 3/3] Add namespaces to LinkDef
+
+Fixes error:
+
+IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE7PyTorch5ParseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS9_ImSaImEESaISB_EE' unresolved while linking function '_GLOBAL__sub_I_cling_module_8'!
+You are probably missing the definition of TMVA::Experimental::SOFIE::PyTorch::Parse(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::vector<unsigned long, std::allocator<unsigned long> >, std::allocator<std::vector<unsigned long, std::allocator<unsigned long> > > >)
+Maybe you need to load the corresponding shared library?
+Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libPyMVA.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libPyMVA.so.6.26.00'?
+---
+ tmva/pymva/inc/LinkDef.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/tmva/pymva/inc/LinkDef.h b/tmva/pymva/inc/LinkDef.h
+index 92da99a4f7..83145077dd 100644
+--- a/tmva/pymva/inc/LinkDef.h
++++ b/tmva/pymva/inc/LinkDef.h
+@@ -15,6 +15,8 @@
+ #pragma link C++ class TMVA::MethodPyGTB+;
+ #pragma link C++ class TMVA::MethodPyKeras+;
+ #pragma link C++ class TMVA::MethodPyTorch+;
++#pragma link C++ namespace TMVA::Experimental::SOFIE::PyKeras;
+ #pragma link C++ function TMVA::Experimental::SOFIE::PyKeras::Parse+;
++#pragma link C++ namespace TMVA::Experimental::SOFIE::PyTorch;
+ #pragma link C++ function TMVA::Experimental::SOFIE::PyTorch::Parse+;
+ #endif
+--
+2.35.1
+
diff --git a/root-namespace-roofit.patch b/root-namespace-roofit.patch
new file mode 100644
index 0000000..c8aa92e
--- /dev/null
+++ b/root-namespace-roofit.patch
@@ -0,0 +1,43 @@
+From 4a4df0190ad24c0a3636994c2c23cb6c22e04589 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 15:41:33 +0100
+Subject: [PATCH 2/3] Remove namespace RooFit from libRooFitCore's LinkDef
+
+The namespace is listed in the LinkDef's for both libRooFit and libRooFitCore.
+
+ROOT only autoloads one of the libraries, for some reason usually
+libRooFitCore. After this only symbols in the namespace from that
+library are present. By removing the namespace from liRooFitCore's
+LinkDef, only libRooFit can be chosen when autoloading. Since
+libRooFit depends on libRooFitCore, both libraries are loaded, and the
+symbols from the namespace in both libraries are available.
+
+Fixes error:
+
+IncrementalExecutor::executeFunction: symbol '_ZN6RooFit12bindFunctionEPKcPFddER10RooAbsReal' unresolved while linking function '_GLOBAL__sub_I_cling_module_217'!
+You are probably missing the definition of RooFit::bindFunction(char const*, double (*)(double), RooAbsReal&)
+Maybe you need to load the corresponding shared library?
+Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libRooFit.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libRooFit.so.6.26.00'?
+---
+ roofit/roofitcore/inc/LinkDef.h | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/roofit/roofitcore/inc/LinkDef.h b/roofit/roofitcore/inc/LinkDef.h
+index d421fd95cd..72c66db33b 100644
+--- a/roofit/roofitcore/inc/LinkDef.h
++++ b/roofit/roofitcore/inc/LinkDef.h
+@@ -105,7 +105,10 @@
+
+
+ // Old LinkDef2.h
+-#pragma link C++ namespace RooFit ;
++
++// "namespace RooFit" is in roofit/roofit/inc/Linkdef1.h
++// should not be in the dictionary for two different libraries
++// #pragma link C++ namespace RooFit ;
+ #pragma link C++ namespace RooFitShortHand ;
+ #pragma link C++ class RooDouble+ ;
+ #pragma link C++ class RooEffGenContext+ ;
+--
+2.35.1
+
diff --git a/root-namespace-sofie.patch b/root-namespace-sofie.patch
new file mode 100644
index 0000000..a011634
--- /dev/null
+++ b/root-namespace-sofie.patch
@@ -0,0 +1,30 @@
+From c66ae9d9c035090584f465a41ce2e438e502be81 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 15:23:59 +0100
+Subject: [PATCH 1/3] Add namespace TMVA::Experimental::SOFIE to LinkDef
+
+Fixes error:
+
+IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE19ConvertTypeToStringB5cxx11ENS1_11ETensorTypeE' unresolved while linking function '_GLOBAL__sub_I_cling_module_8'!
+You are probably missing the definition of TMVA::Experimental::SOFIE::ConvertTypeToString[abi:cxx11](TMVA::Experimental::SOFIE::ETensorType)
+Maybe you need to load the corresponding shared library?
+Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libROOTTMVASofie.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libROOTTMVASofie.so.6.26.00'?
+---
+ tmva/sofie/inc/LinkDef.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tmva/sofie/inc/LinkDef.h b/tmva/sofie/inc/LinkDef.h
+index 715cf35560..3282ff22c1 100644
+--- a/tmva/sofie/inc/LinkDef.h
++++ b/tmva/sofie/inc/LinkDef.h
+@@ -7,6 +7,7 @@
+
+ #pragma link C++ nestedclass;
+
++#pragma link C++ namespace TMVA::Experimental::SOFIE;
+ #pragma link C++ class TMVA::Experimental::SOFIE::RModel-;
+ #pragma link C++ class TMVA::Experimental::SOFIE::ROperator+;
+ #pragma link C++ struct TMVA::Experimental::SOFIE::InitializedTensor+;
+--
+2.35.1
+
diff --git a/root-ntuplewait.patch b/root-ntuplewait.patch
new file mode 100644
index 0000000..b464b69
--- /dev/null
+++ b/root-ntuplewait.patch
@@ -0,0 +1,39 @@
+From ad043f8e3304aab4f0ee3ad9e0cf8480c4bbadf0 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 16:10:22 +0100
+Subject: [PATCH] Always call WaitForInFlightClusters before checking cluster
+ IDs
+
+---
+ tree/ntuple/v7/test/ntuple_cluster.cxx | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/tree/ntuple/v7/test/ntuple_cluster.cxx b/tree/ntuple/v7/test/ntuple_cluster.cxx
+index afc2fc32e9..0c299d97de 100644
+--- a/tree/ntuple/v7/test/ntuple_cluster.cxx
++++ b/tree/ntuple/v7/test/ntuple_cluster.cxx
+@@ -213,6 +213,7 @@ TEST(ClusterPool, GetClusterBasics)
+ RPageSourceMock p1;
+ RClusterPool c1(p1, 1);
+ c1.GetCluster(3, {0});
++ c1.WaitForInFlightClusters();
+ ASSERT_EQ(2U, p1.fReqsClusterIds.size());
+ EXPECT_EQ(3U, p1.fReqsClusterIds[0]);
+ EXPECT_EQ(4U, p1.fReqsClusterIds[1]);
+@@ -267,11 +268,13 @@ TEST(ClusterPool, GetClusterIncrementally)
+ RPageSourceMock p1;
+ RClusterPool c1(p1, 1);
+ c1.GetCluster(3, {0});
++ c1.WaitForInFlightClusters();
+ ASSERT_EQ(2U, p1.fReqsClusterIds.size());
+ EXPECT_EQ(3U, p1.fReqsClusterIds[0]);
+ EXPECT_EQ(RCluster::ColumnSet_t({0}), p1.fReqsColumns[0]);
+
+ c1.GetCluster(3, {1});
++ c1.WaitForInFlightClusters();
+ ASSERT_EQ(4U, p1.fReqsClusterIds.size());
+ EXPECT_EQ(3U, p1.fReqsClusterIds[2]);
+ EXPECT_EQ(RCluster::ColumnSet_t({1}), p1.fReqsColumns[2]);
+--
+2.35.1
+
diff --git a/root-old-gtest-compat.patch b/root-old-gtest-compat.patch
index bcba732..078a5f9 100644
--- a/root-old-gtest-compat.patch
+++ b/root-old-gtest-compat.patch
@@ -1,6 +1,39 @@
-diff -ur root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx root-6.24.02/hist/hist/test/test_THBinIterator.cxx
---- root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/hist/hist/test/test_THBinIterator.cxx 2021-08-06 22:59:45.039518775 +0200
+From 99e9ad9ea54369296537ceb012ccdcb333b5f513 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sat, 26 Mar 2022 10:55:38 +0100
+Subject: [PATCH 2/2] Backward compatibility with older googletest versions in
+ EPEL
+
+---
+ hist/hist/test/test_THBinIterator.cxx | 5 +++++
+ math/mathcore/test/stress/testGenVector.cxx | 10 ++++++++++
+ math/mathcore/test/stress/testSMatrix.cxx | 10 ++++++++++
+ math/mathcore/test/stress/testVector.cxx | 10 ++++++++++
+ math/mathcore/test/stress/testVector34.cxx | 10 ++++++++++
+ math/mathcore/test/testGradient.cxx | 4 ++++
+ math/mathcore/test/testGradientFitting.cxx | 10 ++++++++++
+ math/mathmore/test/testStress.cxx | 10 ++++++++++
+ roofit/histfactory/test/testHistFactory.cxx | 4 ++++
+ roofit/multiprocess/test/test_Job.cxx | 5 +++++
+ roofit/roofitZMQ/test/test_ZMQ.cpp | 4 ++++
+ roofit/roofitcore/test/TestStatistics/RooRealL.cpp | 4 ++++
+ .../test/TestStatistics/testLikelihoodGradientJob.cpp | 5 +++++
+ roofit/roofitcore/test/testProxiesAndCategories.cxx | 3 +++
+ roofit/roofitcore/test/testRooDataHist.cxx | 4 ++++
+ roofit/roofitcore/test/testRooGradMinimizerFcn.cxx | 5 +++++
+ tree/dataframe/test/dataframe_definepersample.cxx | 4 ++++
+ tree/dataframe/test/dataframe_merge_results.cxx | 2 +-
+ tree/dataframe/test/dataframe_regression.cxx | 4 ++++
+ tree/dataframe/test/dataframe_samplecallback.cxx | 4 ++++
+ tree/dataframe/test/dataframe_simple.cxx | 5 +++++
+ tree/dataframe/test/dataframe_vary.cxx | 4 ++++
+ tree/tree/test/TOffsetGeneration.cxx | 4 ++++
+ 23 files changed, 129 insertions(+), 1 deletion(-)
+
+diff --git a/hist/hist/test/test_THBinIterator.cxx b/hist/hist/test/test_THBinIterator.cxx
+index e30585b8cb..04f1e1487b 100644
+--- a/hist/hist/test/test_THBinIterator.cxx
++++ b/hist/hist/test/test_THBinIterator.cxx
@@ -1,5 +1,10 @@
#include "gtest/gtest.h"
@@ -12,9 +45,10 @@ diff -ur root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx root-6.24.02/hi
// test iterating histogram bins and using the new THistRange and
// THBinIterator classes
-diff -ur root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx root-6.24.02/math/mathcore/test/stress/testGenVector.cxx
---- root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathcore/test/stress/testGenVector.cxx 2021-08-06 09:31:38.795835283 +0200
+diff --git a/math/mathcore/test/stress/testGenVector.cxx b/math/mathcore/test/stress/testGenVector.cxx
+index 93c0bb6aec..b3259158da 100644
+--- a/math/mathcore/test/stress/testGenVector.cxx
++++ b/math/mathcore/test/stress/testGenVector.cxx
@@ -4,6 +4,16 @@
#include "gtest/gtest.h"
@@ -32,9 +66,10 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx root-6.24
#include "StatFunction.h"
#include "TestHelper.h"
#include "VectorTest.h"
-diff -ur root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx root-6.24.02/math/mathcore/test/stress/testSMatrix.cxx
---- root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathcore/test/stress/testSMatrix.cxx 2021-08-06 09:31:38.796835286 +0200
+diff --git a/math/mathcore/test/stress/testSMatrix.cxx b/math/mathcore/test/stress/testSMatrix.cxx
+index a4d7fc4cd5..a35d88b7c2 100644
+--- a/math/mathcore/test/stress/testSMatrix.cxx
++++ b/math/mathcore/test/stress/testSMatrix.cxx
@@ -7,6 +7,16 @@
#include "TestHelper.h"
#include "gtest/gtest.h"
@@ -52,9 +87,10 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx root-6.24.0
#include "VectorTest.h"
#include "TROOT.h"
#include "TSystem.h"
-diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx root-6.24.02/math/mathcore/test/stress/testVector34.cxx
---- root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathcore/test/stress/testVector34.cxx 2021-08-06 09:31:38.796835286 +0200
+diff --git a/math/mathcore/test/stress/testVector.cxx b/math/mathcore/test/stress/testVector.cxx
+index 72e933f0d5..938e27d83c 100644
+--- a/math/mathcore/test/stress/testVector.cxx
++++ b/math/mathcore/test/stress/testVector.cxx
@@ -4,6 +4,16 @@
#include "gtest/gtest.h"
@@ -70,11 +106,12 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx root-6.24.
+#endif
+
#include "StatFunction.h"
+ #include "TestHelper.h"
#include "VectorTest.h"
-
-diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx root-6.24.02/math/mathcore/test/stress/testVector.cxx
---- root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathcore/test/stress/testVector.cxx 2021-08-06 09:31:38.796835286 +0200
+diff --git a/math/mathcore/test/stress/testVector34.cxx b/math/mathcore/test/stress/testVector34.cxx
+index 4b31184559..80d6dd6314 100644
+--- a/math/mathcore/test/stress/testVector34.cxx
++++ b/math/mathcore/test/stress/testVector34.cxx
@@ -4,6 +4,16 @@
#include "gtest/gtest.h"
@@ -90,11 +127,12 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx root-6.24.02
+#endif
+
#include "StatFunction.h"
- #include "TestHelper.h"
#include "VectorTest.h"
-diff -ur root-6.24.02.orig/math/mathcore/test/testGradient.cxx root-6.24.02/math/mathcore/test/testGradient.cxx
---- root-6.24.02.orig/math/mathcore/test/testGradient.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathcore/test/testGradient.cxx 2021-08-06 09:31:38.796835286 +0200
+
+diff --git a/math/mathcore/test/testGradient.cxx b/math/mathcore/test/testGradient.cxx
+index 49a5391b7b..271e89e43c 100644
+--- a/math/mathcore/test/testGradient.cxx
++++ b/math/mathcore/test/testGradient.cxx
@@ -22,6 +22,10 @@
#include "gtest/gtest.h"
@@ -106,10 +144,11 @@ diff -ur root-6.24.02.orig/math/mathcore/test/testGradient.cxx root-6.24.02/math
#include <chrono>
#include <iostream>
#include <string>
-diff -ur root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx root-6.24.02/math/mathcore/test/testGradientFitting.cxx
---- root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathcore/test/testGradientFitting.cxx 2021-08-06 09:31:38.797835288 +0200
-@@ -12,6 +12,16 @@
+diff --git a/math/mathcore/test/testGradientFitting.cxx b/math/mathcore/test/testGradientFitting.cxx
+index f85f826d9f..1818d1c22f 100644
+--- a/math/mathcore/test/testGradientFitting.cxx
++++ b/math/mathcore/test/testGradientFitting.cxx
+@@ -13,6 +13,16 @@
#include "gtest/gtest.h"
@@ -126,9 +165,10 @@ diff -ur root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx root-6.24.
#include <iostream>
#include <string>
-diff -ur root-6.24.02.orig/math/mathmore/test/testStress.cxx root-6.24.02/math/mathmore/test/testStress.cxx
---- root-6.24.02.orig/math/mathmore/test/testStress.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathmore/test/testStress.cxx 2021-08-06 09:31:38.797835288 +0200
+diff --git a/math/mathmore/test/testStress.cxx b/math/mathmore/test/testStress.cxx
+index 47bcdd250f..5cf20e69a1 100644
+--- a/math/mathmore/test/testStress.cxx
++++ b/math/mathmore/test/testStress.cxx
@@ -26,6 +26,16 @@
#include "gtest/gtest.h"
@@ -146,9 +186,87 @@ diff -ur root-6.24.02.orig/math/mathmore/test/testStress.cxx root-6.24.02/math/m
using ::testing::TestWithParam;
using ::testing::Values;
-diff -ur root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx root-6.24.02/roofit/roofitcore/test/testProxiesAndCategories.cxx
---- root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/roofit/roofitcore/test/testProxiesAndCategories.cxx 2021-08-06 09:31:38.798835290 +0200
+diff --git a/roofit/histfactory/test/testHistFactory.cxx b/roofit/histfactory/test/testHistFactory.cxx
+index 71d7b632d2..9063e51070 100644
+--- a/roofit/histfactory/test/testHistFactory.cxx
++++ b/roofit/histfactory/test/testHistFactory.cxx
+@@ -22,6 +22,10 @@
+ #include "TCanvas.h"
+ #include "gtest/gtest.h"
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include <set>
+
+ using namespace RooStats;
+diff --git a/roofit/multiprocess/test/test_Job.cxx b/roofit/multiprocess/test/test_Job.cxx
+index 22e66fc73c..61cc11771d 100644
+--- a/roofit/multiprocess/test/test_Job.cxx
++++ b/roofit/multiprocess/test/test_Job.cxx
+@@ -24,6 +24,11 @@
+ #include "RooFit/MultiProcess/Queue.h" // ... JobManager::queue()
+
+ #include "gtest/gtest.h"
++
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include "utils.h"
+
+ class xSquaredPlusBVectorSerial {
+diff --git a/roofit/roofitZMQ/test/test_ZMQ.cpp b/roofit/roofitZMQ/test/test_ZMQ.cpp
+index 6dcceaff08..73e75be147 100644
+--- a/roofit/roofitZMQ/test/test_ZMQ.cpp
++++ b/roofit/roofitZMQ/test/test_ZMQ.cpp
+@@ -16,6 +16,10 @@
+
+ #include "gtest/gtest.h"
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include <unistd.h> // fork, usleep
+
+ #include <sstream>
+diff --git a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp
+index f8421613ac..3ae6285a12 100644
+--- a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp
++++ b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp
+@@ -34,6 +34,10 @@
+
+ #include "gtest/gtest.h"
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ class RooRealL
+ : public ::testing::TestWithParam<std::tuple<std::size_t>> {
+ };
+diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp b/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp
+index f4adf63eec..05164277f0 100644
+--- a/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp
++++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp
+@@ -33,6 +33,11 @@
+ #include <stdexcept> // runtime_error
+
+ #include "gtest/gtest.h"
++
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include "../test_lib.h" // generate_1D_gaussian_pdf_nll
+
+ using RooFit::TestStatistics::LikelihoodWrapper;
+diff --git a/roofit/roofitcore/test/testProxiesAndCategories.cxx b/roofit/roofitcore/test/testProxiesAndCategories.cxx
+index bed3c399bb..550e0c5ac9 100644
+--- a/roofit/roofitcore/test/testProxiesAndCategories.cxx
++++ b/roofit/roofitcore/test/testProxiesAndCategories.cxx
@@ -16,6 +16,9 @@
#include "gtest/gtest.h"
@@ -159,24 +277,57 @@ diff -ur root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx r
TEST(RooCategory, CategoryDefineMultiState) {
RooCategory myCat("myCat", "A category", { {"0Lep", 0}, {"1Lep", 1}, {"2Lep", 2}, {"3Lep", 3} });
-diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx root-6.24.02/tree/dataframe/test/dataframe_datablockcallback.cxx
---- root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/dataframe_datablockcallback.cxx 2021-08-06 09:31:38.801835298 +0200
-@@ -11,6 +11,10 @@
+diff --git a/roofit/roofitcore/test/testRooDataHist.cxx b/roofit/roofitcore/test/testRooDataHist.cxx
+index 90782e0749..f6b5e087ae 100644
+--- a/roofit/roofitcore/test/testRooDataHist.cxx
++++ b/roofit/roofitcore/test/testRooDataHist.cxx
+@@ -18,6 +18,10 @@
- #include <gtest/gtest.h>
+ #include "gtest/gtest.h"
+#ifndef INSTANTIATE_TEST_SUITE_P
+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
+#endif
+
- #include <algorithm> // std::min
- #include <thread> // std::hardware_concurrency
+ #include <algorithm>
+ #include <memory>
+
+diff --git a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx
+index c1978ae47e..877ab1525f 100644
+--- a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx
++++ b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx
+@@ -22,6 +22,11 @@
+ #include <stdio.h> // remove redundant workspace files
+
+ #include "gtest/gtest.h"
++
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include "test_lib.h"
-diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx root-6.24.02/tree/dataframe/test/dataframe_merge_results.cxx
---- root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/dataframe_merge_results.cxx 2021-08-06 09:31:38.802835300 +0200
-@@ -308,7 +308,7 @@
+ #include <RooMsgService.h>
+diff --git a/tree/dataframe/test/dataframe_definepersample.cxx b/tree/dataframe/test/dataframe_definepersample.cxx
+index 772b8baa70..37da9f3f95 100644
+--- a/tree/dataframe/test/dataframe_definepersample.cxx
++++ b/tree/dataframe/test/dataframe_definepersample.cxx
+@@ -6,6 +6,10 @@
+
+ #include <gtest/gtest.h>
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include <atomic>
+ #include <memory>
+ #include <thread> // std::thread::hardware_concurrency
+diff --git a/tree/dataframe/test/dataframe_merge_results.cxx b/tree/dataframe/test/dataframe_merge_results.cxx
+index 9354b75a39..ea439ea006 100644
+--- a/tree/dataframe/test/dataframe_merge_results.cxx
++++ b/tree/dataframe/test/dataframe_merge_results.cxx
+@@ -340,7 +340,7 @@ TEST(RDataFrameMergeResults, Merge5Hists)
EXPECT_FALSE(mh3);
EXPECT_FALSE(mh4);
EXPECT_FALSE(mh5);
@@ -185,9 +336,10 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx root-
const auto &mh = mergedptr->GetValue();
-diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx root-6.24.02/tree/dataframe/test/dataframe_regression.cxx
---- root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/dataframe_regression.cxx 2021-08-06 09:31:38.802835300 +0200
+diff --git a/tree/dataframe/test/dataframe_regression.cxx b/tree/dataframe/test/dataframe_regression.cxx
+index 9801067cf4..8a991f40c5 100644
+--- a/tree/dataframe/test/dataframe_regression.cxx
++++ b/tree/dataframe/test/dataframe_regression.cxx
@@ -9,6 +9,10 @@
#include "gtest/gtest.h"
@@ -199,9 +351,25 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx root-6.2
// Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially
class RDFRegressionTests : public ::testing::TestWithParam<bool> {
protected:
-diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx root-6.24.02/tree/dataframe/test/dataframe_simple.cxx
---- root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/dataframe_simple.cxx 2021-08-06 09:31:38.803835303 +0200
+diff --git a/tree/dataframe/test/dataframe_samplecallback.cxx b/tree/dataframe/test/dataframe_samplecallback.cxx
+index 188d58dd31..7734586eb3 100644
+--- a/tree/dataframe/test/dataframe_samplecallback.cxx
++++ b/tree/dataframe/test/dataframe_samplecallback.cxx
+@@ -11,6 +11,10 @@
+
+ #include <gtest/gtest.h>
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include <algorithm> // std::min
+ #include <memory>
+ #include <mutex>
+diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx
+index 6006f99017..b507edc13f 100644
+--- a/tree/dataframe/test/dataframe_simple.cxx
++++ b/tree/dataframe/test/dataframe_simple.cxx
@@ -1,5 +1,10 @@
/****** Run RDataFrame tests both with and without IMT enabled *******/
#include <gtest/gtest.h>
@@ -213,3 +381,36 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx root-6.24.02
#include <ROOTUnitTestSupport.h>
#include <ROOT/RDataFrame.hxx>
#include <ROOT/TSeq.hxx>
+diff --git a/tree/dataframe/test/dataframe_vary.cxx b/tree/dataframe/test/dataframe_vary.cxx
+index 2284b21f53..5a26c43cdc 100644
+--- a/tree/dataframe/test/dataframe_vary.cxx
++++ b/tree/dataframe/test/dataframe_vary.cxx
+@@ -7,6 +7,10 @@
+
+ #include <gtest/gtest.h>
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ using ROOT::RDF::Experimental::VariationsFor;
+
+ class RDFVary : public ::testing::TestWithParam<bool> {
+diff --git a/tree/tree/test/TOffsetGeneration.cxx b/tree/tree/test/TOffsetGeneration.cxx
+index 7b6b7647aa..77f125ca60 100644
+--- a/tree/tree/test/TOffsetGeneration.cxx
++++ b/tree/tree/test/TOffsetGeneration.cxx
+@@ -9,6 +9,10 @@
+ #include "ROOTUnitTestSupport.h"
+ #include "gtest/gtest.h"
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define SetUpTestSuite SetUpTestCase
++#endif
++
+ #include "ElementStruct.h"
+
+ class TOffsetGeneration : public ::testing::Test {
+--
+2.35.1
+
diff --git a/root-ppc-codemodel.patch b/root-ppc-codemodel.patch
deleted file mode 100644
index 223dc7c..0000000
--- a/root-ppc-codemodel.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 774ab9358d852e2c004564183de4a60eaaa5ac98 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 23 Apr 2021 21:40:14 +0200
-Subject: [PATCH 2/2] Actually request the use of the large code model for
- ppc64/ppc64le
-
-Instead of erroring out with an assert.
----
- interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp
-index 46771aa8c0..93a48f31f3 100644
---- a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp
-+++ b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp
-@@ -73,14 +73,14 @@ CreateHostTargetMachine(const clang::CompilerInstance& CI) {
- JTMB->getOptions().EmulatedTLS = false;
- #endif // _WIN32
-
-- std::unique_ptr<TargetMachine> TM = cantFail(JTMB->createTargetMachine());
--
- #if defined(__powerpc64__) || defined(__PPC64__)
- // We have to use large code model for PowerPC64 because TOC and text sections
- // can be more than 2GB apart.
-- assert(TM->getCodeModel() >= CodeModel::Large);
-+ JTMB->setCodeModel(CodeModel::Large);
- #endif
-
-+ std::unique_ptr<TargetMachine> TM = cantFail(JTMB->createTargetMachine());
-+
- // Forcefully disable GlobalISel, it might be enabled on AArch64 without
- // optimizations. In tests on an Apple M1 after the upgrade to LLVM 9, this
- // new instruction selection framework emits branches / calls that expect all
---
-2.30.2
-
diff --git a/root-ppc-segfault-fix.patch b/root-ppc-segfault-fix.patch
deleted file mode 100644
index b9cba0f..0000000
--- a/root-ppc-segfault-fix.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 55ae047b70e927de5c84cfa5ad42905cbd58d499 Mon Sep 17 00:00:00 2001
-From: Vassil Vassilev <v.g.vassilev(a)gmail.com>
-Date: Sat, 4 Dec 2021 00:06:19 +0000
-Subject: [PATCH] [llvm] Restore the ppc64le support that we lost in llvm8.
-
-This patch is backported from https://reviews.llvm.org/D94183
-
-For more discussion see https://github.com/numba/numba/issues/4026
-
-Fixes root-project/root#8072 and root-project/root#9297
----
- .../src/lib/Target/PowerPC/PPCISelLowering.cpp | 17 +++++++++--------
- 1 file changed, 9 insertions(+), 8 deletions(-)
-
-diff --git a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp
-index 24d50074860d..a922b40aa902 100644
---- a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp
-+++ b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp
-@@ -4463,7 +4463,15 @@ callsShareTOCBase(const Function *Caller, SDValue Callee,
- if (!G)
- return false;
-
-- const GlobalValue *GV = G->getGlobal();
-+ const GlobalValue *GV = G->getGlobal();
-+
-+ // If the GV is not a strong definition then we need to assume it can be
-+ // replaced by another function at link time. The function that replaces
-+ // it may not share the same TOC as the caller since the callee may be
-+ // replaced by a PC Relative version of the same function.
-+ if (!GV->isStrongDefinitionForLinker())
-+ return false;
-+
- // The medium and large code models are expected to provide a sufficiently
- // large TOC to provide all data addressing needs of a module with a
- // single TOC. Since each module will be addressed with a single TOC then we
-@@ -4472,13 +4480,6 @@ callsShareTOCBase(const Function *Caller, SDValue Callee,
- CodeModel::Large == TM.getCodeModel())
- return TM.shouldAssumeDSOLocal(*Caller->getParent(), GV);
-
-- // Otherwise we need to ensure callee and caller are in the same section,
-- // since the linker may allocate multiple TOCs, and we don't know which
-- // sections will belong to the same TOC base.
--
-- if (!GV->isStrongDefinitionForLinker())
-- return false;
--
- // Any explicitly-specified sections and section prefixes must also match.
- // Also, if we're using -ffunction-sections, then each function is always in
- // a different section (the same is true for COMDAT functions).
diff --git a/root-ptr-is-null-RooFit-TMVA.patch b/root-ptr-is-null-RooFit-TMVA.patch
deleted file mode 100644
index 3aa3acd..0000000
--- a/root-ptr-is-null-RooFit-TMVA.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From c65f3d96f3f4433bff9d40fa9cf1dec100867a07 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Tue, 8 Jun 2021 10:12:37 +0200
-Subject: [PATCH] Fix 'this' pointer is null warnings
-
-.../roofit/roofitcore/src/RooDataHist.cxx: In member function 'void RooDataHist::_adjustBinning(RooRealVar&, const TAxis&, RooRealVar*, Int_t*)':
-.../roofit/roofitcore/src/RooDataHist.cxx:595:122: warning: 'this' pointer is null [-Wnonnull]
- 595 | coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ;
- | ^~~~~~~~~~~~~~~
-
-.../roofit/roofitcore/src/RooRealSumFunc.cxx: In constructor 'RooRealSumFunc::RooRealSumFunc(const char*, const char*, const RooArgList&, const RooArgList&)':
-.../roofit/roofitcore/src/RooRealSumFunc.cxx:156:35: warning: 'this' pointer is null [-Wnonnull]
- 156 | << " is not of type RooAbsReal, fatal error" << endl;
- | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx: In member function 'void TMVA::DNN::TDataLoader<AData, TMVA::DNN::TReference<AReal> >::CopyInput(TMatrixT<AReal>&, TMVA::DNN::IndexIterator_t) [with AData = std::tuple<const std::vector<TMVA::Event*, std::allocator<TMVA::Event*> >&, const TMVA::DataSetInfo&>; AReal = float]':
-.../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx:131:34: warning: 'this' pointer is null [-Wnonnull]
- 131 | Int_t n = event->GetNVariables();
- | ~~~~~~~~~~~~~~~~~~~~^~
-In file included from .../tmva/tmva/inc/TMVA/VariableTransformBase.h:48,
- from .../tmva/tmva/inc/TMVA/Tools.h:58,
- from .../tmva/tmva/inc/TMVA/DNN/GeneralLayer.h:36,
- from .../tmva/tmva/inc/TMVA/DNN/CNN/ConvLayer.h:32,
- from .../tmva/tmva/inc/TMVA/DNN/Architectures/Reference.h:24,
- from .../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx:17:
-.../tmva/tmva/inc/TMVA/Event.h:88:16: note: in a call to non-static member function 'UInt_t TMVA::Event::GetNVariables() const'
- 88 | UInt_t GetNVariables() const;
- | ^~~~~~~~~~~~~
----
- roofit/roofitcore/src/RooDataHist.cxx | 2 +-
- roofit/roofitcore/src/RooRealSumFunc.cxx | 4 ++--
- tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx | 2 +-
- 3 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx
-index 84cf2c0f68..8dddb88e2b 100644
---- a/roofit/roofitcore/src/RooDataHist.cxx
-+++ b/roofit/roofitcore/src/RooDataHist.cxx
-@@ -591,7 +591,7 @@ void RooDataHist::importDHistSet(const RooArgList& /*vars*/, RooCategory& indexC
- void RooDataHist::_adjustBinning(RooRealVar &theirVar, const TAxis &axis,
- RooRealVar *ourVar, Int_t *offset)
- {
-- if (!dynamic_cast<RooRealVar*>(ourVar)) {
-+ if (!dynamic_cast<RooRealVar*>(static_cast<RooAbsArg*>(ourVar))) {
- coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ;
- assert(0) ;
- }
-diff --git a/roofit/roofitcore/src/RooRealSumFunc.cxx b/roofit/roofitcore/src/RooRealSumFunc.cxx
-index 3f78020acd..a1625d7e35 100644
---- a/roofit/roofitcore/src/RooRealSumFunc.cxx
-+++ b/roofit/roofitcore/src/RooRealSumFunc.cxx
-@@ -149,10 +149,10 @@ RooRealSumFunc::RooRealSumFunc(const char *name, const char *title, const RooArg
- _coefList.add(*coef);
- }
-
-- func = (RooAbsReal *)funcIter->Next();
-+ func = (RooAbsArg *)funcIter->Next();
- if (func) {
- if (!dynamic_cast<RooAbsReal *>(func)) {
-- coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << coef->GetName()
-+ coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << func->GetName()
- << " is not of type RooAbsReal, fatal error" << endl;
- assert(0);
- }
-diff --git a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx
-index 2465abf308..24a09d1fc0 100644
---- a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx
-+++ b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx
-@@ -128,7 +128,7 @@ void TDataLoader<TMVAInput_t, TReference<Real_t>>::CopyInput(TMatrixT<Real_t> &m
- Event *event = nullptr;
-
- Int_t m = matrix.GetNrows();
-- Int_t n = event->GetNVariables();
-+ Int_t n = matrix.GetNcols();
-
- // Copy input variables.
-
---
-2.31.1
-
diff --git a/root-ptr-is-null-TStreamerInfo.patch b/root-ptr-is-null-TStreamerInfo.patch
deleted file mode 100644
index 869715c..0000000
--- a/root-ptr-is-null-TStreamerInfo.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 1ca221f010fdcfb6249ae7b1cac77fbe29b86214 Mon Sep 17 00:00:00 2001
-From: Enrico Guiraud <enrico.guiraud(a)cern.ch>
-Date: Mon, 7 Jun 2021 11:02:48 +0200
-Subject: [PATCH] [io] Avoid nullptr deref when printing warning in
- TStreamerInfo
-
----
- io/io/src/TStreamerInfo.cxx | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/io/io/src/TStreamerInfo.cxx b/io/io/src/TStreamerInfo.cxx
-index d545ab7be8..a026635890 100644
---- a/io/io/src/TStreamerInfo.cxx
-+++ b/io/io/src/TStreamerInfo.cxx
-@@ -1109,12 +1109,12 @@ void TStreamerInfo::BuildCheck(TFile *file /* = 0 */, Bool_t load /* = kTRUE */)
- fClassVersion, GetName(), GetName(), GetName(), fClassVersion);
- } else {
- Warning("BuildCheck", "\n\
-- The StreamerInfo from %s does not match existing one (%s:%d)\n\
-+ The StreamerInfo does not match existing one (%s:%d)\n\
- The existing one has not been used yet and will be discarded.\n\
- Reading should work properly, however writing object of\n\
- type %s will not work properly. Most likely the version number\n\
- of the class was not properly updated [See ClassDef(%s,%d)].",
-- file->GetName(), GetName(), fClassVersion, GetName(), GetName(), fClassVersion);
-+ GetName(), fClassVersion, GetName(), GetName(), fClassVersion);
- }
- }
- }
---
-2.31.1
-
diff --git a/root-rcolor-static-init.patch b/root-rcolor-static-init.patch
new file mode 100644
index 0000000..18e4299
--- /dev/null
+++ b/root-rcolor-static-init.patch
@@ -0,0 +1,42 @@
+From c4df90861879f45b281c2a8e55212b711cfdbfa0 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Tue, 29 Mar 2022 15:30:20 +0200
+Subject: [PATCH] Avoid crashes due to static initialization order
+
+Most commonly seen on ppc64le. Backtrace:
+
+===========================================================
+The lines below might hint at the cause of the crash.
+You may get help by asking at the ROOT forum https://root.cern/forum
+Only if you are really convinced it is a bug in ROOT then please submit a
+report at https://root.cern/bugs Please post the ENTIRE stack trace
+from above as an attachment in addition to anything else
+that might help us fixing this issue.
+===========================================================
+ #11 ROOT::Experimental::RColor::toHex[abi:cxx11](unsigned char) (v=<optimized out>) at /usr/include/c++/11/ext/new_allocator.h:82
+ #12 0x00007fff90c220ec in ROOT::Experimental::RColor::SetRGB (this=0x7fffeadf5d10, r=<optimized out>, g=<optimized out>, b=<optimized out>) at /usr/include/c++/11/ext/new_allocator.h:89
+---
+ graf2d/gpadv7/src/RColor.cxx | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/graf2d/gpadv7/src/RColor.cxx b/graf2d/gpadv7/src/RColor.cxx
+index de325f1ea3..6878360073 100644
+--- a/graf2d/gpadv7/src/RColor.cxx
++++ b/graf2d/gpadv7/src/RColor.cxx
+@@ -232,10 +232,10 @@ std::vector<uint8_t> RColor::AsRGBA() const
+
+ std::string RColor::toHex(uint8_t v)
+ {
+- static const char *digits = "0123456789ABCDEF";
++ auto digits = [](auto d) { return d < 10 ? '0' + d : 'A' - 10 + d; };
+ std::string res(2,'0');
+- res[0] = digits[v >> 4];
+- res[1] = digits[v & 0xf];
++ res[0] = digits(v >> 4);
++ res[1] = digits(v & 0xf);
+ return res;
+ }
+
+--
+2.35.1
+
diff --git a/root-roofit-overflow.patch b/root-roofit-overflow.patch
new file mode 100644
index 0000000..e368aa9
--- /dev/null
+++ b/root-roofit-overflow.patch
@@ -0,0 +1,59 @@
+From 8b6a10aefa5ae660e9d13a8e55933125b257ab6c Mon Sep 17 00:00:00 2001
+From: moneta <lorenzo.moneta(a)cern.ch>
+Date: Fri, 25 Feb 2022 09:54:40 +0100
+Subject: [PATCH] Fix an array overflow in interpolating RooHistPdf when the
+ interpolation order is >= 10.
+
+---
+ roofit/roofitcore/src/RooDataHist.cxx | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx
+index c293a8fbb1..2159f73093 100644
+--- a/roofit/roofitcore/src/RooDataHist.cxx
++++ b/roofit/roofitcore/src/RooDataHist.cxx
+@@ -1206,9 +1206,9 @@ double RooDataHist::weightInterpolated(const RooArgSet& bin, int intOrder, bool
+
+ auto idxMultY = _idxMult[varInfo.realVarIdx2];
+ auto offsetIdx = centralIdx - idxMultY * ybinC;
+-
+- double yarr[10] = {} ;
+- double xarr[10] = {} ;
++
++ std::vector<double> yarr(intOrder+1);
++ std::vector<double> xarr(intOrder+1);
+ for (int i=ybinLo ; i<=intOrder+ybinLo ; i++) {
+ int ibin ;
+ if (i>=0 && i<ybinM) {
+@@ -1236,7 +1236,7 @@ double RooDataHist::weightInterpolated(const RooArgSet& bin, int intOrder, bool
+ for (int q=0; q<=intOrder ; q++) cout << yarr[q] << " " ;
+ cout << endl ;
+ }
+- wInt = RooMath::interpolate(xarr,yarr,intOrder+1,yval) ;
++ wInt = RooMath::interpolate(xarr.data(),yarr.data(),intOrder+1,yval) ;
+
+ } else {
+
+@@ -1344,8 +1344,8 @@ double RooDataHist::interpolateDim(int iDim, double xval, size_t centralIdx, int
+ auto idxMult = _idxMult[iDim];
+ auto offsetIdx = centralIdx - idxMult * fbinC;
+
+- double yarr[10] ;
+- double xarr[10] ;
++ std::vector<double> yarr(intOrder+1) ;
++ std::vector<double> xarr(intOrder+1);
+ for (int i=fbinLo ; i<=intOrder+fbinLo ; i++) {
+ int ibin ;
+ if (i>=0 && i<fbinM) {
+@@ -1383,7 +1383,7 @@ double RooDataHist::interpolateDim(int iDim, double xval, size_t centralIdx, int
+ }
+ }
+ }
+- return RooMath::interpolate(xarr,yarr,intOrder+1,xval) ;
++ return RooMath::interpolate(xarr.data(),yarr.data(),intOrder+1,xval) ;
+ }
+
+
+--
+2.35.1
+
diff --git a/root-roofit-tutorial.patch b/root-roofit-tutorial.patch
new file mode 100644
index 0000000..9d73e11
--- /dev/null
+++ b/root-roofit-tutorial.patch
@@ -0,0 +1,74 @@
+From 914e46f1c591f8b9b34115863ff31e42e19bfb97 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Mon, 28 Mar 2022 09:32:24 +0200
+Subject: [PATCH] Use calls from Python directly
+
+The rf105_funcbinding.py tutorial used to trigger errors due to unknown
+symbols. In particular the custum new and delete operators used in RooFit
+were not autoloaded when needed.
+
+In the tutorial there was a workaround implemented to call ProcessLine
+instead of making calls directly form Python, to make the autoloading
+from the C++ side of ROOT instead. This did not quite fix the problem,
+and the tutorial still randomly failed due to missing symbols.
+
+After changing the algorthm used for autoloading in commit
+6ae602bba7d33c900a117c9de0187ab5a28e14b8 these problems were solved.
+
+After this fix using the direct calls from Python also works, so this
+PR suggests updating the tutorial to do that.
+---
+ tutorials/roofit/rf105_funcbinding.py | 30 ++++++---------------------
+ 1 file changed, 6 insertions(+), 24 deletions(-)
+
+diff --git a/tutorials/roofit/rf105_funcbinding.py b/tutorials/roofit/rf105_funcbinding.py
+index 72d9cf62fc..b9de2a095a 100644
+--- a/tutorials/roofit/rf105_funcbinding.py
++++ b/tutorials/roofit/rf105_funcbinding.py
+@@ -17,15 +17,8 @@ import ROOT
+ # ---------------------------------------------------
+
+ # Bind one-dimensional ROOT.TMath.Erf function as ROOT.RooAbsReal function
+-# Directly trying this in python doesn't work:
+-# x = ROOT.RooRealVar("x", "x", -3, 3)
+-# erf = ROOT.RooFit.bindFunction("erf", ROOT.TMath.Erf, x)
+-# Need to go through C interface
+-ROOT.gInterpreter.ProcessLine(
+- 'auto x = RooRealVar("x", "x", -3, 3); auto myerf = RooFit::bindFunction("erf", TMath::Erf, x)'
+-)
+-x = ROOT.x
+-erf = ROOT.myerf
++x = ROOT.RooRealVar("x", "x", -3, 3)
++erf = ROOT.RooFit.bindFunction("erf", ROOT.TMath.Erf, x)
+
+ # Print erf definition
+ erf.Print()
+@@ -38,21 +31,10 @@ erf.plotOn(frame1)
+ # -----------------------------------------------------------------------
+
+ # Bind pdf ROOT.Math.Beta with three variables as ROOT.RooAbsPdf function
+-# As above, this does not work directly in python
+-# x2 = ROOT.RooRealVar("x2", "x2", 0, 0.999)
+-# a = ROOT.RooRealVar("a", "a", 5, 0, 10)
+-# b = ROOT.RooRealVar("b", "b", 2, 0, 10)
+-# beta = ROOT.RooFit.bindPdf("beta", ROOT.Math.beta_pdf, x2, a, b)
+-ROOT.gInterpreter.ProcessLine(
+- 'auto x2 = RooRealVar("x2", "x2", 0, 0.999);\
+- auto a = RooRealVar("a", "a", 5, 0, 10);\
+- auto b = RooRealVar("b", "b", 5, 0, 10);\
+- auto beta = RooFit::bindPdf("beta", ROOT::Math::beta_pdf, x2, a, b)'
+-)
+-x2 = ROOT.x2
+-a = ROOT.a
+-b = ROOT.b
+-beta = ROOT.beta
++x2 = ROOT.RooRealVar("x2", "x2", 0, 0.999)
++a = ROOT.RooRealVar("a", "a", 5, 0, 10)
++b = ROOT.RooRealVar("b", "b", 2, 0, 10)
++beta = ROOT.RooFit.bindPdf("beta", ROOT.Math.beta_pdf, x2, a, b)
+
+ # Perf beta definition
+ beta.Print()
+--
+2.35.1
+
diff --git a/root-stress-s390x.patch b/root-stress-s390x.patch
deleted file mode 100644
index b1d9b9d..0000000
--- a/root-stress-s390x.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 30cbc0d44364586ac64a3ac0fd6641e338549bbe Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Tue, 10 Aug 2021 06:33:17 +0200
-Subject: [PATCH] Adjust tests for s390x
-
----
- math/mathcore/test/stress/testGenVector.cxx | 2 +-
- test/stressMathCore.cxx | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/math/mathcore/test/stress/testGenVector.cxx b/math/mathcore/test/stress/testGenVector.cxx
-index 8da429c395..df9061c88e 100644
---- a/math/mathcore/test/stress/testGenVector.cxx
-+++ b/math/mathcore/test/stress/testGenVector.cxx
-@@ -79,7 +79,7 @@ TYPED_TEST_P(GenVectorTest, TestGenVectors)
- scale = this->fDim * 20;
- if (this->fDim == 3 && this->V2Name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi
- if (this->fDim == 4 && ( this->V2Name() == "PtEtaPhiMVector" || this->V2Name() == "PxPyPzMVector")) {
--#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__))
-+#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(__s390x__))
- scale *= 1.E7;
- #else
- scale *= 10;
-diff --git a/test/stressMathCore.cxx b/test/stressMathCore.cxx
-index 4d4695a8a0..b6d2d2c9e7 100644
---- a/test/stressMathCore.cxx
-+++ b/test/stressMathCore.cxx
-@@ -1120,7 +1120,7 @@ int testVector(int ngen, bool testio=false) {
- scale = Dim*20;
- if (Dim==3 && VecType<V2>::name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi
- if (Dim==4 && ( VecType<V2>::name() == "PtEtaPhiMVector" || VecType<V2>::name() == "PxPyPzMVector")) {
--#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__))
-+#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(__s390x__))
- scale *= 1.E7;
- #else
- scale *= 10;
---
-2.31.1
-
diff --git a/root-threadsh1-avoid-heap-use-after-free.patch b/root-threadsh1-avoid-heap-use-after-free.patch
new file mode 100644
index 0000000..6111f2b
--- /dev/null
+++ b/root-threadsh1-avoid-heap-use-after-free.patch
@@ -0,0 +1,48 @@
+From 493c4210168fa475aa4130c12e8fdff3b7d85c09 Mon Sep 17 00:00:00 2001
+From: Philippe Canal <pcanal(a)fnal.gov>
+Date: Mon, 7 Mar 2022 13:32:37 -0600
+Subject: [PATCH] threadsh1: Avoid heap-use-after-free.
+
+Previously, the Canvas `Close` signal which triggers a call to the local function `close` which
+was unconditionally call `Kill` on its associated thread would call it on an already deleted
+object if the `TThread` was deleted before the `TCanvas`.
+
+This fix #10015 (detected by using ASAN).
+---
+ tutorials/legacy/thread/threadsh1.C | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/tutorials/legacy/thread/threadsh1.C b/tutorials/legacy/thread/threadsh1.C
+index b819f5d020..d6abc67e36 100644
+--- a/tutorials/legacy/thread/threadsh1.C
++++ b/tutorials/legacy/thread/threadsh1.C
+@@ -67,7 +67,8 @@ void *joiner(void *)
+ void closed(Int_t id)
+ {
+ // kill the thread matching the canvas being closed
+- t[id]->Kill();
++ if (t[id])
++ t[id]->Kill();
+ // and set the canvas pointer to 0
+ c[id] = 0;
+ }
+@@ -142,11 +143,11 @@ void threadsh1()
+ t[4]->Join();
+ TThread::Ps();
+
+- delete t[0];
+- delete t[1];
+- delete t[2];
+- delete t[3];
+- delete t[4];
++ delete t[0]; t[0] = nullptr; // Prevents after deletion access.
++ delete t[1]; t[1] = nullptr;
++ delete t[2]; t[2] = nullptr;
++ delete t[3]; t[3] = nullptr;
++ delete t[4]; t[4] = nullptr;
+
+ delete rng[0];
+ delete rng[1];
+--
+2.35.1
+
diff --git a/root-tmva-threads.patch b/root-tmva-threads.patch
new file mode 100644
index 0000000..459062d
--- /dev/null
+++ b/root-tmva-threads.patch
@@ -0,0 +1,62 @@
+From f525fe375840cda2bf5b51e018eab8ad74dcd736 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Wed, 30 Mar 2022 15:51:07 +0200
+Subject: [PATCH] Limit the number of threads in TMVA CNN/DNN test to save
+ memory
+
+Processing /builddir/build/BUILD/root-6.26.00/tutorials/tmva/TMVA_CNN_Classification.C...
+Running with nthreads = 224
+
+[ ... ]
+
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+ *** Break *** segmentation violation
+ *** Break *** segmentation violation
+ *** Break *** segmentation violation
+ *** Break *** segmentation violation
+ *** Break *** segmentation violation
+ *** Break *** segmentation violation
+---
+ tutorials/tmva/TMVA_CNN_Classification.C | 2 +-
+ tutorials/tmva/TMVA_RNN_Classification.C | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C
+index 3e590c5958..4abfc6a4d1 100644
+--- a/tutorials/tmva/TMVA_CNN_Classification.C
++++ b/tutorials/tmva/TMVA_CNN_Classification.C
+@@ -125,7 +125,7 @@ void TMVA_CNN_Classification(std::vector<bool> opt = {1, 1, 1, 1, 1})
+
+ bool writeOutputFile = true;
+
+- int num_threads = 0; // use default threads
++ int num_threads = 32;
+
+ TMVA::Tools::Instance();
+
+diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C
+index 5be80824f9..791b9aecf5 100644
+--- a/tutorials/tmva/TMVA_RNN_Classification.C
++++ b/tutorials/tmva/TMVA_RNN_Classification.C
+@@ -190,7 +190,7 @@ void TMVA_RNN_Classification(int use_type = 1)
+ useKeras = false;
+ #endif
+
+- int num_threads = 0; // use by default all threads
++ int num_threads = 32;
+ // do enable MT running
+ if (num_threads >= 0) {
+ ROOT::EnableImplicitMT(num_threads);
+--
+2.35.1
+
diff --git a/root-unbundle-gtest.patch b/root-unbundle-gtest.patch
index ae180a2..1bdf869 100644
--- a/root-unbundle-gtest.patch
+++ b/root-unbundle-gtest.patch
@@ -1,111 +1,202 @@
-diff -ur root-6.24.02.orig/cmake/modules/SearchInstalledSoftware.cmake root-6.24.02/cmake/modules/SearchInstalledSoftware.cmake
---- root-6.24.02.orig/cmake/modules/SearchInstalledSoftware.cmake 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/cmake/modules/SearchInstalledSoftware.cmake 2021-08-11 10:56:26.680731609 +0200
-@@ -1699,102 +1699,17 @@
+From 29884ae01fde27204d92f554da4e92227a2ed1e6 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sat, 26 Mar 2022 10:22:07 +0100
+Subject: [PATCH 1/2] Implement builtin_gtest option
+
+By setting the option to OFF the system gtest and gmock are used.
+This allows doing tests without network available, e.g. during a
+package build for Fedora/EPEL.
+---
+ cmake/modules/FindGTest.cmake | 81 +++++++++++++++++++++
+ cmake/modules/RootBuildOptions.cmake | 2 +
+ cmake/modules/RootMacros.cmake | 2 +-
+ cmake/modules/SearchInstalledSoftware.cmake | 44 ++++++++---
+ 4 files changed, 118 insertions(+), 11 deletions(-)
+ create mode 100644 cmake/modules/FindGTest.cmake
+
+diff --git a/cmake/modules/FindGTest.cmake b/cmake/modules/FindGTest.cmake
+new file mode 100644
+index 0000000000..438ec501c2
+--- /dev/null
++++ b/cmake/modules/FindGTest.cmake
+@@ -0,0 +1,81 @@
++# Find the gtest and gmock includes and library.
++#
++# This module defines
++# GTEST_LIBRARIES
++# GTEST_MAIN_LIBRARIES
++# GTEST_INCLUDE_DIRS
++# GMOCK_LIBRARIES
++# GMOCK_MAIN_LIBRARIES
++# GMOCK_INCLUDE_DIRS
++#
++# GTEST_FOUND true if all libraries present
++
++find_package(Threads QUIET)
++
++find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h)
++find_library(GTEST_LIBRARIES NAMES gtest)
++find_library(GTEST_MAIN_LIBRARIES NAMES gtest_main)
++
++find_path(GMOCK_INCLUDE_DIRS NAMES gmock/gmock.h)
++find_library(GMOCK_LIBRARIES NAMES gmock)
++find_library(GMOCK_MAIN_LIBRARIES NAMES gmock_main)
++
++# Special for EPEL 7's gmock
++if(NOT GMOCK_LIBRARIES)
++ find_path(GMOCK_SRC_DIR NAMES gmock-all.cc PATHS /usr/src/gmock)
++endif()
++
++if(NOT GMOCK_MAIN_LIBRARIES)
++ find_path(GMOCK_MAIN_SRC_DIR NAMES gmock_main.cc PATHS /usr/src/gmock)
++endif()
++
++if (GTEST_INCLUDE_DIRS AND
++ GTEST_LIBRARIES AND
++ GTEST_MAIN_LIBRARIES AND
++ GMOCK_INCLUDE_DIRS AND
++ (GMOCK_LIBRARIES OR GMOCK_SRC_DIR) AND
++ (GMOCK_MAIN_LIBRARIES OR GMOCK_MAIN_SRC_DIR))
++
++ add_library(gtest UNKNOWN IMPORTED)
++ set_target_properties(gtest PROPERTIES
++ IMPORTED_LOCATION ${GTEST_LIBRARIES}
++ INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIRS})
++ target_link_libraries(gtest INTERFACE Threads::Threads)
++
++ add_library(gtest_main UNKNOWN IMPORTED)
++ set_target_properties(gtest_main PROPERTIES
++ IMPORTED_LOCATION ${GTEST_MAIN_LIBRARIES})
++ target_link_libraries(gtest_main INTERFACE gtest Threads::Threads)
++
++ if(GMOCK_LIBRARIES)
++ add_library(gmock UNKNOWN IMPORTED)
++ set_target_properties(gmock PROPERTIES
++ IMPORTED_LOCATION ${GMOCK_LIBRARIES}
++ INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIRS})
++ else()
++ add_library(gmock STATIC ${GMOCK_SRC_DIR}/gmock-all.cc)
++ target_include_directories(gmock PUBLIC ${GMOCK_INCLUDE_DIRS})
++ set(GMOCK_LIBRARIES gmock)
++ endif()
++ target_link_libraries(gmock INTERFACE gtest Threads::Threads)
++
++ if(GMOCK_MAIN_LIBRARIES)
++ add_library(gmock_main UNKNOWN IMPORTED)
++ set_target_properties(gmock_main PROPERTIES
++ IMPORTED_LOCATION ${GMOCK_MAIN_LIBRARIES})
++ else()
++ add_library(gmock_main STATIC ${GMOCK_MAIN_SRC_DIR}/gmock_main.cc)
++ set(GMOCK_MAIN_LIBRARIES gmock_main)
++ endif()
++ target_link_libraries(gmock_main INTERFACE gmock Threads::Threads)
++
++endif()
++
++include(FindPackageHandleStandardArgs)
++find_package_handle_standard_args(GTest DEFAULT_MSG
++ GTEST_LIBRARIES
++ GTEST_MAIN_LIBRARIES
++ GTEST_INCLUDE_DIRS
++ GMOCK_LIBRARIES
++ GMOCK_MAIN_LIBRARIES
++ GMOCK_INCLUDE_DIRS)
+diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake
+index 7886c5f3e9..01108a18c9 100644
+--- a/cmake/modules/RootBuildOptions.cmake
++++ b/cmake/modules/RootBuildOptions.cmake
+@@ -94,6 +94,7 @@ ROOT_BUILD_OPTION(builtin_ftgl OFF "Build bundled copy of FTGL")
+ ROOT_BUILD_OPTION(builtin_gl2ps OFF "Build bundled copy of gl2ps")
+ ROOT_BUILD_OPTION(builtin_glew OFF "Build bundled copy of GLEW")
+ ROOT_BUILD_OPTION(builtin_gsl OFF "Build GSL internally (requires network)")
++ROOT_BUILD_OPTION(builtin_gtest OFF "Build googletest internally (requires network)")
+ ROOT_BUILD_OPTION(builtin_llvm ON "Build bundled copy of LLVM")
+ ROOT_BUILD_OPTION(builtin_lz4 OFF "Build bundled copy of lz4")
+ ROOT_BUILD_OPTION(builtin_lzma OFF "Build bundled copy of lzma")
+@@ -293,6 +294,7 @@ if(builtin_all)
+ set(builtin_gl2ps_defvalue ON)
+ set(builtin_glew_defvalue ON)
+ set(builtin_gsl_defvalue ON)
++ set(builtin_gtest_defvalue ON)
+ set(builtin_llvm_defvalue ON)
+ set(builtin_lz4_defvalue ON)
+ set(builtin_lzma_defvalue ON)
+diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake
+index cb75c0b1da..38fd5d6baf 100644
+--- a/cmake/modules/RootMacros.cmake
++++ b/cmake/modules/RootMacros.cmake
+@@ -1671,7 +1671,7 @@ function(ROOT_ADD_TEST test)
- #---Download googletest--------------------------------------------------------------
- if (testing)
-- # FIXME: Remove our version of gtest in roottest. We can reuse this one.
-- # Add googletest
-- # http://stackoverflow.com/questions/9689183/cmake-googletest
-+ # Workaround for missing libraries in Fedora's gmock packaging < 1.8.0
-+ if(EXISTS ${CMAKE_SOURCE_DIR}/googlemock)
-+ set(_G_LIBRARY_PATH ${CMAKE_SOURCE_DIR}/googlemock)
+ set_property(TEST ${test} APPEND PROPERTY ENVIRONMENT ROOT_HIST=0)
-- set(_gtest_byproduct_binary_dir
-- ${CMAKE_CURRENT_BINARY_DIR}/googletest-prefix/src/googletest-build)
-- set(_gtest_byproducts
-- ${_gtest_byproduct_binary_dir}/lib/libgtest.a
-- ${_gtest_byproduct_binary_dir}/lib/libgtest_main.a
-- ${_gtest_byproduct_binary_dir}/lib/libgmock.a
-- ${_gtest_byproduct_binary_dir}/lib/libgmock_main.a
-- )
--
-- if(MSVC)
-- set(EXTRA_GTEST_OPTS
-- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${_gtest_byproduct_binary_dir}/lib/
-- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL:PATH=${_gtest_byproduct_binary_dir}/lib/
-- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${_gtest_byproduct_binary_dir}/lib/
-- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO:PATH=${_gtest_byproduct_binary_dir}/lib/
-- -Dgtest_force_shared_crt=ON
-- BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config Release)
-- endif()
-- if(APPLE)
-- set(EXTRA_GTEST_OPTS
-- -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT})
+- #- Handle TIMOUT and DEPENDS arguments
++ #- Handle TIMEOUT and DEPENDS arguments
+ if(ARG_TIMEOUT)
+ set_property(TEST ${test} PROPERTY TIMEOUT ${ARG_TIMEOUT})
+ endif()
+diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake
+index fe40898d12..b6a3cc4c76 100644
+--- a/cmake/modules/SearchInstalledSoftware.cmake
++++ b/cmake/modules/SearchInstalledSoftware.cmake
+@@ -1860,15 +1860,6 @@ if (mpi)
+ endif()
+ endif()
+
+-if(testing AND NO_CONNECTION)
+- if(fail-on-missing)
+- message(FATAL_ERROR "No internet connection. Please check your connection, or either disable the 'testing' option or the 'fail-on-missing' to automatically disable options requiring internet access")
+- else()
+- message(STATUS "No internet connection, disabling 'testing' option")
+- set(testing OFF CACHE BOOL "Disabled because there is no internet connection" FORCE)
- endif()
+-endif()
-
-- ExternalProject_Add(
-- googletest
-- GIT_REPOSITORY https://github.com/google/googletest.git
-- GIT_SHALLOW 1
-- GIT_TAG release-1.10.0
-- UPDATE_COMMAND ""
-- # TIMEOUT 10
-- # # Force separate output paths for debug and release builds to allow easy
-- # # identification of correct lib in subsequent TARGET_LINK_LIBRARIES commands
-- # CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs
-- # -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs
-- # -Dgtest_force_shared_crt=ON
-- CMAKE_ARGS -G ${CMAKE_GENERATOR}
-- -DCMAKE_BUILD_TYPE=Release
-- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-- -DCMAKE_CXX_FLAGS=${ROOT_EXTERNAL_CXX_FLAGS}
-- -DCMAKE_AR=${CMAKE_AR}
-- -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
-- ${EXTRA_GTEST_OPTS}
-- # Disable install step
-- INSTALL_COMMAND ""
-- BUILD_BYPRODUCTS ${_gtest_byproducts}
-- # Wrap download, configure and build steps in a script to log output
-- LOG_DOWNLOAD ON
-- LOG_CONFIGURE ON
-- LOG_BUILD ON
-- TIMEOUT 600
-- )
--
-- # Specify include dirs for gtest and gmock
-- ExternalProject_Get_Property(googletest source_dir)
-- set(GTEST_INCLUDE_DIR ${source_dir}/googletest/include)
-- set(GMOCK_INCLUDE_DIR ${source_dir}/googlemock/include)
-- # Create the directories. Prevents bug https://gitlab.kitware.com/cmake/cmake/issues/15052
-- file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR})
--
-- # Libraries
-- ExternalProject_Get_Property(googletest binary_dir)
-- set(_G_LIBRARY_PATH ${binary_dir}/lib/)
--
-- # Use gmock_main instead of gtest_main because it initializes gtest as well.
-- # Note: The libraries are listed in reverse order of their dependancies.
-- foreach(lib gtest gtest_main gmock gmock_main)
-+ foreach(lib gmock gmock_main)
- add_library(${lib} IMPORTED STATIC GLOBAL)
-- set_target_properties(${lib} PROPERTIES
-- IMPORTED_LOCATION "${_G_LIBRARY_PATH}${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}"
-- INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
-- )
-- add_dependencies(${lib} googletest)
-- if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND
-- ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER_EQUAL 9)
-- target_compile_options(${lib} INTERFACE -Wno-deprecated-copy)
-- endif()
- endforeach()
-- # Once we require at least cmake 3.11, target_include_directories will work for imported targets
-- # Because of https://gitlab.kitware.com/cmake/cmake/-/merge_requests/1264
-- # We need this workaround:
-- SET_PROPERTY(TARGET gtest APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR})
-- SET_PROPERTY(TARGET gmock APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR})
-- #target_include_directories(gtest INTERFACE ${GTEST_INCLUDE_DIR})
-- #target_include_directories(gmock INTERFACE ${GMOCK_INCLUDE_DIR})
--
-- set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX})
-- set_property(TARGET gtest_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX})
- set_property(TARGET gmock PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX})
- set_property(TARGET gmock_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX})
+ #---Check for ZeroMQ when building RooFit::MultiProcess--------------------------------------------
-+ endif()
- endif()
+ if (roofit_multiprocess)
+@@ -1942,8 +1933,41 @@ if (roofit_multiprocess)
+ target_compile_definitions(cppzmq INTERFACE ZMQ_NO_EXPORT)
+ endif (roofit_multiprocess)
- #------------------------------------------------------------------------------------
+-#---Download googletest--------------------------------------------------------------
++#---Check for googletest---------------------------------------------------------------
+ if (testing)
++ if (NOT builtin_gtest)
++ if(fail-on-missing)
++ find_package(GTest REQUIRED)
++ else()
++ find_package(GTest)
++ if(NOT GTEST_FOUND)
++ if(NO_CONNECTION)
++ if(fail-on-missing)
++ message(FATAL_ERROR "No internet connection and GTest was not found. Please check your connection, or either disable the 'testing' option or the 'fail-on-missing' to automatically disable options requiring internet access")
++ else()
++ message(STATUS "GTest not found, and no internet connection. Disabing the 'testing' option.")
++ set(testing OFF CACHE BOOL "Disabled because testing requested and GTest not found (${builtin_gtest_description}) and there is no internet connection" FORCE)
++ endif()
++ else()
++ message(STATUS "GTest not found, switching ON 'builtin_gtest' option.")
++ set(builtin_gtest ON CACHE BOOL "Enabled because testing requested and GTest not found (${builtin_gtest_description})" FORCE)
++ endif()
++ endif()
++ endif()
++ else()
++ if(NO_CONNECTION)
++ if(fail-on-missing)
++ message(FATAL_ERROR "No internet connection. Please check your connection, or either disable the 'testing' option or the 'builtin_gtest' option or the 'fail-on-missing' option to automatically disable options requiring internet access")
++ else()
++ message(STATUS "No internet connection, disabling the 'testing' and 'builtin_gtest' options")
++ set(testing OFF CACHE BOOL "Disabled because there is no internet connection" FORCE)
++ set(builtin_gtest OFF CACHE BOOL "Disabled because there is no internet connection" FORCE)
++ endif()
++ endif()
++ endif()
++endif()
++
++if (builtin_gtest)
+ # FIXME: Remove our version of gtest in roottest. We can reuse this one.
+ # Add googletest
+ # http://stackoverflow.com/questions/9689183/cmake-googletest
+--
+2.35.1
+
diff --git a/root-uring-warn.patch b/root-uring-warn.patch
new file mode 100644
index 0000000..05cfd56
--- /dev/null
+++ b/root-uring-warn.patch
@@ -0,0 +1,43 @@
+From 580fcf8fe95c45e337d222a7fd2338fdef2f52c5 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 16:18:57 +0100
+Subject: [PATCH 1/2] Ignore warnings about uring failing during test
+
+---
+ tree/ntuple/v7/test/ntuple_extended.cxx | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/tree/ntuple/v7/test/ntuple_extended.cxx b/tree/ntuple/v7/test/ntuple_extended.cxx
+index 8e3998996c..98d65ef319 100644
+--- a/tree/ntuple/v7/test/ntuple_extended.cxx
++++ b/tree/ntuple/v7/test/ntuple_extended.cxx
+@@ -4,6 +4,8 @@
+
+ #include "TROOT.h"
+
++#include "ROOTUnitTestSupport.h"
++
+ TEST(RNTuple, RealWorld1)
+ {
+ ROOT::EnableImplicitMT();
+@@ -111,6 +113,17 @@ TEST(RNTuple, RandomAccess)
+ #if !defined(_MSC_VER) || defined(R__ENABLE_BROKEN_WIN_TESTS)
+ TEST(RNTuple, LargeFile)
+ {
++ ROOTUnitTestSupport::CheckDiagsRAII raii;
++ raii.optionalDiag(kWarning, "RIoUring",
++ "io_uring is unexpectedly not available because:", false);
++ raii.optionalDiag(kWarning, "RRawFileUnix",
++ "io_uring setup failed, falling back to blocking I/O in ReadV", true);
++
++ raii.optionalDiag(kWarning, "ROOT.NTuple",
++ "The RNTuple file format will change. Do not store real data with this version of RNTuple!", true);
++ raii.optionalDiag(kWarning, "ROOT.NTuple",
++ "Pre-release format version: ", false);
++
+ ROOT::EnableImplicitMT();
+ FileRaii fileGuard("test_large_file.root");
+
+--
+2.35.1
+
diff --git a/root-uring.patch b/root-uring.patch
deleted file mode 100644
index 129c38e..0000000
--- a/root-uring.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-diff --git a/io/io/src/RRawFileUnix.cxx b/io/io/src/RRawFileUnix.cxx
-index 829c5e4cb6..417c3adf30 100644
---- a/io/io/src/RRawFileUnix.cxx
-+++ b/io/io/src/RRawFileUnix.cxx
-@@ -115,26 +115,33 @@ void ROOT::Internal::RRawFileUnix::OpenImpl()
- void ROOT::Internal::RRawFileUnix::ReadVImpl(RIOVec *ioVec, unsigned int nReq)
- {
- #ifdef R__HAS_URING
-- if (RIoUring::IsAvailable()) {
-- RIoUring ring;
-- std::vector<RIoUring::RReadEvent> reads;
-- reads.reserve(nReq);
-- for (std::size_t i = 0; i < nReq; ++i) {
-- RIoUring::RReadEvent ev;
-- ev.fBuffer = ioVec[i].fBuffer;
-- ev.fOffset = ioVec[i].fOffset;
-- ev.fSize = ioVec[i].fSize;
-- ev.fFileDes = fFileDes;
-- reads.push_back(ev);
-+ thread_local bool uring_failed = false;
-+ if (!uring_failed) {
-+ try {
-+ RIoUring ring; // throws std::runtime_error
-+ std::vector<RIoUring::RReadEvent> reads;
-+ reads.reserve(nReq);
-+ for (std::size_t i = 0; i < nReq; ++i) {
-+ RIoUring::RReadEvent ev;
-+ ev.fBuffer = ioVec[i].fBuffer;
-+ ev.fOffset = ioVec[i].fOffset;
-+ ev.fSize = ioVec[i].fSize;
-+ ev.fFileDes = fFileDes;
-+ reads.push_back(ev);
-+ }
-+ ring.SubmitReadsAndWait(reads.data(), nReq);
-+ for (std::size_t i = 0; i < nReq; ++i) {
-+ ioVec[i].fOutBytes = reads.at(i).fOutBytes;
-+ }
-+ return;
- }
-- ring.SubmitReadsAndWait(reads.data(), nReq);
-- for (std::size_t i = 0; i < nReq; ++i) {
-- ioVec[i].fOutBytes = reads.at(i).fOutBytes;
-+ catch(const std::runtime_error &e) {
-+ Warning("RIoUring", "io_uring is unexpectedly not available because:\n%s", e.what());
-+ Warning("RRawFileUnix",
-+ "io_uring setup failed, falling back to blocking I/O in ReadV");
-+ uring_failed = true;
- }
-- return;
- }
-- Warning("RRawFileUnix",
-- "io_uring setup failed, falling back to default ReadV implementation");
- #endif
- RRawFile::ReadVImpl(ioVec, nReq);
- }
diff --git a/root-use-unique-filenames-in-fillrandom-tutorials.patch b/root-use-unique-filenames-in-fillrandom-tutorials.patch
new file mode 100644
index 0000000..724eb79
--- /dev/null
+++ b/root-use-unique-filenames-in-fillrandom-tutorials.patch
@@ -0,0 +1,25 @@
+From b781f954ac80cc227777992dcb4fbe1837c7e351 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Tue, 29 Mar 2022 15:44:17 +0200
+Subject: [PATCH] Use unique filenames in fillrandom.py and fillrandom.C
+
+---
+ tutorials/hist/fillrandom.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tutorials/hist/fillrandom.py b/tutorials/hist/fillrandom.py
+index d5eb3f6f38..4b1a94a37e 100644
+--- a/tutorials/hist/fillrandom.py
++++ b/tutorials/hist/fillrandom.py
+@@ -41,7 +41,7 @@ h1f.FillRandom("sqroot",10000)
+ h1f.Draw()
+ c1.Update()
+
+-f = ROOT.TFile("fillrandom.root","RECREATE")
++f = ROOT.TFile("fillrandom-py.root","RECREATE")
+ form1.Write()
+ sqroot.Write()
+ h1f.Write()
+--
+2.35.1
+
diff --git a/root.spec b/root.spec
index 3a305ae..4fbd388 100644
--- a/root.spec
+++ b/root.spec
@@ -17,9 +17,9 @@
%endif
%global python3_version_uscore %(tr . _ <<< "%{python3_version}")
-%if %{?fedora}%{!?fedora:0} >= 24 || %{?rhel}%{!?rhel:0} >= 8
-# Building the experimental ROOT 7 classes requires c++-14.
-# This is the default for gcc 6.1 and later.
+%if %{?fedora}%{!?fedora:0} >= 34 || %{?rhel}%{!?rhel:0} >= 9
+# Building the experimental ROOT 7 classes requires c++-17.
+# This is the default for gcc 11 and later.
%global root7 1
%else
%global root7 0
@@ -31,12 +31,27 @@
%global xrootd5 0
%endif
-%if %{?fedora}%{!?fedora:0} >= 35
-# The required __malloc_hook was removed from glibc 2.33.9000-48
-# The memstat module is deprecated and will be removed in root 6.26
-%global memstat 0
+%global webgui 1
+
+%if %{?rhel}%{!?rhel:0} == 9
+# GFAL2 not available in EPEL 9
+%global gfal2 0
+%else
+%global gfal2 1
+%endif
+
+%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
+# The SOFIE parser requires protobuf 3.0
+%global tmvasofieparser 1
%else
-%global memstat 1
+%global tmvasofieparser 0
+%endif
+
+%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9
+# DistRDF requires Python 3.7+
+%global distrdf 1
+%else
+%global distrdf 0
%endif
%if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8
@@ -53,18 +68,15 @@
%global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$
Name: root
-Version: 6.24.06
+Version: 6.26.00
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 6%{?dist}
+Release: 1%{?dist}
Summary: Numerical data analysis framework
License: LGPLv2+
URL: https://root.cern/
-# The upstream source is modified to exclude proprietary fonts:
-# 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}
+# The upstream source is modified to exclude proprietary fonts
+# See Source8 for how to create Source0
Source0: %{name}-%{version}.tar.xz
# Input data for the tests
Source1: %{name}-testfiles.tar.xz
@@ -79,94 +91,107 @@ Source6: application-x-root.png
# Instructions for setting up a python virtual environment
# for running the JupyROOT notebook on EPEL
Source7: JupyROOT-on-EPEL
+# Script to generate Source0
+Source8: %{name}-get-src.sh
# Use system fonts
Patch0: %{name}-fontconfig.patch
# Revert the removal of DataFrame for 32 bit architectures
+# https://github.com/root-project/root/pull/10300
Patch1: %{name}-32bit-dataframe.patch
# Unbundle gtest
+# Add builtin_gtest cmake option
+# Compatibility with older gtest
+# https://github.com/root-project/root/pull/10301
Patch2: %{name}-unbundle-gtest.patch
+Patch3: %{name}-old-gtest-compat.patch
# Reduce memory usage of build
# Do not link rootcling_stage1 and libCling in parallel
-Patch3: %{name}-memory-usage.patch
+Patch4: %{name}-memory-usage.patch
# Reduce memory usage during linking on ARM and x86 by generating
-# smaller debuginfo for the llmv libraries.
-# Fedora builders run out of memory with the default setting.
-Patch4: %{name}-memory-arm-x86.patch
+# smaller debuginfo for the llvm libraries
+# Fedora builders run out of memory with the default setting
+Patch5: %{name}-memory-arm-x86.patch
# Don't install minicern static library
-Patch5: %{name}-dont-install-minicern.patch
+Patch6: %{name}-dont-install-minicern.patch
# Do not export Python modules in CMake config
-Patch6: %{name}-no-export-python-modules.patch
-# Don't create documentation notebooks
-Patch7: %{name}-doc-no-notebooks.patch
-# Don't run tutorials that crash during doc generation
-Patch8: %{name}-doxygen-crash.patch
-# Compatibility with older gtest
-Patch9: %{name}-old-gtest-compat.patch
+Patch7: %{name}-no-export-python-modules.patch
# Run some test on 32 bit that upstream has disabled
-Patch10: %{name}-32bit-tests.patch
-# Workaround for initialization problems for PyROOT on
-# EPEL7 ppc64le
-# https://sft.its.cern.ch/jira/browse/ROOT-10622
-Patch11: %{name}-epel7-ppc64le-pyroot.patch
+Patch8: %{name}-32bit-tests.patch
# Use local static script and style files for JsMVA
-Patch12: %{name}-jsmva-static.patch
+Patch9: %{name}-jsmva-static.patch
+# Fix python bytecode compilation on EPEL 7
# Compatibility with older python versions (no f-strings)
-Patch13: %{name}-older-python.patch
-# Fix multicore tests when running on machines with few cores
-# https://github.com/root-project/root/pull/8068
-Patch14: %{name}-fix-multicore-tests-with-few-cores.patch
-# Reapply altivec fix lost in the LLVM 9 upgrade
-# https://github.com/root-project/root/pull/8069
-Patch15: %{name}-fix-ppc64le-compilation-with-gcc-10.patch
-# Actually request the use of the large code model for ppc64le
-# https://github.com/root-project/root/pull/8230
-Patch16: %{name}-ppc-codemodel.patch
-# Fix segfaults on ppc64le when using the large code model
-# PR by Vassil Vassilev based on upstream fix
-# https://reviews.llvm.org/D91983
-# https://github.com/root-project/root/pull/9380
-Patch17: %{name}-ppc-segfault-fix.patch
-# Fall back to blocking I/O if uring fails
-# Backported
-# - commit 691403b2cc504fd4e3e7227894023913014a61ff
-# - commit 956951ee2af83426d73ad72b2d966f9f1acbea83
-# - commit 16e64da11edf91fcf31c2fc474f573fca2ee863c
-# - commit 311a6822f9b0fd438c4210ed60617b45f2ddbe74
-Patch18: %{name}-uring.patch
-# Add missing classes in LinkDef.h files
-# Backported
-Patch19: %{name}-add-TTreeProcessorMP-to-LinkDef-file.patch
-Patch20: %{name}-add-RDisplay-to-LinkDef-file.patch
-Patch21: %{name}-add-RCutFlowReport-to-LinkDef-file.patch
-# Fix "pointer is null" warnings
-# Backported
-Patch22: %{name}-ptr-is-null-RooFit-TMVA.patch
-Patch23: %{name}-ptr-is-null-TStreamerInfo.patch
-# Fix two failing tests on s390x
-# https://github.com/root-project/root/pull/8826
-Patch24: %{name}-stress-s390x.patch
-# Doxygen warning fixes
-# Backported from upstream
-Patch25: root-doxygen-fix1.patch
-# Doxygen warning fixes
-# https://github.com/root-project/root/pull/9388
-Patch26: root-doxygen-fix2.patch
-# Don't run tutorials that crash during doc generation
-# EPEL 7 specific
-Patch27: %{name}-doxygen-crash-el7.patch
+Patch10: %{name}-older-python.patch
# Backported fix from LLVM upstream
-Patch28: %{name}-symbol-rewrite.patch
+Patch11: %{name}-symbol-rewrite.patch
# Backport gcc 12 fix from LLVM
# https://github.com/root-project/root/pull/9586
-Patch29: %{name}-fix-compilation-with-gcc-12.patch
+Patch12: %{name}-fix-compilation-with-gcc-12.patch
# Fix test failure on ppc64le and aarch64 with gcc 12
# https://github.com/root-project/root/pull/9601
-Patch30: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch
+Patch13: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch
+# Add #include <cstring> for std::memcpy
+# https://github.com/root-project/root/pull/10116
+Patch14: %{name}-missing-include.patch
+# Fixes for tmva-sofie test compilation
+# https://github.com/root-project/root/pull/10117
+Patch15: %{name}-blas-linking-and-ignore-prefix.patch
+# Move private declarations away from the public header file
+# https://github.com/root-project/root/pull/10145
+Patch16: %{name}-move-private-decl.patch
+# Fix test when long is 32 bits
+# https://github.com/root-project/root/pull/10302
+Patch17: %{name}-longlong.patch
+# Ignore warnings (uring and RooNaNPacker)
+# https://github.com/root-project/root/pull/10303
+Patch18: %{name}-uring-warn.patch
+Patch19: %{name}-endian-warn.patch
+# Always call WaitForInFlightClusters before checking cluster IDs
+# https://github.com/root-project/root/pull/10304
+Patch20: %{name}-ntuplewait.patch
+# NENTRIES is not always a multiple of the expected size
+# https://github.com/root-project/root/pull/10305
+Patch21: %{name}-dataframe-callback.patch
+# Add/remove namespaces from Linkdef
+# https://github.com/root-project/root/pull/10306
+Patch22: %{name}-namespace-sofie.patch
+Patch23: %{name}-namespace-roofit.patch
+Patch24: %{name}-namespace-pymva.patch
+# Use calls from Python directly in tutorial
+# https://github.com/root-project/root/pull/10307
+Patch25: %{name}-roofit-tutorial.patch
+# Byte swap values read from the protobuf raw data stream on
+# big endian architectures
+# https://github.com/root-project/root/pull/10308
+Patch26: %{name}-big-endian-byte-swap.patch
+# Avoid crashes due to static initialization order
+# https://github.com/root-project/root/pull/10309
+Patch27: %{name}-rcolor-static-init.patch
+# Avoid deleting TFormulas twice
+# https://github.com/root-project/root/pull/10310
+Patch28: %{name}-avoid-deleting-TFormulas-twice.patch
+# Use unique filenames in fillrandom.py and fillrandom.C
+# https://github.com/root-project/root/pull/10311
+Patch29: %{name}-use-unique-filenames-in-fillrandom-tutorials.patch
+# Limit the number of threads in TMVA CNN/DNN test to save memory
+# https://github.com/root-project/root/pull/10312
+Patch30: %{name}-tmva-threads.patch
+# Fix library link order
+# https://github.com/root-project/root/pull/10313
+Patch31: %{name}-core-base-test.patch
+# Backports
+Patch32: %{name}-roofit-overflow.patch
+Patch33: %{name}-make-dyld-based-library-search-behavior-default.patch
+Patch34: %{name}-fix-TMVA-tutorial-using-internally-python.patch
+Patch35: %{name}-threadsh1-avoid-heap-use-after-free.patch
-BuildRequires: make
%if %{?rhel}%{!?rhel:0} == 7
+BuildRequires: devtoolset-8-toolchain
BuildRequires: cmake3 >= 3.9
%else
+BuildRequires: gcc-c++
+BuildRequires: gcc-gfortran
+BuildRequires: make
BuildRequires: cmake >= 3.9
%endif
BuildRequires: libX11-devel
@@ -177,8 +202,8 @@ BuildRequires: fontconfig-devel
BuildRequires: freetype-devel
BuildRequires: fcgi-devel
BuildRequires: ftgl-devel
-BuildRequires: glew-devel
BuildRequires: gl2ps-devel
+BuildRequires: glew-devel
BuildRequires: pcre-devel
BuildRequires: zlib-devel
BuildRequires: xz-devel
@@ -200,8 +225,8 @@ BuildRequires: mysql-devel
%endif
BuildRequires: sqlite-devel
BuildRequires: unixODBC-devel
-BuildRequires: mesa-libGL-devel
-BuildRequires: mesa-libGLU-devel
+BuildRequires: libGL-devel
+BuildRequires: libGLU-devel
%if %{?fedora}%{!?fedora:0} >= 27 || %{?rhel}%{!?rhel:0} >= 8
BuildRequires: libpq-devel
%else
@@ -215,7 +240,7 @@ BuildRequires: python2-numpy
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: python%{python3_pkgversion}-setuptools
BuildRequires: python%{python3_pkgversion}-numpy
-%if %{root7}
+%if %{webgui}
%ifarch %{qt5_qtwebengine_arches}
BuildRequires: qt5-qtbase-devel
BuildRequires: qt5-qtwebengine-devel
@@ -232,22 +257,23 @@ BuildRequires: xrootd-client-devel >= 1:3.3.5
BuildRequires: xrootd-private-devel >= 1:3.3.5
%endif
BuildRequires: cfitsio-devel
-BuildRequires: davix-devel >= 0.2.8
+BuildRequires: davix-devel >= 0.6.4
+%if %{gfal2}
BuildRequires: gfal2-devel
+%endif
BuildRequires: R-Rcpp-devel
BuildRequires: R-RInside-devel
BuildRequires: readline-devel
%if %{tbb}
BuildRequires: tbb-devel >= 2018
%endif
+BuildRequires: libuuid-devel
BuildRequires: emacs
BuildRequires: emacs-el
-BuildRequires: gcc-c++
-BuildRequires: gcc-gfortran
BuildRequires: graphviz-devel
BuildRequires: expat-devel
BuildRequires: pythia8-devel >= 8.1.80
-%if %{?fedora}%{!?fedora:0} >= 33
+%if %{?fedora}%{!?fedora:0} >= 33 || %{?rhel}%{!?rhel:0} >= 9
BuildRequires: flexiblas-devel
# Required for FlexiBLAS support in FindBLAS.cmake
# (in cmake 3.19.0, backported to cmake 3.18.3-1 in Fedora)
@@ -259,17 +285,16 @@ BuildRequires: json-devel
%if %{?fedora}%{!?fedora:0}
BuildRequires: liburing-devel
%endif
-%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
+%if %{tmvasofieparser}
+BuildRequires: protobuf-devel >= 3.0
+%endif
+%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8
BuildRequires: python%{python3_pkgversion}-pandas
%endif
-BuildRequires: doxygen
-BuildRequires: graphviz
BuildRequires: yuicompressor
BuildRequires: perl-generators
BuildRequires: gtest-devel
BuildRequires: gmock-devel
-# Some of the tests call lsb_release
-BuildRequires: redhat-lsb-core
# Fonts
BuildRequires: font(freesans)
BuildRequires: font(freeserif)
@@ -340,16 +365,6 @@ Requires: %{name}-core = %{version}-%{release}
This package contains fonts used by ROOT that are not available in Fedora.
In particular it contains STIX version 0.9 that is used by TMathText.
-%package doc
-Summary: Documentation for the ROOT system
-BuildArch: noarch
-License: LGPLv2+ and GPLv2+ and BSD
-Requires: mathjax
-
-%description doc
-This package contains the automatically generated ROOT class
-documentation.
-
%package tutorial
Summary: ROOT tutorial scripts and test suite
BuildArch: noarch
@@ -422,8 +437,28 @@ Obsoletes: python%{?python3_other_pkgversion}-%{name} < 6.22.00
Obsoletes: python%{?python3_other_pkgversion}-jupyroot < 6.22.00
Obsoletes: python%{?python3_other_pkgversion}-jsmva < 6.22.00
%endif
-%if ! %{memstat}
-Obsoletes: %{name}-memstat < %{version}-%{release}
+Obsoletes: %{name}-memstat < 6.26.00
+Obsoletes: %{name}-montecarlo-vmc < 6.26.00
+Obsoletes: %{name}-doc < 6.26.00
+%if %{?rhel}%{!?rhel:0} == 8
+# Obsolete the ROOT 7 packages in EPEL 8
+# Minimum C++ version changed from 14 to 17
+Obsoletes: %{name}-graf-gpadv7 < 6.26.00
+Obsoletes: %{name}-graf-primitives < 6.26.00
+Obsoletes: %{name}-graf3d-eve7 < 6.26.00
+Obsoletes: %{name}-gui-browsable < 6.26.00
+Obsoletes: %{name}-gui-browserv7 < 6.26.00
+Obsoletes: %{name}-gui-canvaspainter < 6.26.00
+Obsoletes: %{name}-gui-fitpanelv7 < 6.26.00
+Obsoletes: %{name}-histv7 < 6.26.00
+Obsoletes: %{name}-hist-draw < 6.26.00
+Obsoletes: %{name}-tree-ntuple < 6.26.00
+%endif
+%if %{buildpy2}
+Obsoletes: python2-distrdf < 6.26.00
+%endif
+%if ! %{distrdf}
+Obsoletes: python%{python3_pkgversion}-distrdf < 6.26.00
%endif
%description core
@@ -449,10 +484,14 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release}
# not work with the system libraries. The bundled llvm and
# clang are compiled using -fvisibility=hidden, and are not
# visible outside of the libCling module.
-Requires: gcc-c++
-Requires: redhat-rpm-config
Provides: bundled(clang-libs)
Provides: bundled(llvm-libs)
+%if %{?rhel}%{!?rhel:0} == 7
+Requires: devtoolset-8-toolchain
+%else
+Requires: gcc-c++
+%endif
+Requires: redhat-rpm-config
Obsoletes: %{name}-cint7 < 5.26.00c
Obsoletes: %{name}-cint < 6.00.00
Obsoletes: %{name}-cintex < 6.00.00
@@ -516,17 +555,6 @@ Requires: %{name}-tmva = %{version}-%{release}
%description -n python2-jsmva
TMVA interface used by JupyROOT.
-
-%package -n python2-distrdf
-Summary: Distributed RDataFrame
-BuildArch: noarch
-%{?python_provide:%python_provide python2-distrdf}
-Requires: python2-%{name} = %{version}-%{release}
-Requires: %{name}-tree-dataframe = %{version}-%{release}
-
-%description -n python2-distrdf
-A layer on top of RDataFrame to enable distributed computations. It is
-a port of the previously known PyRDF python package.
%endif
%package -n python%{python3_pkgversion}-%{name}
@@ -573,6 +601,7 @@ Requires: %{name}-tmva = %{version}-%{release}
%description -n python%{python3_pkgversion}-jsmva
TMVA interface used by JupyROOT.
+%if %{distrdf}
%package -n python%{python3_pkgversion}-distrdf
Summary: Distributed RDataFrame
BuildArch: noarch
@@ -583,6 +612,7 @@ Requires: %{name}-tree-dataframe = %{version}-%{release}
%description -n python%{python3_pkgversion}-distrdf
A layer on top of RDataFrame to enable distributed computations. It is
a port of the previously known PyRDF python package.
+%endif
%package r
Summary: R interface for ROOT
@@ -956,6 +986,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release}
Requires: %{name}-io-xmlparser%{?_isa} = %{version}-%{release}
Requires: %{name}-matrix%{?_isa} = %{version}-%{release}
Requires: %{name}-roofit%{?_isa} = %{version}-%{release}
+Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release}
Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release}
Requires: %{name}-roostats%{?_isa} = %{version}-%{release}
Requires: %{name}-tree%{?_isa} = %{version}-%{release}
@@ -988,6 +1019,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release}
%description io-dcache
This package contains the dCache extension for ROOT.
+%if %{gfal2}
%package io-gfal
Summary: Grid File Access Library input/output library for ROOT
Requires: %{name}-core%{?_isa} = %{version}-%{release}
@@ -995,6 +1027,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release}
%description io-gfal
This package contains the Grid File Access Library extension for ROOT.
+%endif
%package io-sql
Summary: SQL input/output library for ROOT
@@ -1226,19 +1259,6 @@ Obsoletes: %{name}-tree-player < 6.14.00
%description vecops
This package contains a vector operation extension for ROOT.
-%if %{memstat}
-%package memstat
-Summary: Memory statistics tool for use with ROOT
-Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-hist%{?_isa} = %{version}-%{release}
-Requires: %{name}-io%{?_isa} = %{version}-%{release}
-Requires: %{name}-tree%{?_isa} = %{version}-%{release}
-
-%description memstat
-This package contains the memory statistics tool for debugging memory
-leaks and such.
-%endif
-
%package montecarlo-eg
Summary: Event generator library for ROOT
Requires: %{name}-core%{?_isa} = %{version}-%{release}
@@ -1261,17 +1281,6 @@ package provide the ROOT user with transparent interface to the Pythia
(version 8) event generators for hadronic interactions. If the term
"hadronic" does not ring any bells, this package is not for you.
-%package montecarlo-vmc
-Summary: Virtual Monte-Carlo (simulation) library for ROOT
-Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-geom%{?_isa} = %{version}-%{release}
-Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
-Requires: %{name}-montecarlo-eg%{?_isa} = %{version}-%{release}
-Requires: %{name}-physics%{?_isa} = %{version}-%{release}
-
-%description montecarlo-vmc
-This package contains the VMC library for ROOT.
-
%package net
Summary: Net library for ROOT
Requires: %{name}-core%{?_isa} = %{version}-%{release}
@@ -1298,7 +1307,7 @@ This package contains the basic authentication algorithms used by ROOT.
%package net-davix
Summary: Davix extension for ROOT
-Requires: davix-libs%{?_isa} >= 0.2.8
+Requires: davix-libs%{?_isa} >= 0.6.4
Requires: %{name}-core%{?_isa} = %{version}-%{release}
Requires: %{name}-io%{?_isa} = %{version}-%{release}
@@ -1456,6 +1465,26 @@ suitable for adoption in different disciplines as well.
This package contains the RooFit toolkit classes.
+%package roofit-common
+Summary: ROOT extension for modeling expected distributions - common
+License: BSD
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+
+%description roofit-common
+The RooFit packages provide a toolkit for modeling the expected
+distribution of events in a physics analysis. Models can be used to
+perform likelihood fits, produce plots, and generate "toy Monte
+Carlo" samples for various studies. The RooFit tools are integrated
+with the object-oriented and interactive ROOT graphical environment.
+
+RooFit has been developed for the BaBar collaboration, a high energy
+physics experiment at the Stanford Linear Accelerator Center, and is
+primarily targeted to the high-energy physicists using the ROOT
+analysis environment, but the general nature of the package make it
+suitable for adoption in different disciplines as well.
+
+This package contains the RooFit common classes.
+
%package roofit-core
Summary: ROOT extension for modeling expected distributions - core
License: BSD
@@ -1467,7 +1496,9 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release}
Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
Requires: %{name}-matrix%{?_isa} = %{version}-%{release}
Requires: %{name}-minuit%{?_isa} = %{version}-%{release}
+Requires: %{name}-minuit2%{?_isa} = %{version}-%{release}
Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release}
+Requires: %{name}-roofit-common%{?_isa} = %{version}-%{release}
Requires: %{name}-tree%{?_isa} = %{version}-%{release}
# Package split / Library split (from roofit)
Obsoletes: %{name}-roofit < 6.20.00
@@ -1516,8 +1547,9 @@ This package contains RooFit classes that use the mathmore library.
%package roofit-batchcompute
Summary: Optimized computation functions for PDFs
Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
-Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-io%{?_isa} = %{version}-%{release}
+Requires: %{name}-multiproc%{?_isa} = %{version}-%{release}
+Requires: %{name}-net%{?_isa} = %{version}-%{release}
%description roofit-batchcompute
While fitting, a significant amount of time and processing power is
@@ -1532,6 +1564,43 @@ multiple times for different vector instuction set architectures and
the optimal code is executed during runtime, as a result of an
automatic hardware detection mechanism that this library contains.
+%package roofit-dataframe-helpers
+Summary: RooFit DaraFrame helpers
+License: BSD
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+
+%description roofit-dataframe-helpers
+The RooFit packages provide a toolkit for modeling the expected
+distribution of events in a physics analysis. Models can be used to
+perform likelihood fits, produce plots, and generate "toy Monte
+Carlo" samples for various studies. The RooFit tools are integrated
+with the object-oriented and interactive ROOT graphical environment.
+
+RooFit has been developed for the BaBar collaboration, a high energy
+physics experiment at the Stanford Linear Accelerator Center, and is
+primarily targeted to the high-energy physicists using the ROOT
+analysis environment, but the general nature of the package make it
+suitable for adoption in different disciplines as well.
+
+This package contains DaraFrame helper classes for RooFit
+
+%package roofit-hs3
+Summary: RooFit HS3
+License: BSD
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release}
+Requires: %{name}-roofit%{?_isa} = %{version}-%{release}
+Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-roostats%{?_isa} = %{version}-%{release}
+
+%description roofit-hs3
+When using RooFit, statistical models can be conveniently handled and
+stored as a RooWorkspace. However, for the sake of interoperability
+with other statistical frameworks, and also ease of manipulation, it
+may be useful to store statistical models in text form. This library
+sets out to achieve exactly that, exporting to and importing from JSON
+and YML.
+
%package roostats
Summary: Statistical tools built on top of RooFit
License: BSD
@@ -1639,6 +1708,7 @@ Summary: Toolkit for multivariate data analysis (Python)
License: BSD
Requires: %{name}-core%{?_isa} = %{version}-%{release}
Requires: %{name}-tmva%{?_isa} = %{version}-%{release}
+Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release}
Requires: python%{python3_pkgversion}-numpy
%description tmva-python
@@ -1655,6 +1725,27 @@ Requires: %{name}-tmva%{?_isa} = %{version}-%{release}
%description tmva-r
R integration with TMVA.
+%package tmva-sofie
+Summary: ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit)
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+
+%description tmva-sofie
+ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit)
+generates C++ functions easily invokable for the fast inference of
+trained neural network models. It takes ONNX model files as inputs and
+produces C++ header files that can be included and utilized in a
+"plug-and-go" style.
+
+%if %{tmvasofieparser}
+%package tmva-sofie-parser
+Summary: ROOT/TMVA SOFIE Parsers
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release}
+
+%description tmva-sofie-parser
+Parsers for ROOT/TMVA SOFIE
+%endif
+
%package tmva-gui
Summary: Toolkit for multivariate data analysis GUI
License: BSD
@@ -1692,6 +1783,7 @@ Requires: %{name}-tree%{?_isa} = %{version}-%{release}
Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release}
%endif
Requires: %{name}-tree-player%{?_isa} = %{version}-%{release}
+Requires: %{name}-vecops%{?_isa} = %{version}-%{release}
# Library split (tree-dataframe and vecops from tree-player)
Obsoletes: %{name}-tree-player < 6.14.00
@@ -1765,6 +1857,41 @@ Requires: jupyter-notebook
%description notebook
Javascript and style files for the Jupyter ROOT Notebook.
+%if %{webgui}
+%package gui-webdisplay
+Summary: Web display (ROOT 7)
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
+Requires: %{name}-net-http%{?_isa} = %{version}-%{release}
+
+%description gui-webdisplay
+This package contains a web display extension for ROOT 7.
+
+%ifarch %{qt5_qtwebengine_arches}
+%package gui-qt5webdisplay
+Summary: Qt5 Web display (ROOT 7)
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release}
+Requires: %{name}-net-http%{?_isa} = %{version}-%{release}
+
+%description gui-qt5webdisplay
+This package contains a Qt5 web display extension for ROOT 7.
+%endif
+
+%package gui-webgui6
+Summary: Web based GUI for ROOT
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-graf%{?_isa} = %{version}-%{release}
+Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release}
+Requires: %{name}-gui%{?_isa} = %{version}-%{release}
+Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release}
+Requires: %{name}-hist%{?_isa} = %{version}-%{release}
+Requires: %{name}-io%{?_isa} = %{version}-%{release}
+
+%description gui-webgui6
+This package provides a Web based GUI for ROOT.
+%endif
+
%if %{root7}
%package graf-gpadv7
Summary: Canvas and pad library for ROOT (ROOT 7)
@@ -1787,6 +1914,7 @@ Requires: %{name}-core%{?_isa} = %{version}-%{release}
Requires: %{name}-geom%{?_isa} = %{version}-%{release}
Requires: %{name}-graf%{?_isa} = %{version}-%{release}
Requires: %{name}-graf3d-csg%{?_isa} = %{version}-%{release}
+Requires: %{name}-gui-browserv7%{?_isa} = %{version}-%{release}
Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release}
Requires: %{name}-hist%{?_isa} = %{version}-%{release}
Requires: %{name}-io%{?_isa} = %{version}-%{release}
@@ -1808,6 +1936,7 @@ Requires: %{name}-hist%{?_isa} = %{version}-%{release}
Requires: %{name}-hist-draw%{?_isa} = %{version}-%{release}
Requires: %{name}-io%{?_isa} = %{version}-%{release}
Requires: %{name}-tree%{?_isa} = %{version}-%{release}
+Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release}
%description gui-browsable
This package contains GUI browsable components for ROOT 7.
@@ -1815,9 +1944,9 @@ This package contains GUI browsable components for ROOT 7.
%package gui-browserv7
Summary: Browser (ROOT 7)
Requires: %{name}-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-geom%{?_isa} = %{version}-%{release}
Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release}
Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release}
-Requires: %{name}-geom%{?_isa} = %{version}-%{release}
Requires: %{name}-graf3d-eve7%{?_isa} = %{version}-%{release}
Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release}
Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release}
@@ -1850,39 +1979,6 @@ Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
This package contains a library to show a pop-up dialog when fitting
various kinds of data.
-%ifarch %{qt5_qtwebengine_arches}
-%package gui-qt5webdisplay
-Summary: Qt5 Web display (ROOT 7)
-Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release}
-Requires: %{name}-net-http%{?_isa} = %{version}-%{release}
-
-%description gui-qt5webdisplay
-This package contains a Qt5 web display extension for ROOT 7.
-%endif
-
-%package gui-webdisplay
-Summary: Web display (ROOT 7)
-Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
-Requires: %{name}-net-http%{?_isa} = %{version}-%{release}
-
-%description gui-webdisplay
-This package contains a web display extension for ROOT 7.
-
-%package gui-webgui6
-Summary: Web based GUI for ROOT
-Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-graf%{?_isa} = %{version}-%{release}
-Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release}
-Requires: %{name}-gui%{?_isa} = %{version}-%{release}
-Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release}
-Requires: %{name}-hist%{?_isa} = %{version}-%{release}
-Requires: %{name}-io%{?_isa} = %{version}-%{release}
-
-%description gui-webgui6
-This package provides a Web based GUI for ROOT.
-
%package histv7
Summary: Histogram library for ROOT (ROOT 7)
Requires: %{name}-core%{?_isa} = %{version}-%{release}
@@ -1902,6 +1998,7 @@ This package contains an histogram drawing extension for ROOT 7.
Summary: Ntuple (ROOT 7)
Requires: %{name}-core%{?_isa} = %{version}-%{release}
Requires: %{name}-io%{?_isa} = %{version}-%{release}
+Requires: %{name}-vecops%{?_isa} = %{version}-%{release}
%description tree-ntuple
This package contains an ntuple extension for ROOT 7.
@@ -1937,12 +2034,15 @@ This package contains an ntuple extension for ROOT 7.
%patch24 -p1
%patch25 -p1
%patch26 -p1
-%if %{?rhel}%{!?rhel:0} == 7
%patch27 -p1
-%endif
%patch28 -p1
%patch29 -p1
%patch30 -p1
+%patch31 -p1
+%patch32 -p1
+%patch33 -p1
+%patch34 -p1
+%patch35 -p1
# Remove bundled sources in order to be sure they are not used
# * afterimage
@@ -1959,7 +2059,9 @@ rm -rf builtins/nlohmann
rm -rf builtins/openssl
rm -rf builtins/pcre
rm -rf builtins/tbb
+rm -rf builtins/xrootd
rm -rf builtins/xxhash
+rm -rf builtins/zeromq
rm -rf builtins/zlib
rm -rf builtins/zstd
# * lzma
@@ -1969,40 +2071,26 @@ rm graf3d/gl/src/gl2ps.cxx graf3d/gl/src/gl2ps/gl2ps.h
# * unuran
rm -rf math/unuran/src/*.tar.gz
# * xrootd-private-devel headers
-rm -rf proof/xrdinc
+rm -rf proof/xrdinc/*
# * x11 extension headers
rm -rf graf2d/x11/inc/X11
# * mathjax
rm -rf documentation/doxygen/mathjax.tar.gz
-sed /mathjax.tar.gz/d -i documentation/doxygen/Makefile
-%if %{root7}
-# * string_view (<experimental/string_view> requires c++-14)
-rm core/foundation/inc/ROOT/libcpp_string_view.h \
- core/foundation/inc/ROOT/RWrap_libcpp_string_view.h
-sed /RWrap_libcpp_string_view.h/d -i build/unix/module.modulemap
-%endif
# * jsroot
-rm -rf js/*
+rm -rf js/[^f]* js/files/draw.htm js/files/online.htm
# Remove unsupported man page macros
sed -e '/^\.UR/d' -e '/^\.UE/d' -i man/man1/*
-# Work around missing libraries in Fedora's gmock packaging < 1.8.0
-if [ ! -r %{_libdir}/libgmock.so ] ; then
-mkdir googlemock
-pushd googlemock
-g++ %{optflags} -DGTEST_HAS_PTHREAD=1 -c -o gmock-all.o /usr/src/gmock/gmock-all.cc
-ar rv libgmock.a gmock-all.o
-g++ %{optflags} -DGTEST_HAS_PTHREAD=1 -c -o gmock_main.o /usr/src/gmock/gmock_main.cc
-ar rv libgmock_main.a gmock_main.o
-popd
-fi
-
# Remove pre-minified script and style files
rm etc/notebook/JsMVA/js/*.min.js
rm etc/notebook/JsMVA/css/*.min.css
%build
+%if %{?rhel}%{!?rhel:0} == 7
+. /opt/rh/devtoolset-8/enable
+%endif
+
# This package triggers a fault in LLVM when LTO is enabled. Until LLVM
# is analyzed and fixed, disable LTO
%define _lto_cflags %{nil}
@@ -2033,6 +2121,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dbuiltin_cfitsio:BOOL=OFF \
-Dbuiltin_clang:BOOL=ON \
-Dbuiltin_cling:BOOL=ON \
+ -Dbuiltin_cppzmq:BOOL=OFF \
-Dbuiltin_davix:BOOL=OFF \
-Dbuiltin_fftw3:BOOL=OFF \
-Dbuiltin_freetype:BOOL=OFF \
@@ -2040,6 +2129,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dbuiltin_gl2ps:BOOL=OFF \
-Dbuiltin_glew:BOOL=OFF \
-Dbuiltin_gsl:BOOL=OFF \
+ -Dbuiltin_gtest:BOOL=OFF \
-Dbuiltin_llvm:BOOL=ON \
-Dbuiltin_lz4:BOOL=OFF \
-Dbuiltin_lzma:BOOL=OFF \
@@ -2054,6 +2144,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dbuiltin_veccore:BOOL=OFF \
-Dbuiltin_xrootd:BOOL=OFF \
-Dbuiltin_xxhash:BOOL=OFF \
+ -Dbuiltin_zeromq:BOOL=OFF \
-Dbuiltin_zlib:BOOL=OFF \
-Dbuiltin_zstd:BOOL=OFF \
-Dalien:BOOL=OFF \
@@ -2065,14 +2156,8 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dclad:BOOL=OFF \
-Dcocoa:BOOL=OFF \
-Dcuda:BOOL=OFF \
-%if %{root7}
- -Droot7:BOOL=ON \
- -Dwebgui:BOOL=ON \
-%else
- -Droot7:BOOL=OFF \
- -Dwebgui:BOOL=OFF \
-%endif
-Dcxxmodules:BOOL=OFF \
+ -Ddaos:BOOL=OFF \
-Ddataframe:BOOL=ON \
-Ddavix:BOOL=ON \
-Ddcache:BOOL=ON \
@@ -2084,7 +2169,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dfitsio:BOOL=ON \
-Dfortran:BOOL=ON \
-Dgdml:BOOL=ON \
+%if %{gfal2}
-Dgfal:BOOL=ON \
+%else
+ -Dgfal:BOOL=OFF \
+%endif
-Dgsl_shared:BOOL=ON \
-Dgviz:BOOL=ON \
-Dhttp:BOOL=ON \
@@ -2097,11 +2186,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dlibcxx:BOOL=OFF \
-Dmathmore:BOOL=ON \
-Dmemory_termination:BOOL=OFF \
-%if %{memstat}
- -Dmemstat:BOOL=ON \
-%else
- -Dmemstat:BOOL=OFF \
-%endif
-Dminuit2:BOOL=ON \
-Dmlp:BOOL=ON \
-Dmonalisa:BOOL=OFF \
@@ -2120,8 +2204,16 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
%else
-Dqt5web:BOOL=OFF \
%endif
+ -Dqt6web:BOOL=OFF \
-Dr:BOOL=ON \
-Droofit:BOOL=ON \
+ -Droofit_multiprocess:BOOL=OFF \
+ -Droofit_hs3_ryml:BOOL=OFF \
+%if %{root7}
+ -Droot7:BOOL=ON \
+%else
+ -Droot7:BOOL=OFF \
+%endif
-Drpath:BOOL=OFF \
-Druby:BOOL=OFF \
-Druntime_cxxmodules:BOOL=OFF \
@@ -2141,6 +2233,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dtmva-gpu:BOOL=OFF \
-Dtmva-pymva:BOOL=ON \
-Dtmva-rmva:BOOL=ON \
+%if %{tmvasofieparser}
+ -Dtmva-sofie:BOOL=ON \
+%else
+ -Dtmva-sofie:BOOL=OFF \
+%endif
-Dunuran:BOOL=ON \
%if %{?fedora}%{!?fedora:0}
-During:BOOL=ON \
@@ -2151,7 +2248,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dvdt:BOOL=OFF \
-Dveccore:BOOL=OFF \
-Dvecgeom:BOOL=OFF \
- -Dvmc:BOOL=ON \
+%if %{webgui}
+ -Dwebgui:BOOL=ON \
+%else
+ -Dwebgui:BOOL=OFF \
+%endif
-Dx11:BOOL=ON \
-Dxml:BOOL=ON \
-Dxrootd:BOOL=ON \
@@ -2162,6 +2263,8 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
%endif
-Dfail-on-missing:BOOL=ON \
-Dtesting:BOOL=ON \
+ -Dtest_distrdf_pyspark:BOOL=OFF \
+ -Dtest_distrdf_dask:BOOL=OFF \
-Dclingtest:BOOL=OFF \
-Dcoverage:BOOL=OFF \
-Droottest:BOOL=OFF \
@@ -2243,7 +2346,6 @@ rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python2_version_uscore}.so
mkdir -p %{buildroot}%{python2_sitelib}
cp -pr %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python2_sitelib}
-cp -pr %{buildroot}%{_libdir}/%{name}/DistRDF %{buildroot}%{python2_sitelib}
# Create .egg-info files so that rpm auto-generates provides
echo 'Name: ROOT' > \
@@ -2258,10 +2360,6 @@ echo 'Name: JsMVA' > \
%{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info
echo 'Version: %{version}' >> \
%{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info
-echo 'Name: DistRDF' > \
- %{buildroot}%{python2_sitelib}/DistRDF-%{version}.egg-info
-echo 'Version: %{version}' >> \
- %{buildroot}%{python2_sitelib}/DistRDF-%{version}.egg-info
%endif
@@ -2290,7 +2388,9 @@ rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so
mkdir -p %{buildroot}%{python3_sitelib}
mv %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python3_sitelib}
+%if %{distrdf}
mv %{buildroot}%{_libdir}/%{name}/DistRDF %{buildroot}%{python3_sitelib}
+%endif
# Create .egg-info files so that rpm auto-generates provides
echo 'Name: ROOT' > \
@@ -2305,10 +2405,12 @@ echo 'Name: JsMVA' > \
%{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info
echo 'Version: %{version}' >> \
%{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info
+%if %{distrdf}
echo 'Name: DistRDF' > \
%{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info
echo 'Version: %{version}' >> \
%{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info
+%endif
# Put jupyter stuff in the right places
mkdir -p %{buildroot}%{_datadir}/jupyter/kernels
@@ -2398,11 +2500,14 @@ pushd %{buildroot}%{_datadir}/%{name}/plugins
rm TBrowserImp/P030_RWebBrowserImp.C
%endif
rm TDataSetManager/P020_TDataSetManagerAliEn.C
+%if ! %{gfal2}
+rm TFile/P050_TGFALFile.C
+%endif
rm TFile/P070_TAlienFile.C
rm TGLManager/P020_TGWin32GLManager.C
rm TGLManager/P030_TGOSXGLManager.C
rm TGrid/P010_TAlien.C
-%if ! %{root7}
+%if ! %{webgui}
rm TGuiFactory/P030_TWebGuiFactory.C
%endif
%if %{xrootd5}
@@ -2429,9 +2534,10 @@ rmdir TSlave
rmdir TVirtualGeoConverter
popd
-# Replace bundled jsroot with symlink to system version
-rmdir %{buildroot}%{_datadir}/%{name}/js
-ln -s /usr/share/javascript/jsroot %{buildroot}%{_datadir}/%{name}/js
+# Replace bundled jsroot with symlinks to system version
+for x in img libs scripts style files/draw.htm files/online.htm ; do
+ ln -s /usr/share/javascript/jsroot/$x %{buildroot}%{_datadir}/%{name}/js/$x
+done
# Create ldconfig configuration
mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d
@@ -2458,30 +2564,6 @@ cp -p interpreter/llvm/src/CREDITS.TXT interpreter/llvm/src/llvm-CREDITS.TXT
cp -p interpreter/llvm/src/LICENSE.TXT interpreter/llvm/src/llvm-LICENSE.TXT
cp -p interpreter/llvm/src/README.txt interpreter/llvm/src/llvm-README.txt
-# Generate documentation
-pushd documentation/doxygen
-mkdir -p doc/html
-ln -s /usr/share/javascript/mathjax doc/html/mathjax
-ln -s ../../files files
-for x in df014_CsvDataSource_MuRun2010B_cpp.csv \
- df014_CsvDataSource_MuRun2010B_py.csv \
- df015_CsvDataSource_MuRun2010B.csv ; do
- ln -sf ../../files/tutorials/df014_CsvDataSource_MuRun2010B.csv $x
-done
-# Create the py-hsimple.root file in advance (needed as input)
-ROOTIGNOREPREFIX=1 PATH=${PWD}/../../%{_vpath_builddir}/bin:${PATH} \
- ROOTSYS=${PWD}/../../%{_vpath_builddir} \
- LD_LIBRARY_PATH=${PWD}/../../%{_vpath_builddir}/lib \
- PYTHONPATH=${PWD}/../../%{_vpath_builddir}/lib \
- %{__python3} ../../tutorials/pyroot/hsimple.py
-ROOTIGNOREPREFIX=1 PATH=${PWD}/../../%{_vpath_builddir}/bin:${PATH} \
- ROOTSYS=${PWD}/../../%{_vpath_builddir} \
- LD_LIBRARY_PATH=${PWD}/../../%{_vpath_builddir}/lib \
- PYTHONPATH=${PWD}/../../%{_vpath_builddir}/lib \
- make DOXYGEN_OUTPUT_DIRECTORY=${PWD}/doc PYTHON_EXECUTABLE=%{__python3}
-mv doc/html %{buildroot}%{_pkgdocdir}/html
-popd
-
# Create includelist files ...
for f in `find %{_vpath_builddir} -name cmake_install.cmake -a '!' -path '*/llvm/*'` ; do
l=`sed 's!%{_vpath_builddir}/\(.*\)/cmake_install.cmake!includelist-\1!' <<< $f`
@@ -2507,6 +2589,10 @@ cat includelist-net-netx >> includelist-netx
%endif
%check
+%if %{?rhel}%{!?rhel:0} == 7
+. /opt/rh/devtoolset-8/enable
+%endif
+
pushd %{_vpath_builddir}
pushd test
ln -s ../../files files
@@ -2525,6 +2611,15 @@ popd
pushd tmva/tmva/test/envelope
ln -s ../../../../../files files
popd
+
+# Some of the tests call lsb_release -d -s
+# Provide a replacement script instead of build requiring redhat-lsb-core
+cat > bin/lsb_release << EOF
+#! /bin/sh
+cat /etc/redhat-release
+EOF
+chmod +x bin/lsb_release
+
# Exclude some tests that can not be run
#
# - test-stressIOPlugins-*
@@ -2545,8 +2640,13 @@ popd
# reads sqlite data over network:
# http://root.cern.ch/files/root_download_stats.sqlite
#
-# - gtest-tree-treeplayer-test-treeprocessormt-remotefiles
+# - tutorial-dataframe-df033_Describe-py
# - tutorial-dataframe-df102_NanoAODDimuonAnalysis(-py)?
+# reads input data over network:
+# root://eospublic.cern.ch//eos/opendata/cms/derived-data/
+# AOD2NanoAODOutreachTool/Run2012BC_DoubleMuParked_Muons.root
+#
+# - gtest-tree-treeplayer-test-treeprocessormt-remotefiles
# - tutorial-dataframe-df103_NanoAODHiggsAnalysis(-py)?
# reads input data over network:
# root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/
@@ -2555,12 +2655,14 @@ popd
# - tutorial-dataframe-df105_WBosonAnalysis-py
# - tutorial-dataframe-df106_HiggsToFourLeptons-py
# - tutorial-dataframe-df107_SingleTopAnalysis-py
+# - tutorial-rcanvas-df104-py
+# - tutorial-rcanvas-df105-py
# reads input data over network:
# root://eospublic.cern.ch//eos/opendata/atlas/OutreachDatasets/2020-01-22/
#
-# - tutorial-v7-climate-global_temperatures
+# - tutorial-v7-global_temperatures.cxx
# reads input data over network
-# http://root.cern./files/tutorials/GlobalLandTemperaturesByCity.csv
+# http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv
#
# - tutorial-v7-ntuple-ntpl003_lhcbOpenData
# reads input data over network
@@ -2570,13 +2672,13 @@ popd
# reads input data over network
# http://root.cern.ch/files/NanoAOD_DoubleMuon_CMS2011OpenData.root (1.5 GB)
#
-# - tutorial-v7-line.cxx
-# requires a web browser (and js-jsroot) to render javascript graphics
-#
# - gtest-net-davix-test-RRawFileDavix
# reads input file over network
# http://root.cern.ch/files/davix.test
#
+# - gtest-net-netxng-test-RRawFileNetXNG
+# root://eospublic.cern.ch/eos/root-eos/xrootd.test
+#
# - gtest-tmva-tmva-test-rreader
# - gtest-tmva-tmva-test-rstandardscaler
# - tutorial-tmva-tmva003_RReader
@@ -2593,6 +2695,9 @@ popd
# - test-import-numba
# - tutorial-pyroot-pyroot004_NumbaDeclare-py
# these tests require the numba python module which is not available
+#
+# - test-webgui-ping
+# error: Cannot display window in native
excluded="\
test-stressIOPlugins|\
tutorial-dataframe-df101_h1Analysis|\
@@ -2603,18 +2708,21 @@ tutorial-multicore-mp104_processH1|\
tutorial-multicore-mp105_processEntryList|\
tutorial-multicore-imt101_parTreeProcessing|\
tutorial-dataframe-df..._SQlite|\
-gtest-tree-treeplayer-test-treeprocessormt-remotefiles|\
+tutorial-dataframe-df033_Describe-py|\
tutorial-dataframe-df102_NanoAODDimuonAnalysis|\
+gtest-tree-treeplayer-test-treeprocessormt-remotefiles|\
tutorial-dataframe-df103_NanoAODHiggsAnalysis|\
tutorial-dataframe-df104_HiggsToTwoPhotons-py|\
tutorial-dataframe-df105_WBosonAnalysis-py|\
tutorial-dataframe-df106_HiggsToFourLeptons-py|\
tutorial-dataframe-df107_SingleTopAnalysis-py|\
-tutorial-v7-climate-global_temperatures|\
+tutorial-rcanvas-df104-py|\
+tutorial-rcanvas-df105-py|\
+tutorial-v7-global_temperatures.cxx|\
tutorial-v7-ntuple-ntpl003_lhcbOpenData|\
tutorial-v7-ntuple-ntpl004_dimuon|\
-tutorial-v7-line.cxx|\
gtest-net-davix-test-RRawFileDavix|\
+gtest-net-netxng-test-RRawFileNetXNG|\
gtest-tmva-tmva-test-rreader|\
gtest-tmva-tmva-test-rstandardscaler|\
tutorial-tmva-tmva003_RReader|\
@@ -2623,107 +2731,31 @@ tutorial-tmva-tmva103_Application|\
pyunittests-pyroot-dependency-versions|\
pyunittests-pyroot-numbadeclare|\
test-import-numba|\
-tutorial-pyroot-pyroot004_NumbaDeclare-py"
-
-# - tutorial-v7-concurrentfill.cxx
-# - tutorial-v7-draw.cxx
-# - tutorial-v7-draw_frame.cxx
-# - tutorial-v7-draw_legend.cxx
-# - tutorial-v7-draw_mt.cxx
-# - tutorial-v7-draw_rh1.cxx
-# - tutorial-v7-draw_rh1_large.cxx
-# - tutorial-v7-draw_rh2.cxx
-# - tutorial-v7-draw_rh2_colz.cxx
-# - tutorial-v7-draw_rh2_large.cxx
-# - tutorial-v7-draw_rh3.cxx
-# - tutorial-v7-draw_rh3_large.cxx
-# - tutorial-v7-draw_subpads.cxx
-# - tutorial-v7-histops.cxx
-# - tutorial-v7-perf.cxx
-# - tutorial-v7-perfcomp.cxx
-# - tutorial-v7-simple.cxx
-# Fails with "already deserialized this template specialization"
-# https://github.com/root-project/root/issues/8073
-excluded="${excluded}|\
-tutorial-v7-concurrentfill.cxx|\
-tutorial-v7-draw.cxx|\
-tutorial-v7-draw_frame.cxx|\
-tutorial-v7-draw_legend.cxx|\
-tutorial-v7-draw_mt.cxx|\
-tutorial-v7-draw_rh1.cxx|\
-tutorial-v7-draw_rh1_large.cxx|\
-tutorial-v7-draw_rh2.cxx|\
-tutorial-v7-draw_rh2_colz.cxx|\
-tutorial-v7-draw_rh2_large.cxx|\
-tutorial-v7-draw_rh3.cxx|\
-tutorial-v7-draw_rh3_large.cxx|\
-tutorial-v7-draw_subpads.cxx|\
-tutorial-v7-histops.cxx|\
-tutorial-v7-perf.cxx|\
-tutorial-v7-perfcomp.cxx|\
-tutorial-v7-simple.cxx"
+tutorial-pyroot-pyroot004_NumbaDeclare-py|\
+test-webgui-ping"
-%if %{?rhel}%{!?rhel:0} == 7
+%if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 )
# - test-import-pandas
# - tutorial-dataframe-df026_AsNumpyArrays-py
+# - tutorial-roofit-rf409_NumPyPandasToRooFit-py
# requires the pandas python module which is not available in EPEL 7
-#
-# - tutorial-multicore-mp001_fillHistos
-# - tutorial-multicore-mp101_fillNtuples
-# - tutorial-multicore-mp102_readNtuplesFillHistosAndFit
-# - tutorial-multicore-mp201_parallelHistoFill
-# fails intermittently on EPEL 7 with the error
-# symbol '_Z6MPRecvP7TSocket' unresolved while linking
-# symbol '_Z6MPSendP7TSocketj' unresolved while linking
+# or EPEL 9
excluded="${excluded}|\
test-import-pandas|\
tutorial-dataframe-df026_AsNumpyArrays-py|\
-tutorial-multicore-mp001_fillHistos|\
-tutorial-multicore-mp101_fillNtuples|\
-tutorial-multicore-mp102_readNtuplesFillHistosAndFit|\
-tutorial-multicore-mp201_parallelHistoFill"
+tutorial-roofit-rf409_NumPyPandasToRooFit-py"
%endif
%ifarch %{ix86} %{arm}
+%if %{?fedora}%{!?fedora:0} <= 35
# Tests failing on 32 bit architectures (dataframe)
-# A bit random - not all the tests fail every time...
-# - gtest-tree-dataframe-test-dataframe-cache
-# - gtest-tree-dataframe-test-dataframe-callbacks
-# - gtest-tree-dataframe-test-dataframe-colnames
-# - gtest-tree-dataframe-test-dataframe-concurrency
-# - gtest-tree-dataframe-test-dataframe-display
-# - gtest-tree-dataframe-test-dataframe-friends
-# - gtest-tree-dataframe-test-dataframe-helpers
-# - gtest-tree-dataframe-test-dataframe-interface
-# - gtest-tree-dataframe-test-dataframe-leaves
-# - gtest-tree-dataframe-test-dataframe-ranges
-# - gtest-tree-dataframe-test-dataframe-regression
-# - gtest-tree-dataframe-test-dataframe-simple
-# - gtest-tree-dataframe-test-dataframe-snapshot
-# - gtest-tree-dataframe-test-dataframe-vecops
-# - gtest-tree-dataframe-test-datasource-csv
-# - gtest-tree-dataframe-test-datasource-more
-# - gtest-tree-dataframe-test-datasource-sqlite
-# - gtest-tree-dataframe-test-datasource-trivial
+#
+# - gtest-tree-dataframe-test-dataframe-*
+# - gtest-tree-dataframe-test-datasource-*
excluded="${excluded}|\
-gtest-tree-dataframe-test-dataframe-cache|\
-gtest-tree-dataframe-test-dataframe-callbacks|\
-gtest-tree-dataframe-test-dataframe-colnames|\
-gtest-tree-dataframe-test-dataframe-concurrency|\
-gtest-tree-dataframe-test-dataframe-display|\
-gtest-tree-dataframe-test-dataframe-friends|\
-gtest-tree-dataframe-test-dataframe-helpers|\
-gtest-tree-dataframe-test-dataframe-interface|\
-gtest-tree-dataframe-test-dataframe-leaves|\
-gtest-tree-dataframe-test-dataframe-ranges|\
-gtest-tree-dataframe-test-dataframe-regression|\
-gtest-tree-dataframe-test-dataframe-simple|\
-gtest-tree-dataframe-test-dataframe-snapshot|\
-gtest-tree-dataframe-test-dataframe-vecops|\
-gtest-tree-dataframe-test-datasource-csv|\
-gtest-tree-dataframe-test-datasource-more|\
-gtest-tree-dataframe-test-datasource-sqlite|\
-gtest-tree-dataframe-test-datasource-trivial"
+gtest-tree-dataframe-test-dataframe|\
+gtest-tree-dataframe-test-datasource"
+%endif
%endif
%ifarch %{arm}
@@ -2731,82 +2763,17 @@ gtest-tree-dataframe-test-datasource-trivial"
#
# - gtest-tree-tree-test-testBulkApi
# - gtest-tree-tree-test-testBulkApiSillyStruct
-# segmentation fault - bus error
-#
-# - gtest-tree-dataframe-test-dataframe-histomodels
-# - gtest-tree-ntuple-v7-test-ntuple-rdf
-# - pyunittests-dataframe-cache
-# - pyunittests-dataframe-histograms
+# - gtest-tree-dataframe-test-dataframe-snapshot
+# - gtest-tree-dataframe-test-dataframe-vary
# - pyunittests-dataframe-merge-results
-# - pyunittests-dataframe-misc
-# - pyunittests-pyroot-pyz-rdataframe-makenumpy
-# - pyunittests-pyroot-pyz-tf-pycallables
-# - test-stressiterators-interpreted
-# - tutorial-dataframe-df001_introduction(-py)
-# - tutorial-dataframe-df002_dataModel(-py)
-# - tutorial-dataframe-df003_profiles(-py)
-# - tutorial-dataframe-df005_fillAnyObject
-# - tutorial-dataframe-df006_ranges(-py)
-# - tutorial-dataframe-df007_snapshot(-py)
-# - tutorial-dataframe-df010_trivialDataSource(-py)
-# - tutorial-dataframe-df012_DefinesAndFiltersAsStrings(-py)
-# - tutorial-dataframe-df014_CSVDataSource(-py)
-# - tutorial-dataframe-df015_LazyDataSource
-# - tutorial-dataframe-df016_vecOps(-py)
-# - tutorial-dataframe-df017_vecOpsHEP(-py)
-# - tutorial-dataframe-df019_Cache(-py)
-# - tutorial-dataframe-df020_helpers
-# - tutorial-dataframe-df021_createTGraph(-py)
-# - tutorial-dataframe-df022_useKahan
-# - tutorial-dataframe-df025_RNode
-# - tutorial-dataframe-df031_Stats(-py)
-# - tutorial-hist-sparsehist
-# - tutorial-r-example
-# - tutorial-r-DataFrame
-# - tutorial-r-Function
-# - tutorial-r-Functor
-# - tutorial-r-GlobalMinimization
-# - tutorial-r-Integration
-# - tutorial-r-Minimization
-# Not implemented relocation type!
+# - pyunittests-distrdf-unit-test-headnode
excluded="${excluded}|\
gtest-tree-tree-test-testBulkApi\$\$|\
gtest-tree-tree-test-testBulkApiSillyStruct|\
-gtest-tree-dataframe-test-dataframe-histomodels|\
-gtest-tree-ntuple-v7-test-ntuple-rdf|\
-pyunittests-dataframe-cache|\
-pyunittests-dataframe-histograms|\
+gtest-tree-dataframe-test-dataframe-snapshot|\
+gtest-tree-dataframe-test-dataframe-vary|\
pyunittests-dataframe-merge-results|\
-pyunittests-dataframe-misc|\
-pyunittests-pyroot-pyz-rdataframe-makenumpy|\
-pyunittests-pyroot-pyz-tf-pycallables|\
-test-stressiterators-interpreted|\
-tutorial-dataframe-df001_introduction|\
-tutorial-dataframe-df002_dataModel|\
-tutorial-dataframe-df003_profiles|\
-tutorial-dataframe-df005_fillAnyObject|\
-tutorial-dataframe-df006_ranges|\
-tutorial-dataframe-df007_snapshot|\
-tutorial-dataframe-df010_trivialDataSource|\
-tutorial-dataframe-df012_DefinesAndFiltersAsStrings|\
-tutorial-dataframe-df014_CSVDataSource|\
-tutorial-dataframe-df015_LazyDataSource|\
-tutorial-dataframe-df016_vecOps|\
-tutorial-dataframe-df017_vecOpsHEP|\
-tutorial-dataframe-df019_Cache|\
-tutorial-dataframe-df020_helpers|\
-tutorial-dataframe-df021_createTGraph|\
-tutorial-dataframe-df022_useKahan|\
-tutorial-dataframe-df025_RNode|\
-tutorial-dataframe-df031_Stats|\
-tutorial-hist-sparsehist|\
-tutorial-r-example|\
-tutorial-r-DataFrame|\
-tutorial-r-Function|\
-tutorial-r-Functor|\
-tutorial-r-GlobalMinimization|\
-tutorial-r-Integration|\
-tutorial-r-Minimization"
+pyunittests-distrdf-unit-test-headnode"
%endif
%ifarch %{power64} aarch64
@@ -2823,16 +2790,66 @@ excluded="${excluded}|test-stresshistofit\$\$"
# - test-stresshistogram-interpreted
# - test-stressmathcore-interpreted
# - test-stressroostats-interpreted
+#
+# Always timeout (hang?)
+# - pyunittests-pyroot-pyz-rdataframe-makenumpy
+# - tutorial-dataframe-df032_MakeNumpyDataFrame-py
excluded="${excluded}|\
test-stresshistofit-interpreted|\
test-stresshistogram-interpreted|\
test-stressmathcore-interpreted|\
-test-stressroostats-interpreted"
+test-stressroostats-interpreted|\
+pyunittests-pyroot-pyz-rdataframe-makenumpy|\
+tutorial-dataframe-df032_MakeNumpyDataFrame-py"
+
+%if %{?fedora}%{!?fedora:0} == 34 || %{?fedora}%{!?fedora:0} == 35 || %{?rhel}%{!?rhel:0} == 9
+# tmva/tmva/test/branchlessForest.cxx:215: Failure
+# Expected equality of these values:
+# predictions[1]
+# Which is: -1
+# -1.0 + 2.0
+# Which is: 1
+# - gtest-tmva-tmva-test-branchlessForest
+#
+# Error in <TAxis::TAxis::Set>: bins must be in increasing order
+# Error in <TGraphPainter::PaintGrapHist>: X must be in increasing order
+# - tutorial-math-kdTreeBinning
+#
+# Segmentation violation - malloc(): unaligned tcache chunk detected
+# - tutorial-unfold-testUnfold7c
+#
+# TFormula double free in Python
+# - tutorial-hist-fillrandom-py
+# - tutorial-pyroot-fillrandom-py
+# - tutorial-pyroot-fit1-py (uses output of tutorial-pyroot-fillrandom-py)
+# - tutorial-pyroot-formula1-py
+excluded="${excluded}|\
+gtest-tmva-tmva-test-branchlessForest|\
+tutorial-gl-gltf3|\
+tutorial-math-kdTreeBinning|\
+tutorial-unfold-testUnfold7c|\
+tutorial-hist-fillrandom-py|\
+tutorial-pyroot-fillrandom-py|\
+tutorial-pyroot-fit1-py|\
+tutorial-pyroot-formula1-py"
+%endif
+
+%if %{?rhel}%{!?rhel:0} == 7 || %{?rhel}%{!?rhel:0} == 8
+# crash - free(): corrupted unsorted chunks
+# - gtest-roofit-RDataFrameHelpers-test-testActionHelpers
+# - gtest-tmva-tmva-test-rtensor-utils
+# - gtest-tree-dataframe-test-dataframe-*
+# - gtest-tree-dataframe-test-datasource-*
+# - tutorial-dataframe-df004_cutFlowReport
+excluded="${excluded}|\
+gtest-roofit-RDataFrameHelpers-test-testActionHelpers|\
+gtest-tmva-tmva-test-rtensor-utils|\
+gtest-tree-dataframe-test-dataframe|\
+gtest-tree-dataframe-test-datasource|\
+tutorial-dataframe-df004_cutFlowReport"
+%endif
%if %{?rhel}%{!?rhel:0} == 8
-# Random segmentation faults
-# - gtest-tree-dataframe-test-dataframe-snapshot
-#
# Fails on ppc64le since RHEL 8.5 update
# Exception: Found not whitelisted libraries after importing ROOT:
# - libpthread-2.28
@@ -2840,16 +2857,16 @@ test-stressroostats-interpreted"
# - libc-2.28
# - librt-2.28
# - pyunittests-pyroot-import-load-libs
+#
+# crash - double free or corruption (out)
+# - tutorial-multicore-mt201_parallelHistoFill
+#
+# segmentation violation
+# - tutorial-multicore-mt304_fillHistos
excluded="${excluded}|\
-gtest-tree-dataframe-test-dataframe-snapshot|\
-pyunittests-pyroot-import-load-libs"
-%endif
-
-%if %{?fedora}%{!?fedora:0} >= 36
-# Fails on Fedora 36 ppc64le
-# - test-stressHistFactory(-interpreted)
-excluded="${excluded}|\
-test-stressHistFactory"
+pyunittests-pyroot-import-load-libs|\
+tutorial-multicore-mt201_parallelHistoFill|\
+tutorial-multicore-mt304_fillHistos"
%endif
%endif
@@ -2857,28 +2874,36 @@ test-stressHistFactory"
# s390x specific failures
#
# - gtest-roofit-roofitcore-test-testNaNPacker
+# - gtest-roofit-roofitcore-test-testRooProdPdf
+# - gtest-tree-dataframe-test-datasource-ntuple
# - gtest-tree-ntuple-v7-test-ntuple-basics
# - gtest-tree-ntuple-v7-test-ntuple-extended
+# - gtest-tree-ntuple-v7-test-ntuple-merger
# - gtest-tree-ntuple-v7-test-ntuple-minifile
+# - gtest-tree-ntuple-v7-test-ntuple-serialize
# - pyunittests-pyroot-pyz-rtensor
-# - test-stresshistogram(-interpreted)
+# - pyunittests-pyroot-pyz-stl-vector
# - test-stresshistofit(-interpreted)
+# - test-stresshistogram(-interpreted)
# - tutorial-dataframe-df006_ranges-py
-# - tutorial-roofit-rf203_ranges-py
+# - tutorial-math-exampleFunction-py
# - tutorial-roofit-rf612_recoverFromInvalidParameters
-# - tutorial-roofit-rf902_numgenconfig-py
excluded="${excluded}|\
gtest-roofit-roofitcore-test-testNaNPacker|\
+gtest-roofit-roofitcore-test-testRooProdPdf|\
+gtest-tree-dataframe-test-datasource-ntuple|\
gtest-tree-ntuple-v7-test-ntuple-basics|\
gtest-tree-ntuple-v7-test-ntuple-extended|\
+gtest-tree-ntuple-v7-test-ntuple-merger|\
gtest-tree-ntuple-v7-test-ntuple-minifile|\
+gtest-tree-ntuple-v7-test-ntuple-serialize|\
pyunittests-pyroot-pyz-rtensor|\
-test-stresshistogram|\
+pyunittests-pyroot-pyz-stl-vector|\
test-stresshistofit|\
+test-stresshistogram|\
tutorial-dataframe-df006_ranges-py|\
-tutorial-roofit-rf203_ranges-py|\
-tutorial-roofit-rf612_recoverFromInvalidParameters|\
-tutorial-roofit-rf902_numgenconfig-py"
+tutorial-math-exampleFunction-py|\
+tutorial-roofit-rf612_recoverFromInvalidParameters"
%if %{?rhel}%{!?rhel:0} == 8
# Issues with file sizes on EPEL 8 s390x
@@ -2915,6 +2940,22 @@ update-mime-database %{_datadir}/mime >/dev/null 2>&1 || :
gtk-update-icon-cache %{_datadir}/icons/hicolor >/dev/null 2>&1 || :
%endif
+%pretrans net-http -p <lua>
+path = "%{_datadir}/%{name}/js"
+st = posix.stat(path)
+if st and st.type == "link" then
+ os.remove(path)
+end
+
+%post net-http
+# Replace bundled jsroot with symlinks to system version
+for x in img libs scripts style files/draw.htm files/online.htm ; do
+ ln -fs /usr/share/javascript/jsroot/$x %{_datadir}/%{name}/js/$x
+done
+%{?ldconfig}
+
+%ldconfig_postun net-http
+
%if %{buildpy2}
%pre -n python2-%{name}
if [ -r /var/lib/alternatives/libPyROOT.so ] ; then
@@ -2926,11 +2967,7 @@ fi
%pre -n python%{python3_pkgversion}-%{name}
if [ -r /var/lib/alternatives/libPyROOT.so ] ; then
-%if %{?rhel}%{!?rhel:0} == 7
- for alt in `grep python%{python3_version}/.*.so /var/lib/alternatives/libPyROOT.so` ; do
-%else
for alt in `grep python3.*/.*.so /var/lib/alternatives/libPyROOT.so` ; do
-%endif
%{_sbindir}/update-alternatives --remove libPyROOT.so $alt
done
fi
@@ -3017,7 +3054,9 @@ fi
%ldconfig_scriptlets html
%ldconfig_scriptlets io
%ldconfig_scriptlets io-dcache
+%if %{gfal2}
%ldconfig_scriptlets io-gfal
+%endif
%ldconfig_scriptlets io-sql
%ldconfig_scriptlets io-xml
%ldconfig_scriptlets io-xmlparser
@@ -3037,17 +3076,12 @@ fi
%ldconfig_scriptlets splot
%ldconfig_scriptlets unuran
%ldconfig_scriptlets vecops
-%if %{memstat}
-%ldconfig_scriptlets memstat
-%endif
%ldconfig_scriptlets montecarlo-eg
%ldconfig_scriptlets montecarlo-pythia8
-%ldconfig_scriptlets montecarlo-vmc
%ldconfig_scriptlets net
%ldconfig_scriptlets net-rpdutils
%ldconfig_scriptlets net-auth
%ldconfig_scriptlets net-davix
-%ldconfig_scriptlets net-http
%ldconfig_scriptlets net-httpsniff
%ldconfig_scriptlets netx
%ldconfig_scriptlets proof
@@ -3058,9 +3092,12 @@ fi
%ldconfig_scriptlets xproof
%endif
%ldconfig_scriptlets roofit
+%ldconfig_scriptlets roofit-common
%ldconfig_scriptlets roofit-core
%ldconfig_scriptlets roofit-more
%ldconfig_scriptlets roofit-batchcompute
+%ldconfig_scriptlets roofit-dataframe-helpers
+%ldconfig_scriptlets roofit-hs3
%ldconfig_scriptlets roostats
%ldconfig_scriptlets sql-mysql
%ldconfig_scriptlets sql-odbc
@@ -3069,12 +3106,23 @@ fi
%ldconfig_scriptlets tmva
%ldconfig_scriptlets tmva-python
%ldconfig_scriptlets tmva-r
+%ldconfig_scriptlets tmva-sofie
+%if %{tmvasofieparser}
+%ldconfig_scriptlets tmva-sofie-parser
+%endif
%ldconfig_scriptlets tmva-gui
%ldconfig_scriptlets tree
%ldconfig_scriptlets tree-dataframe
%ldconfig_scriptlets tree-player
%ldconfig_scriptlets tree-viewer
%ldconfig_scriptlets unfold
+%if %{webgui}
+%ldconfig_scriptlets gui-webdisplay
+%ifarch %{qt5_qtwebengine_arches}
+%ldconfig_scriptlets gui-qt5webdisplay
+%endif
+%ldconfig_scriptlets gui-webgui6
+%endif
%if %{root7}
%ldconfig_scriptlets graf-gpadv7
%ldconfig_scriptlets graf-primitives
@@ -3083,11 +3131,6 @@ fi
%ldconfig_scriptlets gui-browserv7
%ldconfig_scriptlets gui-canvaspainter
%ldconfig_scriptlets gui-fitpanelv7
-%ifarch %{qt5_qtwebengine_arches}
-%ldconfig_scriptlets gui-qt5webdisplay
-%endif
-%ldconfig_scriptlets gui-webdisplay
-%ldconfig_scriptlets gui-webgui6
%ldconfig_scriptlets histv7
%ldconfig_scriptlets hist-draw
%ldconfig_scriptlets tree-ntuple
@@ -3119,17 +3162,12 @@ fi
%files fonts
%{_datadir}/%{name}/fonts
-%files doc
-%doc %{_pkgdocdir}/html
-
%files tutorial
%doc %{_pkgdocdir}/tutorials
%files core -f includelist-core
-%{_bindir}/memprobe
%{_bindir}/rmkdepend
%{_bindir}/root-config
-%{_mandir}/man1/memprobe.1*
%{_mandir}/man1/rmkdepend.1*
%{_mandir}/man1/root-config.1*
%dir %{_libdir}/%{name}
@@ -3228,10 +3266,6 @@ fi
%files -n python2-jsmva
%{python2_sitelib}/JsMVA
%{python2_sitelib}/JsMVA-*.egg-info
-
-%files -n python2-distrdf
-%{python2_sitelib}/DistRDF
-%{python2_sitelib}/DistRDF-*.egg-info
%endif
%files -n python%{python3_pkgversion}-%{name} -f includelist-bindings-pyroot
@@ -3257,9 +3291,11 @@ fi
%{python3_sitelib}/JsMVA
%{python3_sitelib}/JsMVA-*.egg-info
+%if %{distrdf}
%files -n python%{python3_pkgversion}-distrdf
%{python3_sitelib}/DistRDF
%{python3_sitelib}/DistRDF-*.egg-info
+%endif
%files r -f includelist-bindings-r
%{_libdir}/%{name}/libRInterface.*
@@ -3454,10 +3490,12 @@ fi
%{_datadir}/%{name}/plugins/TFile/P040_TDCacheFile.C
%{_datadir}/%{name}/plugins/TSystem/P020_TDCacheSystem.C
+%if %{gfal2}
%files io-gfal -f includelist-io-gfal
%{_libdir}/%{name}/libGFAL.*
%{_libdir}/%{name}/libGFAL_rdict.pcm
%{_datadir}/%{name}/plugins/TFile/P050_TGFALFile.C
+%endif
%files io-sql -f includelist-io-sql
%{_libdir}/%{name}/libSQLIO.*
@@ -3569,12 +3607,6 @@ fi
%{_libdir}/%{name}/libROOTVecOps.*
%{_libdir}/%{name}/libROOTVecOps_rdict.pcm
-%if %{memstat}
-%files memstat -f includelist-misc-memstat
-%{_libdir}/%{name}/libMemStat.*
-%{_libdir}/%{name}/libMemStat_rdict.pcm
-%endif
-
%files montecarlo-eg -f includelist-montecarlo-eg
%{_libdir}/%{name}/libEG.*
%{_libdir}/%{name}/libEG_rdict.pcm
@@ -3585,11 +3617,6 @@ fi
%{_libdir}/%{name}/libEGPythia8.*
%{_libdir}/%{name}/libEGPythia8_rdict.pcm
-%files montecarlo-vmc -f includelist-montecarlo-vmc
-%{_libdir}/%{name}/libVMC.*
-%{_libdir}/%{name}/libVMC_rdict.pcm
-%{_datadir}/%{name}/vmc
-
%files net -f includelist-net-net
%{_libdir}/%{name}/libNet.*
%{_libdir}/%{name}/libNet_rdict.pcm
@@ -3622,7 +3649,17 @@ fi
%files net-http -f includelist-net-http
%{_libdir}/%{name}/libRHTTP.*
%{_libdir}/%{name}/libRHTTP_rdict.pcm
-%{_datadir}/%{name}/js
+%dir %{_datadir}/%{name}/js
+%dir %{_datadir}/%{name}/js/files
+%{_datadir}/%{name}/js/files/canv_batch.htm
+%{_datadir}/%{name}/js/files/web.config
+%{_datadir}/%{name}/js/files/wslist.htm
+%ghost %{_datadir}/%{name}/js/img
+%ghost %{_datadir}/%{name}/js/libs
+%ghost %{_datadir}/%{name}/js/scripts
+%ghost %{_datadir}/%{name}/js/style
+%ghost %{_datadir}/%{name}/js/files/draw.htm
+%ghost %{_datadir}/%{name}/js/files/online.htm
%doc net/http/README.txt net/http/civetweb/*.md
%files net-httpsniff -f includelist-net-httpsniff
@@ -3639,6 +3676,7 @@ fi
%{_datadir}/%{name}/plugins/TFile/P100_TXNetFile.C
%{_datadir}/%{name}/plugins/TFileStager/P010_TXNetFileStager.C
%{_datadir}/%{name}/plugins/TSystem/P040_TXNetSystem.C
+%{_datadir}/%{name}/plugins/ROOT@@Internal@(a)RRawFile/P020_RRawFileNetXNG.C
%files proof -f includelist-proof-proof
%{_bindir}/proofserv
@@ -3699,6 +3737,9 @@ fi
%{_libdir}/%{name}/libRooFit.*
%{_libdir}/%{name}/libRooFit_rdict.pcm
+%files roofit-common
+%{_libdir}/%{name}/libRooFitCommon.*
+
%files roofit-core -f includelist-roofit-roofitcore
%{_libdir}/%{name}/libRooFitCore.*
%{_libdir}/%{name}/libRooFitCore_rdict.pcm
@@ -3716,6 +3757,17 @@ fi
%{_libdir}/%{name}/libRooBatchCompute_*
%doc roofit/batchcompute/README.md
+%files roofit-dataframe-helpers -f includelist-roofit-RDataFrameHelpers
+%{_libdir}/%{name}/libRooFitRDataFrameHelpers.*
+%{_libdir}/%{name}/libRooFitRDataFrameHelpers_rdict.pcm
+
+%files roofit-hs3 -f includelist-roofit-hs3
+%{_libdir}/%{name}/libRooFitHS3.*
+%{_libdir}/%{name}/libRooFitHS3_rdict.pcm
+%{_datadir}/%{name}/RooFitHS3_wsexportkeys.json
+%{_datadir}/%{name}/RooFitHS3_wsfactoryexpressions.json
+%doc roofit/hs3/README.md
+
%files roostats -f includelist-roofit-roostats
%{_libdir}/%{name}/libRooStats.*
%{_libdir}/%{name}/libRooStats_rdict.pcm
@@ -3761,6 +3813,17 @@ fi
%{_libdir}/%{name}/libRMVA.*
%{_libdir}/%{name}/libRMVA_rdict.pcm
+%files tmva-sofie -f includelist-tmva-sofie
+%{_libdir}/%{name}/libROOTTMVASofie.*
+%{_libdir}/%{name}/libROOTTMVASofie_rdict.pcm
+%doc tmva/sofie/README.md
+
+%if %{tmvasofieparser}
+%files tmva-sofie-parser -f includelist-tmva-sofie_parsers
+%{_libdir}/%{name}/libROOTTMVASofieParser.*
+%{_libdir}/%{name}/libROOTTMVASofieParser_rdict.pcm
+%endif
+
%files tmva-gui -f includelist-tmva-tmvagui
%{_libdir}/%{name}/libTMVAGui.*
%{_libdir}/%{name}/libTMVAGui_rdict.pcm
@@ -3807,6 +3870,23 @@ fi
%{_datadir}/%{name}/notebook
%doc %{_pkgdocdir}/JupyROOT-on-EPEL
+%if %{webgui}
+%files gui-webdisplay -f includelist-gui-webdisplay
+%{_libdir}/%{name}/libROOTWebDisplay.*
+%{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm
+%{_datadir}/%{name}/ui5
+
+%ifarch %{qt5_qtwebengine_arches}
+%files gui-qt5webdisplay
+%{_libdir}/%{name}/libROOTQt5WebDisplay.*
+%endif
+
+%files gui-webgui6 -f includelist-gui-webgui6
+%{_libdir}/%{name}/libWebGui6.*
+%{_libdir}/%{name}/libWebGui6_rdict.pcm
+%{_datadir}/%{name}/plugins/TGuiFactory/P030_TWebGuiFactory.C
+%endif
+
%if %{root7}
%files graf-gpadv7 -f includelist-graf2d-gpadv7
%{_libdir}/%{name}/libROOTGpadv7.*
@@ -3828,6 +3908,9 @@ fi
%{_libdir}/%{name}/libROOTHistDrawProvider.*
%{_libdir}/%{name}/libROOTLeafDraw6Provider.*
%{_libdir}/%{name}/libROOTLeafDraw7Provider.*
+%{_libdir}/%{name}/libROOTNTupleBrowseProvider.*
+%{_libdir}/%{name}/libROOTNTupleDraw6Provider.*
+%{_libdir}/%{name}/libROOTNTupleDraw7Provider.*
%{_libdir}/%{name}/libROOTObjectDraw6Provider.*
%{_libdir}/%{name}/libROOTObjectDraw7Provider.*
@@ -3847,21 +3930,6 @@ fi
%{_libdir}/%{name}/libROOTFitPanelv7.*
%{_libdir}/%{name}/libROOTFitPanelv7_rdict.pcm
-%ifarch %{qt5_qtwebengine_arches}
-%files gui-qt5webdisplay
-%{_libdir}/%{name}/libROOTQt5WebDisplay.*
-%endif
-
-%files gui-webdisplay -f includelist-gui-webdisplay
-%{_libdir}/%{name}/libROOTWebDisplay.*
-%{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm
-%{_datadir}/%{name}/ui5
-
-%files gui-webgui6 -f includelist-gui-webgui6
-%{_libdir}/%{name}/libWebGui6.*
-%{_libdir}/%{name}/libWebGui6_rdict.pcm
-%{_datadir}/%{name}/plugins/TGuiFactory/P030_TWebGuiFactory.C
-
%files histv7 -f includelist-hist-histv7
%{_libdir}/%{name}/libROOTHist.*
%{_libdir}/%{name}/libROOTHist_rdict.pcm
@@ -3876,13 +3944,23 @@ fi
%endif
%changelog
+* Sat Mar 26 2022 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.26.00-1
+- Update to 6.24.04
+- New subpackages: root-roofit-common, root-roofit-dataframe-helpers,
+ root-roofit-hs3, root-tmva-sofie and root-tmva-sofie-parser
+- Removed subpackages: root-memstat and root-montecarlo-vmc
+- Drop the doxygen generated root-doc package (doxygen runs out of memory)
+- Dropped patches: 17
+- New patches: 22
+- Updated patches: 5
+
* Thu Feb 10 2022 Orion Poplawski <orion(a)nwra.com> - 6.24.06-6
- Rebuild for glew 2.2
* Fri Jan 28 2022 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.24.06-5
- Exclude failing test on Fedora 36 ppc64le:
test-stressHistFactory(-interpreted)
-# Disable package note flags
+- Disable package note flags
* Fri Jan 21 2022 Fedora Release Engineering <releng(a)fedoraproject.org> - 6.24.06-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
diff --git a/sources b/sources
index 31dae3c..31ddb3c 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (root-6.24.06.tar.xz) = fe316283503dae60acb26d2ae3e838e6f9c01e1f89ff9973aa2b666a30c00f99f5e0df02b54e3744cd14a45a49ca2fc7d1f19fbac6b69071b9c9e0c98f2e0645
+SHA512 (root-6.26.00.tar.xz) = 0a98e973eeda98550200635d5d566fe4191aba953d3f993af750761a23e2b86caa5eb9674837bf1b070b9056b3a8ce7ee2d43295c56d22d120ca78edb97ea1c8
SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f
2 years
Architecture specific change in rpms/root.git
by githook-noreply@fedoraproject.org
The package rpms/root.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/root.git/commit/?id=2f8e3d96d1a2b....
Change:
-%ifarch %{qt5_qtwebengine_arches}
Thanks.
Full change:
============
commit 2f8e3d96d1a2bbe2f9cd8a9a87d4ab147df9e60b
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Tue Apr 5 14:39:21 2022 +0200
Update to 6.24.04
New subpackages: root-roofit-common, root-roofit-dataframe-helpers,
root-roofit-hs3, root-tmva-sofie and root-tmva-sofie-parser
Removed subpackages: root-memstat and root-montecarlo-vmc
Drop the doxygen generated root-doc package (doxygen runs out of memory)
Dropped patches: 17
New patches: 22
Updated patches: 5
diff --git a/root-32bit-dataframe.patch b/root-32bit-dataframe.patch
index f9ff85f..89e3c95 100644
--- a/root-32bit-dataframe.patch
+++ b/root-32bit-dataframe.patch
@@ -1,21 +1,24 @@
-diff -ur root-6.24.02.orig/bindings/pyroot_legacy/ROOT.py root-6.24.02/bindings/pyroot_legacy/ROOT.py
---- root-6.24.02.orig/bindings/pyroot_legacy/ROOT.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/bindings/pyroot_legacy/ROOT.py 2021-08-11 10:44:16.895804556 +0200
-@@ -438,9 +438,7 @@
- # This function is injected as method to the respective classes in Pythonize.cxx.
- _root._RDataFrameAsNumpy = _RDataFrameAsNumpy
-
--# This Pythonisation is there only for 64 bits builds
--if (sys.maxsize > 2**32): # https://docs.python.org/3/library/platform.html#cross-platform
-- _root.CreateScopeProxy( "TTree" ).AsMatrix = _TTreeAsMatrix
-+_root.CreateScopeProxy( "TTree" ).AsMatrix = _TTreeAsMatrix
-
-
- ### RINT command emulation ------------------------------------------------------
-diff -ur root-6.24.02.orig/build/unix/makepchinput.py root-6.24.02/build/unix/makepchinput.py
---- root-6.24.02.orig/build/unix/makepchinput.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/build/unix/makepchinput.py 2021-08-11 10:44:16.926804638 +0200
-@@ -252,9 +252,6 @@
+From 686d5011df607fde2a42c729d6bd446486163784 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Fri, 13 Mar 2020 16:20:17 +0100
+Subject: [PATCH] Restore 32-bit dataframe
+
+---
+ build/unix/makepchinput.py | 3 ---
+ cmake/modules/RootBuildOptions.cmake | 5 -----
+ tree/dataframe/test/dataframe_cache.cxx | 4 ----
+ tree/dataframe/test/datasource_arrow.cxx | 4 ----
+ tree/dataframe/test/datasource_csv.cxx | 4 ----
+ tree/dataframe/test/datasource_root.cxx | 4 ----
+ tree/dataframe/test/datasource_trivial.cxx | 4 ----
+ tutorials/CMakeLists.txt | 5 -----
+ 8 files changed, 33 deletions(-)
+
+diff --git a/build/unix/makepchinput.py b/build/unix/makepchinput.py
+index 1adff487de..eec73f946d 100755
+--- a/build/unix/makepchinput.py
++++ b/build/unix/makepchinput.py
+@@ -252,9 +252,6 @@ def isDirForPCH(dirName, legacyPyROOT):
"math/vdt",
"tmva/rmva"]
@@ -25,10 +28,27 @@ diff -ur root-6.24.02.orig/build/unix/makepchinput.py root-6.24.02/build/unix/ma
accepted = isAnyPatternInString(PCHPatternsWhitelist,dirName) and \
not isAnyPatternInString(PCHPatternsBlacklist,dirName)
-diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/tree/dataframe/test/dataframe_cache.cxx
---- root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/dataframe_cache.cxx 2021-08-11 10:44:16.927804641 +0200
-@@ -224,8 +224,6 @@
+diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake
+index 7886c5f3e9..6fbd8873f1 100644
+--- a/cmake/modules/RootBuildOptions.cmake
++++ b/cmake/modules/RootBuildOptions.cmake
+@@ -344,11 +344,6 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES aarch64)
+ set(runtime_cxxmodules_defvalue OFF)
+ endif()
+
+-# Disable RDataFrame on 32-bit UNIX platforms due to ROOT-9236
+-if(UNIX AND CMAKE_SIZEOF_VOID_P EQUAL 4)
+- set(dataframe_defvalue OFF)
+-endif()
+-
+ # MultiProcess is not possible on Windows, so fail if it is manually set:
+ if(roofit_multiprocess AND WIN32)
+ message(FATAL_ERROR ">>> Option 'roofit_multiprocess' is not supported on Windows.")
+diff --git a/tree/dataframe/test/dataframe_cache.cxx b/tree/dataframe/test/dataframe_cache.cxx
+index 77be488052..8475b98acb 100644
+--- a/tree/dataframe/test/dataframe_cache.cxx
++++ b/tree/dataframe/test/dataframe_cache.cxx
+@@ -224,8 +224,6 @@ TEST(Cache, evtCounter)
}
@@ -37,7 +57,7 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/
TEST(Cache, Regex)
{
-@@ -335,8 +333,6 @@
+@@ -329,8 +327,6 @@ TEST(Cache, Carrays)
gSystem->Unlink(fileName);
}
@@ -46,10 +66,11 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/
// ROOT-10563
TEST(Cache, Alias)
{
-diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx root-6.24.02/tree/dataframe/test/datasource_arrow.cxx
---- root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/datasource_arrow.cxx 2021-08-11 10:44:16.927804641 +0200
-@@ -177,8 +177,6 @@
+diff --git a/tree/dataframe/test/datasource_arrow.cxx b/tree/dataframe/test/datasource_arrow.cxx
+index 5ac9fcf09a..5f5f94a666 100644
+--- a/tree/dataframe/test/datasource_arrow.cxx
++++ b/tree/dataframe/test/datasource_arrow.cxx
+@@ -177,8 +177,6 @@ TEST(RArrowDS, SetNSlotsTwice)
}
#endif
@@ -58,16 +79,17 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx root-6.24.02
TEST(RArrowDS, FromARDF)
{
std::unique_ptr<RDataSource> tds(new RArrowDS(createTestTable(), {}));
-@@ -250,5 +248,3 @@
+@@ -250,5 +248,3 @@ TEST(RArrowDS, FromARDFWithJittingMT)
}
#endif // R__USE_IMT
-
-#endif // R__B64
-diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx root-6.24.02/tree/dataframe/test/datasource_csv.cxx
---- root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/datasource_csv.cxx 2021-08-11 10:44:16.927804641 +0200
-@@ -207,8 +207,6 @@
+diff --git a/tree/dataframe/test/datasource_csv.cxx b/tree/dataframe/test/datasource_csv.cxx
+index 6554719f98..d93117b67a 100644
+--- a/tree/dataframe/test/datasource_csv.cxx
++++ b/tree/dataframe/test/datasource_csv.cxx
+@@ -210,8 +210,6 @@ TEST(RCsvDS, SetNSlotsTwice)
}
#endif
@@ -76,16 +98,17 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx root-6.24.02/t
TEST(RCsvDS, FromARDF)
{
std::unique_ptr<RDataSource> tds(new RCsvDS(fileName0));
-@@ -321,5 +319,3 @@
+@@ -324,5 +322,3 @@ TEST(RCsvDS, ProgressiveReadingRDFMT)
}
#endif // R__USE_IMT
-
-#endif // R__B64
-diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx root-6.24.02/tree/dataframe/test/datasource_root.cxx
---- root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/datasource_root.cxx 2021-08-11 10:44:16.928804644 +0200
-@@ -117,8 +117,6 @@
+diff --git a/tree/dataframe/test/datasource_root.cxx b/tree/dataframe/test/datasource_root.cxx
+index 79840d9fff..4c795fee6f 100644
+--- a/tree/dataframe/test/datasource_root.cxx
++++ b/tree/dataframe/test/datasource_root.cxx
+@@ -117,8 +117,6 @@ TEST(TRootTDS, SetNSlotsTwice)
}
#endif
@@ -93,17 +116,18 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx root-6.24.02/
-
TEST(TRootTDS, FromARDF)
{
- std::unique_ptr<RDataSource> tds(new RRootDS(treeName, fileGlob));
-@@ -190,5 +188,3 @@
+ std::unique_ptr<RDataSource> tds(new ROOT::Internal::RDF::RRootDS(treeName, fileGlob));
+@@ -190,5 +188,3 @@ TEST(TRootTDS, FromARDFWithJittingMT)
}
#endif // R__USE_IMT
-
-#endif // R__B64
-diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx root-6.24.02/tree/dataframe/test/datasource_trivial.cxx
---- root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/datasource_trivial.cxx 2021-08-11 10:44:16.928804644 +0200
-@@ -141,8 +141,6 @@
+diff --git a/tree/dataframe/test/datasource_trivial.cxx b/tree/dataframe/test/datasource_trivial.cxx
+index 7da675c83b..deb89301c7 100644
+--- a/tree/dataframe/test/datasource_trivial.cxx
++++ b/tree/dataframe/test/datasource_trivial.cxx
+@@ -141,8 +141,6 @@ TEST(RTrivialDS, EarlyQuitWithRange)
EXPECT_EQ(df.Range(10).Count().GetValue(), 10);
}
@@ -112,16 +136,17 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx root-6.24.
TEST(RTrivialDS, FromARDFWithJitting)
{
std::unique_ptr<RDataSource> tds(new RTrivialDS(32));
-@@ -245,5 +243,3 @@
+@@ -245,5 +243,3 @@ TEST(RTrivialDS, SkipEntriesMT)
}
#endif // R__USE_IMT
-
-#endif // R__B64
-diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMakeLists.txt
---- root-6.24.02.orig/tutorials/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/CMakeLists.txt 2021-08-11 10:44:16.974804766 +0200
-@@ -279,10 +279,6 @@
+diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt
+index a6e5c97703..12bb610d67 100644
+--- a/tutorials/CMakeLists.txt
++++ b/tutorials/CMakeLists.txt
+@@ -332,10 +332,6 @@ else()
list(APPEND root7_veto ${v7_veto_files})
endif()
@@ -129,10 +154,10 @@ diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMake
- set(bits32_veto dataframe/*.C graphs/timeSeriesFrom*.C v7/ntuple/ntpl004_dimuon.C)
-endif()
-
- #---These ones are disabled !!! ------------------------------------
- set(extra_veto
- legacy/benchmarks.C
-@@ -335,7 +331,6 @@
+ if (APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES arm64)
+ set(macm1_veto dataframe/df107_SingleTopAnalysis.py)
+ endif()
+@@ -391,7 +387,6 @@ set(all_veto hsimple.C
${classic_veto}
${pythia_veto}
${root7_veto}
@@ -140,3 +165,6 @@ diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMake
${xrootd_veto}
${mlp_veto}
${spectrum_veto}
+--
+2.35.1
+
diff --git a/root-add-RCutFlowReport-to-LinkDef-file.patch b/root-add-RCutFlowReport-to-LinkDef-file.patch
deleted file mode 100644
index 9ec99a1..0000000
--- a/root-add-RCutFlowReport-to-LinkDef-file.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 2e3fabbe5423f50ee98ce848d8e85ec7a2a2106d Mon Sep 17 00:00:00 2001
-From: Enrico Guiraud <enrico.guiraud(a)cern.ch>
-Date: Thu, 15 Jul 2021 12:17:56 +0200
-Subject: [PATCH] [DF] Add RCutFlowReport to LinkDef
-
-This should fix some sporadic failures in cling's symbol resolution
-in builds without runtime cxx modules.
----
- tree/dataframe/inc/LinkDef.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h
-index 8103468082..684fc3b6f1 100644
---- a/tree/dataframe/inc/LinkDef.h
-+++ b/tree/dataframe/inc/LinkDef.h
-@@ -58,6 +58,7 @@
- #pragma link C++ class ROOT::Detail::RDF::RMergeableValue<TProfile>+;
- #pragma link C++ class ROOT::Detail::RDF::RMergeableValue<TProfile2D>+;
- #pragma link C++ class TNotifyLink<ROOT::Internal::RDF::RDataBlockFlag>;
-+#pragma link C++ class ROOT::RDF::RCutFlowReport;
-
- #endif
-
---
-2.31.1
-
diff --git a/root-add-RDisplay-to-LinkDef-file.patch b/root-add-RDisplay-to-LinkDef-file.patch
deleted file mode 100644
index e86880c..0000000
--- a/root-add-RDisplay-to-LinkDef-file.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From d9e15857c189edcfa75af5c6244ff68fac74f06f Mon Sep 17 00:00:00 2001
-From: Enrico Guiraud <enrico.guiraud(a)cern.ch>
-Date: Thu, 10 Jun 2021 10:00:32 +0200
-Subject: [PATCH] [DF] Add RDisplay to LinkDef
-
-To help cling autoloading.
----
- tree/dataframe/inc/LinkDef.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h
-index 3879ac8d5d..8103468082 100644
---- a/tree/dataframe/inc/LinkDef.h
-+++ b/tree/dataframe/inc/LinkDef.h
-@@ -20,6 +20,7 @@
- #pragma link C++ namespace ROOT::Internal::RDF::GraphDrawing;
- #pragma link C++ namespace ROOT::Detail::RDF;
- #pragma link C++ namespace ROOT::RDF;
-+#pragma link C++ class ROOT::RDF::RDisplay-;
- #pragma link C++ class ROOT::Internal::RDF::RActionBase-;
- #pragma link C++ class ROOT::Internal::RDF::RJittedAction-;
- #pragma link C++ class ROOT::Detail::RDF::RFilterBase-;
---
-2.31.1
-
diff --git a/root-add-TTreeProcessorMP-to-LinkDef-file.patch b/root-add-TTreeProcessorMP-to-LinkDef-file.patch
deleted file mode 100644
index c8a0b1f..0000000
--- a/root-add-TTreeProcessorMP-to-LinkDef-file.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 56d52ccf2fad2736e49d3cfc4c9df22492e1dbfc Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Tue, 8 Jun 2021 02:46:18 +0200
-Subject: [PATCH] Add TTreeProcessorMP to LinkDef
-
-This fixes test failure:
-
- 745/1157 Test #729: tutorial-multicore-mp102_readNtuplesFillHistosAndFit ................***Failed 1.55 sec
-Processing /builddir/build/BUILD/root-6.25.01/tutorials/multicore/mp102_readNtuplesFillHistosAndFit.C...
-IncrementalExecutor::executeFunction: symbol '_ZN4ROOT16TTreeProcessorMPC1Ej' unresolved while linking [cling interface function]!
-You are probably missing the definition of ROOT::TTreeProcessorMP::TTreeProcessorMP(unsigned int)
-Maybe you need to load the corresponding shared library?
-IncrementalExecutor::executeFunction: symbol '_ZN4ROOT16TTreeProcessorMP11ReplyToIdleEP7TSocket' unresolved while linking [cling interface function]!
-You are probably missing the definition of ROOT::TTreeProcessorMP::ReplyToIdle(TSocket*)
-Maybe you need to load the corresponding shared library?
-CMake Error at /builddir/build/BUILD/root-6.25.01/x86_64-redhat-linux-gnu/RootTestDriver.cmake:237 (message):
- error code: 1
----
- tree/treeplayer/inc/LinkDef.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tree/treeplayer/inc/LinkDef.h b/tree/treeplayer/inc/LinkDef.h
-index e7fdd7c9bf..d195536a40 100644
---- a/tree/treeplayer/inc/LinkDef.h
-+++ b/tree/treeplayer/inc/LinkDef.h
-@@ -30,6 +30,7 @@
- #pragma link C++ class TSimpleAnalysis+;
- #ifndef _MSC_VER
- #pragma link C++ class TMPWorkerTree+;
-+#pragma link C++ class ROOT::TTreeProcessorMP-;
- #endif
- #ifdef R__USE_IMT
- #pragma link C++ class ROOT::TTreeProcessorMT-;
---
-2.31.1
-
diff --git a/root-avoid-deleting-TFormulas-twice.patch b/root-avoid-deleting-TFormulas-twice.patch
new file mode 100644
index 0000000..af758ed
--- /dev/null
+++ b/root-avoid-deleting-TFormulas-twice.patch
@@ -0,0 +1,37 @@
+From c7dd58f3bc012690bab16763b1d73a4b7106ced9 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Tue, 29 Mar 2022 15:40:35 +0200
+Subject: [PATCH] Avoid deleting TFormulas twice
+
+Example failure:
+
+ 562/1224 Test #541: tutorial-gl-gltf3 ...................................................***Failed Error regular expression found in output. Regex=[Error in <] 1.36 sec
+Processing /builddir/build/BUILD/root-6.26.00/tutorials/gl/gltf3.C...
+Error in <TList::Delete>: A list is accessing an object (0x7fffd1c959a0) already deleted (list name = Functions)
+Error in <TList::Delete>: A list is accessing an object (0x7fffd1c95750) already deleted (list name = Functions)
+
+The commit also changes the filename used in
+tutorials/hist/fillrandom.py to be different form the one used in
+tutorials/hist/fillrandom.C (and tutorials/pyroot/fillrandom.py)
+---
+ tutorials/gl/gltf3.C | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tutorials/gl/gltf3.C b/tutorials/gl/gltf3.C
+index 3697e69b7a..4089f0d2b7 100644
+--- a/tutorials/gl/gltf3.C
++++ b/tutorials/gl/gltf3.C
+@@ -27,8 +27,8 @@ void gltf3()
+ TPad *tf3Pad = new TPad("box", "box", 0.04, 0.04, 0.96, 0.8);
+ tf3Pad->Draw();
+
+- TFormula f1 = TFormula("f1", "x*x + y*y + z*z + 2*y - 1");
+- TFormula f2 = TFormula("f2", "x*x + y*y + z*z - 2*y - 1");
++ TFormula *f1 = new TFormula("f1", "x*x + y*y + z*z + 2*y - 1");
++ TFormula *f2 = new TFormula("f2", "x*x + y*y + z*z - 2*y - 1");
+
+ // Klein bottle with cut top&bottom parts
+ // The Klein bottle is a closed non-orientable surface that has no
+--
+2.35.1
+
diff --git a/root-big-endian-byte-swap.patch b/root-big-endian-byte-swap.patch
new file mode 100644
index 0000000..0d9f41a
--- /dev/null
+++ b/root-big-endian-byte-swap.patch
@@ -0,0 +1,40 @@
+From d9e03aad7a5132fe9db9992eecb47ee4e91c354c Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Fri, 25 Mar 2022 11:13:12 +0100
+Subject: [PATCH] Byte swap values read from the protobuf raw data stream on
+ big endian
+
+---
+ tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
+index 3b0a30cdb0..23e41d746f 100644
+--- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
++++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
+@@ -1,3 +1,4 @@
++#include "Byteswap.h"
+ #include "TMVA/RModelParser_ONNX.hxx"
+ #include "TMVA/OperatorList.hxx"
+ #include "onnx_proto3.pb.h"
+@@ -980,9 +981,14 @@ RModel RModelParser_ONNX::Parse(std::string filename){
+ //void* data = malloc (fLength * sizeof(float));
+ std::shared_ptr<void> data(malloc(fLength * sizeof(float)), free);
+
+- if (tensorproto->raw_data().empty() == false){
+- auto raw_data_ptr = reinterpret_cast<float*>(const_cast<char*>(tensorproto->raw_data().c_str()));
+- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(float));
++ if (!tensorproto->raw_data().empty()) {
++#ifdef R__BYTESWAP
++ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(float));
++#else
++ for (std::size_t k = 0; k < fLength; ++k)
++ (reinterpret_cast<UInt_t*>(data.get()))[k] =
++ R__bswap_32((reinterpret_cast<const UInt_t*>(tensorproto->raw_data().c_str()))[k]);
++#endif
+ }else{
+ tensorproto->mutable_float_data()->ExtractSubrange(0, tensorproto->float_data_size(), static_cast<float*>(data.get()));
+ }
+--
+2.35.1
+
diff --git a/root-blas-linking-and-ignore-prefix.patch b/root-blas-linking-and-ignore-prefix.patch
new file mode 100644
index 0000000..abe53f7
--- /dev/null
+++ b/root-blas-linking-and-ignore-prefix.patch
@@ -0,0 +1,74 @@
+From 1aa9231becda09a89ec576e4a17ca4d9b6e2f310 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Tue, 15 Mar 2022 14:55:37 +0100
+Subject: [PATCH] Link to the blas library found by cmake, not hardcoded
+ "blas". Set ROOTIGNOREPREFIX=1 when running built binaries during build. Make
+ sure PCH is created before running emitters.
+
+---
+ tmva/sofie/test/CMakeLists.txt | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/tmva/sofie/test/CMakeLists.txt b/tmva/sofie/test/CMakeLists.txt
+index e4f9d28748..a3a2c9ae16 100644
+--- a/tmva/sofie/test/CMakeLists.txt
++++ b/tmva/sofie/test/CMakeLists.txt
+@@ -43,7 +43,7 @@ target_compile_options(emitFromONNX PRIVATE -Wno-unused-parameter -Wno-array-bou
+
+ # Automatic compilation of headers from onnx files
+ add_custom_target(SofieCompileModels_ONNX)
+-add_dependencies(SofieCompileModels_ONNX emitFromONNX)
++add_dependencies(SofieCompileModels_ONNX emitFromONNX onepcm)
+
+ # Finding .onnx files to be compiled and creating the appropriate command
+ file(GLOB ONNX_FILES "${ONNX_MODELS_DIR}/*.onnx")
+@@ -51,7 +51,7 @@ foreach(onnx_file ${ONNX_FILES})
+ get_filename_component(fname ${onnx_file} NAME_WE)
+ get_filename_component(fdir ${onnx_file} DIRECTORY)
+ add_custom_command(TARGET SofieCompileModels_ONNX POST_BUILD
+- COMMAND ./emitFromONNX ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname}
++ COMMAND ${CMAKE_COMMAND} -E env ROOTIGNOREPREFIX=1 ./emitFromONNX ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname}
+ USES_TERMINAL
+ )
+ endforeach()
+@@ -60,7 +60,8 @@ endforeach()
+ ROOT_ADD_GTEST(TestCustomModelsFromONNX TestCustomModelsFromONNX.cxx
+ LIBRARIES
+ ROOTTMVASofie
+- blas
++ ${BLAS_LINKER_FLAGS}
++ ${BLAS_LIBRARIES}
+ INCLUDE_DIRS
+ ${CMAKE_CURRENT_BINARY_DIR}
+ )
+@@ -92,7 +93,7 @@ target_compile_options(emitFromROOT PRIVATE -Wno-unused-parameter -Wno-array-bou
+
+ # Automatic compilation of headers from root files
+ add_custom_target(SofieCompileModels_ROOT)
+-add_dependencies(SofieCompileModels_ROOT emitFromROOT)
++add_dependencies(SofieCompileModels_ROOT emitFromROOT onepcm)
+
+ # Finding .onnx files to be parsed and creating the appropriate command
+ file(GLOB ONNX_FILES "${ONNX_MODELS_DIR}/*.onnx")
+@@ -100,7 +101,7 @@ foreach(onnx_file ${ONNX_FILES})
+ get_filename_component(fname ${onnx_file} NAME_WE)
+ get_filename_component(fdir ${onnx_file} DIRECTORY)
+ add_custom_command(TARGET SofieCompileModels_ROOT POST_BUILD
+- COMMAND ./emitFromROOT ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname}
++ COMMAND ${CMAKE_COMMAND} -E env ROOTIGNOREPREFIX=1 ./emitFromROOT ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname}
+ USES_TERMINAL
+ )
+ endforeach()
+@@ -109,7 +110,8 @@ endforeach()
+ ROOT_ADD_GTEST(TestCustomModelsFromROOT TestCustomModelsFromROOT.cxx
+ LIBRARIES
+ ROOTTMVASofie
+- blas
++ ${BLAS_LINKER_FLAGS}
++ ${BLAS_LIBRARIES}
+ INCLUDE_DIRS
+ ${CMAKE_CURRENT_BINARY_DIR}
+ )
+--
+2.35.1
+
diff --git a/root-core-base-test.patch b/root-core-base-test.patch
new file mode 100644
index 0000000..c268390
--- /dev/null
+++ b/root-core-base-test.patch
@@ -0,0 +1,31 @@
+From 12d52a60629e1639ced23a1919bd85628d9135ea Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sun, 3 Apr 2022 23:23:00 +0200
+Subject: [PATCH] Fix library link order
+
+Fixes undefined references when linking CoreBaseTests
+
+../../../lib/libCling.so.6.26.00: undefined reference to `TMemFile::TMemFile(char const*, TMemFile::ZeroCopyView_t const&)'
+../../../lib/libCling.so.6.26.00: undefined reference to `TFile::TFile(char const*, char const*, char const*, int)'
+../../../lib/libCling.so.6.26.00: undefined reference to `TFile::~TFile()'
+../../../lib/libCling.so.6.26.00: undefined reference to `TStreamerInfo::TStreamerInfo()'
+../../../lib/libCling.so.6.26.00: undefined reference to `TMemFile::~TMemFile()'
+---
+ core/base/test/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/core/base/test/CMakeLists.txt b/core/base/test/CMakeLists.txt
+index 4b08cb0390..9b52e83405 100644
+--- a/core/base/test/CMakeLists.txt
++++ b/core/base/test/CMakeLists.txt
+@@ -22,6 +22,6 @@ ROOT_ADD_GTEST(CoreBaseTests
+ TExceptionHandlerTests.cxx
+ TStringTest.cxx
+ TBitsTests.cxx
+- LIBRARIES Core RIO ${extralibs})
++ LIBRARIES ${extralibs} RIO Core)
+
+ ROOT_ADD_GTEST(CoreErrorTests TErrorTests.cxx LIBRARIES Core)
+--
+2.35.1
+
diff --git a/root-dataframe-callback.patch b/root-dataframe-callback.patch
new file mode 100644
index 0000000..57ffc08
--- /dev/null
+++ b/root-dataframe-callback.patch
@@ -0,0 +1,45 @@
+From d849bc502eec4ec95d15ca41319ba0467ab22759 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 15:55:29 +0100
+Subject: [PATCH] =?UTF-8?q?NENTRIES=20is=20not=20always=20a=20multiple=20o?=
+ =?UTF-8?q?f=20the=20expected=20size.=20NENTRIES=20is=2010.=20On=20a=204?=
+ =?UTF-8?q?=20core=20machine=20the=20expected=20size=20in=202=20=C3=97=204?=
+ =?UTF-8?q?=20=3D=208.=20Looping=20over=20the=208=20IDs,=202=20have=202=20?=
+ =?UTF-8?q?entries=20the=20remaining=206=20have=201=20entry=20for=20a=20to?=
+ =?UTF-8?q?tal=20of=2010=20(NENTRIES)=20entries.=20The=20test=20checked=20?=
+ =?UTF-8?q?that=20each=20ID=20had=20NENTRIES/(expected=20size)=20entries,?=
+ =?UTF-8?q?=20which=20in=20this=20case=20with=20integer=20division=20equal?=
+ =?UTF-8?q?s=201=20entry,=20which=20was=20not=20the=20correct=20test.=20Th?=
+ =?UTF-8?q?is=20commit=20chenges=20to=20test=20to=20check=20that=20the=20t?=
+ =?UTF-8?q?otal=20number=20of=20entries=20summed=20for=20all=20IDs=20equal?=
+ =?UTF-8?q?s=20NENTRIES.?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+---
+ tree/dataframe/test/dataframe_samplecallback.cxx | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/tree/dataframe/test/dataframe_samplecallback.cxx b/tree/dataframe/test/dataframe_samplecallback.cxx
+index 188d58dd31..d387ea5f86 100644
+--- a/tree/dataframe/test/dataframe_samplecallback.cxx
++++ b/tree/dataframe/test/dataframe_samplecallback.cxx
+@@ -125,11 +125,13 @@ TEST_P(RDFSampleCallback, EmptySourceSampleID) {
+ // RDF with empty sources tries to produce 2 tasks per slot when MT is enabled
+ const auto expectedSize = std::min(NENTRIES, df.GetNSlots() * 2ull);
+ ASSERT_EQ(result->size(), expectedSize);
++ ULong64_t entries = 0;
+ for (auto &id : *result) {
+ // check that all entries start with the expected string
+ EXPECT_TRUE(id.AsString().rfind("Empty source, range: {", 0) == 0);
+- EXPECT_EQ(id.NEntries(), NENTRIES / expectedSize);
++ entries += id.NEntries();
+ }
++ EXPECT_EQ(entries, NENTRIES);
+ } else {
+ ASSERT_EQ(result->size(), 1);
+ const auto &id = result->at(0);
+--
+2.35.1
+
diff --git a/root-doc-no-notebooks.patch b/root-doc-no-notebooks.patch
deleted file mode 100644
index f94d31f..0000000
--- a/root-doc-no-notebooks.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -ur root-6.20.02.orig/documentation/doxygen/filter.cxx root-6.20.02/documentation/doxygen/filter.cxx
---- root-6.20.02.orig/documentation/doxygen/filter.cxx 2020-03-15 16:21:25.000000000 +0100
-+++ root-6.20.02/documentation/doxygen/filter.cxx 2020-03-15 20:05:59.047270429 +0100
-@@ -378,16 +378,7 @@
-
- // notebook found
- if (gLineString.find("\\notebook") != string::npos) {
-- ExecuteCommand(StringFormat("%s converttonotebook.py %s %s/notebooks/",
-- gPythonExec.c_str(),
-- gFileName.c_str(), gOutDir.c_str()));
-- if (gPython){
-- gLineString = "## ";
-- }
-- else{
-- gLineString = "/// ";
-- }
-- gLineString += StringFormat( "\\htmlonly <a href=\"https://nbviewer.jupyter.org/url/root.cern/doc/master/notebooks/%s.nbconv..." target=\"_blank\"><img src= notebook.gif alt=\"View in nbviewer\" style=\"height:1em\" ></a> <a href=\"https://cern.ch/swanserver/cgi-bin/go?projurl=https://root.cern/doc/maste..." target=\"_blank\"><img src=\"https://swanserver.web.cern.ch/swanserver/images/badge_swan_white_150.png\" alt=\"Open in SWAN\" style=\"height:1em\" ></a> \\endhtmlonly \n", gMacroName.c_str() , gMacroName.c_str());
-+ gLineString = "";
- }
-
- // \macro_output found
diff --git a/root-doxygen-crash-el7.patch b/root-doxygen-crash-el7.patch
deleted file mode 100644
index 28fb075..0000000
--- a/root-doxygen-crash-el7.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-diff -ur root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C
---- root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200
-+++ root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C 2021-11-05 18:09:46.916687882 +0100
-@@ -5,7 +5,6 @@
- /// This tutorial shows how a histogram can be filled in parallel
- /// with a multiprocess approach.
- ///
--/// \macro_image
- /// \macro_code
- ///
- /// \date January 2016
-diff -ur root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C
---- root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200
-+++ root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C 2021-12-06 18:19:08.498933048 +0100
-@@ -10,7 +10,6 @@
- /// method. This method is not thread safe: in presence of ROOT histograms, the
- /// system will not crash but the result is not uniquely defined.
- ///
--/// \macro_image
- /// \macro_code
- ///
- /// \date January 2016
-diff -ur root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C root-6.24.06/tutorials/multicore/mt304_fillHistos.C
---- root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C 2021-09-01 10:08:19.000000000 +0200
-+++ root-6.24.06/tutorials/multicore/mt304_fillHistos.C 2021-12-06 19:54:20.634373797 +0100
-@@ -5,7 +5,6 @@
- /// Illustrates use of power-of-two autobin algorithm
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date November 2017
- /// \author Gerardo Ganis
-diff -ur root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C
---- root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200
-+++ root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-12-06 19:54:22.174377227 +0100
-@@ -5,7 +5,6 @@
- /// This tutorial shows how a histogram can be filled in parallel
- /// with a multiprocess approach.
- ///
--/// \macro_image
- /// \macro_code
- ///
- /// \date January 2016
diff --git a/root-doxygen-crash.patch b/root-doxygen-crash.patch
deleted file mode 100644
index d69d7e7..0000000
--- a/root-doxygen-crash.patch
+++ /dev/null
@@ -1,275 +0,0 @@
-diff -ur root-6.24.02.orig/tutorials/dataframe/df002_dataModel.C root-6.24.02/tutorials/dataframe/df002_dataModel.C
---- root-6.24.02.orig/tutorials/dataframe/df002_dataModel.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df002_dataModel.C 2021-08-11 03:55:11.021149115 +0200
-@@ -7,7 +7,6 @@
- /// complex than flat ntuples with RDataFrame
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date December 2016
- /// \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df002_dataModel.py root-6.24.02/tutorials/dataframe/df002_dataModel.py
---- root-6.24.02.orig/tutorials/dataframe/df002_dataModel.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df002_dataModel.py 2021-08-11 03:55:11.084149272 +0200
-@@ -7,7 +7,6 @@
- ## complex than flat ntuples with RDataFrame
- ##
- ## \macro_code
--## \macro_image
- ##
- ## \date May 2017
- ## \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df003_profiles.C root-6.24.02/tutorials/dataframe/df003_profiles.C
---- root-6.24.02.orig/tutorials/dataframe/df003_profiles.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df003_profiles.C 2021-08-11 03:55:11.148149432 +0200
-@@ -7,7 +7,6 @@
- /// RDataFrame. See the documentation of TProfile and TProfile2D to better
- /// understand the analogy of this code with the example one.
- ///
--/// \macro_image
- /// \macro_code
- ///
- /// \date February 2017
-diff -ur root-6.24.02.orig/tutorials/dataframe/df003_profiles.py root-6.24.02/tutorials/dataframe/df003_profiles.py
---- root-6.24.02.orig/tutorials/dataframe/df003_profiles.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df003_profiles.py 2021-08-11 03:55:11.211149590 +0200
-@@ -8,7 +8,6 @@
- ## understand the analogy of this code with the example one.
- ##
- ## \macro_code
--## \macro_image
- ##
- ## \date February 2017
- ## \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df005_fillAnyObject.C root-6.24.02/tutorials/dataframe/df005_fillAnyObject.C
---- root-6.24.02.orig/tutorials/dataframe/df005_fillAnyObject.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df005_fillAnyObject.C 2021-08-11 03:55:11.275149750 +0200
-@@ -7,7 +7,6 @@
- /// `Fill` method.
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date March 2017
- /// \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df007_snapshot.C root-6.24.02/tutorials/dataframe/df007_snapshot.C
---- root-6.24.02.orig/tutorials/dataframe/df007_snapshot.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df007_snapshot.C 2021-08-11 03:55:11.338149907 +0200
-@@ -5,7 +5,6 @@
- ///
- /// This tutorial shows how to write out datasets in ROOT format using the RDataFrame
- ///
--/// \macro_image
- /// \macro_code
- ///
- /// \date April 2017
-diff -ur root-6.24.02.orig/tutorials/dataframe/df007_snapshot.py root-6.24.02/tutorials/dataframe/df007_snapshot.py
---- root-6.24.02.orig/tutorials/dataframe/df007_snapshot.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df007_snapshot.py 2021-08-11 03:55:11.402150067 +0200
-@@ -5,7 +5,6 @@
- ##
- ## This tutorial shows how to write out datasets in ROOT format using the RDataFrame
- ##
--## \macro_image
- ## \macro_code
- ##
- ## \date April 2017
-diff -ur root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.C root-6.24.02/tutorials/dataframe/df014_CSVDataSource.C
---- root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df014_CSVDataSource.C 2021-08-11 03:55:11.465150225 +0200
-@@ -14,7 +14,6 @@
- /// DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700).
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date October 2017
- /// \author Enric Tejedor (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.py root-6.24.02/tutorials/dataframe/df014_CSVDataSource.py
---- root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df014_CSVDataSource.py 2021-08-11 03:55:11.529150385 +0200
-@@ -14,7 +14,6 @@
- ## DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700).
- ##
- ## \macro_code
--## \macro_image
- ##
- ## \date October 2017
- ## \author Enric Tejedor (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df015_LazyDataSource.C root-6.24.02/tutorials/dataframe/df015_LazyDataSource.C
---- root-6.24.02.orig/tutorials/dataframe/df015_LazyDataSource.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df015_LazyDataSource.C 2021-08-11 03:55:11.593150545 +0200
-@@ -14,7 +14,6 @@
- /// From the ROOT website: https://root.cern.ch/files/tutorials/tdf014_CsvDataSource_MuRun2010B.csv
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date February 2018
- /// \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df016_vecOps.C root-6.24.02/tutorials/dataframe/df016_vecOps.C
---- root-6.24.02.orig/tutorials/dataframe/df016_vecOps.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df016_vecOps.C 2021-08-11 03:55:11.656150702 +0200
-@@ -7,7 +7,6 @@
- /// stored in datasets, a situation very common in HEP data analysis.
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date February 2018
- /// \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df016_vecOps.py root-6.24.02/tutorials/dataframe/df016_vecOps.py
---- root-6.24.02.orig/tutorials/dataframe/df016_vecOps.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df016_vecOps.py 2021-08-11 03:55:11.720150862 +0200
-@@ -6,7 +6,6 @@
- ## This tutorial shows the potential of the VecOps approach for treating collections
- ## stored in datasets, a situation very common in HEP data analysis.
- ##
--## \macro_image
- ## \macro_code
- ##
- ## \date February 2018
-diff -ur root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.C root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.C
---- root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.C 2021-08-11 03:55:11.783151020 +0200
-@@ -11,7 +11,6 @@
- /// greater than 100.
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date March 2018
- /// \authors Danilo Piparo (CERN), Andre Vieira Silva
-diff -ur root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.py root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.py
---- root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.py 2021-08-11 03:55:11.846151177 +0200
-@@ -7,7 +7,6 @@
- ## model typically adopted in HEP for analysis.
- ##
- ## \macro_code
--## \macro_image
- ##
- ## \date March 2018
- ## \authors Danilo Piparo (CERN), Andre Vieira Silva
-diff -ur root-6.24.02.orig/tutorials/dataframe/df019_Cache.C root-6.24.02/tutorials/dataframe/df019_Cache.C
---- root-6.24.02.orig/tutorials/dataframe/df019_Cache.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df019_Cache.C 2021-08-11 03:55:11.910151337 +0200
-@@ -18,7 +18,6 @@
- /// only when the event loop is triggered on it.
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date June 2018
- /// \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df019_Cache.py root-6.24.02/tutorials/dataframe/df019_Cache.py
---- root-6.24.02.orig/tutorials/dataframe/df019_Cache.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df019_Cache.py 2021-08-11 03:55:11.973151495 +0200
-@@ -18,7 +18,6 @@
- ## only when the event loop is triggered on it.
- ##
- ## \macro_code
--## \macro_image
- ##
- ## \date June 2018
- ## \author Danilo Piparo (CERN)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.C root-6.24.02/tutorials/dataframe/df021_createTGraph.C
---- root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df021_createTGraph.C 2021-08-11 03:55:12.037151655 +0200
-@@ -4,7 +4,6 @@
- /// Fill a TGraph using RDataFrame.
- ///
- /// \macro_code
--/// \macro_image
- ///
- /// \date July 2018
- /// \authors Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino)
-diff -ur root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.py root-6.24.02/tutorials/dataframe/df021_createTGraph.py
---- root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/dataframe/df021_createTGraph.py 2021-08-11 03:55:12.100151813 +0200
-@@ -4,7 +4,6 @@
- ## Fill a TGraph using RDataFrame.
- ##
- ## \macro_code
--## \macro_image
- ##
- ## \date July 2018
- ## \authors Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino)
-diff -ur root-6.24.02.orig/tutorials/tmva/tmva003_RReader.C root-6.24.02/tutorials/tmva/tmva003_RReader.C
---- root-6.24.02.orig/tutorials/tmva/tmva003_RReader.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/tmva/tmva003_RReader.C 2021-08-11 04:16:33.833359421 +0200
-@@ -5,7 +5,6 @@
- /// TMVA XML files.
- ///
- /// \macro_code
--/// \macro_output
- ///
- /// \date July 2019
- /// \author Stefan Wunsch
-diff -ur root-6.24.02.orig/tutorials/tmva/tmva103_Application.C root-6.24.02/tutorials/tmva/tmva103_Application.C
---- root-6.24.02.orig/tutorials/tmva/tmva103_Application.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/tmva/tmva103_Application.C 2021-08-11 21:56:49.387390340 +0200
-@@ -6,7 +6,6 @@
- /// event-by-event inference, batch inference and pipelines with RDataFrame.
- ///
- /// \macro_code
--/// \macro_output
- ///
- /// \date December 2018
- /// \author Stefan Wunsch
-diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_CNN_Classification.C root-6.24.02/tutorials/tmva/TMVA_CNN_Classification.C
---- root-6.24.02.orig/tutorials/tmva/TMVA_CNN_Classification.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/tmva/TMVA_CNN_Classification.C 2021-08-10 15:21:03.306171069 +0200
-@@ -6,7 +6,6 @@
- /// This is an example of using a CNN in TMVA. We do classification using a toy image data set
- /// that is generated when running the example macro
- ///
--/// \macro_image
- /// \macro_output
- /// \macro_code
- ///
-diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_Higgs_Classification.C root-6.24.02/tutorials/tmva/TMVA_Higgs_Classification.C
---- root-6.24.02.orig/tutorials/tmva/TMVA_Higgs_Classification.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/tmva/TMVA_Higgs_Classification.C 2021-08-10 15:21:33.974251559 +0200
-@@ -7,7 +7,6 @@
- /// used in this paper: Baldi, P., P. Sadowski, and D. Whiteson. “Searching for Exotic Particles in High-energy Physics
- /// with Deep Learning.” Nature Communications 5 (July 2, 2014).
- ///
--/// \macro_image
- /// \macro_output
- /// \macro_code
- ///
-diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_RNN_Classification.C root-6.24.02/tutorials/tmva/TMVA_RNN_Classification.C
---- root-6.24.02.orig/tutorials/tmva/TMVA_RNN_Classification.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/tmva/TMVA_RNN_Classification.C 2021-08-10 15:21:15.657203486 +0200
-@@ -6,7 +6,6 @@
- /// This is an example of using a RNN in TMVA. We do classification using a toy time dependent data set
- /// that is generated when running this example macro
- ///
--/// \macro_image
- /// \macro_output
- /// \macro_code
- ///
-diff -ur root-6.24.02.orig/tutorials/v7/line.cxx root-6.24.02/tutorials/v7/line.cxx
---- root-6.24.02.orig/tutorials/v7/line.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/v7/line.cxx 2021-08-16 14:25:32.528867781 +0200
-@@ -6,7 +6,6 @@
- /// "normal" coordinates' system and changing the line color linearly from black
- /// to red.
- ///
--/// \macro_image (line.png)
- /// \macro_code
- ///
- /// \date 2018-03-18
-diff -ur root-6.24.02.orig/tutorials/v7/ntuple/ntpl005_introspection.C root-6.24.02/tutorials/v7/ntuple/ntpl005_introspection.C
---- root-6.24.02.orig/tutorials/v7/ntuple/ntpl005_introspection.C 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tutorials/v7/ntuple/ntpl005_introspection.C 2021-08-10 15:22:06.504336763 +0200
-@@ -4,7 +4,6 @@
- /// Write and read an RNTuple from a user-defined class. Adapted from tv3.C
- /// Illustrates various RNTuple introspection methods.
- ///
--/// \macro_image
- /// \macro_code
- ///
- /// \date April 2020
diff --git a/root-doxygen-fix1.patch b/root-doxygen-fix1.patch
deleted file mode 100644
index 9525bf4..0000000
--- a/root-doxygen-fix1.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From e303e0105b6f7bd7848a4385fcb62bedb847abb4 Mon Sep 17 00:00:00 2001
-From: Olivier Couet <olivier.couet(a)cern.ch>
-Date: Mon, 12 Apr 2021 16:22:49 +0200
-Subject: [PATCH] RLogScopedVerbosity doxygen doc fix (#7830)
-
-* RLogScopedVerbosity doxygen doc was not visible because source code was under ``` instead of ~~~
-
-* [foundation] RLogger doc (NFC) - thanks, Sergey!
-
-Co-authored-by: Axel Naumann <Axel.Naumann(a)cern.ch>
----
- core/foundation/inc/ROOT/RLogger.hxx | 20 ++++++++++----------
- 1 file changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/core/foundation/inc/ROOT/RLogger.hxx b/core/foundation/inc/ROOT/RLogger.hxx
-index d753bbc358..c1a1b22690 100644
---- a/core/foundation/inc/ROOT/RLogger.hxx
-+++ b/core/foundation/inc/ROOT/RLogger.hxx
-@@ -109,7 +109,7 @@ public:
- /// Construct an anonymous channel.
- RLogChannel() = default;
-
-- /// Construct an anonymous channel with a default vebosity.
-+ /// Construct an anonymous channel with a default verbosity.
- explicit RLogChannel(ELogLevel verbosity) : fVerbosity(verbosity) {}
-
- /// Construct a log channel given its name, which is part of the diagnostics.
-@@ -202,11 +202,11 @@ namespace Detail {
-
- This builder can be used through the utility preprocessor macros R__LOG_ERROR,
- R__LOG_WARNING etc like this:
-- ```c++
-+~~~ {.cpp}
- R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42;
- const int decreasedInfoLevel = 5;
- R__LOG_XDEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details";
-- ```
-+~~~
- This will automatically capture the current class and function name, the file and line number.
- */
-
-@@ -235,10 +235,10 @@ public:
- Change the verbosity level (global or specific to the RLogChannel passed to the
- constructor) for the lifetime of this object.
- Example:
-- ```c++
-+~~~ {.cpp}
- RLogScopedVerbosity debugThis(gFooLog, ELogLevel::kDebug);
- Foo::SomethingToDebug();
-- ```
-+~~~
- */
- class RLogScopedVerbosity {
- RLogChannel *fChannel;
-@@ -331,10 +331,10 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons
-
- - The conditional `RLogBuilder` use prevents stream operators from being called if
- verbosity is too low, i.e.:
-- ````
-+ ~~~
- RLogScopedVerbosity silence(RLogLevel::kFatal);
- R__LOG_DEBUG(7) << WillNotBeCalled();
-- ```
-+ ~~~
- - To update counts of warnings / errors / fatal errors, those RLogEntries must
- always be created, even if in the end their emission will be silenced. This
- should be fine, performance-wise, as they should not happen frequently.
-@@ -350,13 +350,13 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons
-
- /// \name LogMacros
- /// Macros to log diagnostics.
--/// ```c++
-+/// ~~~ {.cpp}
- /// R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42;
- ///
- /// RLogScopedVerbosity verbose(kDebug + 5);
- /// const int decreasedInfoLevel = 5;
--/// R__LOG_DEBUG(decreasedInfoLevel, ROOT::Experimental::WebGUILog()) << "nitty-gritty details";
--/// ```
-+/// R__LOG_DEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details";
-+/// ~~~
- ///\{
- #define R__LOG_FATAL(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kFatal, __VA_ARGS__)
- #define R__LOG_ERROR(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kError, __VA_ARGS__)
---
-2.33.1
-
diff --git a/root-doxygen-fix2.patch b/root-doxygen-fix2.patch
deleted file mode 100644
index 1fa75e7..0000000
--- a/root-doxygen-fix2.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 37a1a43347bc1ecb492b13e2f06d80c16779c84f Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Sun, 5 Dec 2021 21:51:32 +0100
-Subject: [PATCH] Fix doxygen warning
-
-warning: reached end of file while inside a ~~~ block!
----
- gui/webdisplay/src/RWebDisplayHandle.cxx | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gui/webdisplay/src/RWebDisplayHandle.cxx b/gui/webdisplay/src/RWebDisplayHandle.cxx
-index 44a544bb51..84ff7a6990 100644
---- a/gui/webdisplay/src/RWebDisplayHandle.cxx
-+++ b/gui/webdisplay/src/RWebDisplayHandle.cxx
-@@ -608,7 +608,7 @@ std::unique_ptr<RWebDisplayHandle> RWebDisplayHandle::Display(const RWebDisplayA
- /// Browser can specified when starting `root --web=firefox`
- /// Returns true when browser started
- /// It is convenience method, equivalent to:
--/// ~~~
-+/// ~~~
- /// RWebDisplayArgs args;
- /// args.SetUrl(url);
- /// args.SetStandalone(false);
---
-2.33.1
-
diff --git a/root-endian-warn.patch b/root-endian-warn.patch
new file mode 100644
index 0000000..77cd6b9
--- /dev/null
+++ b/root-endian-warn.patch
@@ -0,0 +1,33 @@
+From ba0dc65e558fd916dbe18f8dbe8208a3be932c25 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Mon, 28 Mar 2022 09:20:18 +0200
+Subject: [PATCH 2/2] Ignore warnings about RooNaNPacker not being implemented
+ for big endian
+
+This warning is triggered in many tests, so it makes sense to put it
+in the default ignored set.
+---
+ test/unit_testing_support/ROOTUnitTestSupport.cxx | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/test/unit_testing_support/ROOTUnitTestSupport.cxx b/test/unit_testing_support/ROOTUnitTestSupport.cxx
+index 259ab4e09c..79cd476950 100644
+--- a/test/unit_testing_support/ROOTUnitTestSupport.cxx
++++ b/test/unit_testing_support/ROOTUnitTestSupport.cxx
+@@ -73,6 +73,13 @@ static struct ForbidDiagnostics {
+ return;
+ }
+
++ // FIXME: RooNaNPacker warns about not being implemented for big endian
++ if (level == kWarning
++ && strcmp(msg, "Fast recovery from undefined function values only implemented for little-endian machines. If necessary, request an extension of functionality on https://root.cern") == 0) {
++ std::cerr << "Warning in " << location << " " << msg << std::endl;
++ return;
++ }
++
+ FAIL() << "Received unexpected diagnostic of severity "
+ << level
+ << " at '" << location << "' reading '" << msg << "'.\n"
+--
+2.35.1
+
diff --git a/root-epel7-ppc64le-pyroot.patch b/root-epel7-ppc64le-pyroot.patch
deleted file mode 100644
index 4619bf0..0000000
--- a/root-epel7-ppc64le-pyroot.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -ur root-6.22.04.orig/bindings/pyroot/pythonizations/python/ROOT/__init__.py root-6.22.04/bindings/pyroot/pythonizations/python/ROOT/__init__.py
---- root-6.22.04.orig/bindings/pyroot/pythonizations/python/ROOT/__init__.py 2020-11-13 11:42:09.000000000 +0100
-+++ root-6.22.04/bindings/pyroot/pythonizations/python/ROOT/__init__.py 2020-11-14 15:38:24.462463625 +0100
-@@ -19,6 +19,12 @@
- # Prevent cppyy from filtering ROOT libraries
- environ['CPPYY_NO_ROOT_FILTER'] = '1'
-
-+try:
-+ from ctypes import cdll
-+ libCore = cdll.LoadLibrary("libCore.so")
-+except:
-+ print("An exception occurred while loading libCore.so with ctypes")
-+
- import cppyy
- if not 'ROOTSYS' in environ:
- # Revert setting made by cppyy
diff --git a/root-fix-TMVA-tutorial-using-internally-python.patch b/root-fix-TMVA-tutorial-using-internally-python.patch
new file mode 100644
index 0000000..e1cae2a
--- /dev/null
+++ b/root-fix-TMVA-tutorial-using-internally-python.patch
@@ -0,0 +1,177 @@
+From db974bbe72b97c798b7db52d2481aa24c2ce2b76 Mon Sep 17 00:00:00 2001
+From: moneta <lorenzo.moneta(a)cern.ch>
+Date: Thu, 17 Mar 2022 16:28:42 +0100
+Subject: [PATCH] Fix TMVA tutorial using internally pyton for MacOS 12.3
+
+With the new MacOS update python (and python2) is not existing anymore, only python3.
+Add then a new function TMVA::Python_executable() using ROOT config to determine if ROOT is using python version 2 or 3. In case of 3 returns as executable "python3".
+
+Fix also the correct location of the input ONNX file for TMVA_SOFIE_ONNX.C (copying the file at configure time)
+---
+ tmva/pymva/inc/TMVA/PyMethodBase.h | 6 ++++++
+ tmva/pymva/src/PyMethodBase.cxx | 20 ++++++++++++++++++++
+ tutorials/CMakeLists.txt | 5 ++++-
+ tutorials/tmva/TMVA_CNN_Classification.C | 5 +++--
+ tutorials/tmva/TMVA_RNN_Classification.C | 2 +-
+ tutorials/tmva/TMVA_SOFIE_Keras.C | 2 +-
+ tutorials/tmva/TMVA_SOFIE_ONNX.C | 2 +-
+ tutorials/tmva/TMVA_SOFIE_PyTorch.C | 2 +-
+ 8 files changed, 37 insertions(+), 7 deletions(-)
+
+diff --git a/tmva/pymva/inc/TMVA/PyMethodBase.h b/tmva/pymva/inc/TMVA/PyMethodBase.h
+index 31a5caada9..a213c3fbad 100644
+--- a/tmva/pymva/inc/TMVA/PyMethodBase.h
++++ b/tmva/pymva/inc/TMVA/PyMethodBase.h
+@@ -53,6 +53,12 @@ namespace TMVA {
+ class MethodBoost;
+ class DataSetInfo;
+
++ /// Function to find current Python executable
++ /// used by ROOT
++ /// If Python2 is installed return "python"
++ /// Instead if "Python3" return "python3"
++ TString Python_Executable();
++
+ class PyMethodBase : public MethodBase {
+
+ friend class Factory;
+diff --git a/tmva/pymva/src/PyMethodBase.cxx b/tmva/pymva/src/PyMethodBase.cxx
+index 86f979e006..26b0f31135 100644
+--- a/tmva/pymva/src/PyMethodBase.cxx
++++ b/tmva/pymva/src/PyMethodBase.cxx
+@@ -19,6 +19,9 @@
+ #include "TMVA/MsgLogger.h"
+ #include "TMVA/Results.h"
+ #include "TMVA/Timer.h"
++#include "TMVA/Tools.h"
++
++#include "TSystem.h"
+
+ #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
+ #include <numpy/arrayobject.h>
+@@ -37,6 +40,23 @@ public:
+ ~PyGILRAII() { PyGILState_Release(m_GILState); }
+ };
+ } // namespace Internal
++
++/// get current Python executable used by ROOT
++TString Python_Executable() {
++ TString python_version = gSystem->GetFromPipe("root-config --python-version");
++ if (python_version.IsNull()) {
++ TMVA::gTools().Log() << kFATAL << "Can't find a valid Python version used to build ROOT" << Endl;
++ return nullptr;
++ }
++ if(python_version[0] == '2')
++ return "python";
++ else if (python_version[0] == '3')
++ return "python3";
++
++ TMVA::gTools().Log() << kFATAL << "Invalid Python version used to build ROOT : " << python_version << Endl;
++ return nullptr;
++}
++
+ } // namespace TMVA
+
+ ClassImp(PyMethodBase);
+diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt
+index de77aaa787..f1f1abda71 100644
+--- a/tutorials/CMakeLists.txt
++++ b/tutorials/CMakeLists.txt
+@@ -281,8 +281,11 @@ else()
+ endif()
+ if (NOT tmva-sofie)
+ list(APPEND tmva_veto tmva/TMVA_SOFIE_ONNX.C)
++ else()
++ #copy ONNX file needed for the tutorial
++ configure_file(${CMAKE_SOURCE_DIR}/tmva/sofie/test/input_models/Linear_16.onnx ${CMAKE_BINARY_DIR}/tutorials/tmva/Linear_16.onnx COPYONLY)
+ endif()
+-
++
+ endif()
+
+ if (NOT ROOT_pythia6_FOUND)
+diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C
+index fa03562a8f..31172bb729 100644
+--- a/tutorials/tmva/TMVA_CNN_Classification.C
++++ b/tutorials/tmva/TMVA_CNN_Classification.C
+@@ -145,6 +145,7 @@ void TMVA_CNN_Classification(std::vector<bool> opt = {1, 1, 1, 1, 1})
+ TMVA::PyMethodBase::PyInitialize();
+ #else
+ useKerasCNN = false;
++ usePyTorchCNN = false;
+ #endif
+
+ TFile *outputFile = nullptr;
+@@ -445,7 +446,7 @@ void TMVA_CNN_Classification(std::vector<bool> opt = {1, 1, 1, 1, 1})
+
+ m.SaveSource("make_cnn_model.py");
+ // execute
+- gSystem->Exec("python make_cnn_model.py");
++ gSystem->Exec(TMVA::Python_Executable() + " make_cnn_model.py");
+
+ if (gSystem->AccessPathName("model_cnn.h5")) {
+ Warning("TMVA_CNN_Classification", "Error creating Keras model file - skip using Keras");
+@@ -465,7 +466,7 @@ void TMVA_CNN_Classification(std::vector<bool> opt = {1, 1, 1, 1, 1})
+ Info("TMVA_CNN_Classification", "Using Convolutional PyTorch Model");
+ TString pyTorchFileName = gROOT->GetTutorialDir() + TString("/tmva/PyTorch_Generate_CNN_Model.py");
+ // check that pytorch can be imported and file defining the model and used later when booking the method is existing
+- if (gSystem->Exec("python -c 'import torch'") || gSystem->AccessPathName(pyTorchFileName) ) {
++ if (gSystem->Exec(TMVA::Python_Executable() + " -c 'import torch'") || gSystem->AccessPathName(pyTorchFileName) ) {
+ Warning("TMVA_CNN_Classification", "PyTorch is not installed or model building file is not existing - skip using PyTorch");
+ }
+ else {
+diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C
+index eb26d03a2f..b49e4d91c4 100644
+--- a/tutorials/tmva/TMVA_RNN_Classification.C
++++ b/tutorials/tmva/TMVA_RNN_Classification.C
+@@ -431,7 +431,7 @@ the option string
+
+ m.SaveSource("make_rnn_model.py");
+ // execute
+- gSystem->Exec("python make_rnn_model.py");
++ gSystem->Exec(TMVA::Python_Executable() + " make_rnn_model.py");
+
+ if (gSystem->AccessPathName(modelName)) {
+ Warning("TMVA_RNN_Classification", "Error creating Keras recurrent model file - Skip using Keras");
+diff --git a/tutorials/tmva/TMVA_SOFIE_Keras.C b/tutorials/tmva/TMVA_SOFIE_Keras.C
+index e9fdbba21a..a87269f7f4 100644
+--- a/tutorials/tmva/TMVA_SOFIE_Keras.C
++++ b/tutorials/tmva/TMVA_SOFIE_Keras.C
+@@ -45,7 +45,7 @@ void TMVA_SOFIE_Keras(){
+ TMacro m;
+ m.AddLine(pythonSrc);
+ m.SaveSource("make_keras_model.py");
+- gSystem->Exec("python make_keras_model.py");
++ gSystem->Exec(TMVA::Python_Executable() + " make_keras_model.py");
+
+ //Parsing the saved Keras .h5 file into RModel object
+ SOFIE::RModel model = SOFIE::PyKeras::Parse("KerasModel.h5");
+diff --git a/tutorials/tmva/TMVA_SOFIE_ONNX.C b/tutorials/tmva/TMVA_SOFIE_ONNX.C
+index 30148db4fa..bf66c38896 100644
+--- a/tutorials/tmva/TMVA_SOFIE_ONNX.C
++++ b/tutorials/tmva/TMVA_SOFIE_ONNX.C
+@@ -13,7 +13,7 @@ using namespace TMVA::Experimental;
+ void TMVA_SOFIE_ONNX(){
+ //Creating parser object to parse ONNX files
+ SOFIE::RModelParser_ONNX Parser;
+- SOFIE::RModel model = Parser.Parse("../../tmva/sofie/test/input_models/Linear_16.onnx");
++ SOFIE::RModel model = Parser.Parse(std::string(gROOT->GetTutorialsDir()) + "/tmva/Linear_16.onnx");
+
+ //Generating inference code
+ model.Generate();
+diff --git a/tutorials/tmva/TMVA_SOFIE_PyTorch.C b/tutorials/tmva/TMVA_SOFIE_PyTorch.C
+index b208b042d7..580787cae1 100644
+--- a/tutorials/tmva/TMVA_SOFIE_PyTorch.C
++++ b/tutorials/tmva/TMVA_SOFIE_PyTorch.C
+@@ -47,7 +47,7 @@ void TMVA_SOFIE_PyTorch(){
+ TMacro m;
+ m.AddLine(pythonSrc);
+ m.SaveSource("make_pytorch_model.py");
+- gSystem->Exec("python make_pytorch_model.py");
++ gSystem->Exec(TMVA::Python_Executable() + " make_pytorch_model.py");
+
+ //Parsing a PyTorch model requires the shape and data-type of input tensor
+ //Data-type of input tensor defaults to Float if not specified
+--
+2.35.1
+
diff --git a/root-fix-multicore-tests-with-few-cores.patch b/root-fix-multicore-tests-with-few-cores.patch
deleted file mode 100644
index 55ad56e..0000000
--- a/root-fix-multicore-tests-with-few-cores.patch
+++ /dev/null
@@ -1,168 +0,0 @@
-From 153f1c3de0e24f5678fd3a706f902ac12b11048e Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Sun, 18 Apr 2021 07:28:41 +0200
-Subject: [PATCH] Fix multicore tests when running on machines with few cores
-
-When running on machines with few cores, enabling multithreading can
-give you fewer cores than requested. For most of the tests this does
-not matter. However, some tests verify the number of threads used.
-This commit adapts those tests for this situation.
----
- tree/dataframe/test/dataframe_concurrency.cxx | 18 +++++++++-------
- tree/dataframe/test/dataframe_interface.cxx | 7 +++++--
- tree/dataframe/test/dataframe_simple.cxx | 2 +-
- tree/dataframe/test/dataframe_snapshot.cxx | 6 ++++--
- .../test/treeprocmt/treeprocessormt.cxx | 21 +++++++++++++++----
- 5 files changed, 37 insertions(+), 17 deletions(-)
-
-diff --git a/tree/dataframe/test/dataframe_concurrency.cxx b/tree/dataframe/test/dataframe_concurrency.cxx
-index d1b25493e5..a4bce595f8 100644
---- a/tree/dataframe/test/dataframe_concurrency.cxx
-+++ b/tree/dataframe/test/dataframe_concurrency.cxx
-@@ -57,33 +57,35 @@ TEST(RDFConcurrency, NestedParallelismBetweenDefineCalls)
- // [DF] Warn on mismatch between slot pool size and effective number of slots
- TEST(RDFSimpleTests, ThrowOnPoolSizeMismatch)
- {
-+ const unsigned int nslots = std::min(3u, std::thread::hardware_concurrency());
-+
- // pool created after RDF
-- {
-+ if (nslots > 1) {
- ROOT::RDataFrame df(1);
-- ROOT::EnableImplicitMT(3);
-+ ROOT::EnableImplicitMT(nslots);
- try {
- df.Count().GetValue();
- } catch (const std::runtime_error &e) {
- const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the number of slots required "
-- "was 1, but when starting the event loop it was 3. Maybe EnableImplicitMT() was "
-+ "was 1, but when starting the event loop it was " + std::to_string(nslots) + ". Maybe EnableImplicitMT() was "
- "called after the RDataFrame was constructed?";
-- EXPECT_STREQ(e.what(), expected_msg);
-+ EXPECT_STREQ(e.what(), expected_msg.c_str());
- }
- ROOT::DisableImplicitMT();
- }
-
- // pool deleted after RDF creation
-- {
-- ROOT::EnableImplicitMT(3);
-+ if (nslots > 1) {
-+ ROOT::EnableImplicitMT(nslots);
- ROOT::RDataFrame df(1);
- ROOT::DisableImplicitMT();
- try {
- df.Count().GetValue();
- } catch (const std::runtime_error &e) {
- const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the number of slots required "
-- "was 3, but when starting the event loop it was 1. Maybe DisableImplicitMT() was "
-+ "was " + std::to_string(nslots) + ", but when starting the event loop it was 1. Maybe DisableImplicitMT() was "
- "called after the RDataFrame was constructed?";
-- EXPECT_STREQ(e.what(), expected_msg);
-+ EXPECT_STREQ(e.what(), expected_msg.c_str());
- }
- }
- }
-diff --git a/tree/dataframe/test/dataframe_interface.cxx b/tree/dataframe/test/dataframe_interface.cxx
-index afdd8360ef..90e052f1a7 100644
---- a/tree/dataframe/test/dataframe_interface.cxx
-+++ b/tree/dataframe/test/dataframe_interface.cxx
-@@ -7,6 +7,8 @@
-
- #include "gtest/gtest.h"
-
-+#include <thread>
-+
- using namespace ROOT;
- using namespace ROOT::RDF;
-
-@@ -351,9 +353,10 @@ TEST(RDataFrameInterface, GetNSlots)
- ROOT::RDataFrame df0(1);
- EXPECT_EQ(1U, df0.GetNSlots());
- #ifdef R__USE_IMT
-- ROOT::EnableImplicitMT(3);
-+ unsigned int nslots = std::min(3U, std::thread::hardware_concurrency());
-+ ROOT::EnableImplicitMT(nslots);
- ROOT::RDataFrame df3(1);
-- EXPECT_EQ(3U, df3.GetNSlots());
-+ EXPECT_EQ(nslots, df3.GetNSlots());
- ROOT::DisableImplicitMT();
- ROOT::RDataFrame df1(1);
- EXPECT_EQ(1U, df1.GetNSlots());
-diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx
-index c6aba48b3e..e6b92be776 100644
---- a/tree/dataframe/test/dataframe_simple.cxx
-+++ b/tree/dataframe/test/dataframe_simple.cxx
-@@ -26,7 +26,7 @@ using namespace ROOT::VecOps;
- // Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially
- class RDFSimpleTests : public ::testing::TestWithParam<bool> {
- protected:
-- RDFSimpleTests() : NSLOTS(GetParam() ? 4u : 1u)
-+ RDFSimpleTests() : NSLOTS(GetParam() ? std::min(4u, std::thread::hardware_concurrency()) : 1u)
- {
- if (GetParam())
- ROOT::EnableImplicitMT(NSLOTS);
-diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx
-index 3ce9254442..92444feff1 100644
---- a/tree/dataframe/test/dataframe_snapshot.cxx
-+++ b/tree/dataframe/test/dataframe_snapshot.cxx
-@@ -10,6 +10,7 @@
- #include "gtest/gtest.h"
- #include <limits>
- #include <memory>
-+#include <thread>
- using namespace ROOT; // RDataFrame
- using namespace ROOT::RDF; // RInterface
- using namespace ROOT::VecOps; // RVec
-@@ -1041,9 +1042,10 @@ TEST(RDFSnapshotMore, EmptyBuffersMT)
- {
- const auto fname = "emptybuffersmt.root";
- const auto treename = "t";
-- ROOT::EnableImplicitMT(4);
-+ const unsigned int nslots = std::min(4U, std::thread::hardware_concurrency());
-+ ROOT::EnableImplicitMT(nslots);
- ROOT::RDataFrame d(10);
-- auto dd = d.DefineSlot("x", [](unsigned int s) { return s == 3 ? 0 : 1; })
-+ auto dd = d.DefineSlot("x", [&](unsigned int s) { return s == nslots - 1 ? 0 : 1; })
- .Filter([](int x) { return x == 0; }, {"x"}, "f");
- auto r = dd.Report();
- dd.Snapshot<int>(treename, fname, {"x"});
-diff --git a/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx b/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx
-index 5d5b2cbf42..963ce8a1b1 100644
---- a/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx
-+++ b/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx
-@@ -294,14 +294,27 @@ TEST(TreeProcessorMT, LimitNTasks_CheckEntries)
- }
- };
-
-- ROOT::EnableImplicitMT(4);
-+ const unsigned int nslots = std::min(4U, std::thread::hardware_concurrency());
-+ ROOT::EnableImplicitMT(nslots);
-
- ROOT::TTreeProcessorMT p(filename, treename);
- p.Process(f);
-
-- EXPECT_EQ(nTasks, 96U) << "Wrong number of tasks generated!\n";
-- EXPECT_EQ(nEntriesCountsMap[10], 65U) << "Wrong number of tasks with 10 clusters each!\n";
-- EXPECT_EQ(nEntriesCountsMap[11], 31U) << "Wrong number of tasks with 11 clusters each!\n";
-+ if (nslots == 4) {
-+ EXPECT_EQ(nTasks, 96U) << "Wrong number of tasks generated!\n";
-+ EXPECT_EQ(nEntriesCountsMap[10], 65U) << "Wrong number of tasks with 10 clusters each!\n";
-+ EXPECT_EQ(nEntriesCountsMap[11], 31U) << "Wrong number of tasks with 11 clusters each!\n";
-+ }
-+ else if (nslots == 2) {
-+ EXPECT_EQ(nTasks, 48U) << "Wrong number of tasks generated!\n";
-+ EXPECT_EQ(nEntriesCountsMap[20], 17U) << "Wrong number of tasks with 20 clusters each!\n";
-+ EXPECT_EQ(nEntriesCountsMap[21], 31U) << "Wrong number of tasks with 21 clusters each!\n";
-+ }
-+ else if (nslots == 1) {
-+ EXPECT_EQ(nTasks, 24U) << "Wrong number of tasks generated!\n";
-+ EXPECT_EQ(nEntriesCountsMap[41], 17U) << "Wrong number of tasks with 41 clusters each!\n";
-+ EXPECT_EQ(nEntriesCountsMap[42], 7U) << "Wrong number of tasks with 42 clusters each!\n";
-+ }
-
- gSystem->Unlink(filename);
- ROOT::DisableImplicitMT();
---
-2.30.2
-
diff --git a/root-fix-ppc64le-compilation-with-gcc-10.patch b/root-fix-ppc64le-compilation-with-gcc-10.patch
deleted file mode 100644
index 2624de8..0000000
--- a/root-fix-ppc64le-compilation-with-gcc-10.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 5b8e969ca045aa238c685009e0aa48d74cbdbf22 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 13 Mar 2020 17:09:03 +0100
-Subject: [PATCH 1/2] Fix ppc64le compilation with gcc 10
-
-Reapply fix lost in the LLVM 9 upgrade. This fix is in LLVM 10.
-
-Backported from llvm upstream
-https://reviews.llvm.org/D74129
----
- interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp b/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp
-index c8ed42d266..16bb00d2e9 100644
---- a/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp
-+++ b/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp
-@@ -2546,7 +2546,7 @@ bool Lexer::SkipBlockComment(Token &Result, const char *CurPtr,
- '/', '/', '/', '/', '/', '/', '/', '/'
- };
- while (CurPtr+16 <= BufferEnd &&
-- !vec_any_eq(*(const vector unsigned char*)CurPtr, Slashes))
-+ !vec_any_eq(*(const __vector unsigned char*)CurPtr, Slashes))
- CurPtr += 16;
- #else
- // Scan for '/' quickly. Many block comments are very large.
---
-2.30.2
-
diff --git a/root-get-src.sh b/root-get-src.sh
new file mode 100755
index 0000000..d83c34a
--- /dev/null
+++ b/root-get-src.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+VERSION=$1
+wget -N https://root.cern/download/root_v${VERSION}.source.tar.gz
+tar -z -x -f root_v${VERSION}.source.tar.gz
+find root-${VERSION}/fonts -type f -a '!' -name 'STIX*' -exec rm {} ';'
+tar -J -c --group root --owner root -f root-${VERSION}.tar.xz root-${VERSION}
diff --git a/root-jsmva-static.patch b/root-jsmva-static.patch
index a81848a..2550f4d 100644
--- a/root-jsmva-static.patch
+++ b/root-jsmva-static.patch
@@ -29,7 +29,7 @@ diff -ur root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.24.02/etc/noteb
(function(factory){
-- var JSROOT_source_dir = "https://root.cern.ch/js/notebook/scripts/";
+- var JSROOT_source_dir = "https://root.cern/js/5.9.1/scripts/";
+ var JSROOT_source_dir = "/static/scripts/";
var url = "";
diff --git a/root-longlong.patch b/root-longlong.patch
new file mode 100644
index 0000000..856e015
--- /dev/null
+++ b/root-longlong.patch
@@ -0,0 +1,52 @@
+From 7fe5ef049baf614626d985b05cb0b335f9764a3c Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 16:15:00 +0100
+Subject: [PATCH] Fix test when long is 32 bits
+
+This test tests support for 64 bit values. But it uses a long type,
+which fails on platforme where a long is 32 bits.
+
+This commit changes the test to use a long long type instead.
+---
+ tree/dataframe/test/dataframe_snapshot.cxx | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx
+index 05354e83d5..a30440558e 100644
+--- a/tree/dataframe/test/dataframe_snapshot.cxx
++++ b/tree/dataframe/test/dataframe_snapshot.cxx
+@@ -470,11 +470,11 @@ void ReadWriteCarray(const char *outFileNameBase)
+ auto size = 0;
+ int v[maxArraySize];
+ bool vb[maxArraySize];
+- long int vl[maxArraySize];
++ long long int vl[maxArraySize];
+ t.Branch("size", &size, "size/I");
+ t.Branch("v", v, "v[size]/I");
+ t.Branch("vb", vb, "vb[size]/O");
+- t.Branch("vl", vl, "vl[size]/G");
++ t.Branch("vl", vl, "vl[size]/L");
+
+ // Size 1
+ size = 1;
+@@ -518,7 +518,7 @@ void ReadWriteCarray(const char *outFileNameBase)
+ TTreeReader r(treename, &f2);
+ TTreeReaderArray<int> rv(r, "v");
+ TTreeReaderArray<bool> rvb(r, "vb");
+- TTreeReaderArray<long int> rvl(r, "vl");
++ TTreeReaderArray<long long int> rvl(r, "vl");
+
+ // Size 1
+ EXPECT_TRUE(r.Next());
+@@ -571,7 +571,7 @@ void ReadWriteCarray(const char *outFileNameBase)
+
+ const auto outfname2 = outFileNameBaseStr + "_out2.root";
+ RDataFrame(treename, fname)
+- .Snapshot<int, RVec<int>, RVec<bool>, RVec<long int>>(treename, outfname2, {"size", "v", "vb", "vl"});
++ .Snapshot<int, RVec<int>, RVec<bool>, RVec<long long int>>(treename, outfname2, {"size", "v", "vb", "vl"});
+ outputChecker(outfname2.c_str());
+
+ gSystem->Unlink(fname.c_str());
+--
+2.35.1
+
diff --git a/root-make-dyld-based-library-search-behavior-default.patch b/root-make-dyld-based-library-search-behavior-default.patch
new file mode 100644
index 0000000..9b88576
--- /dev/null
+++ b/root-make-dyld-based-library-search-behavior-default.patch
@@ -0,0 +1,147 @@
+From 6ae602bba7d33c900a117c9de0187ab5a28e14b8 Mon Sep 17 00:00:00 2001
+From: Vassil Vassilev <v.g.vassilev(a)gmail.com>
+Date: Mon, 21 Mar 2022 22:16:54 +0000
+Subject: [PATCH] Make the dyld-based library search behavior default for
+ non-modules.
+
+The dyld-based system was developed in the context on C++ modules but it turned
+into a modules-agnostic feature. Instead of having to maintain more code, we
+should rely on it even for non-modules build of ROOT.
+---
+ core/metacling/src/TCling.cxx | 109 +++-------------------------------
+ 1 file changed, 8 insertions(+), 101 deletions(-)
+
+diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx
+index dec399cf2b..3eae1c8570 100644
+--- a/core/metacling/src/TCling.cxx
++++ b/core/metacling/src/TCling.cxx
+@@ -6501,14 +6501,18 @@ bool TCling::LibraryLoadingFailed(const std::string& errmessage, const std::stri
+ return false;
+ }
+
+-static void* LazyFunctionCreatorAutoloadForModule(const std::string &mangled_name,
+- const cling::DynamicLibraryManager &DLM) {
++////////////////////////////////////////////////////////////////////////////////
++/// Autoload a library based on a missing symbol.
++
++void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) {
++
++ const cling::DynamicLibraryManager &DLM = *GetInterpreterImpl()->getDynamicLibraryManager();
+ R__LOCKGUARD(gInterpreterMutex);
+
+ auto LibLoader = [](const std::string& LibName) -> bool {
+ if (gSystem->Load(LibName.c_str(), "", false) < 0) {
+- Error("TCling__LazyFunctionCreatorAutoloadForModule",
+- "Failed to load library %s", LibName.c_str());
++ ::Error("TCling__LazyFunctionCreatorAutoloadForModule",
++ "Failed to load library %s", LibName.c_str());
+ return false;
+ }
+ return true; //success.
+@@ -6536,103 +6540,6 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string &mangled_nam
+ return nullptr;
+
+ return llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name);
+-
+-}
+-
+-////////////////////////////////////////////////////////////////////////////////
+-/// Autoload a library based on a missing symbol.
+-
+-void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) {
+- if (fCxxModulesEnabled)
+- return LazyFunctionCreatorAutoloadForModule(mangled_name,
+- *GetInterpreterImpl()->getDynamicLibraryManager());
+-
+- // First see whether the symbol is in the library that we are currently
+- // loading. It will have access to the symbols of its dependent libraries,
+- // thus checking "back()" is sufficient.
+- if (!fRegisterModuleDyLibs.empty()) {
+- if (void* addr = dlsym(fRegisterModuleDyLibs.back(),
+- mangled_name.c_str())) {
+- return addr;
+- }
+- }
+-
+- int err = 0;
+- char* demangled_name_c = TClassEdit::DemangleName(mangled_name.c_str(), err);
+- if (err) {
+- return 0;
+- }
+-
+- std::string name(demangled_name_c);
+- free(demangled_name_c);
+-
+- //fprintf(stderr, "demangled name: '%s'\n", demangled_name);
+- //
+- // Separate out the class or namespace part of the
+- // function name.
+- //
+-
+- std::string::size_type pos = name.find("__thiscall ");
+- if (pos != std::string::npos) {
+- name.erase(0, pos + sizeof("__thiscall ")-1);
+- }
+- pos = name.find("__cdecl ");
+- if (pos != std::string::npos) {
+- name.erase(0, pos + sizeof("__cdecl ")-1);
+- }
+- if (!strncmp(name.c_str(), "typeinfo for ", sizeof("typeinfo for ")-1)) {
+- name.erase(0, sizeof("typeinfo for ")-1);
+- } else if (!strncmp(name.c_str(), "vtable for ", sizeof("vtable for ")-1)) {
+- name.erase(0, sizeof("vtable for ")-1);
+- } else if (!strncmp(name.c_str(), "operator", sizeof("operator")-1)
+- && !isalnum(name[sizeof("operator")])) {
+- // operator...(A, B) - let's try with A!
+- name.erase(0, sizeof("operator")-1);
+- pos = name.rfind('(');
+- if (pos != std::string::npos) {
+- name.erase(0, pos + 1);
+- pos = name.find(",");
+- if (pos != std::string::npos) {
+- // remove next arg up to end, leaving only the first argument type.
+- name.erase(pos);
+- }
+- pos = name.rfind(" const");
+- if (pos != std::string::npos) {
+- name.erase(pos, strlen(" const"));
+- }
+- while (!name.empty() && strchr("&*", name.back()))
+- name.erase(name.length() - 1);
+- }
+- } else {
+- TClassEdit::FunctionSplitInfo fsi;
+- TClassEdit::SplitFunction(name, fsi);
+- name = fsi.fScopeName;
+- }
+- //fprintf(stderr, "name: '%s'\n", name.c_str());
+- // Now we have the class or namespace name, so do the lookup.
+- TString libs = GetClassSharedLibs(name.c_str());
+- if (libs.IsNull()) {
+- // Not found in the map, all done.
+- return 0;
+- }
+- //fprintf(stderr, "library: %s\n", iter->second.c_str());
+- // Now we have the name of the libraries to load, so load them.
+-
+- TString lib;
+- Ssiz_t posLib = 0;
+- while (libs.Tokenize(lib, posLib)) {
+- if (gSystem->Load(lib, "", kFALSE /*system*/) < 0) {
+- // The library load failed, all done.
+- //fprintf(stderr, "load failed: %s\n", errmsg.c_str());
+- return 0;
+- }
+- }
+-
+- //fprintf(stderr, "load succeeded.\n");
+- // Get the address of the function being called.
+- void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str());
+- //fprintf(stderr, "addr: %016lx\n", reinterpret_cast<unsigned long>(addr));
+- return addr;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+--
+2.35.1
+
diff --git a/root-memory-usage.patch b/root-memory-usage.patch
index aad7f1c..713d565 100644
--- a/root-memory-usage.patch
+++ b/root-memory-usage.patch
@@ -1,43 +1,30 @@
-From 21395b23947df7e2b5e0c93626453aeacdee026c Mon Sep 17 00:00:00 2001
+From 5618a02bd7ca4107f545e07a19b8a0762f31e45a Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Tue, 16 Jan 2018 10:25:50 +0100
-Subject: [PATCH] Reduce the needed memory for compilation
+Date: Mon, 16 Aug 2021 19:45:00 +0200
+Subject: [PATCH] Reduce memory usage for all builds - not only debug builds
-The linking of rootcling_stage1 and libCling requires a lot of memory.
-Since these are linked from mostly the same objects, the build is
-ready to link them at the same time. If you make a parallel build this
-means that the two targets that require the most amount of memory are
-being linked in parallel. This exhausts the available memory, and the
-computer starts swapping.
-
-This commit adds a dependency of one of the targets to the other. The
-dependency is not really there since it is not needed for building,
-but it prevents the two memory consuming targets to be built in
-parallel.
-
-A similar dependency existed before the latest code changes (see
-commit 2638f6fc7f54b0995f2f9d60363daaf8aae2386e), then between
-rootcling and libCling.
---
- core/metacling/src/CMakeLists.txt | 5 +++++
- 1 file changed, 5 insertions(+)
+ core/metacling/src/CMakeLists.txt | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt
-index 2923345f7c..b44a4d4115 100644
+index 8cbbe4ba08..f205b24602 100644
--- a/core/metacling/src/CMakeLists.txt
+++ b/core/metacling/src/CMakeLists.txt
-@@ -114,6 +114,11 @@ ROOT_LINKER_LIBRARY(Cling
+@@ -107,11 +107,8 @@ ROOT_LINKER_LIBRARY(Cling
$<TARGET_OBJECTS:MetaCling>
LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS} ${CLING_PLUGIN_LINK_LIBS})
-+# The dependency on rootcling_stage1 was added to prevent Cling (libCling) and
-+# rootcling_stage1 from being linked in parallel.
-+# This avoids doing two memory consuming operations in parallel.
+-string(TOUPPER "${LLVM_BUILD_TYPE}" THE_BUILD_TYPE)
+-if("${THE_BUILD_TYPE}" STREQUAL DEBUG OR "${THE_BUILD_TYPE}" STREQUAL RELWITHDEBINFO)
+- # When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm.
+- add_dependencies(Cling rootcling_stage1)
+-endif()
++# When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm.
+add_dependencies(Cling rootcling_stage1)
-+
+
if(MSVC)
set_target_properties(Cling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
- set(cling_exports
--
-2.26.2
+2.35.1
diff --git a/root-missing-include.patch b/root-missing-include.patch
new file mode 100644
index 0000000..8c6bc17
--- /dev/null
+++ b/root-missing-include.patch
@@ -0,0 +1,32 @@
+From 235e446b0ac14170e49c15d5725fbe6dd315351f Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Tue, 15 Mar 2022 09:08:39 +0100
+Subject: [PATCH] Add #include <cstring> for std::memcpy
+
+In file included from /builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/RModel.hxx:14,
+ from /builddir/build/BUILD/root-6.26.00/tmva/sofie/src/RModel.cxx:3:
+/builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/SOFIE_common.hxx: In member function 'void TMVA::Experimental::SOFIE::InitializedTensor::CastPersistentToShared()':
+/builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/SOFIE_common.hxx:75:12: error: 'memcpy' is not a member of 'std'; did you mean 'wmemcpy'?
+ 75 | std::memcpy(tData.get(), fPersistentData,fSize * sizeof(float));
+ | ^~~~~~
+ | wmemcpy
+gmake[2]: *** [tmva/sofie/CMakeFiles/ROOTTMVASofie.dir/build.make:79: tmva/sofie/CMakeFiles/ROOTTMVASofie.dir/src/RModel.cxx.o] Error 1
+---
+ tmva/sofie/inc/TMVA/SOFIE_common.hxx | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tmva/sofie/inc/TMVA/SOFIE_common.hxx b/tmva/sofie/inc/TMVA/SOFIE_common.hxx
+index a663855004..7876727eef 100644
+--- a/tmva/sofie/inc/TMVA/SOFIE_common.hxx
++++ b/tmva/sofie/inc/TMVA/SOFIE_common.hxx
+@@ -6,6 +6,7 @@
+
+ #include <type_traits>
+ #include <cstdint>
++#include <cstring>
+ #include <string>
+ #include <vector>
+ #include <memory>
+--
+2.35.1
+
diff --git a/root-move-private-decl.patch b/root-move-private-decl.patch
new file mode 100644
index 0000000..aa81617
--- /dev/null
+++ b/root-move-private-decl.patch
@@ -0,0 +1,405 @@
+From 9cdd51029f54aba874608f34580ea0ba94b670c7 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 17 Mar 2022 07:40:28 +0100
+Subject: [PATCH] Move private declarations away from the public header file
+
+This fixes warnings such as these:
+
+IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE8INTERNAL19make_ROperator_SeluERKN4onnx9NodeProtoERKNS3_10GraphProtoERSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11ETensorTypeESt4hashISG_ESt8equal_toISG_ESaISt4pairIKSG_SH_EEE' unresolved while linking function '_GLOBAL__sub_I_cling_module_0'!
+You are probably missing the definition of TMVA::Experimental::SOFIE::INTERNAL::make_ROperator_Selu(onnx::NodeProto const&, onnx::GraphProto const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, TMVA::Experimental::SOFIE::ETensorType, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TMVA::Experimental::SOFIE::ETensorType> > >&)
+Maybe you need to load the corresponding shared library?
+---
+ .../inc/TMVA/RModelParser_ONNX.hxx | 61 -------
+ tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 164 +++++++++++++++---
+ 2 files changed, 139 insertions(+), 86 deletions(-)
+
+diff --git a/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx b/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx
+index 9e9764c0b6..09bcd34fe1 100644
+--- a/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx
++++ b/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx
+@@ -1,81 +1,20 @@
+ #ifndef TMVA_SOFIE_RMODELPARSER_ONNX
+ #define TMVA_SOFIE_RMODELPARSER_ONNX
+
+-
+-
+ #include "TMVA/SOFIE_common.hxx"
+ #include "TMVA/RModel.hxx"
+-#include "TMVA/OperatorList.hxx"
+
+ #include <string>
+-#include <fstream>
+-#include <memory>
+-#include <ctime>
+-
+-//forward delcaration
+-namespace onnx{
+- class NodeProto;
+- class GraphProto;
+-}
+
+ namespace TMVA{
+ namespace Experimental{
+ namespace SOFIE{
+
+-namespace INTERNAL{
+-
+-std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_BatchNormalization(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto &nodeproto, const onnx::GraphProto &graphproto, std::unordered_map<std::string, ETensorType> &tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto &nodeproto, const onnx::GraphProto &graphproto, std::unordered_map<std::string, ETensorType> &tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto &nodeproto, const onnx::GraphProto &graphproto, std::unordered_map<std::string, ETensorType> &tensor_type);
+-std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-
+-
+-using factoryMethodMap = std::unordered_map<std::string, std::unique_ptr<ROperator> (*)(const onnx::NodeProto&, const onnx::GraphProto&, std::unordered_map<std::string, ETensorType>&)>;
+-const factoryMethodMap mapOptypeOperator = {
+- {"Gemm", &make_ROperator_Gemm},
+- {"Transpose", &make_ROperator_Transpose},
+- {"Relu", &make_ROperator_Relu},
+- {"Conv", &make_ROperator_Conv},
+- {"RNN", &make_ROperator_RNN},
+- {"Selu", &make_ROperator_Selu},
+- {"Sigmoid", &make_ROperator_Sigmoid},
+- {"LSTM", &make_ROperator_LSTM},
+- {"GRU", &make_ROperator_GRU},
+- {"BatchNormalization", &make_ROperator_BatchNormalization},
+- {"AveragePool", &make_ROperator_Pool},
+- {"GlobalAveragePool", &make_ROperator_Pool},
+- {"MaxPool", &make_ROperator_Pool},
+- {"Add", &make_ROperator_Add},
+- {"Reshape", &make_ROperator_Reshape},
+- {"Flatten", &make_ROperator_Reshape},
+- {"Slice", &make_ROperator_Slice},
+- {"Squeeze", &make_ROperator_Reshape},
+- {"Unsqueeze", &make_ROperator_Reshape},
+- {"Flatten", &make_ROperator_Reshape}
+-};
+-
+-std::unique_ptr<ROperator> make_ROperator(size_t idx, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
+-}//INTERNAL
+-
+-
+-
+ class RModelParser_ONNX{
+ public:
+ RModel Parse(std::string filename);
+ };
+
+-
+-
+ }//SOFIE
+ }//Experimental
+ }//TMVA
+diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
+index 3b0a30cdb0..5f89bf66bd 100644
+--- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
++++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
+@@ -1,9 +1,12 @@
+ #include "TMVA/RModelParser_ONNX.hxx"
++#include "TMVA/OperatorList.hxx"
+ #include "onnx_proto3.pb.h"
+
+ #include <string>
++#include <fstream>
+ #include <memory>
+ #include <cassert>
++#include <ctime>
+
+ namespace TMVA{
+ namespace Experimental{
+@@ -11,7 +14,84 @@ namespace SOFIE{
+
+ namespace INTERNAL{
+
+-std::unique_ptr<ROperator> make_ROperator(size_t idx, const onnx::GraphProto& graphproto, std::unordered_map<std::string, ETensorType>& tensor_type){
++static std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_BatchNorm(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++using factoryMethodMap =
++ std::unordered_map<std::string, std::unique_ptr<ROperator> (*)(const onnx::NodeProto &, const onnx::GraphProto &,
++ std::unordered_map<std::string, ETensorType> &)>;
++
++static const factoryMethodMap mapOptypeOperator = {
++ {"Gemm", &make_ROperator_Gemm}, {"Transpose", &make_ROperator_Transpose},
++ {"Relu", &make_ROperator_Relu}, {"Conv", &make_ROperator_Conv},
++ {"RNN", &make_ROperator_RNN}, {"Selu", &make_ROperator_Selu},
++ {"Sigmoid", &make_ROperator_Sigmoid}, {"LSTM", &make_ROperator_LSTM},
++ {"GRU", &make_ROperator_GRU}, {"BatchNormalization", &make_ROperator_BatchNorm},
++ {"AveragePool", &make_ROperator_Pool}, {"GlobalAveragePool", &make_ROperator_Pool},
++ {"MaxPool", &make_ROperator_Pool}, {"Add", &make_ROperator_Add},
++ {"Reshape", &make_ROperator_Reshape}, {"Flatten", &make_ROperator_Reshape},
++ {"Slice", &make_ROperator_Slice}, {"Squeeze", &make_ROperator_Reshape},
++ {"Unsqueeze", &make_ROperator_Reshape}, {"Flatten", &make_ROperator_Reshape}};
++
++static std::unique_ptr<ROperator> make_ROperator(size_t idx, const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type);
++
++static std::unique_ptr<ROperator> make_ROperator(size_t idx, const onnx::GraphProto &graphproto,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+ const auto& nodeproto = graphproto.node(idx);
+ auto find = mapOptypeOperator.find(nodeproto.op_type());
+ if (find == mapOptypeOperator.end()){
+@@ -24,7 +104,10 @@ std::unique_ptr<ROperator> make_ROperator(size_t idx, const onnx::GraphProto& gr
+ }
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type){
++static std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type = ETensorType::UNDEFINED;
+
+@@ -59,7 +142,11 @@ std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto& nodeproto,
+
+ return op;
+ }
+-std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto*/, std::unordered_map<std::string, ETensorType>& tensor_type){
++
++static std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto*/,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -99,7 +186,10 @@ std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto& nodep
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type){
++static std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -131,7 +221,10 @@ std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto& nodeproto,
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type){
++static std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -163,7 +256,10 @@ std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto& nodeproto,
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type){
++static std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -195,7 +291,10 @@ std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto& nodepro
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type){
++static std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /* graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -252,7 +351,11 @@ std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto& nodeproto,
+
+ return op;
+ }
+-std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type) {
++
++static std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /* graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -344,7 +447,10 @@ std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto& nodeproto,
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type) {
++static std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /* graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -408,7 +514,10 @@ std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto& nodeproto,
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type) {
++static std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /* graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -485,14 +594,13 @@ std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto& nodeproto,
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto &nodeproto,
+- const onnx::GraphProto & /*graphproto */,
+- std::unordered_map<std::string, ETensorType> &tensor_type)
++static std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
+ {
+ // make Reshape operator
+ ETensorType input_type = ETensorType::UNDEFINED;
+
+-
+ ReshapeOpMode opMode = Reshape;
+ if (nodeproto.op_type() == "Flatten")
+ opMode = Flatten;
+@@ -501,7 +609,6 @@ std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto &nodepro
+ else if (nodeproto.op_type() == "Unsqueeze")
+ opMode = Unsqueeze;
+
+-
+ //bool hasShapeInput = (opMode == Reshape) ? true : false;
+
+ // reshape has as extra input shape tensor (int64) but
+@@ -553,9 +660,9 @@ std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto &nodepro
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto &nodeproto,
+- const onnx::GraphProto & /*graphproto */,
+- std::unordered_map<std::string, ETensorType> &tensor_type)
++static std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
+ {
+ // make Slice operator
+ ETensorType input_type = ETensorType::UNDEFINED;
+@@ -634,7 +741,10 @@ std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto &nodeproto
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type) {
++static std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /* graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -722,7 +832,10 @@ std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto& nodeproto,
+ return op;
+ }
+
+-std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map<std::string, ETensorType>& tensor_type) {
++static std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /* graphproto */,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
++{
+
+ ETensorType input_type;
+
+@@ -825,9 +938,10 @@ std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto& nodeproto,
+
+ return op;
+ }
+-std::unique_ptr<ROperator> make_ROperator_BatchNormalization(const onnx::NodeProto &nodeproto,
+- const onnx::GraphProto &/*graphproto*/,
+- std::unordered_map<std::string, ETensorType> &tensor_type)
++
++static std::unique_ptr<ROperator> make_ROperator_BatchNorm(const onnx::NodeProto &nodeproto,
++ const onnx::GraphProto & /*graphproto*/,
++ std::unordered_map<std::string, ETensorType> &tensor_type)
+ {
+
+ ETensorType input_type;
+@@ -843,8 +957,8 @@ std::unique_ptr<ROperator> make_ROperator_BatchNormalization(const onnx::NodePro
+
+ std::unique_ptr<ROperator> op;
+ float fepsilon = 1e-05;
+- float fmomentum = 0.9;
+- std::size_t ftraining_mode = 0;
++ float fmomentum = 0.9;
++ std::size_t ftraining_mode = 0;
+
+ switch(input_type) {
+ case ETensorType::FLOAT:
+--
+2.35.1
+
diff --git a/root-namespace-pymva.patch b/root-namespace-pymva.patch
new file mode 100644
index 0000000..cd2fa57
--- /dev/null
+++ b/root-namespace-pymva.patch
@@ -0,0 +1,31 @@
+From 0a969f5376af248e76cbcee45c9bdb6463e18c05 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 21:20:07 +0100
+Subject: [PATCH 3/3] Add namespaces to LinkDef
+
+Fixes error:
+
+IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE7PyTorch5ParseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS9_ImSaImEESaISB_EE' unresolved while linking function '_GLOBAL__sub_I_cling_module_8'!
+You are probably missing the definition of TMVA::Experimental::SOFIE::PyTorch::Parse(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::vector<unsigned long, std::allocator<unsigned long> >, std::allocator<std::vector<unsigned long, std::allocator<unsigned long> > > >)
+Maybe you need to load the corresponding shared library?
+Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libPyMVA.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libPyMVA.so.6.26.00'?
+---
+ tmva/pymva/inc/LinkDef.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/tmva/pymva/inc/LinkDef.h b/tmva/pymva/inc/LinkDef.h
+index 92da99a4f7..83145077dd 100644
+--- a/tmva/pymva/inc/LinkDef.h
++++ b/tmva/pymva/inc/LinkDef.h
+@@ -15,6 +15,8 @@
+ #pragma link C++ class TMVA::MethodPyGTB+;
+ #pragma link C++ class TMVA::MethodPyKeras+;
+ #pragma link C++ class TMVA::MethodPyTorch+;
++#pragma link C++ namespace TMVA::Experimental::SOFIE::PyKeras;
+ #pragma link C++ function TMVA::Experimental::SOFIE::PyKeras::Parse+;
++#pragma link C++ namespace TMVA::Experimental::SOFIE::PyTorch;
+ #pragma link C++ function TMVA::Experimental::SOFIE::PyTorch::Parse+;
+ #endif
+--
+2.35.1
+
diff --git a/root-namespace-roofit.patch b/root-namespace-roofit.patch
new file mode 100644
index 0000000..c8aa92e
--- /dev/null
+++ b/root-namespace-roofit.patch
@@ -0,0 +1,43 @@
+From 4a4df0190ad24c0a3636994c2c23cb6c22e04589 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 15:41:33 +0100
+Subject: [PATCH 2/3] Remove namespace RooFit from libRooFitCore's LinkDef
+
+The namespace is listed in the LinkDef's for both libRooFit and libRooFitCore.
+
+ROOT only autoloads one of the libraries, for some reason usually
+libRooFitCore. After this only symbols in the namespace from that
+library are present. By removing the namespace from liRooFitCore's
+LinkDef, only libRooFit can be chosen when autoloading. Since
+libRooFit depends on libRooFitCore, both libraries are loaded, and the
+symbols from the namespace in both libraries are available.
+
+Fixes error:
+
+IncrementalExecutor::executeFunction: symbol '_ZN6RooFit12bindFunctionEPKcPFddER10RooAbsReal' unresolved while linking function '_GLOBAL__sub_I_cling_module_217'!
+You are probably missing the definition of RooFit::bindFunction(char const*, double (*)(double), RooAbsReal&)
+Maybe you need to load the corresponding shared library?
+Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libRooFit.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libRooFit.so.6.26.00'?
+---
+ roofit/roofitcore/inc/LinkDef.h | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/roofit/roofitcore/inc/LinkDef.h b/roofit/roofitcore/inc/LinkDef.h
+index d421fd95cd..72c66db33b 100644
+--- a/roofit/roofitcore/inc/LinkDef.h
++++ b/roofit/roofitcore/inc/LinkDef.h
+@@ -105,7 +105,10 @@
+
+
+ // Old LinkDef2.h
+-#pragma link C++ namespace RooFit ;
++
++// "namespace RooFit" is in roofit/roofit/inc/Linkdef1.h
++// should not be in the dictionary for two different libraries
++// #pragma link C++ namespace RooFit ;
+ #pragma link C++ namespace RooFitShortHand ;
+ #pragma link C++ class RooDouble+ ;
+ #pragma link C++ class RooEffGenContext+ ;
+--
+2.35.1
+
diff --git a/root-namespace-sofie.patch b/root-namespace-sofie.patch
new file mode 100644
index 0000000..a011634
--- /dev/null
+++ b/root-namespace-sofie.patch
@@ -0,0 +1,30 @@
+From c66ae9d9c035090584f465a41ce2e438e502be81 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 15:23:59 +0100
+Subject: [PATCH 1/3] Add namespace TMVA::Experimental::SOFIE to LinkDef
+
+Fixes error:
+
+IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE19ConvertTypeToStringB5cxx11ENS1_11ETensorTypeE' unresolved while linking function '_GLOBAL__sub_I_cling_module_8'!
+You are probably missing the definition of TMVA::Experimental::SOFIE::ConvertTypeToString[abi:cxx11](TMVA::Experimental::SOFIE::ETensorType)
+Maybe you need to load the corresponding shared library?
+Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libROOTTMVASofie.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libROOTTMVASofie.so.6.26.00'?
+---
+ tmva/sofie/inc/LinkDef.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tmva/sofie/inc/LinkDef.h b/tmva/sofie/inc/LinkDef.h
+index 715cf35560..3282ff22c1 100644
+--- a/tmva/sofie/inc/LinkDef.h
++++ b/tmva/sofie/inc/LinkDef.h
+@@ -7,6 +7,7 @@
+
+ #pragma link C++ nestedclass;
+
++#pragma link C++ namespace TMVA::Experimental::SOFIE;
+ #pragma link C++ class TMVA::Experimental::SOFIE::RModel-;
+ #pragma link C++ class TMVA::Experimental::SOFIE::ROperator+;
+ #pragma link C++ struct TMVA::Experimental::SOFIE::InitializedTensor+;
+--
+2.35.1
+
diff --git a/root-ntuplewait.patch b/root-ntuplewait.patch
new file mode 100644
index 0000000..b464b69
--- /dev/null
+++ b/root-ntuplewait.patch
@@ -0,0 +1,39 @@
+From ad043f8e3304aab4f0ee3ad9e0cf8480c4bbadf0 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 16:10:22 +0100
+Subject: [PATCH] Always call WaitForInFlightClusters before checking cluster
+ IDs
+
+---
+ tree/ntuple/v7/test/ntuple_cluster.cxx | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/tree/ntuple/v7/test/ntuple_cluster.cxx b/tree/ntuple/v7/test/ntuple_cluster.cxx
+index afc2fc32e9..0c299d97de 100644
+--- a/tree/ntuple/v7/test/ntuple_cluster.cxx
++++ b/tree/ntuple/v7/test/ntuple_cluster.cxx
+@@ -213,6 +213,7 @@ TEST(ClusterPool, GetClusterBasics)
+ RPageSourceMock p1;
+ RClusterPool c1(p1, 1);
+ c1.GetCluster(3, {0});
++ c1.WaitForInFlightClusters();
+ ASSERT_EQ(2U, p1.fReqsClusterIds.size());
+ EXPECT_EQ(3U, p1.fReqsClusterIds[0]);
+ EXPECT_EQ(4U, p1.fReqsClusterIds[1]);
+@@ -267,11 +268,13 @@ TEST(ClusterPool, GetClusterIncrementally)
+ RPageSourceMock p1;
+ RClusterPool c1(p1, 1);
+ c1.GetCluster(3, {0});
++ c1.WaitForInFlightClusters();
+ ASSERT_EQ(2U, p1.fReqsClusterIds.size());
+ EXPECT_EQ(3U, p1.fReqsClusterIds[0]);
+ EXPECT_EQ(RCluster::ColumnSet_t({0}), p1.fReqsColumns[0]);
+
+ c1.GetCluster(3, {1});
++ c1.WaitForInFlightClusters();
+ ASSERT_EQ(4U, p1.fReqsClusterIds.size());
+ EXPECT_EQ(3U, p1.fReqsClusterIds[2]);
+ EXPECT_EQ(RCluster::ColumnSet_t({1}), p1.fReqsColumns[2]);
+--
+2.35.1
+
diff --git a/root-old-gtest-compat.patch b/root-old-gtest-compat.patch
index bcba732..078a5f9 100644
--- a/root-old-gtest-compat.patch
+++ b/root-old-gtest-compat.patch
@@ -1,6 +1,39 @@
-diff -ur root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx root-6.24.02/hist/hist/test/test_THBinIterator.cxx
---- root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/hist/hist/test/test_THBinIterator.cxx 2021-08-06 22:59:45.039518775 +0200
+From 99e9ad9ea54369296537ceb012ccdcb333b5f513 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sat, 26 Mar 2022 10:55:38 +0100
+Subject: [PATCH 2/2] Backward compatibility with older googletest versions in
+ EPEL
+
+---
+ hist/hist/test/test_THBinIterator.cxx | 5 +++++
+ math/mathcore/test/stress/testGenVector.cxx | 10 ++++++++++
+ math/mathcore/test/stress/testSMatrix.cxx | 10 ++++++++++
+ math/mathcore/test/stress/testVector.cxx | 10 ++++++++++
+ math/mathcore/test/stress/testVector34.cxx | 10 ++++++++++
+ math/mathcore/test/testGradient.cxx | 4 ++++
+ math/mathcore/test/testGradientFitting.cxx | 10 ++++++++++
+ math/mathmore/test/testStress.cxx | 10 ++++++++++
+ roofit/histfactory/test/testHistFactory.cxx | 4 ++++
+ roofit/multiprocess/test/test_Job.cxx | 5 +++++
+ roofit/roofitZMQ/test/test_ZMQ.cpp | 4 ++++
+ roofit/roofitcore/test/TestStatistics/RooRealL.cpp | 4 ++++
+ .../test/TestStatistics/testLikelihoodGradientJob.cpp | 5 +++++
+ roofit/roofitcore/test/testProxiesAndCategories.cxx | 3 +++
+ roofit/roofitcore/test/testRooDataHist.cxx | 4 ++++
+ roofit/roofitcore/test/testRooGradMinimizerFcn.cxx | 5 +++++
+ tree/dataframe/test/dataframe_definepersample.cxx | 4 ++++
+ tree/dataframe/test/dataframe_merge_results.cxx | 2 +-
+ tree/dataframe/test/dataframe_regression.cxx | 4 ++++
+ tree/dataframe/test/dataframe_samplecallback.cxx | 4 ++++
+ tree/dataframe/test/dataframe_simple.cxx | 5 +++++
+ tree/dataframe/test/dataframe_vary.cxx | 4 ++++
+ tree/tree/test/TOffsetGeneration.cxx | 4 ++++
+ 23 files changed, 129 insertions(+), 1 deletion(-)
+
+diff --git a/hist/hist/test/test_THBinIterator.cxx b/hist/hist/test/test_THBinIterator.cxx
+index e30585b8cb..04f1e1487b 100644
+--- a/hist/hist/test/test_THBinIterator.cxx
++++ b/hist/hist/test/test_THBinIterator.cxx
@@ -1,5 +1,10 @@
#include "gtest/gtest.h"
@@ -12,9 +45,10 @@ diff -ur root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx root-6.24.02/hi
// test iterating histogram bins and using the new THistRange and
// THBinIterator classes
-diff -ur root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx root-6.24.02/math/mathcore/test/stress/testGenVector.cxx
---- root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathcore/test/stress/testGenVector.cxx 2021-08-06 09:31:38.795835283 +0200
+diff --git a/math/mathcore/test/stress/testGenVector.cxx b/math/mathcore/test/stress/testGenVector.cxx
+index 93c0bb6aec..b3259158da 100644
+--- a/math/mathcore/test/stress/testGenVector.cxx
++++ b/math/mathcore/test/stress/testGenVector.cxx
@@ -4,6 +4,16 @@
#include "gtest/gtest.h"
@@ -32,9 +66,10 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx root-6.24
#include "StatFunction.h"
#include "TestHelper.h"
#include "VectorTest.h"
-diff -ur root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx root-6.24.02/math/mathcore/test/stress/testSMatrix.cxx
---- root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathcore/test/stress/testSMatrix.cxx 2021-08-06 09:31:38.796835286 +0200
+diff --git a/math/mathcore/test/stress/testSMatrix.cxx b/math/mathcore/test/stress/testSMatrix.cxx
+index a4d7fc4cd5..a35d88b7c2 100644
+--- a/math/mathcore/test/stress/testSMatrix.cxx
++++ b/math/mathcore/test/stress/testSMatrix.cxx
@@ -7,6 +7,16 @@
#include "TestHelper.h"
#include "gtest/gtest.h"
@@ -52,9 +87,10 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx root-6.24.0
#include "VectorTest.h"
#include "TROOT.h"
#include "TSystem.h"
-diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx root-6.24.02/math/mathcore/test/stress/testVector34.cxx
---- root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathcore/test/stress/testVector34.cxx 2021-08-06 09:31:38.796835286 +0200
+diff --git a/math/mathcore/test/stress/testVector.cxx b/math/mathcore/test/stress/testVector.cxx
+index 72e933f0d5..938e27d83c 100644
+--- a/math/mathcore/test/stress/testVector.cxx
++++ b/math/mathcore/test/stress/testVector.cxx
@@ -4,6 +4,16 @@
#include "gtest/gtest.h"
@@ -70,11 +106,12 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx root-6.24.
+#endif
+
#include "StatFunction.h"
+ #include "TestHelper.h"
#include "VectorTest.h"
-
-diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx root-6.24.02/math/mathcore/test/stress/testVector.cxx
---- root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathcore/test/stress/testVector.cxx 2021-08-06 09:31:38.796835286 +0200
+diff --git a/math/mathcore/test/stress/testVector34.cxx b/math/mathcore/test/stress/testVector34.cxx
+index 4b31184559..80d6dd6314 100644
+--- a/math/mathcore/test/stress/testVector34.cxx
++++ b/math/mathcore/test/stress/testVector34.cxx
@@ -4,6 +4,16 @@
#include "gtest/gtest.h"
@@ -90,11 +127,12 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx root-6.24.02
+#endif
+
#include "StatFunction.h"
- #include "TestHelper.h"
#include "VectorTest.h"
-diff -ur root-6.24.02.orig/math/mathcore/test/testGradient.cxx root-6.24.02/math/mathcore/test/testGradient.cxx
---- root-6.24.02.orig/math/mathcore/test/testGradient.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathcore/test/testGradient.cxx 2021-08-06 09:31:38.796835286 +0200
+
+diff --git a/math/mathcore/test/testGradient.cxx b/math/mathcore/test/testGradient.cxx
+index 49a5391b7b..271e89e43c 100644
+--- a/math/mathcore/test/testGradient.cxx
++++ b/math/mathcore/test/testGradient.cxx
@@ -22,6 +22,10 @@
#include "gtest/gtest.h"
@@ -106,10 +144,11 @@ diff -ur root-6.24.02.orig/math/mathcore/test/testGradient.cxx root-6.24.02/math
#include <chrono>
#include <iostream>
#include <string>
-diff -ur root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx root-6.24.02/math/mathcore/test/testGradientFitting.cxx
---- root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathcore/test/testGradientFitting.cxx 2021-08-06 09:31:38.797835288 +0200
-@@ -12,6 +12,16 @@
+diff --git a/math/mathcore/test/testGradientFitting.cxx b/math/mathcore/test/testGradientFitting.cxx
+index f85f826d9f..1818d1c22f 100644
+--- a/math/mathcore/test/testGradientFitting.cxx
++++ b/math/mathcore/test/testGradientFitting.cxx
+@@ -13,6 +13,16 @@
#include "gtest/gtest.h"
@@ -126,9 +165,10 @@ diff -ur root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx root-6.24.
#include <iostream>
#include <string>
-diff -ur root-6.24.02.orig/math/mathmore/test/testStress.cxx root-6.24.02/math/mathmore/test/testStress.cxx
---- root-6.24.02.orig/math/mathmore/test/testStress.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/math/mathmore/test/testStress.cxx 2021-08-06 09:31:38.797835288 +0200
+diff --git a/math/mathmore/test/testStress.cxx b/math/mathmore/test/testStress.cxx
+index 47bcdd250f..5cf20e69a1 100644
+--- a/math/mathmore/test/testStress.cxx
++++ b/math/mathmore/test/testStress.cxx
@@ -26,6 +26,16 @@
#include "gtest/gtest.h"
@@ -146,9 +186,87 @@ diff -ur root-6.24.02.orig/math/mathmore/test/testStress.cxx root-6.24.02/math/m
using ::testing::TestWithParam;
using ::testing::Values;
-diff -ur root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx root-6.24.02/roofit/roofitcore/test/testProxiesAndCategories.cxx
---- root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/roofit/roofitcore/test/testProxiesAndCategories.cxx 2021-08-06 09:31:38.798835290 +0200
+diff --git a/roofit/histfactory/test/testHistFactory.cxx b/roofit/histfactory/test/testHistFactory.cxx
+index 71d7b632d2..9063e51070 100644
+--- a/roofit/histfactory/test/testHistFactory.cxx
++++ b/roofit/histfactory/test/testHistFactory.cxx
+@@ -22,6 +22,10 @@
+ #include "TCanvas.h"
+ #include "gtest/gtest.h"
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include <set>
+
+ using namespace RooStats;
+diff --git a/roofit/multiprocess/test/test_Job.cxx b/roofit/multiprocess/test/test_Job.cxx
+index 22e66fc73c..61cc11771d 100644
+--- a/roofit/multiprocess/test/test_Job.cxx
++++ b/roofit/multiprocess/test/test_Job.cxx
+@@ -24,6 +24,11 @@
+ #include "RooFit/MultiProcess/Queue.h" // ... JobManager::queue()
+
+ #include "gtest/gtest.h"
++
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include "utils.h"
+
+ class xSquaredPlusBVectorSerial {
+diff --git a/roofit/roofitZMQ/test/test_ZMQ.cpp b/roofit/roofitZMQ/test/test_ZMQ.cpp
+index 6dcceaff08..73e75be147 100644
+--- a/roofit/roofitZMQ/test/test_ZMQ.cpp
++++ b/roofit/roofitZMQ/test/test_ZMQ.cpp
+@@ -16,6 +16,10 @@
+
+ #include "gtest/gtest.h"
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include <unistd.h> // fork, usleep
+
+ #include <sstream>
+diff --git a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp
+index f8421613ac..3ae6285a12 100644
+--- a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp
++++ b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp
+@@ -34,6 +34,10 @@
+
+ #include "gtest/gtest.h"
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ class RooRealL
+ : public ::testing::TestWithParam<std::tuple<std::size_t>> {
+ };
+diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp b/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp
+index f4adf63eec..05164277f0 100644
+--- a/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp
++++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp
+@@ -33,6 +33,11 @@
+ #include <stdexcept> // runtime_error
+
+ #include "gtest/gtest.h"
++
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include "../test_lib.h" // generate_1D_gaussian_pdf_nll
+
+ using RooFit::TestStatistics::LikelihoodWrapper;
+diff --git a/roofit/roofitcore/test/testProxiesAndCategories.cxx b/roofit/roofitcore/test/testProxiesAndCategories.cxx
+index bed3c399bb..550e0c5ac9 100644
+--- a/roofit/roofitcore/test/testProxiesAndCategories.cxx
++++ b/roofit/roofitcore/test/testProxiesAndCategories.cxx
@@ -16,6 +16,9 @@
#include "gtest/gtest.h"
@@ -159,24 +277,57 @@ diff -ur root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx r
TEST(RooCategory, CategoryDefineMultiState) {
RooCategory myCat("myCat", "A category", { {"0Lep", 0}, {"1Lep", 1}, {"2Lep", 2}, {"3Lep", 3} });
-diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx root-6.24.02/tree/dataframe/test/dataframe_datablockcallback.cxx
---- root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/dataframe_datablockcallback.cxx 2021-08-06 09:31:38.801835298 +0200
-@@ -11,6 +11,10 @@
+diff --git a/roofit/roofitcore/test/testRooDataHist.cxx b/roofit/roofitcore/test/testRooDataHist.cxx
+index 90782e0749..f6b5e087ae 100644
+--- a/roofit/roofitcore/test/testRooDataHist.cxx
++++ b/roofit/roofitcore/test/testRooDataHist.cxx
+@@ -18,6 +18,10 @@
- #include <gtest/gtest.h>
+ #include "gtest/gtest.h"
+#ifndef INSTANTIATE_TEST_SUITE_P
+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
+#endif
+
- #include <algorithm> // std::min
- #include <thread> // std::hardware_concurrency
+ #include <algorithm>
+ #include <memory>
+
+diff --git a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx
+index c1978ae47e..877ab1525f 100644
+--- a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx
++++ b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx
+@@ -22,6 +22,11 @@
+ #include <stdio.h> // remove redundant workspace files
+
+ #include "gtest/gtest.h"
++
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include "test_lib.h"
-diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx root-6.24.02/tree/dataframe/test/dataframe_merge_results.cxx
---- root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/dataframe_merge_results.cxx 2021-08-06 09:31:38.802835300 +0200
-@@ -308,7 +308,7 @@
+ #include <RooMsgService.h>
+diff --git a/tree/dataframe/test/dataframe_definepersample.cxx b/tree/dataframe/test/dataframe_definepersample.cxx
+index 772b8baa70..37da9f3f95 100644
+--- a/tree/dataframe/test/dataframe_definepersample.cxx
++++ b/tree/dataframe/test/dataframe_definepersample.cxx
+@@ -6,6 +6,10 @@
+
+ #include <gtest/gtest.h>
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include <atomic>
+ #include <memory>
+ #include <thread> // std::thread::hardware_concurrency
+diff --git a/tree/dataframe/test/dataframe_merge_results.cxx b/tree/dataframe/test/dataframe_merge_results.cxx
+index 9354b75a39..ea439ea006 100644
+--- a/tree/dataframe/test/dataframe_merge_results.cxx
++++ b/tree/dataframe/test/dataframe_merge_results.cxx
+@@ -340,7 +340,7 @@ TEST(RDataFrameMergeResults, Merge5Hists)
EXPECT_FALSE(mh3);
EXPECT_FALSE(mh4);
EXPECT_FALSE(mh5);
@@ -185,9 +336,10 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx root-
const auto &mh = mergedptr->GetValue();
-diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx root-6.24.02/tree/dataframe/test/dataframe_regression.cxx
---- root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/dataframe_regression.cxx 2021-08-06 09:31:38.802835300 +0200
+diff --git a/tree/dataframe/test/dataframe_regression.cxx b/tree/dataframe/test/dataframe_regression.cxx
+index 9801067cf4..8a991f40c5 100644
+--- a/tree/dataframe/test/dataframe_regression.cxx
++++ b/tree/dataframe/test/dataframe_regression.cxx
@@ -9,6 +9,10 @@
#include "gtest/gtest.h"
@@ -199,9 +351,25 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx root-6.2
// Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially
class RDFRegressionTests : public ::testing::TestWithParam<bool> {
protected:
-diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx root-6.24.02/tree/dataframe/test/dataframe_simple.cxx
---- root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/tree/dataframe/test/dataframe_simple.cxx 2021-08-06 09:31:38.803835303 +0200
+diff --git a/tree/dataframe/test/dataframe_samplecallback.cxx b/tree/dataframe/test/dataframe_samplecallback.cxx
+index 188d58dd31..7734586eb3 100644
+--- a/tree/dataframe/test/dataframe_samplecallback.cxx
++++ b/tree/dataframe/test/dataframe_samplecallback.cxx
+@@ -11,6 +11,10 @@
+
+ #include <gtest/gtest.h>
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ #include <algorithm> // std::min
+ #include <memory>
+ #include <mutex>
+diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx
+index 6006f99017..b507edc13f 100644
+--- a/tree/dataframe/test/dataframe_simple.cxx
++++ b/tree/dataframe/test/dataframe_simple.cxx
@@ -1,5 +1,10 @@
/****** Run RDataFrame tests both with and without IMT enabled *******/
#include <gtest/gtest.h>
@@ -213,3 +381,36 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx root-6.24.02
#include <ROOTUnitTestSupport.h>
#include <ROOT/RDataFrame.hxx>
#include <ROOT/TSeq.hxx>
+diff --git a/tree/dataframe/test/dataframe_vary.cxx b/tree/dataframe/test/dataframe_vary.cxx
+index 2284b21f53..5a26c43cdc 100644
+--- a/tree/dataframe/test/dataframe_vary.cxx
++++ b/tree/dataframe/test/dataframe_vary.cxx
+@@ -7,6 +7,10 @@
+
+ #include <gtest/gtest.h>
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
++#endif
++
+ using ROOT::RDF::Experimental::VariationsFor;
+
+ class RDFVary : public ::testing::TestWithParam<bool> {
+diff --git a/tree/tree/test/TOffsetGeneration.cxx b/tree/tree/test/TOffsetGeneration.cxx
+index 7b6b7647aa..77f125ca60 100644
+--- a/tree/tree/test/TOffsetGeneration.cxx
++++ b/tree/tree/test/TOffsetGeneration.cxx
+@@ -9,6 +9,10 @@
+ #include "ROOTUnitTestSupport.h"
+ #include "gtest/gtest.h"
+
++#ifndef INSTANTIATE_TEST_SUITE_P
++#define SetUpTestSuite SetUpTestCase
++#endif
++
+ #include "ElementStruct.h"
+
+ class TOffsetGeneration : public ::testing::Test {
+--
+2.35.1
+
diff --git a/root-ppc-codemodel.patch b/root-ppc-codemodel.patch
deleted file mode 100644
index 223dc7c..0000000
--- a/root-ppc-codemodel.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 774ab9358d852e2c004564183de4a60eaaa5ac98 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 23 Apr 2021 21:40:14 +0200
-Subject: [PATCH 2/2] Actually request the use of the large code model for
- ppc64/ppc64le
-
-Instead of erroring out with an assert.
----
- interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp
-index 46771aa8c0..93a48f31f3 100644
---- a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp
-+++ b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp
-@@ -73,14 +73,14 @@ CreateHostTargetMachine(const clang::CompilerInstance& CI) {
- JTMB->getOptions().EmulatedTLS = false;
- #endif // _WIN32
-
-- std::unique_ptr<TargetMachine> TM = cantFail(JTMB->createTargetMachine());
--
- #if defined(__powerpc64__) || defined(__PPC64__)
- // We have to use large code model for PowerPC64 because TOC and text sections
- // can be more than 2GB apart.
-- assert(TM->getCodeModel() >= CodeModel::Large);
-+ JTMB->setCodeModel(CodeModel::Large);
- #endif
-
-+ std::unique_ptr<TargetMachine> TM = cantFail(JTMB->createTargetMachine());
-+
- // Forcefully disable GlobalISel, it might be enabled on AArch64 without
- // optimizations. In tests on an Apple M1 after the upgrade to LLVM 9, this
- // new instruction selection framework emits branches / calls that expect all
---
-2.30.2
-
diff --git a/root-ppc-segfault-fix.patch b/root-ppc-segfault-fix.patch
deleted file mode 100644
index b9cba0f..0000000
--- a/root-ppc-segfault-fix.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 55ae047b70e927de5c84cfa5ad42905cbd58d499 Mon Sep 17 00:00:00 2001
-From: Vassil Vassilev <v.g.vassilev(a)gmail.com>
-Date: Sat, 4 Dec 2021 00:06:19 +0000
-Subject: [PATCH] [llvm] Restore the ppc64le support that we lost in llvm8.
-
-This patch is backported from https://reviews.llvm.org/D94183
-
-For more discussion see https://github.com/numba/numba/issues/4026
-
-Fixes root-project/root#8072 and root-project/root#9297
----
- .../src/lib/Target/PowerPC/PPCISelLowering.cpp | 17 +++++++++--------
- 1 file changed, 9 insertions(+), 8 deletions(-)
-
-diff --git a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp
-index 24d50074860d..a922b40aa902 100644
---- a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp
-+++ b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp
-@@ -4463,7 +4463,15 @@ callsShareTOCBase(const Function *Caller, SDValue Callee,
- if (!G)
- return false;
-
-- const GlobalValue *GV = G->getGlobal();
-+ const GlobalValue *GV = G->getGlobal();
-+
-+ // If the GV is not a strong definition then we need to assume it can be
-+ // replaced by another function at link time. The function that replaces
-+ // it may not share the same TOC as the caller since the callee may be
-+ // replaced by a PC Relative version of the same function.
-+ if (!GV->isStrongDefinitionForLinker())
-+ return false;
-+
- // The medium and large code models are expected to provide a sufficiently
- // large TOC to provide all data addressing needs of a module with a
- // single TOC. Since each module will be addressed with a single TOC then we
-@@ -4472,13 +4480,6 @@ callsShareTOCBase(const Function *Caller, SDValue Callee,
- CodeModel::Large == TM.getCodeModel())
- return TM.shouldAssumeDSOLocal(*Caller->getParent(), GV);
-
-- // Otherwise we need to ensure callee and caller are in the same section,
-- // since the linker may allocate multiple TOCs, and we don't know which
-- // sections will belong to the same TOC base.
--
-- if (!GV->isStrongDefinitionForLinker())
-- return false;
--
- // Any explicitly-specified sections and section prefixes must also match.
- // Also, if we're using -ffunction-sections, then each function is always in
- // a different section (the same is true for COMDAT functions).
diff --git a/root-ptr-is-null-RooFit-TMVA.patch b/root-ptr-is-null-RooFit-TMVA.patch
deleted file mode 100644
index 3aa3acd..0000000
--- a/root-ptr-is-null-RooFit-TMVA.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From c65f3d96f3f4433bff9d40fa9cf1dec100867a07 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Tue, 8 Jun 2021 10:12:37 +0200
-Subject: [PATCH] Fix 'this' pointer is null warnings
-
-.../roofit/roofitcore/src/RooDataHist.cxx: In member function 'void RooDataHist::_adjustBinning(RooRealVar&, const TAxis&, RooRealVar*, Int_t*)':
-.../roofit/roofitcore/src/RooDataHist.cxx:595:122: warning: 'this' pointer is null [-Wnonnull]
- 595 | coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ;
- | ^~~~~~~~~~~~~~~
-
-.../roofit/roofitcore/src/RooRealSumFunc.cxx: In constructor 'RooRealSumFunc::RooRealSumFunc(const char*, const char*, const RooArgList&, const RooArgList&)':
-.../roofit/roofitcore/src/RooRealSumFunc.cxx:156:35: warning: 'this' pointer is null [-Wnonnull]
- 156 | << " is not of type RooAbsReal, fatal error" << endl;
- | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx: In member function 'void TMVA::DNN::TDataLoader<AData, TMVA::DNN::TReference<AReal> >::CopyInput(TMatrixT<AReal>&, TMVA::DNN::IndexIterator_t) [with AData = std::tuple<const std::vector<TMVA::Event*, std::allocator<TMVA::Event*> >&, const TMVA::DataSetInfo&>; AReal = float]':
-.../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx:131:34: warning: 'this' pointer is null [-Wnonnull]
- 131 | Int_t n = event->GetNVariables();
- | ~~~~~~~~~~~~~~~~~~~~^~
-In file included from .../tmva/tmva/inc/TMVA/VariableTransformBase.h:48,
- from .../tmva/tmva/inc/TMVA/Tools.h:58,
- from .../tmva/tmva/inc/TMVA/DNN/GeneralLayer.h:36,
- from .../tmva/tmva/inc/TMVA/DNN/CNN/ConvLayer.h:32,
- from .../tmva/tmva/inc/TMVA/DNN/Architectures/Reference.h:24,
- from .../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx:17:
-.../tmva/tmva/inc/TMVA/Event.h:88:16: note: in a call to non-static member function 'UInt_t TMVA::Event::GetNVariables() const'
- 88 | UInt_t GetNVariables() const;
- | ^~~~~~~~~~~~~
----
- roofit/roofitcore/src/RooDataHist.cxx | 2 +-
- roofit/roofitcore/src/RooRealSumFunc.cxx | 4 ++--
- tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx | 2 +-
- 3 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx
-index 84cf2c0f68..8dddb88e2b 100644
---- a/roofit/roofitcore/src/RooDataHist.cxx
-+++ b/roofit/roofitcore/src/RooDataHist.cxx
-@@ -591,7 +591,7 @@ void RooDataHist::importDHistSet(const RooArgList& /*vars*/, RooCategory& indexC
- void RooDataHist::_adjustBinning(RooRealVar &theirVar, const TAxis &axis,
- RooRealVar *ourVar, Int_t *offset)
- {
-- if (!dynamic_cast<RooRealVar*>(ourVar)) {
-+ if (!dynamic_cast<RooRealVar*>(static_cast<RooAbsArg*>(ourVar))) {
- coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ;
- assert(0) ;
- }
-diff --git a/roofit/roofitcore/src/RooRealSumFunc.cxx b/roofit/roofitcore/src/RooRealSumFunc.cxx
-index 3f78020acd..a1625d7e35 100644
---- a/roofit/roofitcore/src/RooRealSumFunc.cxx
-+++ b/roofit/roofitcore/src/RooRealSumFunc.cxx
-@@ -149,10 +149,10 @@ RooRealSumFunc::RooRealSumFunc(const char *name, const char *title, const RooArg
- _coefList.add(*coef);
- }
-
-- func = (RooAbsReal *)funcIter->Next();
-+ func = (RooAbsArg *)funcIter->Next();
- if (func) {
- if (!dynamic_cast<RooAbsReal *>(func)) {
-- coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << coef->GetName()
-+ coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << func->GetName()
- << " is not of type RooAbsReal, fatal error" << endl;
- assert(0);
- }
-diff --git a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx
-index 2465abf308..24a09d1fc0 100644
---- a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx
-+++ b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx
-@@ -128,7 +128,7 @@ void TDataLoader<TMVAInput_t, TReference<Real_t>>::CopyInput(TMatrixT<Real_t> &m
- Event *event = nullptr;
-
- Int_t m = matrix.GetNrows();
-- Int_t n = event->GetNVariables();
-+ Int_t n = matrix.GetNcols();
-
- // Copy input variables.
-
---
-2.31.1
-
diff --git a/root-ptr-is-null-TStreamerInfo.patch b/root-ptr-is-null-TStreamerInfo.patch
deleted file mode 100644
index 869715c..0000000
--- a/root-ptr-is-null-TStreamerInfo.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 1ca221f010fdcfb6249ae7b1cac77fbe29b86214 Mon Sep 17 00:00:00 2001
-From: Enrico Guiraud <enrico.guiraud(a)cern.ch>
-Date: Mon, 7 Jun 2021 11:02:48 +0200
-Subject: [PATCH] [io] Avoid nullptr deref when printing warning in
- TStreamerInfo
-
----
- io/io/src/TStreamerInfo.cxx | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/io/io/src/TStreamerInfo.cxx b/io/io/src/TStreamerInfo.cxx
-index d545ab7be8..a026635890 100644
---- a/io/io/src/TStreamerInfo.cxx
-+++ b/io/io/src/TStreamerInfo.cxx
-@@ -1109,12 +1109,12 @@ void TStreamerInfo::BuildCheck(TFile *file /* = 0 */, Bool_t load /* = kTRUE */)
- fClassVersion, GetName(), GetName(), GetName(), fClassVersion);
- } else {
- Warning("BuildCheck", "\n\
-- The StreamerInfo from %s does not match existing one (%s:%d)\n\
-+ The StreamerInfo does not match existing one (%s:%d)\n\
- The existing one has not been used yet and will be discarded.\n\
- Reading should work properly, however writing object of\n\
- type %s will not work properly. Most likely the version number\n\
- of the class was not properly updated [See ClassDef(%s,%d)].",
-- file->GetName(), GetName(), fClassVersion, GetName(), GetName(), fClassVersion);
-+ GetName(), fClassVersion, GetName(), GetName(), fClassVersion);
- }
- }
- }
---
-2.31.1
-
diff --git a/root-rcolor-static-init.patch b/root-rcolor-static-init.patch
new file mode 100644
index 0000000..18e4299
--- /dev/null
+++ b/root-rcolor-static-init.patch
@@ -0,0 +1,42 @@
+From c4df90861879f45b281c2a8e55212b711cfdbfa0 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Tue, 29 Mar 2022 15:30:20 +0200
+Subject: [PATCH] Avoid crashes due to static initialization order
+
+Most commonly seen on ppc64le. Backtrace:
+
+===========================================================
+The lines below might hint at the cause of the crash.
+You may get help by asking at the ROOT forum https://root.cern/forum
+Only if you are really convinced it is a bug in ROOT then please submit a
+report at https://root.cern/bugs Please post the ENTIRE stack trace
+from above as an attachment in addition to anything else
+that might help us fixing this issue.
+===========================================================
+ #11 ROOT::Experimental::RColor::toHex[abi:cxx11](unsigned char) (v=<optimized out>) at /usr/include/c++/11/ext/new_allocator.h:82
+ #12 0x00007fff90c220ec in ROOT::Experimental::RColor::SetRGB (this=0x7fffeadf5d10, r=<optimized out>, g=<optimized out>, b=<optimized out>) at /usr/include/c++/11/ext/new_allocator.h:89
+---
+ graf2d/gpadv7/src/RColor.cxx | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/graf2d/gpadv7/src/RColor.cxx b/graf2d/gpadv7/src/RColor.cxx
+index de325f1ea3..6878360073 100644
+--- a/graf2d/gpadv7/src/RColor.cxx
++++ b/graf2d/gpadv7/src/RColor.cxx
+@@ -232,10 +232,10 @@ std::vector<uint8_t> RColor::AsRGBA() const
+
+ std::string RColor::toHex(uint8_t v)
+ {
+- static const char *digits = "0123456789ABCDEF";
++ auto digits = [](auto d) { return d < 10 ? '0' + d : 'A' - 10 + d; };
+ std::string res(2,'0');
+- res[0] = digits[v >> 4];
+- res[1] = digits[v & 0xf];
++ res[0] = digits(v >> 4);
++ res[1] = digits(v & 0xf);
+ return res;
+ }
+
+--
+2.35.1
+
diff --git a/root-roofit-overflow.patch b/root-roofit-overflow.patch
new file mode 100644
index 0000000..e368aa9
--- /dev/null
+++ b/root-roofit-overflow.patch
@@ -0,0 +1,59 @@
+From 8b6a10aefa5ae660e9d13a8e55933125b257ab6c Mon Sep 17 00:00:00 2001
+From: moneta <lorenzo.moneta(a)cern.ch>
+Date: Fri, 25 Feb 2022 09:54:40 +0100
+Subject: [PATCH] Fix an array overflow in interpolating RooHistPdf when the
+ interpolation order is >= 10.
+
+---
+ roofit/roofitcore/src/RooDataHist.cxx | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx
+index c293a8fbb1..2159f73093 100644
+--- a/roofit/roofitcore/src/RooDataHist.cxx
++++ b/roofit/roofitcore/src/RooDataHist.cxx
+@@ -1206,9 +1206,9 @@ double RooDataHist::weightInterpolated(const RooArgSet& bin, int intOrder, bool
+
+ auto idxMultY = _idxMult[varInfo.realVarIdx2];
+ auto offsetIdx = centralIdx - idxMultY * ybinC;
+-
+- double yarr[10] = {} ;
+- double xarr[10] = {} ;
++
++ std::vector<double> yarr(intOrder+1);
++ std::vector<double> xarr(intOrder+1);
+ for (int i=ybinLo ; i<=intOrder+ybinLo ; i++) {
+ int ibin ;
+ if (i>=0 && i<ybinM) {
+@@ -1236,7 +1236,7 @@ double RooDataHist::weightInterpolated(const RooArgSet& bin, int intOrder, bool
+ for (int q=0; q<=intOrder ; q++) cout << yarr[q] << " " ;
+ cout << endl ;
+ }
+- wInt = RooMath::interpolate(xarr,yarr,intOrder+1,yval) ;
++ wInt = RooMath::interpolate(xarr.data(),yarr.data(),intOrder+1,yval) ;
+
+ } else {
+
+@@ -1344,8 +1344,8 @@ double RooDataHist::interpolateDim(int iDim, double xval, size_t centralIdx, int
+ auto idxMult = _idxMult[iDim];
+ auto offsetIdx = centralIdx - idxMult * fbinC;
+
+- double yarr[10] ;
+- double xarr[10] ;
++ std::vector<double> yarr(intOrder+1) ;
++ std::vector<double> xarr(intOrder+1);
+ for (int i=fbinLo ; i<=intOrder+fbinLo ; i++) {
+ int ibin ;
+ if (i>=0 && i<fbinM) {
+@@ -1383,7 +1383,7 @@ double RooDataHist::interpolateDim(int iDim, double xval, size_t centralIdx, int
+ }
+ }
+ }
+- return RooMath::interpolate(xarr,yarr,intOrder+1,xval) ;
++ return RooMath::interpolate(xarr.data(),yarr.data(),intOrder+1,xval) ;
+ }
+
+
+--
+2.35.1
+
diff --git a/root-roofit-tutorial.patch b/root-roofit-tutorial.patch
new file mode 100644
index 0000000..9d73e11
--- /dev/null
+++ b/root-roofit-tutorial.patch
@@ -0,0 +1,74 @@
+From 914e46f1c591f8b9b34115863ff31e42e19bfb97 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Mon, 28 Mar 2022 09:32:24 +0200
+Subject: [PATCH] Use calls from Python directly
+
+The rf105_funcbinding.py tutorial used to trigger errors due to unknown
+symbols. In particular the custum new and delete operators used in RooFit
+were not autoloaded when needed.
+
+In the tutorial there was a workaround implemented to call ProcessLine
+instead of making calls directly form Python, to make the autoloading
+from the C++ side of ROOT instead. This did not quite fix the problem,
+and the tutorial still randomly failed due to missing symbols.
+
+After changing the algorthm used for autoloading in commit
+6ae602bba7d33c900a117c9de0187ab5a28e14b8 these problems were solved.
+
+After this fix using the direct calls from Python also works, so this
+PR suggests updating the tutorial to do that.
+---
+ tutorials/roofit/rf105_funcbinding.py | 30 ++++++---------------------
+ 1 file changed, 6 insertions(+), 24 deletions(-)
+
+diff --git a/tutorials/roofit/rf105_funcbinding.py b/tutorials/roofit/rf105_funcbinding.py
+index 72d9cf62fc..b9de2a095a 100644
+--- a/tutorials/roofit/rf105_funcbinding.py
++++ b/tutorials/roofit/rf105_funcbinding.py
+@@ -17,15 +17,8 @@ import ROOT
+ # ---------------------------------------------------
+
+ # Bind one-dimensional ROOT.TMath.Erf function as ROOT.RooAbsReal function
+-# Directly trying this in python doesn't work:
+-# x = ROOT.RooRealVar("x", "x", -3, 3)
+-# erf = ROOT.RooFit.bindFunction("erf", ROOT.TMath.Erf, x)
+-# Need to go through C interface
+-ROOT.gInterpreter.ProcessLine(
+- 'auto x = RooRealVar("x", "x", -3, 3); auto myerf = RooFit::bindFunction("erf", TMath::Erf, x)'
+-)
+-x = ROOT.x
+-erf = ROOT.myerf
++x = ROOT.RooRealVar("x", "x", -3, 3)
++erf = ROOT.RooFit.bindFunction("erf", ROOT.TMath.Erf, x)
+
+ # Print erf definition
+ erf.Print()
+@@ -38,21 +31,10 @@ erf.plotOn(frame1)
+ # -----------------------------------------------------------------------
+
+ # Bind pdf ROOT.Math.Beta with three variables as ROOT.RooAbsPdf function
+-# As above, this does not work directly in python
+-# x2 = ROOT.RooRealVar("x2", "x2", 0, 0.999)
+-# a = ROOT.RooRealVar("a", "a", 5, 0, 10)
+-# b = ROOT.RooRealVar("b", "b", 2, 0, 10)
+-# beta = ROOT.RooFit.bindPdf("beta", ROOT.Math.beta_pdf, x2, a, b)
+-ROOT.gInterpreter.ProcessLine(
+- 'auto x2 = RooRealVar("x2", "x2", 0, 0.999);\
+- auto a = RooRealVar("a", "a", 5, 0, 10);\
+- auto b = RooRealVar("b", "b", 5, 0, 10);\
+- auto beta = RooFit::bindPdf("beta", ROOT::Math::beta_pdf, x2, a, b)'
+-)
+-x2 = ROOT.x2
+-a = ROOT.a
+-b = ROOT.b
+-beta = ROOT.beta
++x2 = ROOT.RooRealVar("x2", "x2", 0, 0.999)
++a = ROOT.RooRealVar("a", "a", 5, 0, 10)
++b = ROOT.RooRealVar("b", "b", 2, 0, 10)
++beta = ROOT.RooFit.bindPdf("beta", ROOT.Math.beta_pdf, x2, a, b)
+
+ # Perf beta definition
+ beta.Print()
+--
+2.35.1
+
diff --git a/root-stress-s390x.patch b/root-stress-s390x.patch
deleted file mode 100644
index b1d9b9d..0000000
--- a/root-stress-s390x.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 30cbc0d44364586ac64a3ac0fd6641e338549bbe Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Tue, 10 Aug 2021 06:33:17 +0200
-Subject: [PATCH] Adjust tests for s390x
-
----
- math/mathcore/test/stress/testGenVector.cxx | 2 +-
- test/stressMathCore.cxx | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/math/mathcore/test/stress/testGenVector.cxx b/math/mathcore/test/stress/testGenVector.cxx
-index 8da429c395..df9061c88e 100644
---- a/math/mathcore/test/stress/testGenVector.cxx
-+++ b/math/mathcore/test/stress/testGenVector.cxx
-@@ -79,7 +79,7 @@ TYPED_TEST_P(GenVectorTest, TestGenVectors)
- scale = this->fDim * 20;
- if (this->fDim == 3 && this->V2Name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi
- if (this->fDim == 4 && ( this->V2Name() == "PtEtaPhiMVector" || this->V2Name() == "PxPyPzMVector")) {
--#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__))
-+#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(__s390x__))
- scale *= 1.E7;
- #else
- scale *= 10;
-diff --git a/test/stressMathCore.cxx b/test/stressMathCore.cxx
-index 4d4695a8a0..b6d2d2c9e7 100644
---- a/test/stressMathCore.cxx
-+++ b/test/stressMathCore.cxx
-@@ -1120,7 +1120,7 @@ int testVector(int ngen, bool testio=false) {
- scale = Dim*20;
- if (Dim==3 && VecType<V2>::name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi
- if (Dim==4 && ( VecType<V2>::name() == "PtEtaPhiMVector" || VecType<V2>::name() == "PxPyPzMVector")) {
--#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__))
-+#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(__s390x__))
- scale *= 1.E7;
- #else
- scale *= 10;
---
-2.31.1
-
diff --git a/root-threadsh1-avoid-heap-use-after-free.patch b/root-threadsh1-avoid-heap-use-after-free.patch
new file mode 100644
index 0000000..6111f2b
--- /dev/null
+++ b/root-threadsh1-avoid-heap-use-after-free.patch
@@ -0,0 +1,48 @@
+From 493c4210168fa475aa4130c12e8fdff3b7d85c09 Mon Sep 17 00:00:00 2001
+From: Philippe Canal <pcanal(a)fnal.gov>
+Date: Mon, 7 Mar 2022 13:32:37 -0600
+Subject: [PATCH] threadsh1: Avoid heap-use-after-free.
+
+Previously, the Canvas `Close` signal which triggers a call to the local function `close` which
+was unconditionally call `Kill` on its associated thread would call it on an already deleted
+object if the `TThread` was deleted before the `TCanvas`.
+
+This fix #10015 (detected by using ASAN).
+---
+ tutorials/legacy/thread/threadsh1.C | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/tutorials/legacy/thread/threadsh1.C b/tutorials/legacy/thread/threadsh1.C
+index b819f5d020..d6abc67e36 100644
+--- a/tutorials/legacy/thread/threadsh1.C
++++ b/tutorials/legacy/thread/threadsh1.C
+@@ -67,7 +67,8 @@ void *joiner(void *)
+ void closed(Int_t id)
+ {
+ // kill the thread matching the canvas being closed
+- t[id]->Kill();
++ if (t[id])
++ t[id]->Kill();
+ // and set the canvas pointer to 0
+ c[id] = 0;
+ }
+@@ -142,11 +143,11 @@ void threadsh1()
+ t[4]->Join();
+ TThread::Ps();
+
+- delete t[0];
+- delete t[1];
+- delete t[2];
+- delete t[3];
+- delete t[4];
++ delete t[0]; t[0] = nullptr; // Prevents after deletion access.
++ delete t[1]; t[1] = nullptr;
++ delete t[2]; t[2] = nullptr;
++ delete t[3]; t[3] = nullptr;
++ delete t[4]; t[4] = nullptr;
+
+ delete rng[0];
+ delete rng[1];
+--
+2.35.1
+
diff --git a/root-tmva-threads.patch b/root-tmva-threads.patch
new file mode 100644
index 0000000..459062d
--- /dev/null
+++ b/root-tmva-threads.patch
@@ -0,0 +1,62 @@
+From f525fe375840cda2bf5b51e018eab8ad74dcd736 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Wed, 30 Mar 2022 15:51:07 +0200
+Subject: [PATCH] Limit the number of threads in TMVA CNN/DNN test to save
+ memory
+
+Processing /builddir/build/BUILD/root-6.26.00/tutorials/tmva/TMVA_CNN_Classification.C...
+Running with nthreads = 224
+
+[ ... ]
+
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.
+ *** Break *** segmentation violation
+ *** Break *** segmentation violation
+ *** Break *** segmentation violation
+ *** Break *** segmentation violation
+ *** Break *** segmentation violation
+ *** Break *** segmentation violation
+---
+ tutorials/tmva/TMVA_CNN_Classification.C | 2 +-
+ tutorials/tmva/TMVA_RNN_Classification.C | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C
+index 3e590c5958..4abfc6a4d1 100644
+--- a/tutorials/tmva/TMVA_CNN_Classification.C
++++ b/tutorials/tmva/TMVA_CNN_Classification.C
+@@ -125,7 +125,7 @@ void TMVA_CNN_Classification(std::vector<bool> opt = {1, 1, 1, 1, 1})
+
+ bool writeOutputFile = true;
+
+- int num_threads = 0; // use default threads
++ int num_threads = 32;
+
+ TMVA::Tools::Instance();
+
+diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C
+index 5be80824f9..791b9aecf5 100644
+--- a/tutorials/tmva/TMVA_RNN_Classification.C
++++ b/tutorials/tmva/TMVA_RNN_Classification.C
+@@ -190,7 +190,7 @@ void TMVA_RNN_Classification(int use_type = 1)
+ useKeras = false;
+ #endif
+
+- int num_threads = 0; // use by default all threads
++ int num_threads = 32;
+ // do enable MT running
+ if (num_threads >= 0) {
+ ROOT::EnableImplicitMT(num_threads);
+--
+2.35.1
+
diff --git a/root-unbundle-gtest.patch b/root-unbundle-gtest.patch
index ae180a2..1bdf869 100644
--- a/root-unbundle-gtest.patch
+++ b/root-unbundle-gtest.patch
@@ -1,111 +1,202 @@
-diff -ur root-6.24.02.orig/cmake/modules/SearchInstalledSoftware.cmake root-6.24.02/cmake/modules/SearchInstalledSoftware.cmake
---- root-6.24.02.orig/cmake/modules/SearchInstalledSoftware.cmake 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/cmake/modules/SearchInstalledSoftware.cmake 2021-08-11 10:56:26.680731609 +0200
-@@ -1699,102 +1699,17 @@
+From 29884ae01fde27204d92f554da4e92227a2ed1e6 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sat, 26 Mar 2022 10:22:07 +0100
+Subject: [PATCH 1/2] Implement builtin_gtest option
+
+By setting the option to OFF the system gtest and gmock are used.
+This allows doing tests without network available, e.g. during a
+package build for Fedora/EPEL.
+---
+ cmake/modules/FindGTest.cmake | 81 +++++++++++++++++++++
+ cmake/modules/RootBuildOptions.cmake | 2 +
+ cmake/modules/RootMacros.cmake | 2 +-
+ cmake/modules/SearchInstalledSoftware.cmake | 44 ++++++++---
+ 4 files changed, 118 insertions(+), 11 deletions(-)
+ create mode 100644 cmake/modules/FindGTest.cmake
+
+diff --git a/cmake/modules/FindGTest.cmake b/cmake/modules/FindGTest.cmake
+new file mode 100644
+index 0000000000..438ec501c2
+--- /dev/null
++++ b/cmake/modules/FindGTest.cmake
+@@ -0,0 +1,81 @@
++# Find the gtest and gmock includes and library.
++#
++# This module defines
++# GTEST_LIBRARIES
++# GTEST_MAIN_LIBRARIES
++# GTEST_INCLUDE_DIRS
++# GMOCK_LIBRARIES
++# GMOCK_MAIN_LIBRARIES
++# GMOCK_INCLUDE_DIRS
++#
++# GTEST_FOUND true if all libraries present
++
++find_package(Threads QUIET)
++
++find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h)
++find_library(GTEST_LIBRARIES NAMES gtest)
++find_library(GTEST_MAIN_LIBRARIES NAMES gtest_main)
++
++find_path(GMOCK_INCLUDE_DIRS NAMES gmock/gmock.h)
++find_library(GMOCK_LIBRARIES NAMES gmock)
++find_library(GMOCK_MAIN_LIBRARIES NAMES gmock_main)
++
++# Special for EPEL 7's gmock
++if(NOT GMOCK_LIBRARIES)
++ find_path(GMOCK_SRC_DIR NAMES gmock-all.cc PATHS /usr/src/gmock)
++endif()
++
++if(NOT GMOCK_MAIN_LIBRARIES)
++ find_path(GMOCK_MAIN_SRC_DIR NAMES gmock_main.cc PATHS /usr/src/gmock)
++endif()
++
++if (GTEST_INCLUDE_DIRS AND
++ GTEST_LIBRARIES AND
++ GTEST_MAIN_LIBRARIES AND
++ GMOCK_INCLUDE_DIRS AND
++ (GMOCK_LIBRARIES OR GMOCK_SRC_DIR) AND
++ (GMOCK_MAIN_LIBRARIES OR GMOCK_MAIN_SRC_DIR))
++
++ add_library(gtest UNKNOWN IMPORTED)
++ set_target_properties(gtest PROPERTIES
++ IMPORTED_LOCATION ${GTEST_LIBRARIES}
++ INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIRS})
++ target_link_libraries(gtest INTERFACE Threads::Threads)
++
++ add_library(gtest_main UNKNOWN IMPORTED)
++ set_target_properties(gtest_main PROPERTIES
++ IMPORTED_LOCATION ${GTEST_MAIN_LIBRARIES})
++ target_link_libraries(gtest_main INTERFACE gtest Threads::Threads)
++
++ if(GMOCK_LIBRARIES)
++ add_library(gmock UNKNOWN IMPORTED)
++ set_target_properties(gmock PROPERTIES
++ IMPORTED_LOCATION ${GMOCK_LIBRARIES}
++ INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIRS})
++ else()
++ add_library(gmock STATIC ${GMOCK_SRC_DIR}/gmock-all.cc)
++ target_include_directories(gmock PUBLIC ${GMOCK_INCLUDE_DIRS})
++ set(GMOCK_LIBRARIES gmock)
++ endif()
++ target_link_libraries(gmock INTERFACE gtest Threads::Threads)
++
++ if(GMOCK_MAIN_LIBRARIES)
++ add_library(gmock_main UNKNOWN IMPORTED)
++ set_target_properties(gmock_main PROPERTIES
++ IMPORTED_LOCATION ${GMOCK_MAIN_LIBRARIES})
++ else()
++ add_library(gmock_main STATIC ${GMOCK_MAIN_SRC_DIR}/gmock_main.cc)
++ set(GMOCK_MAIN_LIBRARIES gmock_main)
++ endif()
++ target_link_libraries(gmock_main INTERFACE gmock Threads::Threads)
++
++endif()
++
++include(FindPackageHandleStandardArgs)
++find_package_handle_standard_args(GTest DEFAULT_MSG
++ GTEST_LIBRARIES
++ GTEST_MAIN_LIBRARIES
++ GTEST_INCLUDE_DIRS
++ GMOCK_LIBRARIES
++ GMOCK_MAIN_LIBRARIES
++ GMOCK_INCLUDE_DIRS)
+diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake
+index 7886c5f3e9..01108a18c9 100644
+--- a/cmake/modules/RootBuildOptions.cmake
++++ b/cmake/modules/RootBuildOptions.cmake
+@@ -94,6 +94,7 @@ ROOT_BUILD_OPTION(builtin_ftgl OFF "Build bundled copy of FTGL")
+ ROOT_BUILD_OPTION(builtin_gl2ps OFF "Build bundled copy of gl2ps")
+ ROOT_BUILD_OPTION(builtin_glew OFF "Build bundled copy of GLEW")
+ ROOT_BUILD_OPTION(builtin_gsl OFF "Build GSL internally (requires network)")
++ROOT_BUILD_OPTION(builtin_gtest OFF "Build googletest internally (requires network)")
+ ROOT_BUILD_OPTION(builtin_llvm ON "Build bundled copy of LLVM")
+ ROOT_BUILD_OPTION(builtin_lz4 OFF "Build bundled copy of lz4")
+ ROOT_BUILD_OPTION(builtin_lzma OFF "Build bundled copy of lzma")
+@@ -293,6 +294,7 @@ if(builtin_all)
+ set(builtin_gl2ps_defvalue ON)
+ set(builtin_glew_defvalue ON)
+ set(builtin_gsl_defvalue ON)
++ set(builtin_gtest_defvalue ON)
+ set(builtin_llvm_defvalue ON)
+ set(builtin_lz4_defvalue ON)
+ set(builtin_lzma_defvalue ON)
+diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake
+index cb75c0b1da..38fd5d6baf 100644
+--- a/cmake/modules/RootMacros.cmake
++++ b/cmake/modules/RootMacros.cmake
+@@ -1671,7 +1671,7 @@ function(ROOT_ADD_TEST test)
- #---Download googletest--------------------------------------------------------------
- if (testing)
-- # FIXME: Remove our version of gtest in roottest. We can reuse this one.
-- # Add googletest
-- # http://stackoverflow.com/questions/9689183/cmake-googletest
-+ # Workaround for missing libraries in Fedora's gmock packaging < 1.8.0
-+ if(EXISTS ${CMAKE_SOURCE_DIR}/googlemock)
-+ set(_G_LIBRARY_PATH ${CMAKE_SOURCE_DIR}/googlemock)
+ set_property(TEST ${test} APPEND PROPERTY ENVIRONMENT ROOT_HIST=0)
-- set(_gtest_byproduct_binary_dir
-- ${CMAKE_CURRENT_BINARY_DIR}/googletest-prefix/src/googletest-build)
-- set(_gtest_byproducts
-- ${_gtest_byproduct_binary_dir}/lib/libgtest.a
-- ${_gtest_byproduct_binary_dir}/lib/libgtest_main.a
-- ${_gtest_byproduct_binary_dir}/lib/libgmock.a
-- ${_gtest_byproduct_binary_dir}/lib/libgmock_main.a
-- )
--
-- if(MSVC)
-- set(EXTRA_GTEST_OPTS
-- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${_gtest_byproduct_binary_dir}/lib/
-- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL:PATH=${_gtest_byproduct_binary_dir}/lib/
-- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${_gtest_byproduct_binary_dir}/lib/
-- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO:PATH=${_gtest_byproduct_binary_dir}/lib/
-- -Dgtest_force_shared_crt=ON
-- BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config Release)
-- endif()
-- if(APPLE)
-- set(EXTRA_GTEST_OPTS
-- -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT})
+- #- Handle TIMOUT and DEPENDS arguments
++ #- Handle TIMEOUT and DEPENDS arguments
+ if(ARG_TIMEOUT)
+ set_property(TEST ${test} PROPERTY TIMEOUT ${ARG_TIMEOUT})
+ endif()
+diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake
+index fe40898d12..b6a3cc4c76 100644
+--- a/cmake/modules/SearchInstalledSoftware.cmake
++++ b/cmake/modules/SearchInstalledSoftware.cmake
+@@ -1860,15 +1860,6 @@ if (mpi)
+ endif()
+ endif()
+
+-if(testing AND NO_CONNECTION)
+- if(fail-on-missing)
+- message(FATAL_ERROR "No internet connection. Please check your connection, or either disable the 'testing' option or the 'fail-on-missing' to automatically disable options requiring internet access")
+- else()
+- message(STATUS "No internet connection, disabling 'testing' option")
+- set(testing OFF CACHE BOOL "Disabled because there is no internet connection" FORCE)
- endif()
+-endif()
-
-- ExternalProject_Add(
-- googletest
-- GIT_REPOSITORY https://github.com/google/googletest.git
-- GIT_SHALLOW 1
-- GIT_TAG release-1.10.0
-- UPDATE_COMMAND ""
-- # TIMEOUT 10
-- # # Force separate output paths for debug and release builds to allow easy
-- # # identification of correct lib in subsequent TARGET_LINK_LIBRARIES commands
-- # CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs
-- # -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs
-- # -Dgtest_force_shared_crt=ON
-- CMAKE_ARGS -G ${CMAKE_GENERATOR}
-- -DCMAKE_BUILD_TYPE=Release
-- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-- -DCMAKE_CXX_FLAGS=${ROOT_EXTERNAL_CXX_FLAGS}
-- -DCMAKE_AR=${CMAKE_AR}
-- -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
-- ${EXTRA_GTEST_OPTS}
-- # Disable install step
-- INSTALL_COMMAND ""
-- BUILD_BYPRODUCTS ${_gtest_byproducts}
-- # Wrap download, configure and build steps in a script to log output
-- LOG_DOWNLOAD ON
-- LOG_CONFIGURE ON
-- LOG_BUILD ON
-- TIMEOUT 600
-- )
--
-- # Specify include dirs for gtest and gmock
-- ExternalProject_Get_Property(googletest source_dir)
-- set(GTEST_INCLUDE_DIR ${source_dir}/googletest/include)
-- set(GMOCK_INCLUDE_DIR ${source_dir}/googlemock/include)
-- # Create the directories. Prevents bug https://gitlab.kitware.com/cmake/cmake/issues/15052
-- file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR})
--
-- # Libraries
-- ExternalProject_Get_Property(googletest binary_dir)
-- set(_G_LIBRARY_PATH ${binary_dir}/lib/)
--
-- # Use gmock_main instead of gtest_main because it initializes gtest as well.
-- # Note: The libraries are listed in reverse order of their dependancies.
-- foreach(lib gtest gtest_main gmock gmock_main)
-+ foreach(lib gmock gmock_main)
- add_library(${lib} IMPORTED STATIC GLOBAL)
-- set_target_properties(${lib} PROPERTIES
-- IMPORTED_LOCATION "${_G_LIBRARY_PATH}${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}"
-- INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
-- )
-- add_dependencies(${lib} googletest)
-- if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND
-- ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER_EQUAL 9)
-- target_compile_options(${lib} INTERFACE -Wno-deprecated-copy)
-- endif()
- endforeach()
-- # Once we require at least cmake 3.11, target_include_directories will work for imported targets
-- # Because of https://gitlab.kitware.com/cmake/cmake/-/merge_requests/1264
-- # We need this workaround:
-- SET_PROPERTY(TARGET gtest APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR})
-- SET_PROPERTY(TARGET gmock APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR})
-- #target_include_directories(gtest INTERFACE ${GTEST_INCLUDE_DIR})
-- #target_include_directories(gmock INTERFACE ${GMOCK_INCLUDE_DIR})
--
-- set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX})
-- set_property(TARGET gtest_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX})
- set_property(TARGET gmock PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX})
- set_property(TARGET gmock_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX})
+ #---Check for ZeroMQ when building RooFit::MultiProcess--------------------------------------------
-+ endif()
- endif()
+ if (roofit_multiprocess)
+@@ -1942,8 +1933,41 @@ if (roofit_multiprocess)
+ target_compile_definitions(cppzmq INTERFACE ZMQ_NO_EXPORT)
+ endif (roofit_multiprocess)
- #------------------------------------------------------------------------------------
+-#---Download googletest--------------------------------------------------------------
++#---Check for googletest---------------------------------------------------------------
+ if (testing)
++ if (NOT builtin_gtest)
++ if(fail-on-missing)
++ find_package(GTest REQUIRED)
++ else()
++ find_package(GTest)
++ if(NOT GTEST_FOUND)
++ if(NO_CONNECTION)
++ if(fail-on-missing)
++ message(FATAL_ERROR "No internet connection and GTest was not found. Please check your connection, or either disable the 'testing' option or the 'fail-on-missing' to automatically disable options requiring internet access")
++ else()
++ message(STATUS "GTest not found, and no internet connection. Disabing the 'testing' option.")
++ set(testing OFF CACHE BOOL "Disabled because testing requested and GTest not found (${builtin_gtest_description}) and there is no internet connection" FORCE)
++ endif()
++ else()
++ message(STATUS "GTest not found, switching ON 'builtin_gtest' option.")
++ set(builtin_gtest ON CACHE BOOL "Enabled because testing requested and GTest not found (${builtin_gtest_description})" FORCE)
++ endif()
++ endif()
++ endif()
++ else()
++ if(NO_CONNECTION)
++ if(fail-on-missing)
++ message(FATAL_ERROR "No internet connection. Please check your connection, or either disable the 'testing' option or the 'builtin_gtest' option or the 'fail-on-missing' option to automatically disable options requiring internet access")
++ else()
++ message(STATUS "No internet connection, disabling the 'testing' and 'builtin_gtest' options")
++ set(testing OFF CACHE BOOL "Disabled because there is no internet connection" FORCE)
++ set(builtin_gtest OFF CACHE BOOL "Disabled because there is no internet connection" FORCE)
++ endif()
++ endif()
++ endif()
++endif()
++
++if (builtin_gtest)
+ # FIXME: Remove our version of gtest in roottest. We can reuse this one.
+ # Add googletest
+ # http://stackoverflow.com/questions/9689183/cmake-googletest
+--
+2.35.1
+
diff --git a/root-uring-warn.patch b/root-uring-warn.patch
new file mode 100644
index 0000000..05cfd56
--- /dev/null
+++ b/root-uring-warn.patch
@@ -0,0 +1,43 @@
+From 580fcf8fe95c45e337d222a7fd2338fdef2f52c5 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 24 Mar 2022 16:18:57 +0100
+Subject: [PATCH 1/2] Ignore warnings about uring failing during test
+
+---
+ tree/ntuple/v7/test/ntuple_extended.cxx | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/tree/ntuple/v7/test/ntuple_extended.cxx b/tree/ntuple/v7/test/ntuple_extended.cxx
+index 8e3998996c..98d65ef319 100644
+--- a/tree/ntuple/v7/test/ntuple_extended.cxx
++++ b/tree/ntuple/v7/test/ntuple_extended.cxx
+@@ -4,6 +4,8 @@
+
+ #include "TROOT.h"
+
++#include "ROOTUnitTestSupport.h"
++
+ TEST(RNTuple, RealWorld1)
+ {
+ ROOT::EnableImplicitMT();
+@@ -111,6 +113,17 @@ TEST(RNTuple, RandomAccess)
+ #if !defined(_MSC_VER) || defined(R__ENABLE_BROKEN_WIN_TESTS)
+ TEST(RNTuple, LargeFile)
+ {
++ ROOTUnitTestSupport::CheckDiagsRAII raii;
++ raii.optionalDiag(kWarning, "RIoUring",
++ "io_uring is unexpectedly not available because:", false);
++ raii.optionalDiag(kWarning, "RRawFileUnix",
++ "io_uring setup failed, falling back to blocking I/O in ReadV", true);
++
++ raii.optionalDiag(kWarning, "ROOT.NTuple",
++ "The RNTuple file format will change. Do not store real data with this version of RNTuple!", true);
++ raii.optionalDiag(kWarning, "ROOT.NTuple",
++ "Pre-release format version: ", false);
++
+ ROOT::EnableImplicitMT();
+ FileRaii fileGuard("test_large_file.root");
+
+--
+2.35.1
+
diff --git a/root-uring.patch b/root-uring.patch
deleted file mode 100644
index 129c38e..0000000
--- a/root-uring.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-diff --git a/io/io/src/RRawFileUnix.cxx b/io/io/src/RRawFileUnix.cxx
-index 829c5e4cb6..417c3adf30 100644
---- a/io/io/src/RRawFileUnix.cxx
-+++ b/io/io/src/RRawFileUnix.cxx
-@@ -115,26 +115,33 @@ void ROOT::Internal::RRawFileUnix::OpenImpl()
- void ROOT::Internal::RRawFileUnix::ReadVImpl(RIOVec *ioVec, unsigned int nReq)
- {
- #ifdef R__HAS_URING
-- if (RIoUring::IsAvailable()) {
-- RIoUring ring;
-- std::vector<RIoUring::RReadEvent> reads;
-- reads.reserve(nReq);
-- for (std::size_t i = 0; i < nReq; ++i) {
-- RIoUring::RReadEvent ev;
-- ev.fBuffer = ioVec[i].fBuffer;
-- ev.fOffset = ioVec[i].fOffset;
-- ev.fSize = ioVec[i].fSize;
-- ev.fFileDes = fFileDes;
-- reads.push_back(ev);
-+ thread_local bool uring_failed = false;
-+ if (!uring_failed) {
-+ try {
-+ RIoUring ring; // throws std::runtime_error
-+ std::vector<RIoUring::RReadEvent> reads;
-+ reads.reserve(nReq);
-+ for (std::size_t i = 0; i < nReq; ++i) {
-+ RIoUring::RReadEvent ev;
-+ ev.fBuffer = ioVec[i].fBuffer;
-+ ev.fOffset = ioVec[i].fOffset;
-+ ev.fSize = ioVec[i].fSize;
-+ ev.fFileDes = fFileDes;
-+ reads.push_back(ev);
-+ }
-+ ring.SubmitReadsAndWait(reads.data(), nReq);
-+ for (std::size_t i = 0; i < nReq; ++i) {
-+ ioVec[i].fOutBytes = reads.at(i).fOutBytes;
-+ }
-+ return;
- }
-- ring.SubmitReadsAndWait(reads.data(), nReq);
-- for (std::size_t i = 0; i < nReq; ++i) {
-- ioVec[i].fOutBytes = reads.at(i).fOutBytes;
-+ catch(const std::runtime_error &e) {
-+ Warning("RIoUring", "io_uring is unexpectedly not available because:\n%s", e.what());
-+ Warning("RRawFileUnix",
-+ "io_uring setup failed, falling back to blocking I/O in ReadV");
-+ uring_failed = true;
- }
-- return;
- }
-- Warning("RRawFileUnix",
-- "io_uring setup failed, falling back to default ReadV implementation");
- #endif
- RRawFile::ReadVImpl(ioVec, nReq);
- }
diff --git a/root-use-unique-filenames-in-fillrandom-tutorials.patch b/root-use-unique-filenames-in-fillrandom-tutorials.patch
new file mode 100644
index 0000000..724eb79
--- /dev/null
+++ b/root-use-unique-filenames-in-fillrandom-tutorials.patch
@@ -0,0 +1,25 @@
+From b781f954ac80cc227777992dcb4fbe1837c7e351 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Tue, 29 Mar 2022 15:44:17 +0200
+Subject: [PATCH] Use unique filenames in fillrandom.py and fillrandom.C
+
+---
+ tutorials/hist/fillrandom.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tutorials/hist/fillrandom.py b/tutorials/hist/fillrandom.py
+index d5eb3f6f38..4b1a94a37e 100644
+--- a/tutorials/hist/fillrandom.py
++++ b/tutorials/hist/fillrandom.py
+@@ -41,7 +41,7 @@ h1f.FillRandom("sqroot",10000)
+ h1f.Draw()
+ c1.Update()
+
+-f = ROOT.TFile("fillrandom.root","RECREATE")
++f = ROOT.TFile("fillrandom-py.root","RECREATE")
+ form1.Write()
+ sqroot.Write()
+ h1f.Write()
+--
+2.35.1
+
diff --git a/root.spec b/root.spec
index 3a305ae..4fbd388 100644
--- a/root.spec
+++ b/root.spec
@@ -17,9 +17,9 @@
%endif
%global python3_version_uscore %(tr . _ <<< "%{python3_version}")
-%if %{?fedora}%{!?fedora:0} >= 24 || %{?rhel}%{!?rhel:0} >= 8
-# Building the experimental ROOT 7 classes requires c++-14.
-# This is the default for gcc 6.1 and later.
+%if %{?fedora}%{!?fedora:0} >= 34 || %{?rhel}%{!?rhel:0} >= 9
+# Building the experimental ROOT 7 classes requires c++-17.
+# This is the default for gcc 11 and later.
%global root7 1
%else
%global root7 0
@@ -31,12 +31,27 @@
%global xrootd5 0
%endif
-%if %{?fedora}%{!?fedora:0} >= 35
-# The required __malloc_hook was removed from glibc 2.33.9000-48
-# The memstat module is deprecated and will be removed in root 6.26
-%global memstat 0
+%global webgui 1
+
+%if %{?rhel}%{!?rhel:0} == 9
+# GFAL2 not available in EPEL 9
+%global gfal2 0
+%else
+%global gfal2 1
+%endif
+
+%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
+# The SOFIE parser requires protobuf 3.0
+%global tmvasofieparser 1
%else
-%global memstat 1
+%global tmvasofieparser 0
+%endif
+
+%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9
+# DistRDF requires Python 3.7+
+%global distrdf 1
+%else
+%global distrdf 0
%endif
%if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8
@@ -53,18 +68,15 @@
%global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$
Name: root
-Version: 6.24.06
+Version: 6.26.00
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 6%{?dist}
+Release: 1%{?dist}
Summary: Numerical data analysis framework
License: LGPLv2+
URL: https://root.cern/
-# The upstream source is modified to exclude proprietary fonts:
-# 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}
+# The upstream source is modified to exclude proprietary fonts
+# See Source8 for how to create Source0
Source0: %{name}-%{version}.tar.xz
# Input data for the tests
Source1: %{name}-testfiles.tar.xz
@@ -79,94 +91,107 @@ Source6: application-x-root.png
# Instructions for setting up a python virtual environment
# for running the JupyROOT notebook on EPEL
Source7: JupyROOT-on-EPEL
+# Script to generate Source0
+Source8: %{name}-get-src.sh
# Use system fonts
Patch0: %{name}-fontconfig.patch
# Revert the removal of DataFrame for 32 bit architectures
+# https://github.com/root-project/root/pull/10300
Patch1: %{name}-32bit-dataframe.patch
# Unbundle gtest
+# Add builtin_gtest cmake option
+# Compatibility with older gtest
+# https://github.com/root-project/root/pull/10301
Patch2: %{name}-unbundle-gtest.patch
+Patch3: %{name}-old-gtest-compat.patch
# Reduce memory usage of build
# Do not link rootcling_stage1 and libCling in parallel
-Patch3: %{name}-memory-usage.patch
+Patch4: %{name}-memory-usage.patch
# Reduce memory usage during linking on ARM and x86 by generating
-# smaller debuginfo for the llmv libraries.
-# Fedora builders run out of memory with the default setting.
-Patch4: %{name}-memory-arm-x86.patch
+# smaller debuginfo for the llvm libraries
+# Fedora builders run out of memory with the default setting
+Patch5: %{name}-memory-arm-x86.patch
# Don't install minicern static library
-Patch5: %{name}-dont-install-minicern.patch
+Patch6: %{name}-dont-install-minicern.patch
# Do not export Python modules in CMake config
-Patch6: %{name}-no-export-python-modules.patch
-# Don't create documentation notebooks
-Patch7: %{name}-doc-no-notebooks.patch
-# Don't run tutorials that crash during doc generation
-Patch8: %{name}-doxygen-crash.patch
-# Compatibility with older gtest
-Patch9: %{name}-old-gtest-compat.patch
+Patch7: %{name}-no-export-python-modules.patch
# Run some test on 32 bit that upstream has disabled
-Patch10: %{name}-32bit-tests.patch
-# Workaround for initialization problems for PyROOT on
-# EPEL7 ppc64le
-# https://sft.its.cern.ch/jira/browse/ROOT-10622
-Patch11: %{name}-epel7-ppc64le-pyroot.patch
+Patch8: %{name}-32bit-tests.patch
# Use local static script and style files for JsMVA
-Patch12: %{name}-jsmva-static.patch
+Patch9: %{name}-jsmva-static.patch
+# Fix python bytecode compilation on EPEL 7
# Compatibility with older python versions (no f-strings)
-Patch13: %{name}-older-python.patch
-# Fix multicore tests when running on machines with few cores
-# https://github.com/root-project/root/pull/8068
-Patch14: %{name}-fix-multicore-tests-with-few-cores.patch
-# Reapply altivec fix lost in the LLVM 9 upgrade
-# https://github.com/root-project/root/pull/8069
-Patch15: %{name}-fix-ppc64le-compilation-with-gcc-10.patch
-# Actually request the use of the large code model for ppc64le
-# https://github.com/root-project/root/pull/8230
-Patch16: %{name}-ppc-codemodel.patch
-# Fix segfaults on ppc64le when using the large code model
-# PR by Vassil Vassilev based on upstream fix
-# https://reviews.llvm.org/D91983
-# https://github.com/root-project/root/pull/9380
-Patch17: %{name}-ppc-segfault-fix.patch
-# Fall back to blocking I/O if uring fails
-# Backported
-# - commit 691403b2cc504fd4e3e7227894023913014a61ff
-# - commit 956951ee2af83426d73ad72b2d966f9f1acbea83
-# - commit 16e64da11edf91fcf31c2fc474f573fca2ee863c
-# - commit 311a6822f9b0fd438c4210ed60617b45f2ddbe74
-Patch18: %{name}-uring.patch
-# Add missing classes in LinkDef.h files
-# Backported
-Patch19: %{name}-add-TTreeProcessorMP-to-LinkDef-file.patch
-Patch20: %{name}-add-RDisplay-to-LinkDef-file.patch
-Patch21: %{name}-add-RCutFlowReport-to-LinkDef-file.patch
-# Fix "pointer is null" warnings
-# Backported
-Patch22: %{name}-ptr-is-null-RooFit-TMVA.patch
-Patch23: %{name}-ptr-is-null-TStreamerInfo.patch
-# Fix two failing tests on s390x
-# https://github.com/root-project/root/pull/8826
-Patch24: %{name}-stress-s390x.patch
-# Doxygen warning fixes
-# Backported from upstream
-Patch25: root-doxygen-fix1.patch
-# Doxygen warning fixes
-# https://github.com/root-project/root/pull/9388
-Patch26: root-doxygen-fix2.patch
-# Don't run tutorials that crash during doc generation
-# EPEL 7 specific
-Patch27: %{name}-doxygen-crash-el7.patch
+Patch10: %{name}-older-python.patch
# Backported fix from LLVM upstream
-Patch28: %{name}-symbol-rewrite.patch
+Patch11: %{name}-symbol-rewrite.patch
# Backport gcc 12 fix from LLVM
# https://github.com/root-project/root/pull/9586
-Patch29: %{name}-fix-compilation-with-gcc-12.patch
+Patch12: %{name}-fix-compilation-with-gcc-12.patch
# Fix test failure on ppc64le and aarch64 with gcc 12
# https://github.com/root-project/root/pull/9601
-Patch30: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch
+Patch13: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch
+# Add #include <cstring> for std::memcpy
+# https://github.com/root-project/root/pull/10116
+Patch14: %{name}-missing-include.patch
+# Fixes for tmva-sofie test compilation
+# https://github.com/root-project/root/pull/10117
+Patch15: %{name}-blas-linking-and-ignore-prefix.patch
+# Move private declarations away from the public header file
+# https://github.com/root-project/root/pull/10145
+Patch16: %{name}-move-private-decl.patch
+# Fix test when long is 32 bits
+# https://github.com/root-project/root/pull/10302
+Patch17: %{name}-longlong.patch
+# Ignore warnings (uring and RooNaNPacker)
+# https://github.com/root-project/root/pull/10303
+Patch18: %{name}-uring-warn.patch
+Patch19: %{name}-endian-warn.patch
+# Always call WaitForInFlightClusters before checking cluster IDs
+# https://github.com/root-project/root/pull/10304
+Patch20: %{name}-ntuplewait.patch
+# NENTRIES is not always a multiple of the expected size
+# https://github.com/root-project/root/pull/10305
+Patch21: %{name}-dataframe-callback.patch
+# Add/remove namespaces from Linkdef
+# https://github.com/root-project/root/pull/10306
+Patch22: %{name}-namespace-sofie.patch
+Patch23: %{name}-namespace-roofit.patch
+Patch24: %{name}-namespace-pymva.patch
+# Use calls from Python directly in tutorial
+# https://github.com/root-project/root/pull/10307
+Patch25: %{name}-roofit-tutorial.patch
+# Byte swap values read from the protobuf raw data stream on
+# big endian architectures
+# https://github.com/root-project/root/pull/10308
+Patch26: %{name}-big-endian-byte-swap.patch
+# Avoid crashes due to static initialization order
+# https://github.com/root-project/root/pull/10309
+Patch27: %{name}-rcolor-static-init.patch
+# Avoid deleting TFormulas twice
+# https://github.com/root-project/root/pull/10310
+Patch28: %{name}-avoid-deleting-TFormulas-twice.patch
+# Use unique filenames in fillrandom.py and fillrandom.C
+# https://github.com/root-project/root/pull/10311
+Patch29: %{name}-use-unique-filenames-in-fillrandom-tutorials.patch
+# Limit the number of threads in TMVA CNN/DNN test to save memory
+# https://github.com/root-project/root/pull/10312
+Patch30: %{name}-tmva-threads.patch
+# Fix library link order
+# https://github.com/root-project/root/pull/10313
+Patch31: %{name}-core-base-test.patch
+# Backports
+Patch32: %{name}-roofit-overflow.patch
+Patch33: %{name}-make-dyld-based-library-search-behavior-default.patch
+Patch34: %{name}-fix-TMVA-tutorial-using-internally-python.patch
+Patch35: %{name}-threadsh1-avoid-heap-use-after-free.patch
-BuildRequires: make
%if %{?rhel}%{!?rhel:0} == 7
+BuildRequires: devtoolset-8-toolchain
BuildRequires: cmake3 >= 3.9
%else
+BuildRequires: gcc-c++
+BuildRequires: gcc-gfortran
+BuildRequires: make
BuildRequires: cmake >= 3.9
%endif
BuildRequires: libX11-devel
@@ -177,8 +202,8 @@ BuildRequires: fontconfig-devel
BuildRequires: freetype-devel
BuildRequires: fcgi-devel
BuildRequires: ftgl-devel
-BuildRequires: glew-devel
BuildRequires: gl2ps-devel
+BuildRequires: glew-devel
BuildRequires: pcre-devel
BuildRequires: zlib-devel
BuildRequires: xz-devel
@@ -200,8 +225,8 @@ BuildRequires: mysql-devel
%endif
BuildRequires: sqlite-devel
BuildRequires: unixODBC-devel
-BuildRequires: mesa-libGL-devel
-BuildRequires: mesa-libGLU-devel
+BuildRequires: libGL-devel
+BuildRequires: libGLU-devel
%if %{?fedora}%{!?fedora:0} >= 27 || %{?rhel}%{!?rhel:0} >= 8
BuildRequires: libpq-devel
%else
@@ -215,7 +240,7 @@ BuildRequires: python2-numpy
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: python%{python3_pkgversion}-setuptools
BuildRequires: python%{python3_pkgversion}-numpy
-%if %{root7}
+%if %{webgui}
%ifarch %{qt5_qtwebengine_arches}
BuildRequires: qt5-qtbase-devel
BuildRequires: qt5-qtwebengine-devel
@@ -232,22 +257,23 @@ BuildRequires: xrootd-client-devel >= 1:3.3.5
BuildRequires: xrootd-private-devel >= 1:3.3.5
%endif
BuildRequires: cfitsio-devel
-BuildRequires: davix-devel >= 0.2.8
+BuildRequires: davix-devel >= 0.6.4
+%if %{gfal2}
BuildRequires: gfal2-devel
+%endif
BuildRequires: R-Rcpp-devel
BuildRequires: R-RInside-devel
BuildRequires: readline-devel
%if %{tbb}
BuildRequires: tbb-devel >= 2018
%endif
+BuildRequires: libuuid-devel
BuildRequires: emacs
BuildRequires: emacs-el
-BuildRequires: gcc-c++
-BuildRequires: gcc-gfortran
BuildRequires: graphviz-devel
BuildRequires: expat-devel
BuildRequires: pythia8-devel >= 8.1.80
-%if %{?fedora}%{!?fedora:0} >= 33
+%if %{?fedora}%{!?fedora:0} >= 33 || %{?rhel}%{!?rhel:0} >= 9
BuildRequires: flexiblas-devel
# Required for FlexiBLAS support in FindBLAS.cmake
# (in cmake 3.19.0, backported to cmake 3.18.3-1 in Fedora)
@@ -259,17 +285,16 @@ BuildRequires: json-devel
%if %{?fedora}%{!?fedora:0}
BuildRequires: liburing-devel
%endif
-%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
+%if %{tmvasofieparser}
+BuildRequires: protobuf-devel >= 3.0
+%endif
+%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8
BuildRequires: python%{python3_pkgversion}-pandas
%endif
-BuildRequires: doxygen
-BuildRequires: graphviz
BuildRequires: yuicompressor
BuildRequires: perl-generators
BuildRequires: gtest-devel
BuildRequires: gmock-devel
-# Some of the tests call lsb_release
-BuildRequires: redhat-lsb-core
# Fonts
BuildRequires: font(freesans)
BuildRequires: font(freeserif)
@@ -340,16 +365,6 @@ Requires: %{name}-core = %{version}-%{release}
This package contains fonts used by ROOT that are not available in Fedora.
In particular it contains STIX version 0.9 that is used by TMathText.
-%package doc
-Summary: Documentation for the ROOT system
-BuildArch: noarch
-License: LGPLv2+ and GPLv2+ and BSD
-Requires: mathjax
-
-%description doc
-This package contains the automatically generated ROOT class
-documentation.
-
%package tutorial
Summary: ROOT tutorial scripts and test suite
BuildArch: noarch
@@ -422,8 +437,28 @@ Obsoletes: python%{?python3_other_pkgversion}-%{name} < 6.22.00
Obsoletes: python%{?python3_other_pkgversion}-jupyroot < 6.22.00
Obsoletes: python%{?python3_other_pkgversion}-jsmva < 6.22.00
%endif
-%if ! %{memstat}
-Obsoletes: %{name}-memstat < %{version}-%{release}
+Obsoletes: %{name}-memstat < 6.26.00
+Obsoletes: %{name}-montecarlo-vmc < 6.26.00
+Obsoletes: %{name}-doc < 6.26.00
+%if %{?rhel}%{!?rhel:0} == 8
+# Obsolete the ROOT 7 packages in EPEL 8
+# Minimum C++ version changed from 14 to 17
+Obsoletes: %{name}-graf-gpadv7 < 6.26.00
+Obsoletes: %{name}-graf-primitives < 6.26.00
+Obsoletes: %{name}-graf3d-eve7 < 6.26.00
+Obsoletes: %{name}-gui-browsable < 6.26.00
+Obsoletes: %{name}-gui-browserv7 < 6.26.00
+Obsoletes: %{name}-gui-canvaspainter < 6.26.00
+Obsoletes: %{name}-gui-fitpanelv7 < 6.26.00
+Obsoletes: %{name}-histv7 < 6.26.00
+Obsoletes: %{name}-hist-draw < 6.26.00
+Obsoletes: %{name}-tree-ntuple < 6.26.00
+%endif
+%if %{buildpy2}
+Obsoletes: python2-distrdf < 6.26.00
+%endif
+%if ! %{distrdf}
+Obsoletes: python%{python3_pkgversion}-distrdf < 6.26.00
%endif
%description core
@@ -449,10 +484,14 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release}
# not work with the system libraries. The bundled llvm and
# clang are compiled using -fvisibility=hidden, and are not
# visible outside of the libCling module.
-Requires: gcc-c++
-Requires: redhat-rpm-config
Provides: bundled(clang-libs)
Provides: bundled(llvm-libs)
+%if %{?rhel}%{!?rhel:0} == 7
+Requires: devtoolset-8-toolchain
+%else
+Requires: gcc-c++
+%endif
+Requires: redhat-rpm-config
Obsoletes: %{name}-cint7 < 5.26.00c
Obsoletes: %{name}-cint < 6.00.00
Obsoletes: %{name}-cintex < 6.00.00
@@ -516,17 +555,6 @@ Requires: %{name}-tmva = %{version}-%{release}
%description -n python2-jsmva
TMVA interface used by JupyROOT.
-
-%package -n python2-distrdf
-Summary: Distributed RDataFrame
-BuildArch: noarch
-%{?python_provide:%python_provide python2-distrdf}
-Requires: python2-%{name} = %{version}-%{release}
-Requires: %{name}-tree-dataframe = %{version}-%{release}
-
-%description -n python2-distrdf
-A layer on top of RDataFrame to enable distributed computations. It is
-a port of the previously known PyRDF python package.
%endif
%package -n python%{python3_pkgversion}-%{name}
@@ -573,6 +601,7 @@ Requires: %{name}-tmva = %{version}-%{release}
%description -n python%{python3_pkgversion}-jsmva
TMVA interface used by JupyROOT.
+%if %{distrdf}
%package -n python%{python3_pkgversion}-distrdf
Summary: Distributed RDataFrame
BuildArch: noarch
@@ -583,6 +612,7 @@ Requires: %{name}-tree-dataframe = %{version}-%{release}
%description -n python%{python3_pkgversion}-distrdf
A layer on top of RDataFrame to enable distributed computations. It is
a port of the previously known PyRDF python package.
+%endif
%package r
Summary: R interface for ROOT
@@ -956,6 +986,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release}
Requires: %{name}-io-xmlparser%{?_isa} = %{version}-%{release}
Requires: %{name}-matrix%{?_isa} = %{version}-%{release}
Requires: %{name}-roofit%{?_isa} = %{version}-%{release}
+Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release}
Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release}
Requires: %{name}-roostats%{?_isa} = %{version}-%{release}
Requires: %{name}-tree%{?_isa} = %{version}-%{release}
@@ -988,6 +1019,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release}
%description io-dcache
This package contains the dCache extension for ROOT.
+%if %{gfal2}
%package io-gfal
Summary: Grid File Access Library input/output library for ROOT
Requires: %{name}-core%{?_isa} = %{version}-%{release}
@@ -995,6 +1027,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release}
%description io-gfal
This package contains the Grid File Access Library extension for ROOT.
+%endif
%package io-sql
Summary: SQL input/output library for ROOT
@@ -1226,19 +1259,6 @@ Obsoletes: %{name}-tree-player < 6.14.00
%description vecops
This package contains a vector operation extension for ROOT.
-%if %{memstat}
-%package memstat
-Summary: Memory statistics tool for use with ROOT
-Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-hist%{?_isa} = %{version}-%{release}
-Requires: %{name}-io%{?_isa} = %{version}-%{release}
-Requires: %{name}-tree%{?_isa} = %{version}-%{release}
-
-%description memstat
-This package contains the memory statistics tool for debugging memory
-leaks and such.
-%endif
-
%package montecarlo-eg
Summary: Event generator library for ROOT
Requires: %{name}-core%{?_isa} = %{version}-%{release}
@@ -1261,17 +1281,6 @@ package provide the ROOT user with transparent interface to the Pythia
(version 8) event generators for hadronic interactions. If the term
"hadronic" does not ring any bells, this package is not for you.
-%package montecarlo-vmc
-Summary: Virtual Monte-Carlo (simulation) library for ROOT
-Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-geom%{?_isa} = %{version}-%{release}
-Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
-Requires: %{name}-montecarlo-eg%{?_isa} = %{version}-%{release}
-Requires: %{name}-physics%{?_isa} = %{version}-%{release}
-
-%description montecarlo-vmc
-This package contains the VMC library for ROOT.
-
%package net
Summary: Net library for ROOT
Requires: %{name}-core%{?_isa} = %{version}-%{release}
@@ -1298,7 +1307,7 @@ This package contains the basic authentication algorithms used by ROOT.
%package net-davix
Summary: Davix extension for ROOT
-Requires: davix-libs%{?_isa} >= 0.2.8
+Requires: davix-libs%{?_isa} >= 0.6.4
Requires: %{name}-core%{?_isa} = %{version}-%{release}
Requires: %{name}-io%{?_isa} = %{version}-%{release}
@@ -1456,6 +1465,26 @@ suitable for adoption in different disciplines as well.
This package contains the RooFit toolkit classes.
+%package roofit-common
+Summary: ROOT extension for modeling expected distributions - common
+License: BSD
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+
+%description roofit-common
+The RooFit packages provide a toolkit for modeling the expected
+distribution of events in a physics analysis. Models can be used to
+perform likelihood fits, produce plots, and generate "toy Monte
+Carlo" samples for various studies. The RooFit tools are integrated
+with the object-oriented and interactive ROOT graphical environment.
+
+RooFit has been developed for the BaBar collaboration, a high energy
+physics experiment at the Stanford Linear Accelerator Center, and is
+primarily targeted to the high-energy physicists using the ROOT
+analysis environment, but the general nature of the package make it
+suitable for adoption in different disciplines as well.
+
+This package contains the RooFit common classes.
+
%package roofit-core
Summary: ROOT extension for modeling expected distributions - core
License: BSD
@@ -1467,7 +1496,9 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release}
Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
Requires: %{name}-matrix%{?_isa} = %{version}-%{release}
Requires: %{name}-minuit%{?_isa} = %{version}-%{release}
+Requires: %{name}-minuit2%{?_isa} = %{version}-%{release}
Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release}
+Requires: %{name}-roofit-common%{?_isa} = %{version}-%{release}
Requires: %{name}-tree%{?_isa} = %{version}-%{release}
# Package split / Library split (from roofit)
Obsoletes: %{name}-roofit < 6.20.00
@@ -1516,8 +1547,9 @@ This package contains RooFit classes that use the mathmore library.
%package roofit-batchcompute
Summary: Optimized computation functions for PDFs
Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
-Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-io%{?_isa} = %{version}-%{release}
+Requires: %{name}-multiproc%{?_isa} = %{version}-%{release}
+Requires: %{name}-net%{?_isa} = %{version}-%{release}
%description roofit-batchcompute
While fitting, a significant amount of time and processing power is
@@ -1532,6 +1564,43 @@ multiple times for different vector instuction set architectures and
the optimal code is executed during runtime, as a result of an
automatic hardware detection mechanism that this library contains.
+%package roofit-dataframe-helpers
+Summary: RooFit DaraFrame helpers
+License: BSD
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+
+%description roofit-dataframe-helpers
+The RooFit packages provide a toolkit for modeling the expected
+distribution of events in a physics analysis. Models can be used to
+perform likelihood fits, produce plots, and generate "toy Monte
+Carlo" samples for various studies. The RooFit tools are integrated
+with the object-oriented and interactive ROOT graphical environment.
+
+RooFit has been developed for the BaBar collaboration, a high energy
+physics experiment at the Stanford Linear Accelerator Center, and is
+primarily targeted to the high-energy physicists using the ROOT
+analysis environment, but the general nature of the package make it
+suitable for adoption in different disciplines as well.
+
+This package contains DaraFrame helper classes for RooFit
+
+%package roofit-hs3
+Summary: RooFit HS3
+License: BSD
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release}
+Requires: %{name}-roofit%{?_isa} = %{version}-%{release}
+Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-roostats%{?_isa} = %{version}-%{release}
+
+%description roofit-hs3
+When using RooFit, statistical models can be conveniently handled and
+stored as a RooWorkspace. However, for the sake of interoperability
+with other statistical frameworks, and also ease of manipulation, it
+may be useful to store statistical models in text form. This library
+sets out to achieve exactly that, exporting to and importing from JSON
+and YML.
+
%package roostats
Summary: Statistical tools built on top of RooFit
License: BSD
@@ -1639,6 +1708,7 @@ Summary: Toolkit for multivariate data analysis (Python)
License: BSD
Requires: %{name}-core%{?_isa} = %{version}-%{release}
Requires: %{name}-tmva%{?_isa} = %{version}-%{release}
+Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release}
Requires: python%{python3_pkgversion}-numpy
%description tmva-python
@@ -1655,6 +1725,27 @@ Requires: %{name}-tmva%{?_isa} = %{version}-%{release}
%description tmva-r
R integration with TMVA.
+%package tmva-sofie
+Summary: ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit)
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+
+%description tmva-sofie
+ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit)
+generates C++ functions easily invokable for the fast inference of
+trained neural network models. It takes ONNX model files as inputs and
+produces C++ header files that can be included and utilized in a
+"plug-and-go" style.
+
+%if %{tmvasofieparser}
+%package tmva-sofie-parser
+Summary: ROOT/TMVA SOFIE Parsers
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release}
+
+%description tmva-sofie-parser
+Parsers for ROOT/TMVA SOFIE
+%endif
+
%package tmva-gui
Summary: Toolkit for multivariate data analysis GUI
License: BSD
@@ -1692,6 +1783,7 @@ Requires: %{name}-tree%{?_isa} = %{version}-%{release}
Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release}
%endif
Requires: %{name}-tree-player%{?_isa} = %{version}-%{release}
+Requires: %{name}-vecops%{?_isa} = %{version}-%{release}
# Library split (tree-dataframe and vecops from tree-player)
Obsoletes: %{name}-tree-player < 6.14.00
@@ -1765,6 +1857,41 @@ Requires: jupyter-notebook
%description notebook
Javascript and style files for the Jupyter ROOT Notebook.
+%if %{webgui}
+%package gui-webdisplay
+Summary: Web display (ROOT 7)
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
+Requires: %{name}-net-http%{?_isa} = %{version}-%{release}
+
+%description gui-webdisplay
+This package contains a web display extension for ROOT 7.
+
+%ifarch %{qt5_qtwebengine_arches}
+%package gui-qt5webdisplay
+Summary: Qt5 Web display (ROOT 7)
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release}
+Requires: %{name}-net-http%{?_isa} = %{version}-%{release}
+
+%description gui-qt5webdisplay
+This package contains a Qt5 web display extension for ROOT 7.
+%endif
+
+%package gui-webgui6
+Summary: Web based GUI for ROOT
+Requires: %{name}-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-graf%{?_isa} = %{version}-%{release}
+Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release}
+Requires: %{name}-gui%{?_isa} = %{version}-%{release}
+Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release}
+Requires: %{name}-hist%{?_isa} = %{version}-%{release}
+Requires: %{name}-io%{?_isa} = %{version}-%{release}
+
+%description gui-webgui6
+This package provides a Web based GUI for ROOT.
+%endif
+
%if %{root7}
%package graf-gpadv7
Summary: Canvas and pad library for ROOT (ROOT 7)
@@ -1787,6 +1914,7 @@ Requires: %{name}-core%{?_isa} = %{version}-%{release}
Requires: %{name}-geom%{?_isa} = %{version}-%{release}
Requires: %{name}-graf%{?_isa} = %{version}-%{release}
Requires: %{name}-graf3d-csg%{?_isa} = %{version}-%{release}
+Requires: %{name}-gui-browserv7%{?_isa} = %{version}-%{release}
Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release}
Requires: %{name}-hist%{?_isa} = %{version}-%{release}
Requires: %{name}-io%{?_isa} = %{version}-%{release}
@@ -1808,6 +1936,7 @@ Requires: %{name}-hist%{?_isa} = %{version}-%{release}
Requires: %{name}-hist-draw%{?_isa} = %{version}-%{release}
Requires: %{name}-io%{?_isa} = %{version}-%{release}
Requires: %{name}-tree%{?_isa} = %{version}-%{release}
+Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release}
%description gui-browsable
This package contains GUI browsable components for ROOT 7.
@@ -1815,9 +1944,9 @@ This package contains GUI browsable components for ROOT 7.
%package gui-browserv7
Summary: Browser (ROOT 7)
Requires: %{name}-core%{?_isa} = %{version}-%{release}
+Requires: %{name}-geom%{?_isa} = %{version}-%{release}
Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release}
Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release}
-Requires: %{name}-geom%{?_isa} = %{version}-%{release}
Requires: %{name}-graf3d-eve7%{?_isa} = %{version}-%{release}
Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release}
Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release}
@@ -1850,39 +1979,6 @@ Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
This package contains a library to show a pop-up dialog when fitting
various kinds of data.
-%ifarch %{qt5_qtwebengine_arches}
-%package gui-qt5webdisplay
-Summary: Qt5 Web display (ROOT 7)
-Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release}
-Requires: %{name}-net-http%{?_isa} = %{version}-%{release}
-
-%description gui-qt5webdisplay
-This package contains a Qt5 web display extension for ROOT 7.
-%endif
-
-%package gui-webdisplay
-Summary: Web display (ROOT 7)
-Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
-Requires: %{name}-net-http%{?_isa} = %{version}-%{release}
-
-%description gui-webdisplay
-This package contains a web display extension for ROOT 7.
-
-%package gui-webgui6
-Summary: Web based GUI for ROOT
-Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-graf%{?_isa} = %{version}-%{release}
-Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release}
-Requires: %{name}-gui%{?_isa} = %{version}-%{release}
-Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release}
-Requires: %{name}-hist%{?_isa} = %{version}-%{release}
-Requires: %{name}-io%{?_isa} = %{version}-%{release}
-
-%description gui-webgui6
-This package provides a Web based GUI for ROOT.
-
%package histv7
Summary: Histogram library for ROOT (ROOT 7)
Requires: %{name}-core%{?_isa} = %{version}-%{release}
@@ -1902,6 +1998,7 @@ This package contains an histogram drawing extension for ROOT 7.
Summary: Ntuple (ROOT 7)
Requires: %{name}-core%{?_isa} = %{version}-%{release}
Requires: %{name}-io%{?_isa} = %{version}-%{release}
+Requires: %{name}-vecops%{?_isa} = %{version}-%{release}
%description tree-ntuple
This package contains an ntuple extension for ROOT 7.
@@ -1937,12 +2034,15 @@ This package contains an ntuple extension for ROOT 7.
%patch24 -p1
%patch25 -p1
%patch26 -p1
-%if %{?rhel}%{!?rhel:0} == 7
%patch27 -p1
-%endif
%patch28 -p1
%patch29 -p1
%patch30 -p1
+%patch31 -p1
+%patch32 -p1
+%patch33 -p1
+%patch34 -p1
+%patch35 -p1
# Remove bundled sources in order to be sure they are not used
# * afterimage
@@ -1959,7 +2059,9 @@ rm -rf builtins/nlohmann
rm -rf builtins/openssl
rm -rf builtins/pcre
rm -rf builtins/tbb
+rm -rf builtins/xrootd
rm -rf builtins/xxhash
+rm -rf builtins/zeromq
rm -rf builtins/zlib
rm -rf builtins/zstd
# * lzma
@@ -1969,40 +2071,26 @@ rm graf3d/gl/src/gl2ps.cxx graf3d/gl/src/gl2ps/gl2ps.h
# * unuran
rm -rf math/unuran/src/*.tar.gz
# * xrootd-private-devel headers
-rm -rf proof/xrdinc
+rm -rf proof/xrdinc/*
# * x11 extension headers
rm -rf graf2d/x11/inc/X11
# * mathjax
rm -rf documentation/doxygen/mathjax.tar.gz
-sed /mathjax.tar.gz/d -i documentation/doxygen/Makefile
-%if %{root7}
-# * string_view (<experimental/string_view> requires c++-14)
-rm core/foundation/inc/ROOT/libcpp_string_view.h \
- core/foundation/inc/ROOT/RWrap_libcpp_string_view.h
-sed /RWrap_libcpp_string_view.h/d -i build/unix/module.modulemap
-%endif
# * jsroot
-rm -rf js/*
+rm -rf js/[^f]* js/files/draw.htm js/files/online.htm
# Remove unsupported man page macros
sed -e '/^\.UR/d' -e '/^\.UE/d' -i man/man1/*
-# Work around missing libraries in Fedora's gmock packaging < 1.8.0
-if [ ! -r %{_libdir}/libgmock.so ] ; then
-mkdir googlemock
-pushd googlemock
-g++ %{optflags} -DGTEST_HAS_PTHREAD=1 -c -o gmock-all.o /usr/src/gmock/gmock-all.cc
-ar rv libgmock.a gmock-all.o
-g++ %{optflags} -DGTEST_HAS_PTHREAD=1 -c -o gmock_main.o /usr/src/gmock/gmock_main.cc
-ar rv libgmock_main.a gmock_main.o
-popd
-fi
-
# Remove pre-minified script and style files
rm etc/notebook/JsMVA/js/*.min.js
rm etc/notebook/JsMVA/css/*.min.css
%build
+%if %{?rhel}%{!?rhel:0} == 7
+. /opt/rh/devtoolset-8/enable
+%endif
+
# This package triggers a fault in LLVM when LTO is enabled. Until LLVM
# is analyzed and fixed, disable LTO
%define _lto_cflags %{nil}
@@ -2033,6 +2121,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dbuiltin_cfitsio:BOOL=OFF \
-Dbuiltin_clang:BOOL=ON \
-Dbuiltin_cling:BOOL=ON \
+ -Dbuiltin_cppzmq:BOOL=OFF \
-Dbuiltin_davix:BOOL=OFF \
-Dbuiltin_fftw3:BOOL=OFF \
-Dbuiltin_freetype:BOOL=OFF \
@@ -2040,6 +2129,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dbuiltin_gl2ps:BOOL=OFF \
-Dbuiltin_glew:BOOL=OFF \
-Dbuiltin_gsl:BOOL=OFF \
+ -Dbuiltin_gtest:BOOL=OFF \
-Dbuiltin_llvm:BOOL=ON \
-Dbuiltin_lz4:BOOL=OFF \
-Dbuiltin_lzma:BOOL=OFF \
@@ -2054,6 +2144,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dbuiltin_veccore:BOOL=OFF \
-Dbuiltin_xrootd:BOOL=OFF \
-Dbuiltin_xxhash:BOOL=OFF \
+ -Dbuiltin_zeromq:BOOL=OFF \
-Dbuiltin_zlib:BOOL=OFF \
-Dbuiltin_zstd:BOOL=OFF \
-Dalien:BOOL=OFF \
@@ -2065,14 +2156,8 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dclad:BOOL=OFF \
-Dcocoa:BOOL=OFF \
-Dcuda:BOOL=OFF \
-%if %{root7}
- -Droot7:BOOL=ON \
- -Dwebgui:BOOL=ON \
-%else
- -Droot7:BOOL=OFF \
- -Dwebgui:BOOL=OFF \
-%endif
-Dcxxmodules:BOOL=OFF \
+ -Ddaos:BOOL=OFF \
-Ddataframe:BOOL=ON \
-Ddavix:BOOL=ON \
-Ddcache:BOOL=ON \
@@ -2084,7 +2169,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dfitsio:BOOL=ON \
-Dfortran:BOOL=ON \
-Dgdml:BOOL=ON \
+%if %{gfal2}
-Dgfal:BOOL=ON \
+%else
+ -Dgfal:BOOL=OFF \
+%endif
-Dgsl_shared:BOOL=ON \
-Dgviz:BOOL=ON \
-Dhttp:BOOL=ON \
@@ -2097,11 +2186,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dlibcxx:BOOL=OFF \
-Dmathmore:BOOL=ON \
-Dmemory_termination:BOOL=OFF \
-%if %{memstat}
- -Dmemstat:BOOL=ON \
-%else
- -Dmemstat:BOOL=OFF \
-%endif
-Dminuit2:BOOL=ON \
-Dmlp:BOOL=ON \
-Dmonalisa:BOOL=OFF \
@@ -2120,8 +2204,16 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
%else
-Dqt5web:BOOL=OFF \
%endif
+ -Dqt6web:BOOL=OFF \
-Dr:BOOL=ON \
-Droofit:BOOL=ON \
+ -Droofit_multiprocess:BOOL=OFF \
+ -Droofit_hs3_ryml:BOOL=OFF \
+%if %{root7}
+ -Droot7:BOOL=ON \
+%else
+ -Droot7:BOOL=OFF \
+%endif
-Drpath:BOOL=OFF \
-Druby:BOOL=OFF \
-Druntime_cxxmodules:BOOL=OFF \
@@ -2141,6 +2233,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dtmva-gpu:BOOL=OFF \
-Dtmva-pymva:BOOL=ON \
-Dtmva-rmva:BOOL=ON \
+%if %{tmvasofieparser}
+ -Dtmva-sofie:BOOL=ON \
+%else
+ -Dtmva-sofie:BOOL=OFF \
+%endif
-Dunuran:BOOL=ON \
%if %{?fedora}%{!?fedora:0}
-During:BOOL=ON \
@@ -2151,7 +2248,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dvdt:BOOL=OFF \
-Dveccore:BOOL=OFF \
-Dvecgeom:BOOL=OFF \
- -Dvmc:BOOL=ON \
+%if %{webgui}
+ -Dwebgui:BOOL=ON \
+%else
+ -Dwebgui:BOOL=OFF \
+%endif
-Dx11:BOOL=ON \
-Dxml:BOOL=ON \
-Dxrootd:BOOL=ON \
@@ -2162,6 +2263,8 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
%endif
-Dfail-on-missing:BOOL=ON \
-Dtesting:BOOL=ON \
+ -Dtest_distrdf_pyspark:BOOL=OFF \
+ -Dtest_distrdf_dask:BOOL=OFF \
-Dclingtest:BOOL=OFF \
-Dcoverage:BOOL=OFF \
-Droottest:BOOL=OFF \
@@ -2243,7 +2346,6 @@ rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python2_version_uscore}.so
mkdir -p %{buildroot}%{python2_sitelib}
cp -pr %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python2_sitelib}
-cp -pr %{buildroot}%{_libdir}/%{name}/DistRDF %{buildroot}%{python2_sitelib}
# Create .egg-info files so that rpm auto-generates provides
echo 'Name: ROOT' > \
@@ -2258,10 +2360,6 @@ echo 'Name: JsMVA' > \
%{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info
echo 'Version: %{version}' >> \
%{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info
-echo 'Name: DistRDF' > \
- %{buildroot}%{python2_sitelib}/DistRDF-%{version}.egg-info
-echo 'Version: %{version}' >> \
- %{buildroot}%{python2_sitelib}/DistRDF-%{version}.egg-info
%endif
@@ -2290,7 +2388,9 @@ rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so
mkdir -p %{buildroot}%{python3_sitelib}
mv %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python3_sitelib}
+%if %{distrdf}
mv %{buildroot}%{_libdir}/%{name}/DistRDF %{buildroot}%{python3_sitelib}
+%endif
# Create .egg-info files so that rpm auto-generates provides
echo 'Name: ROOT' > \
@@ -2305,10 +2405,12 @@ echo 'Name: JsMVA' > \
%{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info
echo 'Version: %{version}' >> \
%{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info
+%if %{distrdf}
echo 'Name: DistRDF' > \
%{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info
echo 'Version: %{version}' >> \
%{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info
+%endif
# Put jupyter stuff in the right places
mkdir -p %{buildroot}%{_datadir}/jupyter/kernels
@@ -2398,11 +2500,14 @@ pushd %{buildroot}%{_datadir}/%{name}/plugins
rm TBrowserImp/P030_RWebBrowserImp.C
%endif
rm TDataSetManager/P020_TDataSetManagerAliEn.C
+%if ! %{gfal2}
+rm TFile/P050_TGFALFile.C
+%endif
rm TFile/P070_TAlienFile.C
rm TGLManager/P020_TGWin32GLManager.C
rm TGLManager/P030_TGOSXGLManager.C
rm TGrid/P010_TAlien.C
-%if ! %{root7}
+%if ! %{webgui}
rm TGuiFactory/P030_TWebGuiFactory.C
%endif
%if %{xrootd5}
@@ -2429,9 +2534,10 @@ rmdir TSlave
rmdir TVirtualGeoConverter
popd
-# Replace bundled jsroot with symlink to system version
-rmdir %{buildroot}%{_datadir}/%{name}/js
-ln -s /usr/share/javascript/jsroot %{buildroot}%{_datadir}/%{name}/js
+# Replace bundled jsroot with symlinks to system version
+for x in img libs scripts style files/draw.htm files/online.htm ; do
+ ln -s /usr/share/javascript/jsroot/$x %{buildroot}%{_datadir}/%{name}/js/$x
+done
# Create ldconfig configuration
mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d
@@ -2458,30 +2564,6 @@ cp -p interpreter/llvm/src/CREDITS.TXT interpreter/llvm/src/llvm-CREDITS.TXT
cp -p interpreter/llvm/src/LICENSE.TXT interpreter/llvm/src/llvm-LICENSE.TXT
cp -p interpreter/llvm/src/README.txt interpreter/llvm/src/llvm-README.txt
-# Generate documentation
-pushd documentation/doxygen
-mkdir -p doc/html
-ln -s /usr/share/javascript/mathjax doc/html/mathjax
-ln -s ../../files files
-for x in df014_CsvDataSource_MuRun2010B_cpp.csv \
- df014_CsvDataSource_MuRun2010B_py.csv \
- df015_CsvDataSource_MuRun2010B.csv ; do
- ln -sf ../../files/tutorials/df014_CsvDataSource_MuRun2010B.csv $x
-done
-# Create the py-hsimple.root file in advance (needed as input)
-ROOTIGNOREPREFIX=1 PATH=${PWD}/../../%{_vpath_builddir}/bin:${PATH} \
- ROOTSYS=${PWD}/../../%{_vpath_builddir} \
- LD_LIBRARY_PATH=${PWD}/../../%{_vpath_builddir}/lib \
- PYTHONPATH=${PWD}/../../%{_vpath_builddir}/lib \
- %{__python3} ../../tutorials/pyroot/hsimple.py
-ROOTIGNOREPREFIX=1 PATH=${PWD}/../../%{_vpath_builddir}/bin:${PATH} \
- ROOTSYS=${PWD}/../../%{_vpath_builddir} \
- LD_LIBRARY_PATH=${PWD}/../../%{_vpath_builddir}/lib \
- PYTHONPATH=${PWD}/../../%{_vpath_builddir}/lib \
- make DOXYGEN_OUTPUT_DIRECTORY=${PWD}/doc PYTHON_EXECUTABLE=%{__python3}
-mv doc/html %{buildroot}%{_pkgdocdir}/html
-popd
-
# Create includelist files ...
for f in `find %{_vpath_builddir} -name cmake_install.cmake -a '!' -path '*/llvm/*'` ; do
l=`sed 's!%{_vpath_builddir}/\(.*\)/cmake_install.cmake!includelist-\1!' <<< $f`
@@ -2507,6 +2589,10 @@ cat includelist-net-netx >> includelist-netx
%endif
%check
+%if %{?rhel}%{!?rhel:0} == 7
+. /opt/rh/devtoolset-8/enable
+%endif
+
pushd %{_vpath_builddir}
pushd test
ln -s ../../files files
@@ -2525,6 +2611,15 @@ popd
pushd tmva/tmva/test/envelope
ln -s ../../../../../files files
popd
+
+# Some of the tests call lsb_release -d -s
+# Provide a replacement script instead of build requiring redhat-lsb-core
+cat > bin/lsb_release << EOF
+#! /bin/sh
+cat /etc/redhat-release
+EOF
+chmod +x bin/lsb_release
+
# Exclude some tests that can not be run
#
# - test-stressIOPlugins-*
@@ -2545,8 +2640,13 @@ popd
# reads sqlite data over network:
# http://root.cern.ch/files/root_download_stats.sqlite
#
-# - gtest-tree-treeplayer-test-treeprocessormt-remotefiles
+# - tutorial-dataframe-df033_Describe-py
# - tutorial-dataframe-df102_NanoAODDimuonAnalysis(-py)?
+# reads input data over network:
+# root://eospublic.cern.ch//eos/opendata/cms/derived-data/
+# AOD2NanoAODOutreachTool/Run2012BC_DoubleMuParked_Muons.root
+#
+# - gtest-tree-treeplayer-test-treeprocessormt-remotefiles
# - tutorial-dataframe-df103_NanoAODHiggsAnalysis(-py)?
# reads input data over network:
# root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/
@@ -2555,12 +2655,14 @@ popd
# - tutorial-dataframe-df105_WBosonAnalysis-py
# - tutorial-dataframe-df106_HiggsToFourLeptons-py
# - tutorial-dataframe-df107_SingleTopAnalysis-py
+# - tutorial-rcanvas-df104-py
+# - tutorial-rcanvas-df105-py
# reads input data over network:
# root://eospublic.cern.ch//eos/opendata/atlas/OutreachDatasets/2020-01-22/
#
-# - tutorial-v7-climate-global_temperatures
+# - tutorial-v7-global_temperatures.cxx
# reads input data over network
-# http://root.cern./files/tutorials/GlobalLandTemperaturesByCity.csv
+# http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv
#
# - tutorial-v7-ntuple-ntpl003_lhcbOpenData
# reads input data over network
@@ -2570,13 +2672,13 @@ popd
# reads input data over network
# http://root.cern.ch/files/NanoAOD_DoubleMuon_CMS2011OpenData.root (1.5 GB)
#
-# - tutorial-v7-line.cxx
-# requires a web browser (and js-jsroot) to render javascript graphics
-#
# - gtest-net-davix-test-RRawFileDavix
# reads input file over network
# http://root.cern.ch/files/davix.test
#
+# - gtest-net-netxng-test-RRawFileNetXNG
+# root://eospublic.cern.ch/eos/root-eos/xrootd.test
+#
# - gtest-tmva-tmva-test-rreader
# - gtest-tmva-tmva-test-rstandardscaler
# - tutorial-tmva-tmva003_RReader
@@ -2593,6 +2695,9 @@ popd
# - test-import-numba
# - tutorial-pyroot-pyroot004_NumbaDeclare-py
# these tests require the numba python module which is not available
+#
+# - test-webgui-ping
+# error: Cannot display window in native
excluded="\
test-stressIOPlugins|\
tutorial-dataframe-df101_h1Analysis|\
@@ -2603,18 +2708,21 @@ tutorial-multicore-mp104_processH1|\
tutorial-multicore-mp105_processEntryList|\
tutorial-multicore-imt101_parTreeProcessing|\
tutorial-dataframe-df..._SQlite|\
-gtest-tree-treeplayer-test-treeprocessormt-remotefiles|\
+tutorial-dataframe-df033_Describe-py|\
tutorial-dataframe-df102_NanoAODDimuonAnalysis|\
+gtest-tree-treeplayer-test-treeprocessormt-remotefiles|\
tutorial-dataframe-df103_NanoAODHiggsAnalysis|\
tutorial-dataframe-df104_HiggsToTwoPhotons-py|\
tutorial-dataframe-df105_WBosonAnalysis-py|\
tutorial-dataframe-df106_HiggsToFourLeptons-py|\
tutorial-dataframe-df107_SingleTopAnalysis-py|\
-tutorial-v7-climate-global_temperatures|\
+tutorial-rcanvas-df104-py|\
+tutorial-rcanvas-df105-py|\
+tutorial-v7-global_temperatures.cxx|\
tutorial-v7-ntuple-ntpl003_lhcbOpenData|\
tutorial-v7-ntuple-ntpl004_dimuon|\
-tutorial-v7-line.cxx|\
gtest-net-davix-test-RRawFileDavix|\
+gtest-net-netxng-test-RRawFileNetXNG|\
gtest-tmva-tmva-test-rreader|\
gtest-tmva-tmva-test-rstandardscaler|\
tutorial-tmva-tmva003_RReader|\
@@ -2623,107 +2731,31 @@ tutorial-tmva-tmva103_Application|\
pyunittests-pyroot-dependency-versions|\
pyunittests-pyroot-numbadeclare|\
test-import-numba|\
-tutorial-pyroot-pyroot004_NumbaDeclare-py"
-
-# - tutorial-v7-concurrentfill.cxx
-# - tutorial-v7-draw.cxx
-# - tutorial-v7-draw_frame.cxx
-# - tutorial-v7-draw_legend.cxx
-# - tutorial-v7-draw_mt.cxx
-# - tutorial-v7-draw_rh1.cxx
-# - tutorial-v7-draw_rh1_large.cxx
-# - tutorial-v7-draw_rh2.cxx
-# - tutorial-v7-draw_rh2_colz.cxx
-# - tutorial-v7-draw_rh2_large.cxx
-# - tutorial-v7-draw_rh3.cxx
-# - tutorial-v7-draw_rh3_large.cxx
-# - tutorial-v7-draw_subpads.cxx
-# - tutorial-v7-histops.cxx
-# - tutorial-v7-perf.cxx
-# - tutorial-v7-perfcomp.cxx
-# - tutorial-v7-simple.cxx
-# Fails with "already deserialized this template specialization"
-# https://github.com/root-project/root/issues/8073
-excluded="${excluded}|\
-tutorial-v7-concurrentfill.cxx|\
-tutorial-v7-draw.cxx|\
-tutorial-v7-draw_frame.cxx|\
-tutorial-v7-draw_legend.cxx|\
-tutorial-v7-draw_mt.cxx|\
-tutorial-v7-draw_rh1.cxx|\
-tutorial-v7-draw_rh1_large.cxx|\
-tutorial-v7-draw_rh2.cxx|\
-tutorial-v7-draw_rh2_colz.cxx|\
-tutorial-v7-draw_rh2_large.cxx|\
-tutorial-v7-draw_rh3.cxx|\
-tutorial-v7-draw_rh3_large.cxx|\
-tutorial-v7-draw_subpads.cxx|\
-tutorial-v7-histops.cxx|\
-tutorial-v7-perf.cxx|\
-tutorial-v7-perfcomp.cxx|\
-tutorial-v7-simple.cxx"
+tutorial-pyroot-pyroot004_NumbaDeclare-py|\
+test-webgui-ping"
-%if %{?rhel}%{!?rhel:0} == 7
+%if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 )
# - test-import-pandas
# - tutorial-dataframe-df026_AsNumpyArrays-py
+# - tutorial-roofit-rf409_NumPyPandasToRooFit-py
# requires the pandas python module which is not available in EPEL 7
-#
-# - tutorial-multicore-mp001_fillHistos
-# - tutorial-multicore-mp101_fillNtuples
-# - tutorial-multicore-mp102_readNtuplesFillHistosAndFit
-# - tutorial-multicore-mp201_parallelHistoFill
-# fails intermittently on EPEL 7 with the error
-# symbol '_Z6MPRecvP7TSocket' unresolved while linking
-# symbol '_Z6MPSendP7TSocketj' unresolved while linking
+# or EPEL 9
excluded="${excluded}|\
test-import-pandas|\
tutorial-dataframe-df026_AsNumpyArrays-py|\
-tutorial-multicore-mp001_fillHistos|\
-tutorial-multicore-mp101_fillNtuples|\
-tutorial-multicore-mp102_readNtuplesFillHistosAndFit|\
-tutorial-multicore-mp201_parallelHistoFill"
+tutorial-roofit-rf409_NumPyPandasToRooFit-py"
%endif
%ifarch %{ix86} %{arm}
+%if %{?fedora}%{!?fedora:0} <= 35
# Tests failing on 32 bit architectures (dataframe)
-# A bit random - not all the tests fail every time...
-# - gtest-tree-dataframe-test-dataframe-cache
-# - gtest-tree-dataframe-test-dataframe-callbacks
-# - gtest-tree-dataframe-test-dataframe-colnames
-# - gtest-tree-dataframe-test-dataframe-concurrency
-# - gtest-tree-dataframe-test-dataframe-display
-# - gtest-tree-dataframe-test-dataframe-friends
-# - gtest-tree-dataframe-test-dataframe-helpers
-# - gtest-tree-dataframe-test-dataframe-interface
-# - gtest-tree-dataframe-test-dataframe-leaves
-# - gtest-tree-dataframe-test-dataframe-ranges
-# - gtest-tree-dataframe-test-dataframe-regression
-# - gtest-tree-dataframe-test-dataframe-simple
-# - gtest-tree-dataframe-test-dataframe-snapshot
-# - gtest-tree-dataframe-test-dataframe-vecops
-# - gtest-tree-dataframe-test-datasource-csv
-# - gtest-tree-dataframe-test-datasource-more
-# - gtest-tree-dataframe-test-datasource-sqlite
-# - gtest-tree-dataframe-test-datasource-trivial
+#
+# - gtest-tree-dataframe-test-dataframe-*
+# - gtest-tree-dataframe-test-datasource-*
excluded="${excluded}|\
-gtest-tree-dataframe-test-dataframe-cache|\
-gtest-tree-dataframe-test-dataframe-callbacks|\
-gtest-tree-dataframe-test-dataframe-colnames|\
-gtest-tree-dataframe-test-dataframe-concurrency|\
-gtest-tree-dataframe-test-dataframe-display|\
-gtest-tree-dataframe-test-dataframe-friends|\
-gtest-tree-dataframe-test-dataframe-helpers|\
-gtest-tree-dataframe-test-dataframe-interface|\
-gtest-tree-dataframe-test-dataframe-leaves|\
-gtest-tree-dataframe-test-dataframe-ranges|\
-gtest-tree-dataframe-test-dataframe-regression|\
-gtest-tree-dataframe-test-dataframe-simple|\
-gtest-tree-dataframe-test-dataframe-snapshot|\
-gtest-tree-dataframe-test-dataframe-vecops|\
-gtest-tree-dataframe-test-datasource-csv|\
-gtest-tree-dataframe-test-datasource-more|\
-gtest-tree-dataframe-test-datasource-sqlite|\
-gtest-tree-dataframe-test-datasource-trivial"
+gtest-tree-dataframe-test-dataframe|\
+gtest-tree-dataframe-test-datasource"
+%endif
%endif
%ifarch %{arm}
@@ -2731,82 +2763,17 @@ gtest-tree-dataframe-test-datasource-trivial"
#
# - gtest-tree-tree-test-testBulkApi
# - gtest-tree-tree-test-testBulkApiSillyStruct
-# segmentation fault - bus error
-#
-# - gtest-tree-dataframe-test-dataframe-histomodels
-# - gtest-tree-ntuple-v7-test-ntuple-rdf
-# - pyunittests-dataframe-cache
-# - pyunittests-dataframe-histograms
+# - gtest-tree-dataframe-test-dataframe-snapshot
+# - gtest-tree-dataframe-test-dataframe-vary
# - pyunittests-dataframe-merge-results
-# - pyunittests-dataframe-misc
-# - pyunittests-pyroot-pyz-rdataframe-makenumpy
-# - pyunittests-pyroot-pyz-tf-pycallables
-# - test-stressiterators-interpreted
-# - tutorial-dataframe-df001_introduction(-py)
-# - tutorial-dataframe-df002_dataModel(-py)
-# - tutorial-dataframe-df003_profiles(-py)
-# - tutorial-dataframe-df005_fillAnyObject
-# - tutorial-dataframe-df006_ranges(-py)
-# - tutorial-dataframe-df007_snapshot(-py)
-# - tutorial-dataframe-df010_trivialDataSource(-py)
-# - tutorial-dataframe-df012_DefinesAndFiltersAsStrings(-py)
-# - tutorial-dataframe-df014_CSVDataSource(-py)
-# - tutorial-dataframe-df015_LazyDataSource
-# - tutorial-dataframe-df016_vecOps(-py)
-# - tutorial-dataframe-df017_vecOpsHEP(-py)
-# - tutorial-dataframe-df019_Cache(-py)
-# - tutorial-dataframe-df020_helpers
-# - tutorial-dataframe-df021_createTGraph(-py)
-# - tutorial-dataframe-df022_useKahan
-# - tutorial-dataframe-df025_RNode
-# - tutorial-dataframe-df031_Stats(-py)
-# - tutorial-hist-sparsehist
-# - tutorial-r-example
-# - tutorial-r-DataFrame
-# - tutorial-r-Function
-# - tutorial-r-Functor
-# - tutorial-r-GlobalMinimization
-# - tutorial-r-Integration
-# - tutorial-r-Minimization
-# Not implemented relocation type!
+# - pyunittests-distrdf-unit-test-headnode
excluded="${excluded}|\
gtest-tree-tree-test-testBulkApi\$\$|\
gtest-tree-tree-test-testBulkApiSillyStruct|\
-gtest-tree-dataframe-test-dataframe-histomodels|\
-gtest-tree-ntuple-v7-test-ntuple-rdf|\
-pyunittests-dataframe-cache|\
-pyunittests-dataframe-histograms|\
+gtest-tree-dataframe-test-dataframe-snapshot|\
+gtest-tree-dataframe-test-dataframe-vary|\
pyunittests-dataframe-merge-results|\
-pyunittests-dataframe-misc|\
-pyunittests-pyroot-pyz-rdataframe-makenumpy|\
-pyunittests-pyroot-pyz-tf-pycallables|\
-test-stressiterators-interpreted|\
-tutorial-dataframe-df001_introduction|\
-tutorial-dataframe-df002_dataModel|\
-tutorial-dataframe-df003_profiles|\
-tutorial-dataframe-df005_fillAnyObject|\
-tutorial-dataframe-df006_ranges|\
-tutorial-dataframe-df007_snapshot|\
-tutorial-dataframe-df010_trivialDataSource|\
-tutorial-dataframe-df012_DefinesAndFiltersAsStrings|\
-tutorial-dataframe-df014_CSVDataSource|\
-tutorial-dataframe-df015_LazyDataSource|\
-tutorial-dataframe-df016_vecOps|\
-tutorial-dataframe-df017_vecOpsHEP|\
-tutorial-dataframe-df019_Cache|\
-tutorial-dataframe-df020_helpers|\
-tutorial-dataframe-df021_createTGraph|\
-tutorial-dataframe-df022_useKahan|\
-tutorial-dataframe-df025_RNode|\
-tutorial-dataframe-df031_Stats|\
-tutorial-hist-sparsehist|\
-tutorial-r-example|\
-tutorial-r-DataFrame|\
-tutorial-r-Function|\
-tutorial-r-Functor|\
-tutorial-r-GlobalMinimization|\
-tutorial-r-Integration|\
-tutorial-r-Minimization"
+pyunittests-distrdf-unit-test-headnode"
%endif
%ifarch %{power64} aarch64
@@ -2823,16 +2790,66 @@ excluded="${excluded}|test-stresshistofit\$\$"
# - test-stresshistogram-interpreted
# - test-stressmathcore-interpreted
# - test-stressroostats-interpreted
+#
+# Always timeout (hang?)
+# - pyunittests-pyroot-pyz-rdataframe-makenumpy
+# - tutorial-dataframe-df032_MakeNumpyDataFrame-py
excluded="${excluded}|\
test-stresshistofit-interpreted|\
test-stresshistogram-interpreted|\
test-stressmathcore-interpreted|\
-test-stressroostats-interpreted"
+test-stressroostats-interpreted|\
+pyunittests-pyroot-pyz-rdataframe-makenumpy|\
+tutorial-dataframe-df032_MakeNumpyDataFrame-py"
+
+%if %{?fedora}%{!?fedora:0} == 34 || %{?fedora}%{!?fedora:0} == 35 || %{?rhel}%{!?rhel:0} == 9
+# tmva/tmva/test/branchlessForest.cxx:215: Failure
+# Expected equality of these values:
+# predictions[1]
+# Which is: -1
+# -1.0 + 2.0
+# Which is: 1
+# - gtest-tmva-tmva-test-branchlessForest
+#
+# Error in <TAxis::TAxis::Set>: bins must be in increasing order
+# Error in <TGraphPainter::PaintGrapHist>: X must be in increasing order
+# - tutorial-math-kdTreeBinning
+#
+# Segmentation violation - malloc(): unaligned tcache chunk detected
+# - tutorial-unfold-testUnfold7c
+#
+# TFormula double free in Python
+# - tutorial-hist-fillrandom-py
+# - tutorial-pyroot-fillrandom-py
+# - tutorial-pyroot-fit1-py (uses output of tutorial-pyroot-fillrandom-py)
+# - tutorial-pyroot-formula1-py
+excluded="${excluded}|\
+gtest-tmva-tmva-test-branchlessForest|\
+tutorial-gl-gltf3|\
+tutorial-math-kdTreeBinning|\
+tutorial-unfold-testUnfold7c|\
+tutorial-hist-fillrandom-py|\
+tutorial-pyroot-fillrandom-py|\
+tutorial-pyroot-fit1-py|\
+tutorial-pyroot-formula1-py"
+%endif
+
+%if %{?rhel}%{!?rhel:0} == 7 || %{?rhel}%{!?rhel:0} == 8
+# crash - free(): corrupted unsorted chunks
+# - gtest-roofit-RDataFrameHelpers-test-testActionHelpers
+# - gtest-tmva-tmva-test-rtensor-utils
+# - gtest-tree-dataframe-test-dataframe-*
+# - gtest-tree-dataframe-test-datasource-*
+# - tutorial-dataframe-df004_cutFlowReport
+excluded="${excluded}|\
+gtest-roofit-RDataFrameHelpers-test-testActionHelpers|\
+gtest-tmva-tmva-test-rtensor-utils|\
+gtest-tree-dataframe-test-dataframe|\
+gtest-tree-dataframe-test-datasource|\
+tutorial-dataframe-df004_cutFlowReport"
+%endif
%if %{?rhel}%{!?rhel:0} == 8
-# Random segmentation faults
-# - gtest-tree-dataframe-test-dataframe-snapshot
-#
# Fails on ppc64le since RHEL 8.5 update
# Exception: Found not whitelisted libraries after importing ROOT:
# - libpthread-2.28
@@ -2840,16 +2857,16 @@ test-stressroostats-interpreted"
# - libc-2.28
# - librt-2.28
# - pyunittests-pyroot-import-load-libs
+#
+# crash - double free or corruption (out)
+# - tutorial-multicore-mt201_parallelHistoFill
+#
+# segmentation violation
+# - tutorial-multicore-mt304_fillHistos
excluded="${excluded}|\
-gtest-tree-dataframe-test-dataframe-snapshot|\
-pyunittests-pyroot-import-load-libs"
-%endif
-
-%if %{?fedora}%{!?fedora:0} >= 36
-# Fails on Fedora 36 ppc64le
-# - test-stressHistFactory(-interpreted)
-excluded="${excluded}|\
-test-stressHistFactory"
+pyunittests-pyroot-import-load-libs|\
+tutorial-multicore-mt201_parallelHistoFill|\
+tutorial-multicore-mt304_fillHistos"
%endif
%endif
@@ -2857,28 +2874,36 @@ test-stressHistFactory"
# s390x specific failures
#
# - gtest-roofit-roofitcore-test-testNaNPacker
+# - gtest-roofit-roofitcore-test-testRooProdPdf
+# - gtest-tree-dataframe-test-datasource-ntuple
# - gtest-tree-ntuple-v7-test-ntuple-basics
# - gtest-tree-ntuple-v7-test-ntuple-extended
+# - gtest-tree-ntuple-v7-test-ntuple-merger
# - gtest-tree-ntuple-v7-test-ntuple-minifile
+# - gtest-tree-ntuple-v7-test-ntuple-serialize
# - pyunittests-pyroot-pyz-rtensor
-# - test-stresshistogram(-interpreted)
+# - pyunittests-pyroot-pyz-stl-vector
# - test-stresshistofit(-interpreted)
+# - test-stresshistogram(-interpreted)
# - tutorial-dataframe-df006_ranges-py
-# - tutorial-roofit-rf203_ranges-py
+# - tutorial-math-exampleFunction-py
# - tutorial-roofit-rf612_recoverFromInvalidParameters
-# - tutorial-roofit-rf902_numgenconfig-py
excluded="${excluded}|\
gtest-roofit-roofitcore-test-testNaNPacker|\
+gtest-roofit-roofitcore-test-testRooProdPdf|\
+gtest-tree-dataframe-test-datasource-ntuple|\
gtest-tree-ntuple-v7-test-ntuple-basics|\
gtest-tree-ntuple-v7-test-ntuple-extended|\
+gtest-tree-ntuple-v7-test-ntuple-merger|\
gtest-tree-ntuple-v7-test-ntuple-minifile|\
+gtest-tree-ntuple-v7-test-ntuple-serialize|\
pyunittests-pyroot-pyz-rtensor|\
-test-stresshistogram|\
+pyunittests-pyroot-pyz-stl-vector|\
test-stresshistofit|\
+test-stresshistogram|\
tutorial-dataframe-df006_ranges-py|\
-tutorial-roofit-rf203_ranges-py|\
-tutorial-roofit-rf612_recoverFromInvalidParameters|\
-tutorial-roofit-rf902_numgenconfig-py"
+tutorial-math-exampleFunction-py|\
+tutorial-roofit-rf612_recoverFromInvalidParameters"
%if %{?rhel}%{!?rhel:0} == 8
# Issues with file sizes on EPEL 8 s390x
@@ -2915,6 +2940,22 @@ update-mime-database %{_datadir}/mime >/dev/null 2>&1 || :
gtk-update-icon-cache %{_datadir}/icons/hicolor >/dev/null 2>&1 || :
%endif
+%pretrans net-http -p <lua>
+path = "%{_datadir}/%{name}/js"
+st = posix.stat(path)
+if st and st.type == "link" then
+ os.remove(path)
+end
+
+%post net-http
+# Replace bundled jsroot with symlinks to system version
+for x in img libs scripts style files/draw.htm files/online.htm ; do
+ ln -fs /usr/share/javascript/jsroot/$x %{_datadir}/%{name}/js/$x
+done
+%{?ldconfig}
+
+%ldconfig_postun net-http
+
%if %{buildpy2}
%pre -n python2-%{name}
if [ -r /var/lib/alternatives/libPyROOT.so ] ; then
@@ -2926,11 +2967,7 @@ fi
%pre -n python%{python3_pkgversion}-%{name}
if [ -r /var/lib/alternatives/libPyROOT.so ] ; then
-%if %{?rhel}%{!?rhel:0} == 7
- for alt in `grep python%{python3_version}/.*.so /var/lib/alternatives/libPyROOT.so` ; do
-%else
for alt in `grep python3.*/.*.so /var/lib/alternatives/libPyROOT.so` ; do
-%endif
%{_sbindir}/update-alternatives --remove libPyROOT.so $alt
done
fi
@@ -3017,7 +3054,9 @@ fi
%ldconfig_scriptlets html
%ldconfig_scriptlets io
%ldconfig_scriptlets io-dcache
+%if %{gfal2}
%ldconfig_scriptlets io-gfal
+%endif
%ldconfig_scriptlets io-sql
%ldconfig_scriptlets io-xml
%ldconfig_scriptlets io-xmlparser
@@ -3037,17 +3076,12 @@ fi
%ldconfig_scriptlets splot
%ldconfig_scriptlets unuran
%ldconfig_scriptlets vecops
-%if %{memstat}
-%ldconfig_scriptlets memstat
-%endif
%ldconfig_scriptlets montecarlo-eg
%ldconfig_scriptlets montecarlo-pythia8
-%ldconfig_scriptlets montecarlo-vmc
%ldconfig_scriptlets net
%ldconfig_scriptlets net-rpdutils
%ldconfig_scriptlets net-auth
%ldconfig_scriptlets net-davix
-%ldconfig_scriptlets net-http
%ldconfig_scriptlets net-httpsniff
%ldconfig_scriptlets netx
%ldconfig_scriptlets proof
@@ -3058,9 +3092,12 @@ fi
%ldconfig_scriptlets xproof
%endif
%ldconfig_scriptlets roofit
+%ldconfig_scriptlets roofit-common
%ldconfig_scriptlets roofit-core
%ldconfig_scriptlets roofit-more
%ldconfig_scriptlets roofit-batchcompute
+%ldconfig_scriptlets roofit-dataframe-helpers
+%ldconfig_scriptlets roofit-hs3
%ldconfig_scriptlets roostats
%ldconfig_scriptlets sql-mysql
%ldconfig_scriptlets sql-odbc
@@ -3069,12 +3106,23 @@ fi
%ldconfig_scriptlets tmva
%ldconfig_scriptlets tmva-python
%ldconfig_scriptlets tmva-r
+%ldconfig_scriptlets tmva-sofie
+%if %{tmvasofieparser}
+%ldconfig_scriptlets tmva-sofie-parser
+%endif
%ldconfig_scriptlets tmva-gui
%ldconfig_scriptlets tree
%ldconfig_scriptlets tree-dataframe
%ldconfig_scriptlets tree-player
%ldconfig_scriptlets tree-viewer
%ldconfig_scriptlets unfold
+%if %{webgui}
+%ldconfig_scriptlets gui-webdisplay
+%ifarch %{qt5_qtwebengine_arches}
+%ldconfig_scriptlets gui-qt5webdisplay
+%endif
+%ldconfig_scriptlets gui-webgui6
+%endif
%if %{root7}
%ldconfig_scriptlets graf-gpadv7
%ldconfig_scriptlets graf-primitives
@@ -3083,11 +3131,6 @@ fi
%ldconfig_scriptlets gui-browserv7
%ldconfig_scriptlets gui-canvaspainter
%ldconfig_scriptlets gui-fitpanelv7
-%ifarch %{qt5_qtwebengine_arches}
-%ldconfig_scriptlets gui-qt5webdisplay
-%endif
-%ldconfig_scriptlets gui-webdisplay
-%ldconfig_scriptlets gui-webgui6
%ldconfig_scriptlets histv7
%ldconfig_scriptlets hist-draw
%ldconfig_scriptlets tree-ntuple
@@ -3119,17 +3162,12 @@ fi
%files fonts
%{_datadir}/%{name}/fonts
-%files doc
-%doc %{_pkgdocdir}/html
-
%files tutorial
%doc %{_pkgdocdir}/tutorials
%files core -f includelist-core
-%{_bindir}/memprobe
%{_bindir}/rmkdepend
%{_bindir}/root-config
-%{_mandir}/man1/memprobe.1*
%{_mandir}/man1/rmkdepend.1*
%{_mandir}/man1/root-config.1*
%dir %{_libdir}/%{name}
@@ -3228,10 +3266,6 @@ fi
%files -n python2-jsmva
%{python2_sitelib}/JsMVA
%{python2_sitelib}/JsMVA-*.egg-info
-
-%files -n python2-distrdf
-%{python2_sitelib}/DistRDF
-%{python2_sitelib}/DistRDF-*.egg-info
%endif
%files -n python%{python3_pkgversion}-%{name} -f includelist-bindings-pyroot
@@ -3257,9 +3291,11 @@ fi
%{python3_sitelib}/JsMVA
%{python3_sitelib}/JsMVA-*.egg-info
+%if %{distrdf}
%files -n python%{python3_pkgversion}-distrdf
%{python3_sitelib}/DistRDF
%{python3_sitelib}/DistRDF-*.egg-info
+%endif
%files r -f includelist-bindings-r
%{_libdir}/%{name}/libRInterface.*
@@ -3454,10 +3490,12 @@ fi
%{_datadir}/%{name}/plugins/TFile/P040_TDCacheFile.C
%{_datadir}/%{name}/plugins/TSystem/P020_TDCacheSystem.C
+%if %{gfal2}
%files io-gfal -f includelist-io-gfal
%{_libdir}/%{name}/libGFAL.*
%{_libdir}/%{name}/libGFAL_rdict.pcm
%{_datadir}/%{name}/plugins/TFile/P050_TGFALFile.C
+%endif
%files io-sql -f includelist-io-sql
%{_libdir}/%{name}/libSQLIO.*
@@ -3569,12 +3607,6 @@ fi
%{_libdir}/%{name}/libROOTVecOps.*
%{_libdir}/%{name}/libROOTVecOps_rdict.pcm
-%if %{memstat}
-%files memstat -f includelist-misc-memstat
-%{_libdir}/%{name}/libMemStat.*
-%{_libdir}/%{name}/libMemStat_rdict.pcm
-%endif
-
%files montecarlo-eg -f includelist-montecarlo-eg
%{_libdir}/%{name}/libEG.*
%{_libdir}/%{name}/libEG_rdict.pcm
@@ -3585,11 +3617,6 @@ fi
%{_libdir}/%{name}/libEGPythia8.*
%{_libdir}/%{name}/libEGPythia8_rdict.pcm
-%files montecarlo-vmc -f includelist-montecarlo-vmc
-%{_libdir}/%{name}/libVMC.*
-%{_libdir}/%{name}/libVMC_rdict.pcm
-%{_datadir}/%{name}/vmc
-
%files net -f includelist-net-net
%{_libdir}/%{name}/libNet.*
%{_libdir}/%{name}/libNet_rdict.pcm
@@ -3622,7 +3649,17 @@ fi
%files net-http -f includelist-net-http
%{_libdir}/%{name}/libRHTTP.*
%{_libdir}/%{name}/libRHTTP_rdict.pcm
-%{_datadir}/%{name}/js
+%dir %{_datadir}/%{name}/js
+%dir %{_datadir}/%{name}/js/files
+%{_datadir}/%{name}/js/files/canv_batch.htm
+%{_datadir}/%{name}/js/files/web.config
+%{_datadir}/%{name}/js/files/wslist.htm
+%ghost %{_datadir}/%{name}/js/img
+%ghost %{_datadir}/%{name}/js/libs
+%ghost %{_datadir}/%{name}/js/scripts
+%ghost %{_datadir}/%{name}/js/style
+%ghost %{_datadir}/%{name}/js/files/draw.htm
+%ghost %{_datadir}/%{name}/js/files/online.htm
%doc net/http/README.txt net/http/civetweb/*.md
%files net-httpsniff -f includelist-net-httpsniff
@@ -3639,6 +3676,7 @@ fi
%{_datadir}/%{name}/plugins/TFile/P100_TXNetFile.C
%{_datadir}/%{name}/plugins/TFileStager/P010_TXNetFileStager.C
%{_datadir}/%{name}/plugins/TSystem/P040_TXNetSystem.C
+%{_datadir}/%{name}/plugins/ROOT@@Internal@(a)RRawFile/P020_RRawFileNetXNG.C
%files proof -f includelist-proof-proof
%{_bindir}/proofserv
@@ -3699,6 +3737,9 @@ fi
%{_libdir}/%{name}/libRooFit.*
%{_libdir}/%{name}/libRooFit_rdict.pcm
+%files roofit-common
+%{_libdir}/%{name}/libRooFitCommon.*
+
%files roofit-core -f includelist-roofit-roofitcore
%{_libdir}/%{name}/libRooFitCore.*
%{_libdir}/%{name}/libRooFitCore_rdict.pcm
@@ -3716,6 +3757,17 @@ fi
%{_libdir}/%{name}/libRooBatchCompute_*
%doc roofit/batchcompute/README.md
+%files roofit-dataframe-helpers -f includelist-roofit-RDataFrameHelpers
+%{_libdir}/%{name}/libRooFitRDataFrameHelpers.*
+%{_libdir}/%{name}/libRooFitRDataFrameHelpers_rdict.pcm
+
+%files roofit-hs3 -f includelist-roofit-hs3
+%{_libdir}/%{name}/libRooFitHS3.*
+%{_libdir}/%{name}/libRooFitHS3_rdict.pcm
+%{_datadir}/%{name}/RooFitHS3_wsexportkeys.json
+%{_datadir}/%{name}/RooFitHS3_wsfactoryexpressions.json
+%doc roofit/hs3/README.md
+
%files roostats -f includelist-roofit-roostats
%{_libdir}/%{name}/libRooStats.*
%{_libdir}/%{name}/libRooStats_rdict.pcm
@@ -3761,6 +3813,17 @@ fi
%{_libdir}/%{name}/libRMVA.*
%{_libdir}/%{name}/libRMVA_rdict.pcm
+%files tmva-sofie -f includelist-tmva-sofie
+%{_libdir}/%{name}/libROOTTMVASofie.*
+%{_libdir}/%{name}/libROOTTMVASofie_rdict.pcm
+%doc tmva/sofie/README.md
+
+%if %{tmvasofieparser}
+%files tmva-sofie-parser -f includelist-tmva-sofie_parsers
+%{_libdir}/%{name}/libROOTTMVASofieParser.*
+%{_libdir}/%{name}/libROOTTMVASofieParser_rdict.pcm
+%endif
+
%files tmva-gui -f includelist-tmva-tmvagui
%{_libdir}/%{name}/libTMVAGui.*
%{_libdir}/%{name}/libTMVAGui_rdict.pcm
@@ -3807,6 +3870,23 @@ fi
%{_datadir}/%{name}/notebook
%doc %{_pkgdocdir}/JupyROOT-on-EPEL
+%if %{webgui}
+%files gui-webdisplay -f includelist-gui-webdisplay
+%{_libdir}/%{name}/libROOTWebDisplay.*
+%{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm
+%{_datadir}/%{name}/ui5
+
+%ifarch %{qt5_qtwebengine_arches}
+%files gui-qt5webdisplay
+%{_libdir}/%{name}/libROOTQt5WebDisplay.*
+%endif
+
+%files gui-webgui6 -f includelist-gui-webgui6
+%{_libdir}/%{name}/libWebGui6.*
+%{_libdir}/%{name}/libWebGui6_rdict.pcm
+%{_datadir}/%{name}/plugins/TGuiFactory/P030_TWebGuiFactory.C
+%endif
+
%if %{root7}
%files graf-gpadv7 -f includelist-graf2d-gpadv7
%{_libdir}/%{name}/libROOTGpadv7.*
@@ -3828,6 +3908,9 @@ fi
%{_libdir}/%{name}/libROOTHistDrawProvider.*
%{_libdir}/%{name}/libROOTLeafDraw6Provider.*
%{_libdir}/%{name}/libROOTLeafDraw7Provider.*
+%{_libdir}/%{name}/libROOTNTupleBrowseProvider.*
+%{_libdir}/%{name}/libROOTNTupleDraw6Provider.*
+%{_libdir}/%{name}/libROOTNTupleDraw7Provider.*
%{_libdir}/%{name}/libROOTObjectDraw6Provider.*
%{_libdir}/%{name}/libROOTObjectDraw7Provider.*
@@ -3847,21 +3930,6 @@ fi
%{_libdir}/%{name}/libROOTFitPanelv7.*
%{_libdir}/%{name}/libROOTFitPanelv7_rdict.pcm
-%ifarch %{qt5_qtwebengine_arches}
-%files gui-qt5webdisplay
-%{_libdir}/%{name}/libROOTQt5WebDisplay.*
-%endif
-
-%files gui-webdisplay -f includelist-gui-webdisplay
-%{_libdir}/%{name}/libROOTWebDisplay.*
-%{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm
-%{_datadir}/%{name}/ui5
-
-%files gui-webgui6 -f includelist-gui-webgui6
-%{_libdir}/%{name}/libWebGui6.*
-%{_libdir}/%{name}/libWebGui6_rdict.pcm
-%{_datadir}/%{name}/plugins/TGuiFactory/P030_TWebGuiFactory.C
-
%files histv7 -f includelist-hist-histv7
%{_libdir}/%{name}/libROOTHist.*
%{_libdir}/%{name}/libROOTHist_rdict.pcm
@@ -3876,13 +3944,23 @@ fi
%endif
%changelog
+* Sat Mar 26 2022 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.26.00-1
+- Update to 6.24.04
+- New subpackages: root-roofit-common, root-roofit-dataframe-helpers,
+ root-roofit-hs3, root-tmva-sofie and root-tmva-sofie-parser
+- Removed subpackages: root-memstat and root-montecarlo-vmc
+- Drop the doxygen generated root-doc package (doxygen runs out of memory)
+- Dropped patches: 17
+- New patches: 22
+- Updated patches: 5
+
* Thu Feb 10 2022 Orion Poplawski <orion(a)nwra.com> - 6.24.06-6
- Rebuild for glew 2.2
* Fri Jan 28 2022 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.24.06-5
- Exclude failing test on Fedora 36 ppc64le:
test-stressHistFactory(-interpreted)
-# Disable package note flags
+- Disable package note flags
* Fri Jan 21 2022 Fedora Release Engineering <releng(a)fedoraproject.org> - 6.24.06-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
diff --git a/sources b/sources
index 31dae3c..31ddb3c 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (root-6.24.06.tar.xz) = fe316283503dae60acb26d2ae3e838e6f9c01e1f89ff9973aa2b666a30c00f99f5e0df02b54e3744cd14a45a49ca2fc7d1f19fbac6b69071b9c9e0c98f2e0645
+SHA512 (root-6.26.00.tar.xz) = 0a98e973eeda98550200635d5d566fe4191aba953d3f993af750761a23e2b86caa5eb9674837bf1b070b9056b3a8ce7ee2d43295c56d22d120ca78edb97ea1c8
SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f
commit 65aa8a70756160cf36ea5323a408673d44c78b3c
Author: Orion Poplawski <orion(a)nwra.com>
Date: Wed Feb 9 21:06:51 2022 -0700
Rebuild for glew 2.2
diff --git a/root.spec b/root.spec
index 4c8d449..3a305ae 100644
--- a/root.spec
+++ b/root.spec
@@ -55,7 +55,7 @@
Name: root
Version: 6.24.06
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: Numerical data analysis framework
License: LGPLv2+
@@ -3876,6 +3876,9 @@ fi
%endif
%changelog
+* Thu Feb 10 2022 Orion Poplawski <orion(a)nwra.com> - 6.24.06-6
+- Rebuild for glew 2.2
+
* Fri Jan 28 2022 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.24.06-5
- Exclude failing test on Fedora 36 ppc64le:
test-stressHistFactory(-interpreted)
commit 1ca8ad1517f21dca869c95afa310022f2b86fed0
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Sat Jan 29 00:30:44 2022 +0100
Disable package note flags
diff --git a/root.spec b/root.spec
index 3fa4562..4c8d449 100644
--- a/root.spec
+++ b/root.spec
@@ -1,6 +1,10 @@
%undefine __cmake_in_source_build
%undefine __cmake3_in_source_build
+# Disable package note flags, since root saves the compiler/linker flags
+# used during the build
+%undefine _package_note_flags
+
%if %{?fedora}%{!?fedora:0} >= 31 || %{?rhel}%{!?rhel:0} >= 8
# Don't build python2-root for Fedora >= 31
%global buildpy2 0
@@ -3875,6 +3879,7 @@ fi
* Fri Jan 28 2022 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.24.06-5
- Exclude failing test on Fedora 36 ppc64le:
test-stressHistFactory(-interpreted)
+# Disable package note flags
* Fri Jan 21 2022 Fedora Release Engineering <releng(a)fedoraproject.org> - 6.24.06-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
commit d28cfab6db23ba8129741cb9d378affbc249e264
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Fri Jan 28 21:28:20 2022 +0100
Exclude failing test on Fedora 36 ppc64le:
test-stressHistFactory(-interpreted)
diff --git a/root.spec b/root.spec
index bd095b6..3fa4562 100644
--- a/root.spec
+++ b/root.spec
@@ -51,7 +51,7 @@
Name: root
Version: 6.24.06
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Numerical data analysis framework
License: LGPLv2+
@@ -2840,6 +2840,13 @@ excluded="${excluded}|\
gtest-tree-dataframe-test-dataframe-snapshot|\
pyunittests-pyroot-import-load-libs"
%endif
+
+%if %{?fedora}%{!?fedora:0} >= 36
+# Fails on Fedora 36 ppc64le
+# - test-stressHistFactory(-interpreted)
+excluded="${excluded}|\
+test-stressHistFactory"
+%endif
%endif
%ifarch s390x
@@ -3865,6 +3872,10 @@ fi
%endif
%changelog
+* Fri Jan 28 2022 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.24.06-5
+- Exclude failing test on Fedora 36 ppc64le:
+ test-stressHistFactory(-interpreted)
+
* Fri Jan 21 2022 Fedora Release Engineering <releng(a)fedoraproject.org> - 6.24.06-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
commit 79bc80ed33ef23cb412f65727b6a12e70b46ac55
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jan 21 17:57:47 2022 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/root.spec b/root.spec
index 3c01a6c..bd095b6 100644
--- a/root.spec
+++ b/root.spec
@@ -51,7 +51,7 @@
Name: root
Version: 6.24.06
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Numerical data analysis framework
License: LGPLv2+
@@ -3865,6 +3865,9 @@ fi
%endif
%changelog
+* Fri Jan 21 2022 Fedora Release Engineering <releng(a)fedoraproject.org> - 6.24.06-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
* Sun Jan 16 2022 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.24.06-3
- Backport gcc 12 fix from LLVM
- Fix test failure on ppc64le and aarch64 with gcc 12
commit 530bdfbe23276d5410c2d1b98a7a0d1d8f558ea6
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Mon Jan 17 19:28:30 2022 +0100
Backport gcc 12 fix from LLVM
Fix test failure on ppc64le and aarch64 with gcc 12
diff --git a/root-fix-compilation-with-gcc-12.patch b/root-fix-compilation-with-gcc-12.patch
new file mode 100644
index 0000000..2c34516
--- /dev/null
+++ b/root-fix-compilation-with-gcc-12.patch
@@ -0,0 +1,63 @@
+From 3bc55ece1db8b32c5e86fd6b85856addd67265fb Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sat, 15 Jan 2022 06:35:58 +0100
+Subject: [PATCH] Fix compilation with gcc 12
+
+Fixes error: use of deleted function
+
+/builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp: In member function 'std::string llvm::NVPTXAsmPrinter::getPTXFundamentalTypeStr(llvm::Type*, bool) const':
+/builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp:1319:10: error: use of deleted function 'std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::nullptr_t) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::nullptr_t = std::nullptr_t]'
+ 1319 | return nullptr;
+ | ^~~~~~~
+In file included from /usr/include/c++/12/string:53,
+ from /usr/include/c++/12/bits/locale_classes.h:40,
+ from /usr/include/c++/12/bits/ios_base.h:41,
+ from /usr/include/c++/12/streambuf:41,
+ from /usr/include/c++/12/bits/streambuf_iterator.h:35,
+ from /usr/include/c++/12/iterator:66,
+ from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/iterator_range.h:21,
+ from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/SmallVector.h:16,
+ from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/STLExtras.h:20,
+ from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/StringRef.h:12,
+ from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/Pass.h:31,
+ from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTX.h:17,
+ from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.h:17,
+ from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp:14:
+/usr/include/c++/12/bits/basic_string.h:732:7: note: declared here
+ 732 | basic_string(nullptr_t) = delete;
+ | ^~~~~~~~~~~~
+
+Fix backported from LLVM upstrea https://reviews.llvm.org/D87697
+---
+ interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
+index 5f38b4a3c4..bfa74bd98f 100644
+--- a/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
++++ b/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
+@@ -1281,9 +1281,6 @@ void NVPTXAsmPrinter::emitPTXAddressSpace(unsigned int AddressSpace,
+ std::string
+ NVPTXAsmPrinter::getPTXFundamentalTypeStr(Type *Ty, bool useB4PTR) const {
+ switch (Ty->getTypeID()) {
+- default:
+- llvm_unreachable("unexpected type");
+- break;
+ case Type::IntegerTyID: {
+ unsigned NumBits = cast<IntegerType>(Ty)->getBitWidth();
+ if (NumBits == 1)
+@@ -1314,9 +1311,10 @@ NVPTXAsmPrinter::getPTXFundamentalTypeStr(Type *Ty, bool useB4PTR) const {
+ return "b32";
+ else
+ return "u32";
++ default:
++ break;
+ }
+ llvm_unreachable("unexpected type");
+- return nullptr;
+ }
+
+ void NVPTXAsmPrinter::emitPTXGlobalVariable(const GlobalVariable *GVar,
+--
+2.34.1
+
diff --git a/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch b/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch
new file mode 100644
index 0000000..007c3cd
--- /dev/null
+++ b/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch
@@ -0,0 +1,43 @@
+From ddc155795baa9d4690717c204e54a7fd4600c688 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Mon, 17 Jan 2022 18:49:30 +0100
+Subject: [PATCH] Fix test failure on ppc64le and aarch64 with gcc 12
+
+.../hist/hist/test/test_tprofile2poly.cxx:61: Failure
+The difference between cont1 and cont2 is 1.4551915228366852e-11, which exceeds delta, where
+cont1 evaluates to 54886.064319363642,
+cont2 evaluates to 54886.064319363628, and
+delta evaluates to 9.999999960041972e-12.
+.../hist/hist/test/test_tprofile2poly.cxx:61: Failure
+The difference between cont1 and cont2 is 1.4551915228366852e-11, where
+cont1 evaluates to 109868.61342004745,
+cont2 evaluates to 109868.61342004743.
+The abs_error parameter delta evaluates to 9.999999960041972e-12 which is smaller than the minimum distance between doubles for numbers of this magnitude which is 1.4551915228366852e-11, thus making this EXPECT_NEAR check equivalent to EXPECT_EQUAL. Consider using EXPECT_DOUBLE_EQ instead.
+---
+ hist/hist/test/test_tprofile2poly.cxx | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx
+index 40cb3052a2..5150da0bea 100644
+--- a/hist/hist/test/test_tprofile2poly.cxx
++++ b/hist/hist/test/test_tprofile2poly.cxx
+@@ -58,14 +58,14 @@ void binEntriesCompare(TProfile2D* tp2d, TProfile2Poly* tpp) {
+ for(Double_t x=0.5; x<10; x+=2.0) {
+ cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(x,y));
+ cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(x,y));
+- ASSERT_NEAR(cont1, cont2, delta);
++ ASSERT_NEAR(cont1, cont2, 2*delta);
+ }
+
+ }
+ // test overflow
+ cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(11,11));
+ cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(11,11));
+- ASSERT_NEAR(cont1, cont2, delta);
++ ASSERT_NEAR(cont1, cont2, 2*delta);
+
+ }
+
+--
+2.34.1
+
diff --git a/root.spec b/root.spec
index 4406bef..3c01a6c 100644
--- a/root.spec
+++ b/root.spec
@@ -51,7 +51,7 @@
Name: root
Version: 6.24.06
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Numerical data analysis framework
License: LGPLv2+
@@ -152,6 +152,12 @@ Patch26: root-doxygen-fix2.patch
Patch27: %{name}-doxygen-crash-el7.patch
# Backported fix from LLVM upstream
Patch28: %{name}-symbol-rewrite.patch
+# Backport gcc 12 fix from LLVM
+# https://github.com/root-project/root/pull/9586
+Patch29: %{name}-fix-compilation-with-gcc-12.patch
+# Fix test failure on ppc64le and aarch64 with gcc 12
+# https://github.com/root-project/root/pull/9601
+Patch30: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch
BuildRequires: make
%if %{?rhel}%{!?rhel:0} == 7
@@ -1931,6 +1937,8 @@ This package contains an ntuple extension for ROOT 7.
%patch27 -p1
%endif
%patch28 -p1
+%patch29 -p1
+%patch30 -p1
# Remove bundled sources in order to be sure they are not used
# * afterimage
@@ -3857,6 +3865,10 @@ fi
%endif
%changelog
+* Sun Jan 16 2022 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.24.06-3
+- Backport gcc 12 fix from LLVM
+- Fix test failure on ppc64le and aarch64 with gcc 12
+
* Tue Dec 07 2021 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.24.06-2
- Fix segfaults on ppc64le when using the large code model
2 years