Architecture specific change in rpms/rust-nanorand.git
by githook-noreply@fedoraproject.org
The package rpms/rust-nanorand.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-nanorand.git/commit/?id=921c....
Change:
-ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit 921cd0e131c5a498690f79682c4ab09ece978a1f
Author: Fabio Valentini <decathorpe(a)gmail.com>
Date: Mon Jun 10 17:31:06 2024 +0200
Regenerate with rust2rpm v26
diff --git a/nanorand-fix-metadata.diff b/nanorand-fix-metadata.diff
index 608a1e2..5a6cd9e 100644
--- a/nanorand-fix-metadata.diff
+++ b/nanorand-fix-metadata.diff
@@ -1,5 +1,5 @@
--- nanorand-0.7.0/Cargo.toml 1970-01-01T00:00:01+00:00
-+++ nanorand-0.7.0/Cargo.toml 2022-08-18T03:42:55.620157+00:00
++++ nanorand-0.7.0/Cargo.toml 2024-06-10T15:30:28.575387+00:00
@@ -29,7 +29,7 @@
lto = "thin"
[dependencies.getrandom]
diff --git a/rust-nanorand.spec b/rust-nanorand.spec
index f001b9e..2388953 100644
--- a/rust-nanorand.spec
+++ b/rust-nanorand.spec
@@ -1,4 +1,4 @@
-# Generated by rust2rpm 22
+# Generated by rust2rpm 26
%bcond_without check
%global debug_package %{nil}
@@ -13,14 +13,13 @@ License: Zlib
URL: https://crates.io/crates/nanorand
Source: %{crates_source}
# Manually created patch for downstream crate metadata changes
+# * drop WASM-specific getrandom/js feature
Patch: nanorand-fix-metadata.diff
-ExclusiveArch: %{rust_arches}
-
-BuildRequires: rust-packaging >= 21
+BuildRequires: cargo-rpm-macros >= 24
%global _description %{expand:
-Tiny, fast, zero-dep library for random number generation.}
+A tiny, fast, zero-dep library for random number generation.}
%description %{_description}
@@ -159,7 +158,7 @@ use the "zeroize" feature of the "%{crate}" crate.
%ghost %{crate_instdir}/Cargo.toml
%prep
-%autosetup -n %{crate}-%{version_no_tilde} -p1
+%autosetup -n %{crate}-%{version} -p1
%cargo_prep
%generate_buildrequires
commit 6398386448f970c87d567675f1af7041e88fac44
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jan 26 22:17:57 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
2 weeks, 2 days
Architecture specific change in rpms/rust-nanorand.git
by githook-noreply@fedoraproject.org
The package rpms/rust-nanorand.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-nanorand.git/commit/?id=921c....
Change:
-ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit 921cd0e131c5a498690f79682c4ab09ece978a1f
Author: Fabio Valentini <decathorpe(a)gmail.com>
Date: Mon Jun 10 17:31:06 2024 +0200
Regenerate with rust2rpm v26
diff --git a/nanorand-fix-metadata.diff b/nanorand-fix-metadata.diff
index 608a1e2..5a6cd9e 100644
--- a/nanorand-fix-metadata.diff
+++ b/nanorand-fix-metadata.diff
@@ -1,5 +1,5 @@
--- nanorand-0.7.0/Cargo.toml 1970-01-01T00:00:01+00:00
-+++ nanorand-0.7.0/Cargo.toml 2022-08-18T03:42:55.620157+00:00
++++ nanorand-0.7.0/Cargo.toml 2024-06-10T15:30:28.575387+00:00
@@ -29,7 +29,7 @@
lto = "thin"
[dependencies.getrandom]
diff --git a/rust-nanorand.spec b/rust-nanorand.spec
index f001b9e..2388953 100644
--- a/rust-nanorand.spec
+++ b/rust-nanorand.spec
@@ -1,4 +1,4 @@
-# Generated by rust2rpm 22
+# Generated by rust2rpm 26
%bcond_without check
%global debug_package %{nil}
@@ -13,14 +13,13 @@ License: Zlib
URL: https://crates.io/crates/nanorand
Source: %{crates_source}
# Manually created patch for downstream crate metadata changes
+# * drop WASM-specific getrandom/js feature
Patch: nanorand-fix-metadata.diff
-ExclusiveArch: %{rust_arches}
-
-BuildRequires: rust-packaging >= 21
+BuildRequires: cargo-rpm-macros >= 24
%global _description %{expand:
-Tiny, fast, zero-dep library for random number generation.}
+A tiny, fast, zero-dep library for random number generation.}
%description %{_description}
@@ -159,7 +158,7 @@ use the "zeroize" feature of the "%{crate}" crate.
%ghost %{crate_instdir}/Cargo.toml
%prep
-%autosetup -n %{crate}-%{version_no_tilde} -p1
+%autosetup -n %{crate}-%{version} -p1
%cargo_prep
%generate_buildrequires
2 weeks, 2 days
Architecture specific change in rpms/rust-flume.git
by githook-noreply@fedoraproject.org
The package rpms/rust-flume.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-flume.git/commit/?id=4af805e....
Change:
-ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit 2b556d96ee62740fd7e67175f494b1575bdb216f
Author: Fabio Valentini <decathorpe(a)gmail.com>
Date: Mon Jun 10 17:06:09 2024 +0200
Regenerate with rust2rpm v26
diff --git a/flume-fix-metadata.diff b/flume-fix-metadata.diff
new file mode 100644
index 0000000..1d89be9
--- /dev/null
+++ b/flume-fix-metadata.diff
@@ -0,0 +1,12 @@
+--- flume-0.11.0/Cargo.toml 1970-01-01T00:00:01+00:00
++++ flume-0.11.0/Cargo.toml 2024-06-10T15:02:13.134717+00:00
+@@ -66,9 +66,6 @@
+ "unstable",
+ ]
+
+-[dev-dependencies.criterion]
+-version = "0.3.4"
+-
+ [dev-dependencies.crossbeam-channel]
+ version = "0.5.5"
+
diff --git a/rust-flume-criterion.patch b/rust-flume-criterion.patch
deleted file mode 100644
index 1032c78..0000000
--- a/rust-flume-criterion.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up flume-0.10.14/Cargo.toml.criterion flume-0.10.14/Cargo.toml
---- flume-0.10.14/Cargo.toml.criterion 1969-12-31 17:00:01.000000000 -0700
-+++ flume-0.10.14/Cargo.toml 2022-10-19 08:48:19.949933517 -0600
-@@ -69,9 +69,6 @@ features = [
- "unstable",
- ]
-
--[dev-dependencies.criterion]
--version = "0.3.4"
--
- [dev-dependencies.crossbeam-channel]
- version = "0.5.5"
-
diff --git a/rust-flume.spec b/rust-flume.spec
index 20808a4..ae5e0f3 100644
--- a/rust-flume.spec
+++ b/rust-flume.spec
@@ -1,4 +1,4 @@
-# Generated by rust2rpm 24
+# Generated by rust2rpm 26
%bcond_without check
%global debug_package %{nil}
@@ -13,10 +13,11 @@ Summary: Blazingly fast multi-producer channel
License: Apache-2.0 OR MIT
URL: https://crates.io/crates/flume
Source: %{crates_source}
-# Remove criterion dev dependency
-Patch: rust-flume-criterion.patch
+# Manually created patch for downstream crate metadata changes
+# * drop unused, benchmark-only criterion dev-dependency
+Patch: flume-fix-metadata.diff
-BuildRequires: rust-packaging >= 21
+BuildRequires: cargo-rpm-macros >= 24
%global _description %{expand:
A blazingly fast multi-producer channel.}
@@ -136,7 +137,7 @@ use the "spin" feature of the "%{crate}" crate.
%ghost %{crate_instdir}/Cargo.toml
%prep
-%autosetup -n %{crate}-%{version_no_tilde} -p1
+%autosetup -n %{crate}-%{version} -p1
%cargo_prep
%generate_buildrequires
diff --git a/rust2rpm.toml b/rust2rpm.toml
new file mode 100644
index 0000000..2cd7101
--- /dev/null
+++ b/rust2rpm.toml
@@ -0,0 +1,5 @@
+[package]
+cargo-toml-patch-comments = [
+ "drop unused, benchmark-only criterion dev-dependency",
+]
+
commit f906a466d6bb124bf05678a3989510ddad9e7ab6
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jan 26 20:02:44 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
commit 4af805ec6633945448668e010750f044a08da293
Author: Orion Poplawski <orion(a)nwra.com>
Date: Wed Aug 16 20:41:00 2023 -0600
Update to 0.11.0
diff --git a/.gitignore b/.gitignore
index 6175b36..fe8eb6f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
/flume-0.9.0.crate
/flume-0.9.1.crate
/flume-0.10.14.crate
+/flume-0.11.0.crate
diff --git a/rust-flume.spec b/rust-flume.spec
index be71d5a..20808a4 100644
--- a/rust-flume.spec
+++ b/rust-flume.spec
@@ -1,11 +1,11 @@
-# Generated by rust2rpm 22
+# Generated by rust2rpm 24
%bcond_without check
%global debug_package %{nil}
%global crate flume
Name: rust-flume
-Version: 0.10.14
+Version: 0.11.0
Release: %autorelease
Summary: Blazingly fast multi-producer channel
@@ -16,12 +16,10 @@ Source: %{crates_source}
# Remove criterion dev dependency
Patch: rust-flume-criterion.patch
-ExclusiveArch: %{rust_arches}
-
BuildRequires: rust-packaging >= 21
%global _description %{expand:
-Blazingly fast multi-producer channel.}
+A blazingly fast multi-producer channel.}
%description %{_description}
@@ -113,18 +111,6 @@ use the "nanorand" feature of the "%{crate}" crate.
%files -n %{name}+nanorand-devel
%ghost %{crate_instdir}/Cargo.toml
-%package -n %{name}+pin-project-devel
-Summary: %{summary}
-BuildArch: noarch
-
-%description -n %{name}+pin-project-devel %{_description}
-
-This package contains library source intended for building other packages which
-use the "pin-project" feature of the "%{crate}" crate.
-
-%files -n %{name}+pin-project-devel
-%ghost %{crate_instdir}/Cargo.toml
-
%package -n %{name}+select-devel
Summary: %{summary}
BuildArch: noarch
diff --git a/sources b/sources
index 2ed8ba7..48758e4 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (flume-0.10.14.crate) = ad31351031683453b77d85a89812304d63a12cce8bbd31dfaa508091cec52bc511739d4d13a085aa8bf9f2438fc1876a99f2e4ab2602bdbfe0d2ebb1df4eab0f
+SHA512 (flume-0.11.0.crate) = 29e499f3de970d2d400c3826e912a49a01408dae8d933068dc94576cb0c2ca0e42ec4a9ebeffd17a20f56869f09eec04a2b90a335bfaa6462b8df474b2a49fcd
2 weeks, 2 days
[Report] Packages Restricting Arches
by root
Package that edited their arches constraints (1)
=============================================
- ghostwriter
was ExclusiveArch: %{qt6_qtwebengine_arches}
is ExclusiveArch: %{qt5_qtwebengine_arches}
List of packages currently excluding arches (2259)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- 389-ds-base
ExcludeArch: i686
- 4ti2
ExcludeArch: %{ix86}
- 90-Second-Portraits
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le riscv64
- AcetoneISO
ExcludeArch: ppc %{power64} s390x
- Agda
ExcludeArch: %{ix86} armv7hl
- Agda-stdlib
ExcludeArch: armv7hl %{ix86}
- BareBonesBrowserLaunch
ExclusiveArch: %{java_arches} noarch
- CFR
ExclusiveArch: %{java_arches} noarch
- COPASI
ExcludeArch: %{ix86}
- CardManager
ExclusiveArch: %{java_arches} noarch
- CuraEngine
ExcludeArch: %{ix86}
- E
ExcludeArch: %{ix86}
- GAPDoc
ExcludeArch: %{ix86}
- GoldenCheetah
ExclusiveArch: %{qt5_qtwebengine_arches}
- GtkAda
ExclusiveArch: %{GPRbuild_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- HPCombi
ExclusiveArch: x86_64 %{arm64}
- IPAddress
ExclusiveArch: %{java_arches} noarch
- IQmol
ExcludeArch: %{ix86}
- JUnitParams
ExclusiveArch: %{java_arches} noarch
- L-function
ExcludeArch: %{ix86}
- LabPlot
ExcludeArch: sparc64 s390 s390x
- MUSIC
ExcludeArch: %{ix86}
- Macaulay2
ExcludeArch: %{ix86} ppc64le
- Maelstrom
ExcludeArch: %{ix86}
- Mars
ExclusiveArch: %{java_arches} noarch
- NiaAML-GUI
ExcludeArch: %{ix86}
- OpenColorIO
ExcludeArch: i686
ExclusiveArch: x86_64 ppc64le
- OpenImageIO
ExcludeArch: i686
ExclusiveArch: x86_64 ppc64le
- OpenMolcas
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- OpenStego
ExclusiveArch: %{java_arches} noarch
- Pencil2D
ExcludeArch: %{ix86}
- PragmARC
ExclusiveArch: %{GPRbuild_arches}
- ProDy
ExcludeArch: ppc64 s390x
- R-IRkernel
ExcludeArch: %{ix86}
- R-V8
ExclusiveArch: %{nodejs_arches}
- R-ape
ExcludeArch: %{ix86}
- R-igraph
ExcludeArch: %{ix86}
- R-kernlab
ExcludeArch: %{ix86} s390x
- R-rJava
ExclusiveArch: %{java_arches}
- Random123
ExcludeArch: mips64r2 mips32r2 s390
- RdRand
ExclusiveArch: %{ix86} x86_64
- RediSearch
ExclusiveArch: x86_64
- SLOF
ExclusiveArch: ppc64le
- Singular
ExcludeArch: %{ix86}
- TOPCOM
ExcludeArch: %{ix86}
- VulkanMemoryAllocator
ExcludeArch: %{ix86}
- WoeUSB
ExcludeArch: s390x
- YafaRay
ExclusiveArch: %{ix86} x86_64
- Zim
ExcludeArch: %{ix86}
- aardvark-dns
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- abiword
ExcludeArch: %{ix86}
- abrt-java-connector
ExcludeArch: %{ix86}
- accel-config
ExclusiveArch: %{ix86} x86_64
- acpica-tools
ExcludeArch: i686 armv7hl
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64 riscv64
- act
ExcludeArch: %{ix86}
- admeshgui
ExcludeArch: %{ix86}
- aemu
ExcludeArch: %{ix86} %{power64} s390x
- agenda
ExcludeArch: %{ix86}
- ahven
ExclusiveArch: %{GPRbuild_arches}
- algobox
ExclusiveArch: %{qt5_qtwebengine_arches}
- alienarena
ExcludeArch: s390x
- alizams
ExcludeArch: %{power64} %{ix86} s390x
- alt-ergo
ExcludeArch: %{ix86}
- american-fuzzy-lop
ExclusiveArch: x86_64
- amg4psblas
ExcludeArch: %{ix86}
- android-tools
ExcludeArch: ppc ppc64 s390x ppc64le
- anet
ExclusiveArch: %{GPRbuild_arches}
- ansible-collection-microsoft-sql
ExcludeArch: i686
- ant
ExclusiveArch: %{java_arches} noarch
- ant-antunit
ExclusiveArch: %{java_arches} noarch
- ant-contrib
ExclusiveArch: %{java_arches} noarch
- antlr
ExclusiveArch: %{java_arches}
- antlr3
ExclusiveArch: %{java_arches}
- antlr4-project
ExclusiveArch: %{java_arches}
- antlrworks
ExclusiveArch: %{java_arches} noarch
- aopalliance
ExclusiveArch: %{java_arches} noarch
- apache-commons-beanutils
ExclusiveArch: %{java_arches} noarch
- apache-commons-cli
ExclusiveArch: %{java_arches} noarch
- apache-commons-codec
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections4
ExclusiveArch: %{java_arches} noarch
- apache-commons-compress
ExclusiveArch: %{java_arches} noarch
- apache-commons-configuration
ExclusiveArch: %{java_arches} noarch
- apache-commons-digester
ExclusiveArch: %{java_arches} noarch
- apache-commons-exec
ExclusiveArch: %{java_arches} noarch
- apache-commons-io
ExclusiveArch: %{java_arches} noarch
- apache-commons-jexl
ExclusiveArch: %{java_arches} noarch
- apache-commons-jxpath
ExclusiveArch: %{java_arches} noarch
- apache-commons-lang3
ExclusiveArch: %{java_arches} noarch
- apache-commons-logging
ExclusiveArch: %{java_arches} noarch
- apache-commons-math
ExclusiveArch: %{java_arches} noarch
- apache-commons-modeler
ExclusiveArch: %{java_arches} noarch
- apache-commons-net
ExclusiveArch: %{java_arches} noarch
- apache-commons-parent
ExclusiveArch: %{java_arches} noarch
- apache-commons-pool
ExclusiveArch: %{java_arches} noarch
- apache-commons-vfs
ExclusiveArch: %{java_arches} noarch
- apache-ivy
ExclusiveArch: %{java_arches} noarch
- apache-logging-parent
ExclusiveArch: %{java_arches} noarch
- apache-parent
ExclusiveArch: %{java_arches} noarch
- apache-resource-bundles
ExclusiveArch: %{java_arches} noarch
- apache-sshd
ExclusiveArch: %{java_arches} noarch
- apiguardian
ExclusiveArch: %{java_arches} noarch
- apmd
ExclusiveArch: %{ix86}
- appeditor
ExcludeArch: %{ix86}
- appstream-generator
ExclusiveArch: %{ldc_arches}
- apricots
ExcludeArch: ppc64le aarch64
- apron
ExcludeArch: %{ix86}
- aqute-bnd
ExclusiveArch: %{java_arches} noarch
- arbor
ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
- arc-theme
ExcludeArch: %{ix86}
- args4j
ExclusiveArch: %{java_arches} noarch
- arianna
ExclusiveArch: %{qt6_qtwebengine_arches}
- arm-none-eabi-binutils-cs
ExcludeArch: %{ix86}
- arm-none-eabi-gcc-cs
ExcludeArch: %{ix86}
- arpwatch
ExcludeArch: %{ix86}
- asahi-installer
ExcludeArch: s390x
- asdcplib
ExcludeArch: %{ix86} %{arm}
- asmjit
ExclusiveArch: aarch64 x86_64
- assertj-core
ExclusiveArch: %{java_arches} noarch
- astromenace
ExcludeArch: ppc64 s390x
- astrometry-tycho2
ExcludeArch: s390x
- asv
ExcludeArch: %{ix86}
- atinject
ExclusiveArch: %{java_arches} noarch
- atlantik
ExcludeArch: %{ix86}
- atomic-queue
ExcludeArch: %{ix86}
- aubit4gl
ExcludeArch: i686 s390x ppc64le
- audacity
ExcludeArch: %{ix86} s390x
- audiocd-kio
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- aunit
ExclusiveArch: %{GPRbuild_arches}
- auryn
ExcludeArch: %{ix86}
- auto
ExclusiveArch: %{java_arches} noarch
- autolink-java
ExclusiveArch: noarch %{java_arches}
- avgtime
ExclusiveArch: %{ldc_arches}
- avr-gcc
ExcludeArch: %{ix86}
- aws
ExclusiveArch: %GPRbuild_arches
- aws-c-cal
ExcludeArch: s390x
- aws-c-common
ExcludeArch: s390x
- aws-c-compression
ExcludeArch: s390x
- aws-c-io
ExcludeArch: %{ix86}
ExcludeArch: s390x
- aws-c-sdkutils
ExcludeArch: s390x
- aws-checksums
ExcludeArch: s390x
- awscli2
ExcludeArch: s390x
- azove
ExcludeArch: %{ix86}
- azure-cli
ExclusiveArch: %{java_arches} noarch
- batik
ExclusiveArch: %{java_arches} noarch
- bcal
ExclusiveArch: x86_64 aarch64 ia64 ppc64 ppc64le s390x riscv64
- bcc
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl riscv64
- bcel
ExclusiveArch: %{java_arches} noarch
- bcftools
ExcludeArch: s390x
- bcm283x-firmware
ExclusiveArch: aarch64
- beansbinding
ExclusiveArch: %{java_arches} noarch
- bear
ExcludeArch: %{ix86}
- bear-factory
ExcludeArch: ppc64le
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips} riscv64
- beust-jcommander
ExclusiveArch: %{java_arches} noarch
- bibletime
ExclusiveArch: %{java_arches}
- bigloo
ExcludeArch: %{ix86}
- binaryen
ExcludeArch: ppc64 s390x
- binutils
ExcludeArch: aarch64-linux-gnu aarch64-redhat-linux
ExcludeArch: ppc64le-linux-gnu ppc64le-redhat-linux
ExcludeArch: s390x-linux-gnu s390x-redhat-linux
ExcludeArch: x86_64-linux-gnu x86_64-redhat-linux i686-linux-gnu i686-redhat-linux
- biosdevname
ExclusiveArch: %{ix86} x86_64
- biosig4c++
ExcludeArch: %{ix86}
- blake3
ExcludeArch: %{ix86}
- blender
ExcludeArch: %{ix86} %{arm}
- bless
ExclusiveArch: %mono_arches
- bliss
ExcludeArch: %{ix86}
- blueprint-compiler
ExcludeArch: s390x
- bluez-hcidump
ExcludeArch: s390 s390x
- bochs
ExcludeArch: s390x i686
- bodhi-server
ExclusiveArch: %{golang_arches_future}
- boinc-client
ExcludeArch: s390x
- bolzplatz2006
ExclusiveArch: %{java_arches}
- bootc
ExcludeArch: %{ix86}
- bottles
ExcludeArch: s390x
- bouncycastle
ExclusiveArch: %{java_arches} noarch
- bout++
ExcludeArch: %{ix86}
- bowtie
ExcludeArch: i686 armv7hl
- bowtie2
ExcludeArch: %{ix86} %{arm} s390x
- box64
ExclusiveArch: aarch64 riscv64 ppc64le x86_64
- boxes
ExcludeArch: %{ix86}
- bpftrace
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- brazil
ExclusiveArch: %{java_arches} noarch
- breakid
ExcludeArch: %{ix86}
- brewtarget
ExcludeArch: %{ix86}
- brial
ExcludeArch: %{ix86}
- bsf
ExclusiveArch: %{java_arches} noarch
- bsh
ExclusiveArch: %{java_arches} noarch
- build-helper-maven-plugin
ExclusiveArch: %{java_arches} noarch
- buildah
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- busybox
ExcludeArch: i686 s390x
- bwping
ExcludeArch: %{ix86}
- byebyebios
ExclusiveArch: x86_64
- byte-buddy
ExclusiveArch: %{java_arches} noarch
- byteman
ExclusiveArch: %{java_arches} noarch
- cachelib
ExclusiveArch: x86_64 aarch64 ppc64le
- caddy
ExclusiveArch: %{golang_arches}
ExclusiveArch: %{golang_arches_future}
- cadical
ExcludeArch: %{ix86}
- caffe
ExclusiveArch: x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64 aarch64 riscv64
- calceph
ExcludeArch: %{ix86}
- calibre
ExclusiveArch: aarch64 x86_64
- calligra
ExcludeArch: %{ix86}
- cambozola
ExclusiveArch: %{java_arches} noarch
- canl-java
ExclusiveArch: %{java_arches} noarch
- cantera
ExcludeArch: %{ix86}
- carat
ExcludeArch: %{ix86}
- casc
ExcludeArch: %{ix86}
- cataclysm-dda
ExcludeArch: i686
- catatonit
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- ccdciel
ExclusiveArch: %{fpc_arches}
ExcludeArch: %{ix86}
- ccluster
ExcludeArch: %{ix86}
- cdcollect
ExclusiveArch: %{mono_arches}
- cdi-api
ExclusiveArch: %{java_arches} noarch
- cdrdao
ExcludeArch: s390 s390x
- ceph
ExcludeArch: i686 armv7hl
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- ceres-solver
ExcludeArch: ppc64
- cfn-lint
ExcludeArch: %{ix86}
- cglib
ExclusiveArch: %{java_arches} noarch
- cgreen
ExcludeArch: s390x
- chatterino2
ExcludeArch: %{ix86}
- chatty
ExcludeArch: i686
- checkpointctl
ExclusiveArch: %{golang_arches_future}
- chromium
ExclusiveArch: x86_64
ExclusiveArch: x86_64 aarch64 ppc64le
ExclusiveArch: x86_64 aarch64
- cinnamon
ExcludeArch: %{ix86}
- cinnamon-control-center
ExcludeArch: %{ix86}
- cinnamon-desktop
ExcludeArch: %{ix86}
- cinnamon-menus
ExcludeArch: %{ix86}
- cinnamon-screensaver
ExcludeArch: %{ix86}
- cinnamon-session
ExcludeArch: %{ix86}
- cinnamon-settings-daemon
ExcludeArch: %{ix86}
- cjdns
ExclusiveArch: %{nodejs_arches}
- cjs
ExcludeArch: %{ix86}
- classloader-leak-test-framework
ExclusiveArch: %{java_arches} noarch
- classpathless-compiler
ExclusiveArch: %{java_arches} noarch
- cld2
ExcludeArch: ppc64 s390x
- clibs-list
ExcludeArch: %{ix86}
- clojure
ExclusiveArch: %{java_arches} noarch
- clojure-core-specs-alpha
ExclusiveArch: %{java_arches} noarch
- clojure-maven-plugin
ExclusiveArch: %{java_arches} noarch
- clojure-spec-alpha
ExclusiveArch: %{java_arches} noarch
- cloudcompare
ExcludeArch: %{ix86}
- clover2
ExcludeArch: armv7hl
- cmospwd
ExclusiveArch: %{ix86} x86_64
- cmrt
ExclusiveArch: %{ix86} x86_64 ia64
- coan
ExcludeArch: ppc64 s390x
- coccinelle
ExcludeArch: %{ix86}
- cocoalib
ExcludeArch: %{ix86}
- codeblocks
ExcludeArch: %{ix86}
- codehaus-parent
ExclusiveArch: %{java_arches} noarch
- cohomCalg
ExcludeArch: %{ix86}
- coin-or-Alps
ExcludeArch: %{ix86}
- coin-or-Bcp
ExcludeArch: %{ix86}
- coin-or-Bcps
ExcludeArch: %{ix86}
- coin-or-Blis
ExcludeArch: %{ix86}
- coin-or-Bonmin
ExcludeArch: %{ix86}
- coin-or-CoinMP
ExcludeArch: %{ix86}
- coin-or-Couenne
ExcludeArch: %{ix86}
- coin-or-Dip
ExcludeArch: %{ix86}
- coin-or-FlopC++
ExcludeArch: %{ix86}
- coin-or-HiGHS
ExcludeArch: %{ix86}
- coin-or-Ipopt
ExcludeArch: %{ix86}
- coin-or-OS
ExcludeArch: %{ix86}
- coin-or-SYMPHONY
ExcludeArch: %{ix86}
- coin-or-lemon
ExcludeArch: %{ix86}
- colorful
ExclusiveArch: %{fpc_arches}
- colossus
ExclusiveArch: %{java_arches} noarch
- compiz-plugins-experimental
ExcludeArch: s390 s390x
- conmon
ExclusiveArch: %{golang_arches_future}
- console-image-viewer
ExclusiveArch: %{java_arches} noarch
- containernetworking-plugins
ExclusiveArch: %{golang_arches}
- containers-common
ExclusiveArch: %{golang_arches} noarch
- contour-terminal
ExclusiveArch: x86_64 aarch64
- contractor
ExcludeArch: %{ix86}
- conu
ExcludeArch: ppc64
- coolreader
ExcludeArch: %{ix86}
- coq
ExclusiveArch: %{ocaml_native_compiler}
- corectrl
ExcludeArch: %{ix86}
- cortado
ExclusiveArch: %{java_arches} noarch
- cosmic-comp
ExcludeArch: %{ix86}
- coxeter
ExcludeArch: %{ix86}
- cp2k
ExcludeArch: s390x
- cpp-hocon
ExcludeArch: %{ix86}
- cpu-x
ExclusiveArch: i686 x86_64
- cpufetch
ExclusiveArch: %{arm} aarch64 x86_64 ppc ppc64 ppc64le
- cpuid
ExclusiveArch: %{ix86} x86_64
- cpuinfo
ExclusiveArch: x86_64 aarch64
- cqrlog
ExclusiveArch: %{fpc_arches}
- cramjam-cli
ExcludeArch: %{ix86}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- crash-gcore-command
ExclusiveArch: aarch64 ppc64le x86_64
- crash-trace-command
ExclusiveArch: aarch64 ppc64le s390x x86_64
- credentials-fetcher
ExclusiveArch: x86_64 aarch64 s390x
- crest
ExcludeArch: s390x
- cri-o
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- cri-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- crun
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le riscv64 s390x x86_64
- cryfs
ExcludeArch: i686
- cryptlib
ExclusiveArch: x86_64 aarch64 ppc64le
- crypto-policies
ExclusiveArch: %{java_arches} noarch
- cryptobone
ExclusiveArch: x86_64 ppc64le aarch64
- cryptominisat
ExcludeArch: %{ix86}
- csdp
ExcludeArch: %{ix86}
- csslint
ExclusiveArch: %{nodejs_arches} noarch
- cura
ExcludeArch: %{ix86}
- cura-fdm-materials
ExcludeArch: %{ix86}
- cvc5
ExcludeArch: %{ix86}
- cxsc
ExcludeArch: %{ix86}
- daggy
ExcludeArch: s390x
- dapl
ExcludeArch: s390, armv7hl
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExcludeArch: armv7hl i686 s390x
- dbus-parsec
ExcludeArch: ppc64le s390x
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- ddccontrol
ExcludeArch: s390 s390x
- ddcutil
ExcludeArch: s390 s390x
- ddd
ExcludeArch: %{ix86}
- ddnet
ExcludeArch: s390x
- decentxml
ExclusiveArch: %{java_arches} noarch
- deepin-daemon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- deepin-desktop-schemas
ExclusiveArch: %{go_arches}
- dhall
ExcludeArch: %{ix86}
- dhall-json
ExcludeArch: %{ix86}
- dialect
ExcludeArch: s390x
- diffoscope
ExcludeArch: %{ix86}
- dippi
ExcludeArch: %{ix86}
- directory-maven-plugin
ExclusiveArch: %{java_arches} noarch
- dirgra
ExclusiveArch: %{java_arches} noarch
- disruptor
ExclusiveArch: %{java_arches} noarch
- ditaa
ExclusiveArch: %{java_arches} noarch
- dl_poly
ExcludeArch: i686
- dlib
ExcludeArch: %{ix86} s390x
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: x86_64
- dnsdist
ExcludeArch: %{ix86} #1994125
ExcludeArch: armv7hl #1994125
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dogtag-pki
ExclusiveArch: %{java_arches}
ExcludeArch: i686
- dolfin
ExcludeArch: %{ix86}
- dolphin-emu
ExclusiveArch: x86_64 aarch64
- dom4j
ExclusiveArch: %{java_arches} noarch
- dosbox-staging
ExcludeArch: %{ix86}
- dotnet6.0
ExclusiveArch: aarch64 x86_64 s390x
ExclusiveArch: x86_64
- dotnet8.0
ExclusiveArch: aarch64 ppc64le s390x x86_64
- doublecmd
ExclusiveArch: %{ix86} x86_64
- dovecot
ExcludeArch: %{ix86}
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dragonbox
ExcludeArch: %{ix86}
- drat-trim
ExcludeArch: %{ix86}
- drat2er
ExcludeArch: %{ix86}
- dub
ExclusiveArch: %{ldc_arches}
- duperemove
ExcludeArch: %{ix86}
- dvdauthor
ExcludeArch: %{ix86}
- dvgrab
ExcludeArch: s390 s390x
- dxvk-native
ExclusiveArch: %{ix86} x86_64
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc64le aarch64
- e-antic
ExcludeArch: %{ix86}
- e00compr
ExcludeArch: %{ix86}
- e3
ExclusiveArch: %{ix86} x86_64
- easymock
ExclusiveArch: %{java_arches} noarch
- eccodes
ExcludeArch: i686
- ecj
ExclusiveArch: %{java_arches} noarch
- eclib
ExcludeArch: %{ix86}
- eclipse-swt
ExclusiveArch: %{java_arches}
- ecryptfs-utils
ExcludeArch: %{ix86}
- ed25519-java
ExclusiveArch: %{java_arches} noarch
- edac-utils
ExcludeArch: %{ix86}
- edflib
ExcludeArch: s390x %{ix86}
- edk2
ExclusiveArch: x86_64 aarch64 riscv64
- edwin-fonts
ExcludeArch: %{ix86}
- eegdev
ExcludeArch: %{ix86}
- eegview
ExcludeArch: %{ix86}
- efax
ExcludeArch: s390 s390x
- efibootmgr
ExclusiveArch: %{efi}
- efifs
ExclusiveArch: %{efi}
- efitools
ExclusiveArch: %{efi}
- efivar
ExclusiveArch: %{efi}
- electron-cash
ExcludeArch: %{ix86}
- electrum
ExcludeArch: %{ix86}
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 aarch64 %{arm} %{power64}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- emacs-common-proofgeneral
ExcludeArch: %{ix86}
- emacs-company-mode
ExcludeArch: %{ix86}
- emacs-iedit
ExcludeArch: %{ix86}
- emacs-slime
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- embree
ExclusiveArch: aarch64 x86_64
- embree3
ExclusiveArch: aarch64 x86_64
- enjarify
ExclusiveArch: %{java_arches} noarch
- enki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 riscv64
- eot-utils
ExcludeArch: %{ix86}
- ergo
ExcludeArch: %{ix86}
- eric
ExclusiveArch: %{qt6_qtwebengine_arches} noarch
- erlang-corba
ExclusiveArch: %{java_arches}
- esmi_ib_library
ExclusiveArch: x86_64
- espresso
ExcludeArch: s390x i686 armv7hl
- eth-tools
ExclusiveArch: x86_64
- exec-maven-plugin
ExclusiveArch: %{java_arches} noarch
- external-editor-revived
ExclusiveArch: %{rust_arches}
- extra-enforcer-rules
ExclusiveArch: %{java_arches} noarch
- f3d
ExcludeArch: %{ix86}
- fasterxml-oss-parent
ExclusiveArch: %{java_arches} noarch
- fb303
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- fbreader
ExcludeArch: %{ix86}
ExcludeArch: armv7hl
- fbthrift
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fcitx5-mozc
ExcludeArch: ppc ppc64 sparcv9 sparc64 s390x
- fcoe-utils
ExcludeArch: ppc s390
ExcludeArch: %{ix86}
- felix-parent
ExclusiveArch: %{java_arches} noarch
- felix-utils
ExclusiveArch: %{java_arches} noarch
- fernflower
ExclusiveArch: %{java_arches} noarch
- fes
ExclusiveArch: %{ix86} x86_64
- fido-device-onboard
ExcludeArch: %{ix86}
- filedrop
ExclusiveArch: %{java_arches} noarch
- filezilla
ExcludeArch: s390x
- firecracker
ExclusiveArch: aarch64 x86_64
- firefox
ExcludeArch: i686
- fishbowl
ExclusiveArch: %{java_arches} noarch
- fizz
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- flang
ExcludeArch: i686 s390x
- flashrom
ExcludeArch: s390 s390x
- flatbuffers
ExcludeArch: %{ix86}
- flatpak
ExcludeArch: %{ix86}
- flatpak-builder
ExcludeArch: %{ix86}
- flatpak-module-tools
ExcludeArch: i386 i686
- flexmark-java
ExclusiveArch: noarch %{java_arches}
- flickcurl
ExcludeArch: %{ix86}
- flint
ExcludeArch: %{ix86}
- flocq
ExclusiveArch: %{ocaml_native_compiler}
- floppy-support
ExcludeArch: %{arm} aarch64 s390x
- florist
ExclusiveArch: %{GPRbuild_arches}
- flterm
ExcludeArch: s390 s390x sparcv9
- fluent-bit
ExclusiveArch: x86_64 aarch64
- flute
ExclusiveArch: %{java_arches} noarch
- fmidi
ExcludeArch: %{ix86}
- folly
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- fop
ExclusiveArch: %{java_arches} noarch
- forge-parent
ExclusiveArch: %{java_arches} noarch
- fotocx
ExcludeArch: %{ix86}
- foxi
ExclusiveArch: x86_64 aarch64
- fpc
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64 ppc64le
- fprintd
ExcludeArch: s390 s390x
- fractal
ExcludeArch: %{ix86}
- fragments
ExcludeArch: %{ix86}
- frama-c
ExclusiveArch: %{ocaml_native_compiler}
- free42
ExcludeArch: %{ix86}
- freecol
ExclusiveArch: %{java_arches} noarch
- freedink
ExcludeArch: s390x
- freedink-dfarc
ExcludeArch: s390x
- freefem++
ExcludeArch: %{ix86}
- freemarker
ExclusiveArch: %{java_arches} noarch
- freerouting
ExclusiveArch: %{java_arches} noarch
- freetennis
ExcludeArch: sparc64 s390 s390x %{ix86}
- frescobaldi
ExclusiveArch: %{qt5_qtwebengine_arches}
- frysk
ExclusiveArch: x86_64 ppc64
- fuse-overlayfs
ExclusiveArch: %{arm64} ppc64le s390x x86_64 riscv64
- fusesource-pom
ExclusiveArch: %{java_arches} noarch
- fwts
ExclusiveArch: x86_64 %{arm} aarch64 s390x riscv64 %{power64}
- fwupd-efi
ExclusiveArch: x86_64 aarch64
- ga
ExcludeArch: %{ix86}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le riscv64
- galera
ExcludeArch: %{ix86}
- gambas3
ExcludeArch: i686
- gap
ExcludeArch: %{ix86}
- gap-pkg-ace
ExcludeArch: %{ix86}
- gap-pkg-aclib
ExcludeArch: %{ix86}
- gap-pkg-alnuth
ExcludeArch: %{ix86}
- gap-pkg-anupq
ExcludeArch: %{ix86}
- gap-pkg-atlasrep
ExcludeArch: %{ix86}
- gap-pkg-autodoc
ExcludeArch: %{ix86}
- gap-pkg-automata
ExcludeArch: %{ix86}
- gap-pkg-autpgrp
ExcludeArch: %{ix86}
- gap-pkg-browse
ExcludeArch: %{ix86}
- gap-pkg-caratinterface
ExcludeArch: %{ix86}
- gap-pkg-circle
ExcludeArch: %{ix86}
- gap-pkg-cohomolo
ExcludeArch: %{ix86}
- gap-pkg-congruence
ExcludeArch: %{ix86}
- gap-pkg-corelg
ExcludeArch: %{ix86}
- gap-pkg-crime
ExcludeArch: %{ix86}
- gap-pkg-crisp
ExcludeArch: %{ix86}
- gap-pkg-crypting
ExcludeArch: %{ix86}
- gap-pkg-cryst
ExcludeArch: %{ix86}
- gap-pkg-crystcat
ExcludeArch: %{ix86}
- gap-pkg-ctbllib
ExcludeArch: %{ix86}
- gap-pkg-curlinterface
ExcludeArch: %{ix86}
- gap-pkg-cvec
ExcludeArch: %{ix86}
- gap-pkg-datastructures
ExcludeArch: %{ix86}
- gap-pkg-design
ExcludeArch: %{ix86}
- gap-pkg-digraphs
ExcludeArch: %{ix86}
- gap-pkg-edim
ExcludeArch: %{ix86}
- gap-pkg-factint
ExcludeArch: %{ix86}
- gap-pkg-ferret
ExcludeArch: %{ix86}
- gap-pkg-fga
ExcludeArch: %{ix86}
- gap-pkg-fining
ExcludeArch: %{ix86}
- gap-pkg-float
ExcludeArch: %{ix86}
- gap-pkg-format
ExcludeArch: %{ix86}
- gap-pkg-forms
ExcludeArch: %{ix86}
- gap-pkg-fplsa
ExcludeArch: %{ix86}
- gap-pkg-fr
ExcludeArch: %{ix86}
- gap-pkg-francy
ExcludeArch: %{ix86}
- gap-pkg-gbnp
ExcludeArch: %{ix86}
- gap-pkg-genss
ExcludeArch: %{ix86}
- gap-pkg-grape
ExcludeArch: %{ix86}
- gap-pkg-groupoids
ExcludeArch: %{ix86}
- gap-pkg-grpconst
ExcludeArch: %{ix86}
- gap-pkg-guava
ExcludeArch: %{ix86}
- gap-pkg-hap
ExcludeArch: %{ix86}
- gap-pkg-hapcryst
ExcludeArch: %{ix86}
- gap-pkg-hecke
ExcludeArch: %{ix86}
- gap-pkg-images
ExcludeArch: %{ix86}
- gap-pkg-io
ExcludeArch: %{ix86}
- gap-pkg-irredsol
ExcludeArch: %{ix86}
- gap-pkg-json
ExcludeArch: %{ix86}
- gap-pkg-jupyterkernel
ExcludeArch: %{ix86}
- gap-pkg-jupyterviz
ExcludeArch: %{ix86}
- gap-pkg-laguna
ExcludeArch: %{ix86}
- gap-pkg-liealgdb
ExcludeArch: %{ix86}
- gap-pkg-liepring
ExcludeArch: %{ix86}
- gap-pkg-liering
ExcludeArch: %{ix86}
- gap-pkg-loops
ExcludeArch: %{ix86}
- gap-pkg-lpres
ExcludeArch: %{ix86}
- gap-pkg-mapclass
ExcludeArch: %{ix86}
- gap-pkg-nautytracesinterface
ExcludeArch: %{ix86}
- gap-pkg-nq
ExcludeArch: %{ix86}
- gap-pkg-openmath
ExcludeArch: %{ix86}
- gap-pkg-orb
ExcludeArch: %{ix86}
- gap-pkg-permut
ExcludeArch: %{ix86}
- gap-pkg-polenta
ExcludeArch: %{ix86}
- gap-pkg-polycyclic
ExcludeArch: %{ix86}
- gap-pkg-polymaking
ExcludeArch: %{ix86}
- gap-pkg-primgrp
ExcludeArch: %{ix86}
- gap-pkg-profiling
ExcludeArch: %{ix86}
- gap-pkg-qpa
ExcludeArch: %{ix86}
- gap-pkg-quagroup
ExcludeArch: %{ix86}
- gap-pkg-radiroot
ExcludeArch: %{ix86}
- gap-pkg-recog
ExcludeArch: %{ix86}
- gap-pkg-repsn
ExcludeArch: %{ix86}
- gap-pkg-resclasses
ExcludeArch: %{ix86}
- gap-pkg-scscp
ExcludeArch: %{ix86}
- gap-pkg-semigroups
ExcludeArch: %{ix86}
- gap-pkg-singular
ExcludeArch: %{ix86}
- gap-pkg-sla
ExcludeArch: %{ix86}
- gap-pkg-smallgrp
ExcludeArch: %{ix86}
- gap-pkg-smallsemi
ExcludeArch: %{ix86}
- gap-pkg-sonata
ExcludeArch: %{ix86}
- gap-pkg-sophus
ExcludeArch: %{ix86}
- gap-pkg-spinsym
ExcludeArch: %{ix86}
- gap-pkg-standardff
ExcludeArch: %{ix86}
- gap-pkg-tomlib
ExcludeArch: %{ix86}
- gap-pkg-toric
ExcludeArch: %{ix86}
- gap-pkg-transgrp
ExcludeArch: %{ix86}
- gap-pkg-utils
ExcludeArch: %{ix86}
- gap-pkg-uuid
ExcludeArch: %{ix86}
- gap-pkg-xmod
ExcludeArch: %{ix86}
- gap-pkg-zeromqinterface
ExcludeArch: %{ix86}
- gappa
ExcludeArch: %{ix86}
- gappalib-coq
ExclusiveArch: %{ocaml_native_compiler}
- gauche
ExcludeArch: armv7hl
- gbrainy
ExclusiveArch: %mono_arches
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- gdl
ExcludeArch: %{ix86}
- gearhead1
ExclusiveArch: %{fpc_arches}
- gearhead2
ExclusiveArch: %{fpc_arches}
- gearmand
ExcludeArch: ppc
- geeqie
ExcludeArch: %{ix86}
- gfan
ExcludeArch: %{ix86}
- gfs2-utils
ExcludeArch: %{ix86}
- gfxstream
ExcludeArch: %{ix86} %{power64} s390x
- ghc
ExcludeArch: armv7hl
- ghc-cborg
ExcludeArch: %{ix86}
- ghc-cborg-json
ExcludeArch: %{ix86}
- ghc-gi-gtk
ExcludeArch: armv7hl
- ghc-serialise
ExcludeArch: %{ix86}
- ghc9.10
ExcludeArch: armv7hl
- ghc9.2
ExcludeArch: armv7hl
- ghc9.4
ExcludeArch: armv7hl
- ghc9.6
ExcludeArch: armv7hl
- ghc9.8
ExcludeArch: armv7hl
- ghdl
ExclusiveArch: %{GNAT_arches}
ExcludeArch: armv7hl %{ix86}
- ghostwriter
ExclusiveArch: %{qt5_qtwebengine_arches}
- gimp-fourier-plugin
ExcludeArch: %{ix86}
- gio-sharp
ExclusiveArch: %mono_arches
- gir-to-d
ExclusiveArch: %{ldc_arches}
- git-lfs
ExcludeArch: %{ix86}
- git-octopus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- gitqlient
ExclusiveArch: %{qt5_qtwebengine_arches}
- giver
ExclusiveArch: %{mono_arches}
- gkeyfile-sharp
ExclusiveArch: %mono_arches
- gkrellm-wifi
ExcludeArch: s390 s390x
- glava
ExcludeArch: %{ix86}
- glibd
ExclusiveArch: %{ldc_arches}
- gloo
ExcludeArch: i686
- glycin-loaders
ExcludeArch: %{ix86}
- gmsh
ExcludeArch: %{ix86}
- gmult
ExcludeArch: %{ix86}
- gn
ExcludeArch: %{ix86}
- gnatcoll
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-bindings
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-db
ExclusiveArch: %{GPRbuild_arches}
- gnofract4d
ExcludeArch: %{ix86}
- gnome-applets
ExcludeArch: %{ix86}
- gnome-bluetooth
ExcludeArch: s390 s390x
- gnome-bluetooth3.34
ExcludeArch: s390 s390x
- gnome-boxes
ExclusiveArch: x86_64
- gnome-chemistry-utils
ExcludeArch: %{ix86}
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- gnome-flashback
ExcludeArch: %{ix86}
- gnome-hexgl
ExcludeArch: i686
- gnome-initial-setup
ExcludeArch: %{ix86}
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-monitor-config
ExcludeArch: %{ix86}
- gnome-panel
ExcludeArch: %{ix86}
- gnome-rdp
ExclusiveArch: %{mono_arches}
ExcludeArch: %{ix86}
- gnome-session
ExcludeArch: %{ix86}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-shell
ExcludeArch: %{ix86}
- gnome-software
ExcludeArch: %{ix86}
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnome-terminal
ExcludeArch: %{ix86}
- gnu-efi
ExclusiveArch: %{efi}
- gnucash
ExcludeArch: %{ix86}
ExcludeArch: ppc64 s390x
- gnumeric
ExcludeArch: %{ix86}
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godot
ExcludeArch: s390x
- godot3
ExcludeArch: ppc64 ppc64le s390x
- goffice
ExcludeArch: %{ix86}
- golang
ExclusiveArch: %{golang_arches}
- golang-entgo-ent
ExcludeArch: %{arm32} %{ix86}
- golang-github-ebitengine-purego
ExcludeArch: ppc64le s390x
- golang-github-elliotchance-orderedmap
ExcludeArch: aarch64
ExcludeArch: ppc64le
ExcludeArch: s390x
- golang-github-facebookincubator-nvdtools
ExcludeArch: i686 armv7hl
- golang-github-google-goterm
ExcludeArch: ppc64le s390x
- golang-helm-3
ExcludeArch: armv7hl aarch64
- golang-tinygo-x-llvm
ExcludeArch: %{ix86}
- goldendict-ng
ExclusiveArch: aarch64 x86_64
- google-compute-engine-guest-configs
ExcludeArch: %{ix86}
- google-cpu_features
ExcludeArch: s390x
- google-gson
ExclusiveArch: %{java_arches} noarch
- google-guest-agent
ExcludeArch: ppc64le s390x
- google-guice
ExclusiveArch: %{java_arches} noarch
- google-osconfig-agent
ExcludeArch: ppc64le s390x
- gotcha
ExcludeArch: %{ix86}
- gotun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: x86_64
- gource
ExcludeArch: ppc64le
- goverlay
ExclusiveArch: %{fpc_arches}
- gpaste
ExcludeArch: %{ix86}
- gpaw
ExcludeArch: ppc64
ExcludeArch: %{ix86}
- gperftools
ExcludeArch: s390
- gprbuild
ExclusiveArch: %{GPRbuild_arches}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha aarch64
- gr-air-modes
ExcludeArch: %{ix86}
- grafana
ExclusiveArch: %{grafana_arches}
- grafana-pcp
ExclusiveArch: %{grafanapcp_arches}
- greenboot
ExcludeArch: s390x
- gretl
ExcludeArch: %{ix86}
- gromacs
ExcludeArch: i686 armv7hl s390x
- grub-customizer
ExcludeArch: s390 s390x %{arm}
- grub2
ExcludeArch: s390 s390x %{ix86}
- grub2-breeze-theme
ExcludeArch: s390 s390x %{arm}
- grubby
ExcludeArch: %{ix86}
- gsequencer
ExcludeArch: i686
- gthree
ExcludeArch: i686
- gthumb
ExcludeArch: s390x
- gtk-sharp-beans
ExclusiveArch: %mono_arches
- gtk-sharp2
ExclusiveArch: %mono_arches
- gtk-sharp3
ExclusiveArch: %{mono_arches}
- gtkd
ExclusiveArch: %{ldc_arches}
- gtkhash
ExcludeArch: %{ix86}
- gtkwave
ExcludeArch: s390x
- guava
ExclusiveArch: %{java_arches} noarch
- gudev-sharp
ExclusiveArch: %mono_arches
- guestfs-tools
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- gvisor-tap-vsock
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- hamcrest
ExclusiveArch: %{java_arches} noarch
- harec
ExclusiveArch: x86_64 aarch64 riscv64
- harmonyseq
ExcludeArch: %{ix86}
- harvey
ExcludeArch: %{ix86}
- hashcat
ExcludeArch: ppc64 s390x
- hawtjni
ExclusiveArch: %{java_arches} noarch
- haxe
ExcludeArch: %{ix86}
- hcloud
ExcludeArch: %{ix86}
- heaptrack
ExcludeArch: s390 s390x
- hedgewars
ExclusiveArch: %{fpc_arches}
ExcludeArch: ppc64le
- helix
ExcludeArch: %{ix86}
- hevea
ExcludeArch: %{ix86}
- hibernate-jpa-2.0-api
ExclusiveArch: %{java_arches} noarch
- hid4java
ExclusiveArch: %{java_arches} noarch
- highfive
ExcludeArch: %{ix86}
- hipblas
ExclusiveArch: x86_64
- hipcub
ExclusiveArch: x86_64
- hipfft
ExclusiveArch: x86_64
- hipify
ExclusiveArch: x86_64
- hiprand
ExclusiveArch: x86_64
- hipsolver
ExclusiveArch: x86_64
- hipsparse
ExclusiveArch: x86_64
- hmmer
ExcludeArch: aarch64 ppc64le s390x
- honggfuzz
ExcludeArch: %{arm} %{power64} s390 s390x
- howl
ExcludeArch: ppc64le s390x
ExcludeArch: %{ix86}
- hpx
ExcludeArch: i686
- hsakmt
ExclusiveArch: x86_64 aarch64 ppc64le
- httpcomponents-client
ExclusiveArch: %{java_arches} noarch
- httpcomponents-core
ExclusiveArch: %{java_arches} noarch
- httpcomponents-project
ExclusiveArch: %{java_arches} noarch
- hydrapaper
ExcludeArch: s390x
- hyperhdr
ExcludeArch: %{ix86}
- hyperrogue
ExcludeArch: armv7hl
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64 aarch64
- hyprcursor
ExcludeArch: %{ix86}
- hypridle
ExcludeArch: %{ix86}
- hyprland
ExcludeArch: %{ix86}
- hyprlang
ExcludeArch: %{ix86}
- hyprlock
ExcludeArch: %{ix86}
- hyprpaper
ExcludeArch: %{ix86}
- hyprwayland-scanner
ExcludeArch: %{ix86}
- i2c-tools
ExcludeArch: s390 s390x
- ibsim
ExcludeArch: s390 %{arm}
- ibus-typing-booster
ExcludeArch: ppc64 s390x
- icecat
ExcludeArch: %{ix86} %{arm}
- icedtea-web
ExclusiveArch: %{java_arches}
- icu4j
ExclusiveArch: %{java_arches} noarch
- ignition
ExcludeArch: %{ix86}
- iir1
ExcludeArch: %{ix86}
- ike-scan
ExcludeArch: %{ix86}
- ilua
ExcludeArch: %{ix86}
- imagej
ExclusiveArch: %{java_arches} noarch
- imhex
ExclusiveArch: x86_64 %{arm64}
- iml
ExcludeArch: %{ix86}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indi-3rdparty-drivers
ExcludeArch: %{ix86}
- indi-3rdparty-libraries
ExcludeArch: %{ix86}
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cm-compiler
ExclusiveArch: i686 x86_64
- intel-cmt-cat
ExclusiveArch: x86_64
- intel-compute-runtime
ExclusiveArch: x86_64
- intel-gmmlib
ExcludeArch: s390x ppc64le
- intel-igc
ExclusiveArch: x86_64
- intel-ipp-crypto-mb
ExclusiveArch: x86_64
- intel-ipsec-mb
ExclusiveArch: x86_64
- intel-lpmd
ExclusiveArch: x86_64
- intel-media-driver-free
ExclusiveArch: i686 x86_64
- intel-mediasdk
ExclusiveArch: x86_64
- intel-metee
ExclusiveArch: x86_64
- intel-undervolt
ExclusiveArch: i386 x86_64
- intel-vpl-gpu-rt
ExclusiveArch: x86_64
- ioport
ExclusiveArch: %{ix86} x86_64
- ipe
ExcludeArch: %{ix86}
- ipmctl
ExclusiveArch: x86_64
- irda-utils
ExcludeArch: s390 s390x
- irqbalance
ExcludeArch: s390 s390x
- isa-l
ExcludeArch: %{ix86}
- ispc
ExclusiveArch: x86_64 aarch64
- iucode-tool
ExclusiveArch: %{ix86} x86_64
- iyfct
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- jFormatString
ExclusiveArch: %{java_arches} noarch
- jack-mixer
ExcludeArch: armv7hl
ExcludeArch: i686
- jackson-annotations
ExclusiveArch: %{java_arches} noarch
- jackson-bom
ExclusiveArch: %{java_arches} noarch
- jackson-core
ExclusiveArch: %{java_arches} noarch
- jackson-databind
ExclusiveArch: %{java_arches} noarch
- jackson-jaxrs-providers
ExclusiveArch: %{java_arches} noarch
- jackson-modules-base
ExclusiveArch: %{java_arches} noarch
- jackson-parent
ExclusiveArch: %{java_arches} noarch
- jacoco
ExclusiveArch: %{java_arches} noarch
- jacop
ExclusiveArch: %{java_arches} noarch
- jakarta-activation
ExclusiveArch: %{java_arches} noarch
- jakarta-activation1
ExclusiveArch: %{java_arches} noarch
- jakarta-annotations
ExclusiveArch: %{java_arches} noarch
- jakarta-el
ExclusiveArch: %{java_arches} noarch
- jakarta-interceptors
ExclusiveArch: %{java_arches} noarch
- jakarta-json
ExclusiveArch: %{java_arches} noarch
- jakarta-mail
ExclusiveArch: %{java_arches} noarch
- jakarta-mail1
ExclusiveArch: %{java_arches} noarch
- jakarta-oro
ExclusiveArch: %{java_arches} noarch
- jakarta-saaj
ExclusiveArch: %{java_arches} noarch
- jakarta-server-pages
ExclusiveArch: %{java_arches} noarch
- jakarta-servlet
ExclusiveArch: %{java_arches} noarch
- jakarta-xml-ws
ExclusiveArch: %{java_arches} noarch
- janino
ExclusiveArch: %{java_arches} noarch
- jansi
ExclusiveArch: %{java_arches}
- jansi-native
ExclusiveArch: %{java_arches}
- jansi1
ExclusiveArch: %{java_arches} noarch
- java-1.8.0-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-1.8.0-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-11-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-11-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-17-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-17-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-21-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-21-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-diff-utils
ExclusiveArch: %{java_arches} noarch
- java-dirq
ExclusiveArch: %{java_arches} noarch
- java-jd-decompiler
ExclusiveArch: %{java_arches} noarch
- java-latest-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-latest-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-runtime-decompiler
ExclusiveArch: %{java_arches} noarch
- java-scrypt
ExclusiveArch: %{java_arches} noarch
- java_cup
ExclusiveArch: %{java_arches} noarch
- javacc
ExclusiveArch: %{java_arches} noarch
- javacc-maven-plugin
ExclusiveArch: %{java_arches} noarch
- javaewah
ExclusiveArch: %{java_arches} noarch
- javapackages-bootstrap
ExclusiveArch: %{java_arches}
- javaparser
ExclusiveArch: %{java_arches} noarch
- javapoet
ExclusiveArch: %{java_arches} noarch
- javassist
ExclusiveArch: %{java_arches} noarch
- jaxb
ExclusiveArch: %{java_arches} noarch
- jaxb-api
ExclusiveArch: %{java_arches} noarch
- jaxb-api2
ExclusiveArch: %{java_arches} noarch
- jaxb-dtd-parser
ExclusiveArch: %{java_arches} noarch
- jaxb-fi
ExclusiveArch: %{java_arches} noarch
- jaxb-istack-commons
ExclusiveArch: %{java_arches} noarch
- jaxb-stax-ex
ExclusiveArch: %{java_arches} noarch
- jaxen
ExclusiveArch: %{java_arches} noarch
- jblas
ExcludeArch: %{ix86}
- jboss-jaxrs-2.0-api
ExclusiveArch: %{java_arches} noarch
- jboss-logging
ExclusiveArch: %{java_arches} noarch
- jboss-logging-tools
ExclusiveArch: %{java_arches} noarch
- jboss-parent
ExclusiveArch: %{java_arches} noarch
- jchardet
ExclusiveArch: %{java_arches} noarch
- jcip-annotations
ExclusiveArch: %{java_arches} noarch
- jctools
ExclusiveArch: %{java_arches} noarch
- jcuber
ExclusiveArch: %{java_arches} noarch
- jdeparser
ExclusiveArch: %{java_arches} noarch
- jdepend
ExclusiveArch: %{java_arches} noarch
- jdependency
ExclusiveArch: %{java_arches} noarch
- jdom
ExclusiveArch: %{java_arches} noarch
- jdom2
ExclusiveArch: %{java_arches} noarch
- jedit
ExclusiveArch: %{java_arches} noarch
- jericho-html
ExclusiveArch: %{java_arches} noarch
- jetbrains-annotations
ExclusiveArch: noarch %{java_arches}
- jetty
ExclusiveArch: %{java_arches} noarch
- jflex
ExclusiveArch: %{java_arches} noarch
- jfreechart
ExclusiveArch: %{java_arches} noarch
- jgit
ExclusiveArch: %{java_arches} noarch
- jglobus
ExclusiveArch: %{java_arches} noarch
- jgoodies-common
ExclusiveArch: %{java_arches} noarch
- jgoodies-forms
ExclusiveArch: %{java_arches} noarch
- jgoodies-looks
ExclusiveArch: %{java_arches} noarch
- jigawatts
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- jline
ExclusiveArch: %{java_arches}
- jline2
ExclusiveArch: %{java_arches} noarch
- jmock
ExclusiveArch: %{java_arches} noarch
- jmol
ExclusiveArch: %{java_arches} noarch
- jna
ExclusiveArch: %{java_arches}
- jneuroml-core
ExclusiveArch: %{java_arches} noarch
- jni-inchi
ExclusiveArch: %{java_arches}
- jo
ExcludeArch: %{ix86}
- jol
ExclusiveArch: %{java_arches} noarch
- jolokia-jvm-agent
ExclusiveArch: %{java_arches} noarch
- jopt-simple
ExclusiveArch: %{java_arches} noarch
- jorbis
ExclusiveArch: %{java_arches} noarch
- jowl
ExclusiveArch: %{nodejs_arches} noarch
- jpanoramamaker
ExclusiveArch: %{java_arches} noarch
- jpilot
ExcludeArch: s390, s390x
- jpilot-backup
ExcludeArch: s390 s390x
- jsch
ExclusiveArch: %{java_arches} noarch
- jsch-agent-proxy
ExclusiveArch: %{java_arches} noarch
- json_simple
ExclusiveArch: %{java_arches} noarch
- jsoup
ExclusiveArch: %{java_arches} noarch
- jsr-305
ExclusiveArch: %{java_arches} noarch
- jss
ExclusiveArch: %{java_arches}
ExcludeArch: i686
- jssc
ExclusiveArch: %{java_arches}
- jtidy
ExclusiveArch: %{java_arches} noarch
- julia
ExclusiveArch: x86_64
- junit
ExclusiveArch: %{java_arches} noarch
- junit5
ExclusiveArch: %{java_arches} noarch
- juniversalchardet
ExclusiveArch: %{java_arches} noarch
- jzlib
ExclusiveArch: %{java_arches} noarch
- kaffeine
ExcludeArch: %{ix86}
- kaidan
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- kata-containers
ExcludeArch: %{arm} %{ix86} s390 s390x
ExcludeArch: ppc64le
- kawa
ExcludeArch: i686
- kchmviewer
ExclusiveArch: %{qt5_qtwebengine_arches}
- kcm_wacomtablet
ExcludeArch: s390 s390x
- kcov
ExcludeArch: s390 s390x
- kdenlive
ExcludeArch: %{ix86}
- keepass
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- keepassxc
ExcludeArch: s390x
- kernel
ExclusiveArch: noarch x86_64 s390x aarch64 ppc64le
ExclusiveArch: noarch i386 i686 x86_64 s390x aarch64 ppc64le
- kernelshark
ExcludeArch: %{ix86} %{arm}
- keydb
ExcludeArch: %{ix86}
- keylime-agent-rust
ExclusiveArch: %{rust_arches}
- kf5-akonadi-search
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kblog
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarcore
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarutils
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kitinerary
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-ktnef
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-libkdcraw
ExclusiveArch: x86_64 ppc64le %{arm}
- khelpcenter
ExclusiveArch: %{qt6_qtwebengine_arches}
- kicad
ExclusiveArch: x86_64 aarch64 ppc64le
- kissat
ExcludeArch: %{ix86}
- kitty
ExcludeArch: %{ix86}
- kiwix-desktop
ExclusiveArch: %{qt5_qtwebengine_arches}
- knot-resolver
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- kokkos
ExcludeArch: i686 armv7hl
- kpilot
ExcludeArch: s390 s390x
- krita
ExcludeArch: %{ix86}
- ksensors
ExcludeArch: s390 s390x
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm}
- ladspa-autotalent-plugins
ExcludeArch: %{ix86}
- laf-plugin
ExclusiveArch: %{java_arches} noarch
- latte-integrale
ExcludeArch: %{ix86}
- lazarus
ExclusiveArch: %{fpc_arches}
- lazpaint
ExclusiveArch: %{fpc_arches}
- lcd4linux
ExcludeArch: s390 s390x
- ldapjdk
ExclusiveArch: %{java_arches} noarch
- ldc
ExclusiveArch: %{ldc_arches} ppc64le
- ledmon
ExcludeArch: %{ix86}
- leland-fonts
ExcludeArch: %{ix86}
- lfortran
ExclusiveArch: x86_64
- lfsc
ExcludeArch: %{ix86}
- lib3mf
ExcludeArch: %{ix86}
- libCombine
ExcludeArch: %{ix86}
- libaiff
ExcludeArch: %{ix86}
- libarcus
ExcludeArch: %{ix86}
- libarrow
ExcludeArch: %{ix86} %{arm}
- libavc1394
ExcludeArch: s390 s390x
- libbase
ExclusiveArch: %{java_arches} noarch
- libcamera
ExcludeArch: s390x ppc64le
- libcamera-apps
ExcludeArch: %{power64} s390x
- libcint
ExcludeArch: %{power64}
ExcludeArch: x86_64
- libcircle
ExcludeArch: %{ix86}
- libcpuid
ExcludeArch: aarch64 %arm ppc64le ppc64 s390x
- libcrystalhd
ExcludeArch: s390 s390x
- libcxx
ExcludeArch: ppc64 ppc64le
- libdc1394
ExcludeArch: s390 s390x
- libdfp
ExclusiveArch: ppc ppc64 ppc64le s390 s390x x86_64
- libdigidocpp
ExcludeArch: %{ix86}
- libdispatch
ExclusiveArch: x86_64 aarch64 ppc64le
- libffado
ExcludeArch: s390 s390x
- libfilezilla
ExcludeArch: s390x
- libfonts
ExclusiveArch: %{java_arches} noarch
- libformula
ExclusiveArch: %{java_arches} noarch
- libfprint
ExcludeArch: s390 s390x
- libguestfs
ExcludeArch: %{ix86}
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- libhomfly
ExcludeArch: %{ix86}
- libibcommon
ExcludeArch: s390 s390x
- libica
ExclusiveArch: s390 s390x
- libiec61883
ExcludeArch: s390 s390x
- libinsane
ExcludeArch: %{ix86}
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libkrun
ExclusiveArch: x86_64 aarch64
- libkrunfw
ExclusiveArch: x86_64 aarch64
- liblayout
ExclusiveArch: %{java_arches} noarch
- libldac
ExcludeArch: s390x
- libloader
ExclusiveArch: %{java_arches} noarch
- libnuml
ExcludeArch: %{ix86}
- libnxz
ExclusiveArch: ppc64le
- libobjc2
ExcludeArch: armv7hl i686 ppc64le s390x
- libocxl
ExclusiveArch: ppc64le
- libomp17
ExcludeArch: s390x
- libopenshot
ExcludeArch: ppc64le
- libopenshot-audio
ExcludeArch: ppc64le
- liborc
ExcludeArch: i686 armv7hl
- libpoly
ExcludeArch: %{ix86}
- libpsm2
ExclusiveArch: x86_64
- libquentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- libraw1394
ExcludeArch: s390 s390x
- libreoffice
ExcludeArch: %{ix86}
- libreoffice-TexMaths
ExclusiveArch: %{java_arches}
ExcludeArch: aarch64 s390x
- librepository
ExclusiveArch: %{java_arches} noarch
- libretro-desmume2015
ExclusiveArch: i686 x86_64
- libretro-pcsx-rearmed
ExcludeArch: armv7hl
- librtas
ExclusiveArch: %{power64}
- libsavitar
ExcludeArch: %{ix86}
- libsedml
ExcludeArch: %{ix86}
- libsemigroups
ExcludeArch: %{ix86}
- libserializer
ExclusiveArch: %{java_arches} noarch
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 %{ix86}
- libsonata
ExcludeArch: %{ix86}
- libstoragemgmt
ExcludeArch: %{ix86}
- libtracecmd
ExcludeArch: %{ix86} %{arm}
- libunibreak
ExcludeArch: %{ix86}
- libunicode
ExclusiveArch: x86_64 aarch64
- libunifex
ExcludeArch: i686
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} s390x %{ix86} x86_64 riscv64
- libva-intel-hybrid-driver
ExclusiveArch: %{ix86} x86_64 ia64
- libva-nvidia-driver
ExclusiveArch: %{x86_64} %{ix86} %{arm64} ppc64le
- libvirt-java
ExclusiveArch: %{java_arches} noarch
- libvma
ExclusiveArch: x86_64 ppc64le ppc64 aarch64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: %{power64}
- libvpl
ExclusiveArch: x86_64
- libvpl-tools
ExclusiveArch: x86_64
- libx86
ExcludeArch: ppc %{power64} s390 s390x %{sparc} aarch64 armv7hl
- libxsmm
ExclusiveArch: x86_64
- libzdnn
ExclusiveArch: s390x
- libzfcphbaapi
ExclusiveArch: s390 s390x
- libzpc
ExclusiveArch: s390x
- liferea
ExcludeArch: %{ix86}
- linbox
ExcludeArch: %{ix86}
- linux-system-roles
ExcludeArch: i686
- liquidctl
ExcludeArch: s390 s390x
- lite-xl
ExcludeArch: %{ix86}
- llama-cpp
ExclusiveArch: x86_64 aarch64
- lld13
ExcludeArch: s390x
- lld15
ExcludeArch: s390x
- lld16
ExcludeArch: s390x
- lld17
ExcludeArch: s390x
- llhttp
ExclusiveArch: %{nodejs_arches}
- llvm-bolt
ExcludeArch: s390x ppc64le i686
- log4j
ExclusiveArch: %{java_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- loguru
ExcludeArch: %{ix86}
- loupe
ExcludeArch: %{ix86}
- love
ExcludeArch: ppc ppc64 s390x
- lrmi
ExclusiveArch: %{ix86}
- lsp-plugins
ExcludeArch: %{ix86}
- lsvpd
ExclusiveArch: %{power64}
- luajit
ExcludeArch: riscv64 ppc64 ppc64le
- lucene
ExclusiveArch: %{java_arches} noarch
- luckybackup
ExcludeArch: %{ix86}
- lujavrite
ExclusiveArch: %{java_arches}
- luminance-hdr
ExcludeArch: %{ix86}
- lusol
ExcludeArch: %{ix86}
- luxcorerender
ExclusiveArch: x86_64
- lzfse
ExcludeArch: s390x
- m4rie
ExcludeArch: %{ix86}
- mactel-boot
ExclusiveArch: x86_64
- magicmirror
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-airnow
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-onthisday
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-singlestock
ExclusiveArch: %{nodejs_arches} noarch
- makemusic-finale-fonts
ExcludeArch: %{ix86}
- mame
ExcludeArch: %{arm} %{ix86}
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- mapnik
ExcludeArch: ppc ppc64 s390 s390x
- marcsabatella-campania-fonts
ExcludeArch: %{ix86}
- mariadb-java-client
ExclusiveArch: %{java_arches} noarch
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- mate-applets
ExcludeArch: i386 i686
- matrix-synapse
ExclusiveArch: %{rust_arches}
- maven
ExclusiveArch: %{java_arches} noarch
- maven-antrun-plugin
ExclusiveArch: %{java_arches} noarch
- maven-archetype
ExclusiveArch: %{java_arches} noarch
- maven-archiver
ExclusiveArch: %{java_arches} noarch
- maven-artifact-transfer
ExclusiveArch: %{java_arches} noarch
- maven-assembly-plugin
ExclusiveArch: %{java_arches} noarch
- maven-bundle-plugin
ExclusiveArch: %{java_arches} noarch
- maven-clean-plugin
ExclusiveArch: %{java_arches} noarch
- maven-common-artifact-filters
ExclusiveArch: %{java_arches} noarch
- maven-compiler-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-analyzer
ExclusiveArch: %{java_arches} noarch
- maven-dependency-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-tree
ExclusiveArch: %{java_arches} noarch
- maven-doxia
ExclusiveArch: %{java_arches} noarch
- maven-doxia-sitetools
ExclusiveArch: %{java_arches} noarch
- maven-enforcer
ExclusiveArch: %{java_arches} noarch
- maven-file-management
ExclusiveArch: %{java_arches} noarch
- maven-filtering
ExclusiveArch: %{java_arches} noarch
- maven-invoker
ExclusiveArch: %{java_arches} noarch
- maven-invoker-plugin
ExclusiveArch: %{java_arches} noarch
- maven-jar-plugin
ExclusiveArch: %{java_arches} noarch
- maven-mapping
ExclusiveArch: %{java_arches} noarch
- maven-native
ExclusiveArch: %{java_arches} noarch
- maven-parent
ExclusiveArch: %{java_arches} noarch
- maven-patch-plugin
ExclusiveArch: %{java_arches} noarch
- maven-plugin-testing
ExclusiveArch: %{java_arches} noarch
- maven-plugin-tools
ExclusiveArch: %{java_arches} noarch
- maven-remote-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-reporting-api
ExclusiveArch: %{java_arches} noarch
- maven-reporting-impl
ExclusiveArch: %{java_arches} noarch
- maven-resolver
ExclusiveArch: %{java_arches} noarch
- maven-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-script-interpreter
ExclusiveArch: %{java_arches} noarch
- maven-shade-plugin
ExclusiveArch: %{java_arches} noarch
- maven-shared-incremental
ExclusiveArch: %{java_arches} noarch
- maven-shared-io
ExclusiveArch: %{java_arches} noarch
- maven-shared-utils
ExclusiveArch: %{java_arches} noarch
- maven-source-plugin
ExclusiveArch: %{java_arches} noarch
- maven-surefire
ExclusiveArch: %{java_arches} noarch
- maven-verifier
ExclusiveArch: %{java_arches} noarch
- maven-verifier-plugin
ExclusiveArch: %{java_arches} noarch
- maven-wagon
ExclusiveArch: %{java_arches} noarch
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mbpfan
ExclusiveArch: x86_64
- mcelog
ExclusiveArch: i686 x86_64
- mcqd
ExcludeArch: %{ix86}
- mcrouter
ExclusiveArch: x86_64 aarch64 ppc64le
- mecab-java
ExclusiveArch: %java_arches
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
- mellowplayer
ExclusiveArch: %{qt5_qtwebengine_arches}
- memkind
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
- memtest86+
ExclusiveArch: x86_64 %{ix86}
- merkuro
ExclusiveArch: %{qt6_qtwebengine_arches}
- meshlab
ExclusiveArch: aarch64 x86_64
ExcludeArch: %{ix86}
- metamath
ExcludeArch: %{ix86}
- mfem
ExcludeArch: %{ix86}
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} x86_64 riscv64
- miglayout
ExclusiveArch: %{java_arches} noarch
- mine_detector
ExclusiveArch: %{GPRbuild_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-libidn2
ExclusiveArch: %{ix86} x86_64 %{arm}
- mingw-qt6-qtlocation
ExcludeArch: s390x
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- miopen
ExclusiveArch: x86_64
- mirrormanager2
ExcludeArch: %{ix86}
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mlir
ExcludeArch: i686
- mlir17
ExcludeArch: i686
- mlpack
ExcludeArch: %{ix86}
ExcludeArch: s390
- mmapper
ExcludeArch: %{ix86}
- mmlib
ExcludeArch: %{ix86}
- mmtests
ExcludeArch: s390x
- moby-engine
ExclusiveArch: %{golang_arches}
- mockito
ExclusiveArch: %{java_arches} noarch
- mod_gnutls
ExcludeArch: %{ix86} %{arm}
- mod_mono
ExclusiveArch: %mono_arches
- mod_proxy_cluster
ExcludeArch: i686 i386
- modello
ExclusiveArch: %{java_arches} noarch
- moditect
ExclusiveArch: %{java_arches} noarch
- module-build-service
ExclusiveArch: %{ix86} x86_64 noarch
- modulemaker-maven-plugin
ExclusiveArch: %{java_arches} noarch
- mojo-executor
ExclusiveArch: %{java_arches} noarch
- mojo-parent
ExclusiveArch: %{java_arches} noarch
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64 %{arm}
- mold
ExcludeArch: %{ix86}
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monodevelop
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- moose
ExcludeArch: s390x
- morphio
ExcludeArch: %{ix86}
- mozc
ExcludeArch: ppc ppc64 sparcv9 sparc64 s390x
- mozilla-ublock-origin
ExcludeArch: ppc64 s390x
- mp
ExcludeArch: %{ix86}
- mpark-patterns
ExcludeArch: %{ix86}
- mpi4py
ExcludeArch: %{ix86}
- mpibash
ExcludeArch: %{ix86}
- mpsolve
ExcludeArch: %{ix86}
- mrchem
ExcludeArch: s390x
- mrcpp
ExcludeArch: s390x
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- msolve
ExcludeArch: %{ix86}
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mstflint
ExcludeArch: s390 s390x %{arm}
- msv
ExclusiveArch: %{java_arches} noarch
- mt32emu
ExcludeArch: %{ix86}
- muffin
ExcludeArch: %{ix86}
- mumble
ExcludeArch: %{ix86}
- mupen64plus
ExcludeArch: s390x
- musescore
ExcludeArch: %{ix86}
- musl
ExcludeArch: s390
- mvfst
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- mxparser
ExclusiveArch: %{java_arches} noarch
- mysql-connector-java
ExclusiveArch: %{java_arches} noarch
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- naev
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
ExcludeArch: %{ix86}
- naga
ExclusiveArch: %{java_arches} noarch
- nagios-plugins-check-updates
ExcludeArch: %{ix86}
- nant
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- nativejit
ExclusiveArch: x86_64
- nbc
ExclusiveArch: %{fpc_arches}
- nbdkit
ExcludeArch: i686
- ncl
ExcludeArch: %{ix86}
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- nekohtml
ExclusiveArch: %{java_arches} noarch
- nemo
ExcludeArch: %{ix86}
- nemo-extensions
ExcludeArch: %{ix86}
- nest
ExcludeArch: %{ix86}
- netatalk
ExcludeArch: aarch64 s390x
- netavark
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- netcdf-fortran
ExcludeArch: %{ix86}
- netdata
ExcludeArch: s390x
- netgen-mesher
ExcludeArch: %{ix86}
- neuron
ExcludeArch: mips64r2 mips32r2
ExcludeArch: %{ix86}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- nextcloud-client
ExcludeArch: %{ix86}
ExcludeArch: ppc64 ppc64le s390x
- nodejs-acorn-object-spread
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bash-language-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buble
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cjs-module-lexer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le riscv64 noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-linefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nodemon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-undici
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le riscv64 noarch
- nodejs18
ExclusiveArch: %{nodejs_arches}
- nodejs20
ExclusiveArch: %{nodejs_arches}
- nodejs22
ExclusiveArch: %{nodejs_arches}
- nom-tam-fits
ExclusiveArch: %{java_arches} noarch
- normaliz
ExcludeArch: %{ix86}
- not-ocamlfind
ExcludeArch: %{ix86}
- notejot
ExcludeArch: %{ix86}
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- ntfs2btrfs
ExcludeArch: ppc64 s390x
- nuget
ExclusiveArch: %{mono_arches}
- numactl
ExcludeArch: s390 %{arm}
- numatop
ExclusiveArch: x86_64 ppc64le
- numptyphysics
ExcludeArch: ppc64le
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- nut
ExcludeArch: s390 s390x
- nvml
ExclusiveArch: x86_64 ppc64le
- nwchem
ExcludeArch: %{ix86} s390x
ExcludeArch: s390x
- objectweb-asm
ExclusiveArch: %{java_arches} noarch
- objenesis
ExclusiveArch: %{java_arches} noarch
- obs-cef
ExclusiveArch: x86_64 aarch64
- obs-service-rust2rpm
ExclusiveArch: %{rust_arches} noarch
- obs-studio-plugin-vkcapture
ExcludeArch: s390x
- ocaml
ExcludeArch: %{ix86}
- ocaml-SDL
ExcludeArch: %{ix86}
- ocaml-alcotest
ExcludeArch: %{ix86}
- ocaml-astring
ExcludeArch: %{ix86}
- ocaml-atd
ExcludeArch: %{ix86}
- ocaml-augeas
ExcludeArch: %{ix86}
- ocaml-autoconf
ExcludeArch: %{ix86}
- ocaml-base
ExcludeArch: %{ix86}
- ocaml-base64
ExcludeArch: %{ix86}
- ocaml-benchmark
ExcludeArch: %{ix86}
- ocaml-bigarray-compat
ExcludeArch: %{ix86}
- ocaml-bin-prot
ExcludeArch: %{ix86}
- ocaml-biniou
ExcludeArch: %{ix86}
- ocaml-bisect-ppx
ExcludeArch: %{ix86}
- ocaml-bos
ExcludeArch: %{ix86}
- ocaml-cairo
ExcludeArch: %{ix86}
- ocaml-calendar
ExcludeArch: %{ix86}
- ocaml-camlbz2
ExcludeArch: %{ix86}
- ocaml-camlidl
ExcludeArch: %{ix86}
- ocaml-camlimages
ExcludeArch: %{ix86}
- ocaml-camlp-streams
ExcludeArch: %{ix86}
- ocaml-camlp5
ExcludeArch: %{ix86}
- ocaml-camlp5-buildscripts
ExcludeArch: %{ix86}
- ocaml-camomile
ExcludeArch: %{ix86}
- ocaml-cinaps
ExcludeArch: %{ix86}
- ocaml-cmdliner
ExcludeArch: %{ix86}
- ocaml-compiler-libs-janestreet
ExcludeArch: %{ix86}
- ocaml-cppo
ExcludeArch: %{ix86}
- ocaml-crunch
ExcludeArch: %{ix86}
- ocaml-cryptokit
ExcludeArch: %{ix86}
- ocaml-csexp
ExcludeArch: %{ix86}
- ocaml-csv
ExcludeArch: %{ix86}
- ocaml-ctypes
ExcludeArch: %{ix86}
- ocaml-cudf
ExcludeArch: %{ix86}
- ocaml-curl
ExcludeArch: %{ix86}
- ocaml-curses
ExcludeArch: %{ix86}
- ocaml-dbus
ExcludeArch: %{ix86}
- ocaml-dose3
ExcludeArch: %{ix86}
- ocaml-dune
ExcludeArch: %{ix86}
- ocaml-easy-format
ExcludeArch: %{ix86}
- ocaml-expat
ExcludeArch: %{ix86}
- ocaml-extlib
ExcludeArch: %{ix86}
- ocaml-facile
ExcludeArch: %{ix86}
- ocaml-fieldslib
ExcludeArch: %{ix86}
- ocaml-fileutils
ExcludeArch: %{ix86}
- ocaml-findlib
ExcludeArch: %{ix86}
- ocaml-fmt
ExcludeArch: %{ix86}
- ocaml-fpath
ExcludeArch: %{ix86}
- ocaml-gen
ExcludeArch: %{ix86}
- ocaml-gettext
ExcludeArch: %{ix86}
- ocaml-graphics
ExcludeArch: %{ix86}
- ocaml-gsl
ExcludeArch: %{arm} %{ix86}
- ocaml-integers
ExcludeArch: %{ix86}
- ocaml-jane-street-headers
ExcludeArch: %{ix86}
- ocaml-jst-config
ExcludeArch: %{ix86}
- ocaml-lablgl
ExcludeArch: %{ix86}
- ocaml-lablgtk
ExcludeArch: %{ix86}
- ocaml-lablgtk3
ExcludeArch: %{ix86}
- ocaml-labltk
ExcludeArch: %{ix86}
- ocaml-lacaml
ExcludeArch: %{ix86}
- ocaml-lambda-term
ExcludeArch: %{ix86}
- ocaml-libvirt
ExcludeArch: %{ix86}
- ocaml-logs
ExcludeArch: %{ix86}
- ocaml-luv
ExcludeArch: %{ix86}
- ocaml-lwt
ExcludeArch: %{ix86}
- ocaml-markup
ExcludeArch: %{ix86}
- ocaml-mccs
ExcludeArch: %{ix86}
- ocaml-mdx
ExcludeArch: %{ix86}
- ocaml-menhir
ExcludeArch: %{ix86}
- ocaml-merlin
ExcludeArch: %{ix86}
- ocaml-mew
ExcludeArch: %{ix86}
- ocaml-mew-vi
ExcludeArch: %{ix86}
- ocaml-mlgmpidl
ExcludeArch: %{ix86}
- ocaml-mlmpfr
ExcludeArch: %{ix86}
- ocaml-mtime
ExcludeArch: %{ix86}
- ocaml-mysql
ExcludeArch: %{ix86}
- ocaml-num
ExcludeArch: %{ix86}
- ocaml-obuild
ExcludeArch: %{ix86}
- ocaml-ocamlbuild
ExcludeArch: %{ix86}
- ocaml-ocamlgraph
ExcludeArch: %{ix86}
- ocaml-ocamlnet
ExcludeArch: %{ix86}
- ocaml-ocp-indent
ExcludeArch: %{ix86}
- ocaml-ocplib-endian
ExcludeArch: %{ix86}
- ocaml-ocplib-simplex
ExcludeArch: %{ix86}
- ocaml-octavius
ExcludeArch: %{ix86}
- ocaml-odoc
ExcludeArch: %{ix86}
- ocaml-omake
ExcludeArch: %{ix86}
- ocaml-opam-file-format
ExcludeArch: %{ix86}
- ocaml-ounit
ExcludeArch: %{ix86}
- ocaml-parmap
ExcludeArch: %{ix86}
- ocaml-parsexp
ExcludeArch: %{ix86}
- ocaml-pcre
ExcludeArch: %{ix86}
- ocaml-pcre2
ExcludeArch: %{ix86}
- ocaml-perl4caml
ExcludeArch: %{ix86}
- ocaml-postgresql
ExcludeArch: %{ix86}
- ocaml-pp
ExcludeArch: %{ix86}
- ocaml-ppx-assert
ExcludeArch: %{ix86}
- ocaml-ppx-base
ExcludeArch: %{ix86}
- ocaml-ppx-cold
ExcludeArch: %{ix86}
- ocaml-ppx-compare
ExcludeArch: %{ix86}
- ocaml-ppx-custom-printf
ExcludeArch: %{ix86}
- ocaml-ppx-derivers
ExcludeArch: %{ix86}
- ocaml-ppx-deriving
ExcludeArch: %{ix86}
- ocaml-ppx-deriving-yaml
ExcludeArch: %{ix86}
- ocaml-ppx-deriving-yojson
ExcludeArch: %{ix86}
- ocaml-ppx-enumerate
ExcludeArch: %{ix86}
- ocaml-ppx-expect
ExcludeArch: %{ix86}
- ocaml-ppx-fields-conv
ExcludeArch: %{ix86}
- ocaml-ppx-globalize
ExcludeArch: %{ix86}
- ocaml-ppx-hash
ExcludeArch: %{ix86}
- ocaml-ppx-here
ExcludeArch: %{ix86}
- ocaml-ppx-import
ExcludeArch: %{ix86}
- ocaml-ppx-inline-test
ExcludeArch: %{ix86}
- ocaml-ppx-js-style
ExcludeArch: %{ix86}
- ocaml-ppx-let
ExcludeArch: %{ix86}
- ocaml-ppx-optcomp
ExcludeArch: %{ix86}
- ocaml-ppx-sexp-conv
ExcludeArch: %{ix86}
- ocaml-ppx-stable-witness
ExcludeArch: %{ix86}
- ocaml-ppx-variants-conv
ExcludeArch: %{ix86}
- ocaml-ppxlib
ExcludeArch: %{ix86}
- ocaml-psmt2-frontend
ExcludeArch: %{ix86}
- ocaml-ptime
ExcludeArch: %{ix86}
- ocaml-ptmap
ExcludeArch: %{ix86}
- ocaml-pyml
ExcludeArch: %{ix86}
- ocaml-qcheck
ExcludeArch: %{ix86}
- ocaml-qtest
ExcludeArch: %{ix86}
- ocaml-re
ExcludeArch: %{ix86}
- ocaml-react
ExcludeArch: %{ix86}
- ocaml-res
ExcludeArch: %{ix86}
- ocaml-result
ExcludeArch: %{ix86}
- ocaml-rresult
ExcludeArch: %{ix86}
- ocaml-sedlex
ExcludeArch: %{ix86}
- ocaml-sexplib
ExcludeArch: %{ix86}
- ocaml-sexplib0
ExcludeArch: %{ix86}
- ocaml-sha
ExcludeArch: %{ix86}
- ocaml-sqlite
ExcludeArch: %{ix86}
- ocaml-ssl
ExcludeArch: %{ix86}
- ocaml-stdcompat
ExcludeArch: %{ix86}
- ocaml-stdio
ExcludeArch: %{ix86}
- ocaml-stdlib-random
ExcludeArch: %{ix86}
- ocaml-time-now
ExcludeArch: %{ix86}
- ocaml-topkg
ExcludeArch: %{ix86}
- ocaml-trie
ExcludeArch: %{ix86}
- ocaml-tyxml
ExcludeArch: %{ix86}
- ocaml-unionfind
ExcludeArch: %{ix86}
- ocaml-uucd
ExcludeArch: %{ix86}
- ocaml-uucp
ExcludeArch: %{ix86}
- ocaml-uunf
ExcludeArch: %{ix86}
- ocaml-uuseg
ExcludeArch: %{ix86}
- ocaml-uutf
ExcludeArch: %{ix86}
- ocaml-variantslib
ExcludeArch: %{ix86}
- ocaml-version
ExcludeArch: %{ix86}
- ocaml-xml-light
ExcludeArch: %{ix86}
- ocaml-xmlm
ExcludeArch: %{ix86}
- ocaml-xmlrpc-light
ExcludeArch: %{ix86}
- ocaml-yaml
ExcludeArch: %{ix86}
- ocaml-yojson
ExcludeArch: %{ix86}
- ocaml-zarith
ExcludeArch: %{ix86}
- ocaml-zed
ExcludeArch: %{ix86}
- ocaml-zip
ExcludeArch: %{ix86}
- ocaml-zmq
ExcludeArch: %{ix86}
- ocamlify
ExcludeArch: %{ix86}
- ocamlmod
ExcludeArch: %{ix86}
- oci-seccomp-bpf-hook
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl
ExclusiveArch: %{golang_arches_future}
- ocrmypdf
ExcludeArch: %{ix86}
- octave-communications
ExcludeArch: s390x
- octave-iso2mesh
ExcludeArch: armv7hl
- octave-signal
ExcludeArch: s390x
- oidc-agent
ExcludeArch: %{ix86}
- oidn
ExclusiveArch: x86_64
- oneVPL
ExclusiveArch: x86_64
- oneapi-level-zero
ExclusiveArch: x86_64
- onednn
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- onedrive
ExclusiveArch: %{ldc_arches}
- ongres-scram
ExclusiveArch: %{java_arches} noarch
- ongres-stringprep
ExclusiveArch: %{java_arches} noarch
- onnx
ExcludeArch: s390x
- onnxruntime
ExcludeArch: s390x %{arm} %{ix86}
- oomd
ExcludeArch: i686 armv7hl
- opae
ExclusiveArch: x86_64
- opal-prd
ExclusiveArch: ppc64le
- opam
ExcludeArch: %{ix86}
- open-vm-tools
ExclusiveArch: x86_64 aarch64
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: x86_64
- openblas
ExclusiveArch: %{openblas_arches}
- opencsg
ExcludeArch: %{ix86}
- opengrm-ngram
ExcludeArch: %{ix86}
- openjdk-asmtools
ExclusiveArch: %{java_arches} noarch
- openjdk-asmtools7
ExclusiveArch: %{java_arches} noarch
- openjfx
ExclusiveArch: %{java_arches}
- openjfx8
ExclusiveArch: x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openmeeg
ExcludeArch: s390x
- openmpi
ExcludeArch: %{ix86}
- openms
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- openni
ExclusiveArch: x86_64 %{arm}
- openni-primesense
ExclusiveArch: x86_64 %{arm}
- openobex
ExcludeArch: s390 s390x
- openoffice.org-diafilter
ExclusiveArch: %{java_arches}
- openpgl
ExclusiveArch: aarch64 x86_64
- openrgb
ExcludeArch: %{ix86}
- openscad
ExcludeArch: %{ix86}
- openshadinglanguage
ExcludeArch: %{ix86} %{arm}
- openshot
ExcludeArch: ppc64le
- opensm
ExcludeArch: s390 %{arm}
- openssl-ibmca
ExclusiveArch: s390 s390x
- openstack-java-sdk
ExclusiveArch: %{java_arches} noarch
- opentest4j
ExclusiveArch: %{java_arches} noarch
- opentype-sanitizer
ExcludeArch: %{ix86}
- openvdb
ExcludeArch: i686
- openvkl
ExclusiveArch: aarch64 x86_64
- openxr-simple-playground
ExcludeArch: %{ix86}
- optee_client
ExclusiveArch: aarch64
- optee_os
ExclusiveArch: aarch64
- options
ExclusiveArch: %{java_arches} noarch
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- os-autoinst
ExcludeArch: %{arm}
- osbuild-composer
ExcludeArch: i686 armv7hl
- osgi-annotation
ExclusiveArch: %{java_arches} noarch
- osgi-compendium
ExclusiveArch: %{java_arches} noarch
- osgi-core
ExclusiveArch: %{java_arches} noarch
- osm2pgsql
ExcludeArch: %{ix86}
- osslsigncode
ExcludeArch: i686
- ostree
ExcludeArch: %{ix86}
- otf2
ExcludeArch: i686 s390x
- oz
ExcludeArch: %{ix86}
- pacemaker
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64 %{arm}
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64
- pageedit
ExclusiveArch: %{qt5_qtwebengine_arches}
- paperwork
ExcludeArch: %{ix86}
- papi
ExcludeArch: s390 s390x
- papilo
ExcludeArch: %{ix86}
- paraview
ExcludeArch: %{ix86}
- pari-nftables
ExcludeArch: %{ix86}
- parlaylib
ExcludeArch: aarch64 s390x arm-hfp ppc64le i686
- parserng
ExclusiveArch: %{java_arches} noarch
- pasdoc
ExclusiveArch: %{fpc_arches}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcem
ExcludeArch: armv7hl i686 ppc64le s390x
- pcfi
ExclusiveArch: %{java_arches} noarch
- pcg-cpp
ExcludeArch: %{ix86}
- pcm
ExclusiveArch: %{ix86} x86_64
- pcp
ExcludeArch: %{ix86}
- pcp2pdf
ExcludeArch: %{ix86}
- pdbg
ExclusiveArch: ppc64le
- pdfarranger
ExcludeArch: %{ix86}
- pdfbox
ExclusiveArch: %{java_arches} noarch
- pdftk-java
ExclusiveArch: %{java_arches} noarch
- pdns
ExcludeArch: %{arm} %{ix86}
- pdns-recursor
ExcludeArch: %{arm} %{ix86}
- pdqsort
ExcludeArch: %{ix86}
- pengupop
ExcludeArch: s390x
- pentaho-libxml
ExclusiveArch: %{java_arches} noarch
- pentaho-reporting-flow-engine
ExclusiveArch: %{java_arches} noarch
- perftest
ExcludeArch: s390 %{arm}
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-LMDB_File
ExcludeArch: armv7hl i686
- perl-Math-Int128
ExcludeArch: %{arm32} %{ix86}
- perl-MaxMind-DB-Reader-XS
ExcludeArch: %{arm} %{ix86}
- perl-MongoDB
ExcludeArch: ppc %{sparc} s390
- perl-Net-Works
ExcludeArch: %{arm32} %{ix86}
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- perl-Task-Catalyst
ExcludeArch: %{ix86}
- perl-threads-lite
ExcludeArch: aarch64 ppc ppc64 ppc64le
- permlib
ExcludeArch: %{ix86}
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm} riscv64
- pesign-test-app
ExclusiveArch: x86_64
- petpvc
ExcludeArch: %{ix86}
- pf-bb-config
ExcludeArch: s390x
- pgadmin4
ExcludeArch: i686 armv7hl s390x ppc64le
- phd2
ExcludeArch: %{ix86}
- phosh
ExcludeArch: i686
- phosh-mobile-settings
ExcludeArch: i686
- php
ExcludeArch: %{ix86}
- php-ast
ExcludeArch: %{ix86}
- php-facedetect
ExcludeArch: %{ix86}
- php-geos
ExcludeArch: %{ix86}
- php-libvirt
ExcludeArch: %{ix86}
- php-maxminddb
ExcludeArch: %{ix86}
- php-pecl-amqp
ExcludeArch: %{ix86}
- php-pecl-apcu
ExcludeArch: %{ix86}
- php-pecl-apfd
ExcludeArch: %{ix86}
- php-pecl-dio
ExcludeArch: %{ix86}
- php-pecl-ds
ExcludeArch: %{ix86}
- php-pecl-event
ExcludeArch: %{ix86}
- php-pecl-fann
ExcludeArch: %{ix86}
- php-pecl-gearman
ExcludeArch: %{ix86}
- php-pecl-geoip
ExcludeArch: %{ix86}
- php-pecl-gmagick
ExcludeArch: %{ix86}
- php-pecl-http
ExcludeArch: %{ix86}
- php-pecl-igbinary
ExcludeArch: %{ix86}
- php-pecl-imagick
ExcludeArch: %{ix86}
- php-pecl-inotify
ExcludeArch: %{ix86}
- php-pecl-ip2location
ExcludeArch: %{ix86}
- php-pecl-json-post
ExcludeArch: %{ix86}
- php-pecl-krb5
ExcludeArch: %{ix86}
- php-pecl-lzf
ExcludeArch: %{ix86}
- php-pecl-mailparse
ExcludeArch: %{ix86}
- php-pecl-mcrypt
ExcludeArch: %{ix86}
- php-pecl-memcache
ExcludeArch: %{ix86}
- php-pecl-memcached
ExcludeArch: %{ix86}
- php-pecl-mongodb
ExcludeArch: %{ix86}
- php-pecl-msgpack
ExcludeArch: %{ix86}
- php-pecl-oauth
ExcludeArch: %{ix86}
- php-pecl-pcov
ExcludeArch: %{ix86}
- php-pecl-pq
ExcludeArch: %{ix86}
- php-pecl-raphf
ExcludeArch: %{ix86}
- php-pecl-redis5
ExcludeArch: %{ix86}
- php-pecl-rpminfo
ExcludeArch: %{ix86}
- php-pecl-rrd
ExcludeArch: %{ix86}
- php-pecl-selinux
ExcludeArch: %{ix86}
- php-pecl-ssdeep
ExcludeArch: %{ix86}
- php-pecl-ssh2
ExcludeArch: %{ix86}
- php-pecl-uopz
ExcludeArch: %{ix86}
- php-pecl-uuid
ExcludeArch: %{ix86}
- php-pecl-var-representation
ExcludeArch: %{ix86}
- php-pecl-xattr
ExcludeArch: %{ix86}
- php-pecl-xdebug3
ExcludeArch: %{ix86}
- php-pecl-xmldiff
ExcludeArch: %{ix86}
- php-pecl-xmlrpc
ExcludeArch: %{ix86}
- php-pecl-yac
ExcludeArch: %{ix86}
- php-pecl-zip
ExcludeArch: %{ix86}
- php-phpiredis
ExcludeArch: %{ix86}
- php-smbclient
ExcludeArch: %{ix86}
- php-zmq
ExcludeArch: %{ix86}
- php-zstd
ExcludeArch: %{ix86}
- picard
ExcludeArch: ppc64
- picocli
ExclusiveArch: %{java_arches} noarch
- pigeonascent
ExcludeArch: ppc64le
ExcludeArch: s390x
- pilot-link
ExcludeArch: s390 s390x
- pinta
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- pioneer
ExclusiveArch: %{ix86} x86_64
- pl
ExcludeArch: %{ix86}
- planets
ExcludeArch: %{ix86}
- plantri
ExcludeArch: %{ix86}
- plantuml
ExclusiveArch: %{java_arches} noarch
- plasma-dialer
ExclusiveArch: %{java_arches}
- plasma-disks
ExcludeArch: %{ix86}
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- plee-the-bear
ExcludeArch: %{power64}
- plexus-archiver
ExclusiveArch: %{java_arches} noarch
- plexus-build-api
ExclusiveArch: %{java_arches} noarch
- plexus-build-api0
ExclusiveArch: %{java_arches} noarch
- plexus-cipher
ExclusiveArch: %{java_arches} noarch
- plexus-classworlds
ExclusiveArch: %{java_arches} noarch
- plexus-compiler
ExclusiveArch: %{java_arches} noarch
- plexus-component-api
ExclusiveArch: %{java_arches} noarch
- plexus-components-pom
ExclusiveArch: %{java_arches} noarch
- plexus-containers
ExclusiveArch: %{java_arches} noarch
- plexus-i18n
ExclusiveArch: %{java_arches} noarch
- plexus-interpolation
ExclusiveArch: %{java_arches} noarch
- plexus-io
ExclusiveArch: %{java_arches} noarch
- plexus-languages
ExclusiveArch: %{java_arches} noarch
- plexus-pom
ExclusiveArch: %{java_arches} noarch
- plexus-resources
ExclusiveArch: %{java_arches} noarch
- plexus-sec-dispatcher
ExclusiveArch: %{java_arches} noarch
- plexus-testing
ExclusiveArch: %{java_arches} noarch
- plexus-utils
ExclusiveArch: %{java_arches} noarch
- plexus-velocity
ExclusiveArch: %{java_arches} noarch
- plexus-xml
ExclusiveArch: %{java_arches} noarch
- pmix
ExcludeArch: %{ix86}
- pngcheck
ExcludeArch: %{ix86}
- podman
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- polymake
ExcludeArch: %{ix86}
- polyml
ExcludeArch: %{ix86}
- poppler-sharp
ExclusiveArch: %mono_arches
- popub
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- postgresql-jdbc
ExclusiveArch: %{java_arches} noarch
- postgresql-pgpool-II
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
- powerpc-utils
ExclusiveArch: ppc %{power64}
- powerstat
ExclusiveArch: %{ix86} x86_64
- ppc64-diag
ExclusiveArch: ppc %{power64}
- ppl
ExcludeArch: %{ix86}
- pplite
ExcludeArch: %{ix86}
- prestopalette
ExcludeArch: i686
- printer-driver-brlaser
ExcludeArch: %{ix86}
- procdump
ExcludeArch: ppc64le
- procyon
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
- proguard
ExclusiveArch: %{java_arches} noarch
- prometheus-jmx-exporter
ExclusiveArch: %{java_arches} noarch
- prometheus-simpleclient-java
ExclusiveArch: %{java_arches} noarch
- prooftree
ExcludeArch: %{ix86}
- proxmark3
ExcludeArch: ppc64le s390x
- proxygen
ExclusiveArch: x86_64 aarch64 ppc64le
- proxysql
ExcludeArch: %{power64} s390x %{ix86}
- prrte
ExcludeArch: %{ix86}
- prusa-slicer
ExcludeArch: %{ix86}
- psblas3
ExcludeArch: %{ix86}
- pveclib
ExclusiveArch: ppc %{power64}
- pygrib
ExcludeArch: i686
ExcludeArch: armv7hl
- pygsl
ExcludeArch: %{ix86}
- pyosmium
ExcludeArch: %{ix86}
- pypy
ExcludeArch: %{ix86}
- pypy3.10
ExcludeArch: %{ix86}
- pypy3.9
ExcludeArch: %{ix86}
- pyqtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- python-ZEO
ExcludeArch: %{ix86}
- python-ZODB3
ExcludeArch: %{ix86}
- python-aioresponses
ExcludeArch: s390x
- python-annarchy
ExcludeArch: %{ix86} ppc64le
- python-ast-monitor
ExclusiveArch: %{qt6_qtwebengine_arches} noarch
- python-astroplan
ExcludeArch: %{ix86}
- python-astroscrappy
ExcludeArch: %{ix86}
- python-asyncmy
ExcludeArch: %{ix86}
- python-aws-sam-translator
ExcludeArch: %{ix86}
- python-awscrt
ExcludeArch: s390x
- python-bitstruct
ExcludeArch: s390x
- python-blosc2
ExcludeArch: %{ix86}
- python-bluepyopt
ExcludeArch: s390x %{ix86} %{power64}
- python-calcephpy
ExcludeArch: %{ix86}
- python-colorthief
ExcludeArch: %{ix86}
- python-compreffor
ExcludeArch: %{ix86}
- python-contextualbandits
ExcludeArch: %{ix86}
- python-cradox
ExcludeArch: i686 armv7hl
- python-cryptography
ExclusiveArch: %{rust_arches}
- python-cvxopt
ExcludeArch: %{ix86}
- python-cyipopt
ExcludeArch: %{ix86}
- python-dask
ExcludeArch: %{ix86}
- python-databases
ExcludeArch: %{ix86}
- python-devicely
ExcludeArch: s390x
- python-dijitso
ExcludeArch: i686
- python-dipy
ExcludeArch: %{ix86} s390x
- python-ducc0
ExcludeArch: %{ix86}
- python-earthpy
ExcludeArch: %{ix86}
- python-eccodes
ExcludeArch: i686
ExcludeArch: armv7hl
- python-efel
ExcludeArch: s390x
- python-elephant
ExcludeArch: s390x
ExcludeArch: %{ix86}
- python-ephyviewer
ExcludeArch: s390x %{ix86}
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x riscv64
- python-fastavro
ExcludeArch: %{arm32} %{ix86}
- python-folium
ExcludeArch: %{ix86}
- python-formulaic
ExcludeArch: %{ix86}
- python-fsleyes
ExcludeArch: %{ix86}
- python-fsleyes-props
ExcludeArch: %{ix86}
- python-fslpy
ExcludeArch: %{ix86}
- python-gbinder
ExcludeArch: %{ix86}
- python-giacpy
ExcludeArch: aarch64 %{power64} s390x
- python-graph-tool
ExcludeArch: %{ix86}
- python-hdfs
ExcludeArch: %{ix86}
- python-healpy
ExcludeArch: %{ix86} %{arm}
- python-heapdict
ExcludeArch: %{ix86}
- python-imagecodecs
ExcludeArch: %{ix86}
- python-img2pdf
ExcludeArch: s390x
- python-javaobj
ExclusiveArch: %{java_arches} noarch
- python-jnius
ExclusiveArch: %{java_arches}
ExclusiveArch: %{java_arches}
- python-json-minify
ExcludeArch: %{ix86}
- python-jupymake
ExcludeArch: %{ix86}
- python-jupyter-c-kernel
ExcludeArch: %{ix86}
- python-jupyter-kernel-singular
ExcludeArch: %{ix86}
- python-jupyter-polymake
ExcludeArch: %{ix86}
- python-jupyter-sphinx
ExcludeArch: %{ix86}
- python-jupytext
ExcludeArch: s390x
- python-lazy-ops
ExcludeArch: %{ix86}
- python-lfpy
ExcludeArch: mips64r2 mips32r2
ExcludeArch: %{power64} %{ix86} armv7hl
- python-llama-cpp-python
ExclusiveArch: x86_64 aarch64
- python-mapnik
ExcludeArch: ppc ppc64 s390 s390x
- python-missingno
ExcludeArch: %{ix86}
- python-mne
ExcludeArch: %{ix86}
- python-mne-bids
ExcludeArch: %{ix86}
- python-mplcairo
ExcludeArch: %{ix86}
- python-mplcursors
ExcludeArch: %{ix86}
- python-music21
ExcludeArch: %{ix86}
- python-ndindex
ExcludeArch: %{ix86}
- python-neatdend
ExcludeArch: %{ix86}
- python-neo
ExcludeArch: s390x
- python-netpyne
ExcludeArch: %{ix86}
- python-neurom
ExcludeArch: %{ix86}
- python-neurotune
ExcludeArch: %{ix86}
- python-nifti-mrs
ExcludeArch: %{ix86}
- python-nilearn
ExcludeArch: %{ix86}
- python-nipy
ExcludeArch: %{ix86}
- python-octave-kernel
ExcludeArch: %{ix86}
- python-openoffice
ExclusiveArch: noarch x86_64
- python-openpaperwork-core
ExcludeArch: %{ix86}
- python-openpaperwork-gtk
ExcludeArch: %{ix86}
- python-opentype-sanitizer
ExcludeArch: %{ix86}
- python-pandas
ExcludeArch: %{ix86}
- python-pandas-flavor
ExcludeArch: %{ix86}
- python-papermill
ExcludeArch: %{ix86}
- python-paperwork-backend
ExcludeArch: %{ix86}
- python-pari-jupyter
ExcludeArch: %{ix86}
- python-phyghtmap
ExcludeArch: %{ix86}
- python-pingouin
ExcludeArch: %{ix86}
- python-plotnine
ExcludeArch: %{ix86}
- python-pplpy
ExcludeArch: %{ix86}
- python-primecountpy
ExcludeArch: %{ix86}
- python-psycopg3
ExcludeArch: %{ix86}
- python-pyahocorasick
ExclusiveArch: x86_64 %{arm64} ppc64le riscv64
- python-pybids
ExcludeArch: %{ix86}
- python-pybv
ExcludeArch: %{ix86}
- python-pyedflib
ExcludeArch: s390x
- python-pyfastnoisesimd
ExcludeArch: %{ix86}
- python-pyfiglet
ExcludeArch: %{ix86}
- python-pykdtree
ExcludeArch: %{ix86}
- python-pyliblzfse
ExcludeArch: s390x
- python-pymapvbvd
ExcludeArch: s390x
- python-pymatreader
ExcludeArch: %{ix86}
ExcludeArch: s390x
- python-pynn
ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
- python-pyocr
ExcludeArch: %{ix86}
- python-pypet
ExcludeArch: %{ix86}
ExcludeArch: s390x
- python-pyphi
ExcludeArch: %{ix86} s390x
- python-pypillowfight
ExcludeArch: %{ix86}
- python-pyqt6-webengine
ExclusiveArch: %{qt6_qtwebengine_arches}
- python-pyriemann
ExcludeArch: %{ix86}
- python-pyroaring
ExcludeArch: %{ix86}
- python-pyscf
ExcludeArch: %{power64}
- python-pyshtools
ExcludeArch: %{ix86}
- python-pysingular
ExcludeArch: %{ix86}
- python-pyswarms
ExcludeArch: %{ix86}
- python-pyswip
ExcludeArch: %{ix86}
- python-pytest-arraydiff
ExcludeArch: %{ix86}
- python-pytest-tornado
ExcludeArch: %{ix86}
- python-python-fcl
ExcludeArch: %{ix86}
- python-pyunicorn
ExcludeArch: %{ix86}
- python-pyvat
ExcludeArch: %{ix86}
- python-ratinabox
ExcludeArch: %{ix86}
- python-recordclass
ExcludeArch: %{ix86}
- python-reproject
ExcludeArch: %{ix86}
- python-ruffus
ExcludeArch: %{ix86}
- python-scikit-learn
ExcludeArch: %{ix86}
- python-scikit-misc
ExcludeArch: %{ix86}
- python-sgp4
ExcludeArch: %{ix86}
- python-simplebayes
ExcludeArch: %{ix86}
- python-sklearn-genetic-opt
ExcludeArch: %{ix86}
- python-statsmodels
ExcludeArch: %{ix86}
- python-steps
ExcludeArch: %{ix86}
- python-tables
ExcludeArch: %{ix86}
- python-tdlib
ExcludeArch: %{ix86}
- python-tensile
ExclusiveArch: x86_64
- python-tensordict
ExclusiveArch: x86_64 aarch64
- python-tkrzw
ExcludeArch: i686
- python-torch
ExclusiveArch: x86_64 aarch64
- python-torchaudio
ExclusiveArch: x86_64 aarch64
- python-torchdata
ExclusiveArch: x86_64 aarch64
- python-torchtext
ExclusiveArch: x86_64 aarch64
- python-torchvision
ExclusiveArch: x86_64 aarch64
- python-traitsui
ExcludeArch: ppc64le
- python-trimesh
ExcludeArch: %{ix86}
- python-uranium
ExcludeArch: %{ix86}
- python-willow
ExcludeArch: %{ix86}
- python-xattr
ExcludeArch: %{ix86}
- python-xbout
ExcludeArch: %{ix86}
- python-xmp-toolkit
ExcludeArch: %{ix86}
- python-zeep
ExcludeArch: s390x
- python-zict
ExcludeArch: %{ix86}
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qalculate-qt
ExcludeArch: %{ix86}
- qatengine
ExclusiveArch: x86_64
- qatlib
ExcludeArch: %{arm} aarch64 %{power64} s390x i686
- qatzip
ExclusiveArch: x86_64
- qbe
ExclusiveArch: x86_64 aarch64 riscv64
- qbittorrent
ExcludeArch: %{ix86}
- qbs
ExcludeArch: i686
- qcas
ExcludeArch: aarch64 %{power64} s390x
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qdigidoc
ExcludeArch: %{ix86}
- qdox
ExclusiveArch: %{java_arches} noarch
- qemu-sanity-check
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- qevercloud
ExclusiveArch: %{qt5_qtwebengine_arches}
- qflipper
ExcludeArch: %{ix86}
- qmapshack
ExclusiveArch: %{qt5_qtwebengine_arches}
- qmplay2
ExcludeArch: %{ix86}
- qoauth
ExcludeArch: ppc64
- qownnotes
ExcludeArch: %{ix86}
- qpdfview
ExcludeArch: s390x
- qperf
ExcludeArch: %{arm}
- qsopt-ex
ExcludeArch: %{ix86}
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- qt6-qtquick3dphysics
ExclusiveArch: aarch64 i686 x86_64
- qt6-qtwebengine
ExclusiveArch: aarch64 x86_64
- qt6-qtwebview
ExclusiveArch: aarch64 x86_64
- qt6ct
ExcludeArch: s390x
- qtile
ExcludeArch: %{ix86}
- quantum-espresso
ExclusiveArch: x86_64 aarch64 %{power64}
- quentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- rEFInd
ExclusiveArch: %{efi}
ExcludeArch: %{arm32}
- rasdaemon
ExcludeArch: s390 s390x
- rccl
ExclusiveArch: x86_64
- rdma-core
ExcludeArch: %{arm}
- realtime-tests
ExcludeArch: %{arm}
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64 s390x
- redeclipse
ExcludeArch: %{ix86}
- redict
ExcludeArch: %{ix86}
- reflections
ExclusiveArch: %{java_arches} noarch
- reg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- regexp
ExclusiveArch: %{java_arches} noarch
- relaxng-datatype-java
ExclusiveArch: %{java_arches} noarch
- remake
ExcludeArch: %{ix86}
- renderdoc
ExclusiveArch: x86_64 aarch64
- replacer
ExclusiveArch: %{java_arches} noarch
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- rescene
ExclusiveArch: %{mono_arches}
- resteasy
ExclusiveArch: %{java_arches} noarch
- restool
ExclusiveArch: aarch64
- restsharp
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- retroarch
ExcludeArch: %{ix86}
ExcludeArch: s390x
- retsnoop
ExclusiveArch: %{rust_arches}
ExcludeArch: armv7hl
- rhino
ExclusiveArch: %{java_arches} noarch
ExcludeArch: %{ix86}
- rhythmbox
ExcludeArch: s390 s390x
- rhythmbox-alternative-toolbar
ExcludeArch: s390 s390x
- rhythmbox-ampache
ExcludeArch: s390 s390x
- river
ExclusiveArch: %{zig_arches}
- rkcommon
ExclusiveArch: x86_64 aarch64
- rocalution
ExclusiveArch: x86_64
- rocblas
ExclusiveArch: x86_64
- rocclr
ExclusiveArch: x86_64
- rocfft
ExclusiveArch: x86_64
- rocm-compilersupport
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-core
ExclusiveArch: x86_64
- rocm-rpm-macros
ExclusiveArch: x86_64
- rocm-runtime
ExclusiveArch: x86_64
- rocm-smi
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rocminfo
ExclusiveArch: x86_64
- rocprim
ExclusiveArch: x86_64
- rocrand
ExclusiveArch: x86_64
- rocsolver
ExclusiveArch: x86_64
- rocsparse
ExclusiveArch: x86_64
- rocthrust
ExclusiveArch: x86_64
- roctracer
ExclusiveArch: x86_64
- rpi-imager
ExcludeArch: s390x
- rpm-ostree
ExclusiveArch: %{rust_arches}
ExcludeArch: %{ix86}
- rpy
ExcludeArch: %{ix86}
- rr
ExclusiveArch: %{ix86} x86_64 aarch64
- rssguard
ExclusiveArch: %{qt6_qtwebengine_arches}
- rstudio
ExclusiveArch: %{java_arches}
- rsyntaxtextarea
ExclusiveArch: %{java_arches} noarch
- rubiks
ExcludeArch: %{ix86}
- rubygem-childprocess
ExclusiveArch: %{ix86} x86_64 noarch
- ruff
ExcludeArch: %{ix86}
- ruff-lsp
ExcludeArch: %{ix86}
- runc
ExclusiveArch: %{golang_arches_future}
- rundoc
ExclusiveArch: %{java_arches} noarch
- rust
ExclusiveArch: %{rust_arches}
- rust-bankstown-lv2
ExcludeArch: ppc64le s390x
- rust-below
ExcludeArch: %{arm32} %{ix86}
- rust-below-btrfs
ExcludeArch: %{arm32} %{ix86}
- rust-below-config
ExcludeArch: %{arm32} %{ix86}
- rust-below-dump
ExcludeArch: %{arm32} %{ix86}
- rust-below-ethtool
ExcludeArch: %{arm32} %{ix86}
- rust-below-model
ExcludeArch: %{arm32} %{ix86}
- rust-below-render
ExcludeArch: %{arm32} %{ix86}
- rust-below-store
ExcludeArch: %{arm32} %{ix86}
- rust-below-view
ExcludeArch: %{arm32} %{ix86}
- rust-cgroupfs
ExcludeArch: %{arm32} %{ix86}
- rust-compress-tools
ExclusiveArch: %{rust_arches}
- rust-crypto-auditing-agent
ExcludeArch: i386 i686
- rust-ct-logs
ExcludeArch: ppc64le s390x
- rust-ctr
ExclusiveArch: %{rust_arches}
- rust-dashmap4
ExclusiveArch: %{rust_arches}
- rust-deflate
ExclusiveArch: %{rust_arches}
- rust-deflate0.8
ExclusiveArch: %{rust_arches}
- rust-getch
ExclusiveArch: %{rust_arches}
- rust-gzip-header
ExclusiveArch: %{rust_arches}
- rust-hamming
ExclusiveArch: %{rust_arches}
- rust-hidapi
ExclusiveArch: %{rust_arches}
- rust-httparse
ExclusiveArch: %{rust_arches}
- rust-humantime-serde
ExclusiveArch: %{rust_arches}
- rust-hyperlocal
ExclusiveArch: %{rust_arches}
- rust-inflate
ExclusiveArch: %{rust_arches}
- rust-k9
ExclusiveArch: %{rust_arches}
- rust-krunvm
ExclusiveArch: x86_64 aarch64
- rust-kstring
ExclusiveArch: %{rust_arches}
- rust-kvm-bindings
ExcludeArch: %{ix86}
- rust-kvm-ioctls
ExclusiveArch: x86_64 aarch64
- rust-lebe
ExclusiveArch: %{rust_arches}
- rust-lv2
ExcludeArch: ppc64le s390x
- rust-lv2-atom
ExcludeArch: ppc64le s390x
- rust-lv2-core
ExcludeArch: ppc64le s390x
- rust-lv2-midi
ExcludeArch: ppc64le s390x
- rust-lv2-state
ExcludeArch: ppc64le s390x
- rust-lv2-sys
ExcludeArch: ppc64le s390x
- rust-lv2-time
ExcludeArch: ppc64le s390x
- rust-lv2-units
ExcludeArch: ppc64le s390x
- rust-lv2-urid
ExcludeArch: ppc64le s390x
- rust-lv2-worker
ExcludeArch: ppc64le s390x
- rust-msru
ExclusiveArch: x86_64
- rust-nanorand
ExclusiveArch: %{rust_arches}
- rust-netstat2
ExclusiveArch: %{rust_arches}
- rust-nu
ExcludeArch: %{ix86}
- rust-oci-spec
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
- rust-onig
ExclusiveArch: %{rust_arches}
- rust-openat-ext
ExclusiveArch: %{rust_arches}
- rust-os_type
ExclusiveArch: %{rust_arches}
- rust-pager
ExclusiveArch: %{rust_arches}
- rust-pathsearch
ExclusiveArch: %{rust_arches}
- rust-prefixdevname
ExcludeArch: %{ix86}
- rust-pretty-bytes
ExclusiveArch: %{rust_arches}
- rust-primal-bit
ExclusiveArch: %{rust_arches}
- rust-primal-check
ExclusiveArch: %{rust_arches}
- rust-primal-estimate
ExclusiveArch: %{rust_arches}
- rust-probe
ExcludeArch: ppc64le s390x
- rust-psl-types
ExclusiveArch: %{rust_arches}
- rust-psm
ExclusiveArch: %{rust_arches}
- rust-pwd
ExclusiveArch: %{rust_arches}
- rust-rand_core
ExclusiveArch: %{rust_arches}
- rust-resctrlfs
ExcludeArch: %{arm32} %{ix86}
- rust-schemafy_core
ExclusiveArch: %{rust_arches}
- rust-schemafy_lib
ExclusiveArch: %{rust_arches}
- rust-scx_layered
ExcludeArch: %{ix86}
- rust-scx_rustland
ExcludeArch: %{ix86}
- rust-scx_rusty
ExcludeArch: %{ix86}
- rust-scx_utils
ExcludeArch: %{ix86}
- rust-seahash
ExclusiveArch: %{rust_arches}
- rust-sequoia-octopus-librnp
ExcludeArch: %{ix86} %{arm} s390x
- rust-serde_yaml0.8
ExclusiveArch: %{rust_arches}
- rust-sev
ExclusiveArch: x86_64
- rust-sevctl
ExclusiveArch: x86_64
- rust-sinit
ExclusiveArch: %{rust_arches}
- rust-snphost
ExclusiveArch: x86_64
- rust-ssh-key-dir
ExclusiveArch: %{rust_arches}
- rust-stacker
ExclusiveArch: %{rust_arches}
- rust-structopt
ExclusiveArch: %{rust_arches}
- rust-tiny-dfr
ExcludeArch: %{ix86}
- rust-totp-lite
ExclusiveArch: %{rust_arches}
- rust-tower-layer
ExclusiveArch: %{rust_arches}
- rust-tpm2-policy
ExclusiveArch: %{rust_arches}
- rust-unicode-xid
ExclusiveArch: %{rust_arches}
- rust-uriparse
ExclusiveArch: %{rust_arches}
- rust-varlink_generator
ExclusiveArch: %{rust_arches}
- rust-varlink_parser
ExclusiveArch: %{rust_arches}
- rust-vhost-device-scmi
ExcludeArch: s390x
- rust-vhost-device-sound
ExcludeArch: %{ix86} s390x
- rust-virtio-bindings
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rust-virtio-queue
ExcludeArch: i686
- rust-vm-memory
ExcludeArch: %{ix86}
- rust-vmm-sys-util
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rust-vtparse
ExclusiveArch: %{rust_arches}
- rust-web-ext-native-messaging
ExclusiveArch: %{rust_arches}
- rust-wezterm-color-types
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic-derive
ExclusiveArch: %{rust_arches}
- rust-zbus1
ExclusiveArch: %{rust_arches}
- rust-zbus_macros1
ExclusiveArch: %{rust_arches}
- rust-zincati
ExcludeArch: armv7hl i686
- rust-zvariant2
ExclusiveArch: %{rust_arches}
- rust-zvariant_derive2
ExclusiveArch: %{rust_arches}
- rustup
ExclusiveArch: x86_64 aarch64
- rutabaga-gfx-ffi
ExclusiveArch: x86_64 aarch64
- s2n-tls
ExcludeArch: %{ix86}
ExcludeArch: s390x
- s390utils
ExcludeArch: %{ix86}
- sac
ExclusiveArch: %{java_arches} noarch
- safeint
ExcludeArch: %{ix86}
- safetyblanket
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- sandia-omega-h
ExcludeArch: %{ix86} s390x
- sat4j
ExclusiveArch: %{java_arches} noarch
- sayonara
ExcludeArch: %{ix86}
- sbcl
ExclusiveArch: %{ix86} x86_64 aarch64 %{power64}
- sbd
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
- sblim-cim-client
ExclusiveArch: %{java_arches} noarch
- sblim-cim-client2
ExclusiveArch: %{java_arches} noarch
- sbsigntools
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- scala
ExclusiveArch: %{java_arches} noarch
- scalasca
ExcludeArch: s390 s390x armv7hl i686
- scannotation
ExclusiveArch: %{java_arches} noarch
- scip
ExcludeArch: %{ix86}
- scorep
ExcludeArch: s390 s390x armv7hl i686
- scx_c_schedulers
ExcludeArch: %{ix86}
- sdljava
ExclusiveArch: %{java_arches}
- sdrangel
ExclusiveArch: %{qt5_qtwebengine_arches}
- sdsl-lite
ExclusiveArch: %{power64} x86_64 aarch64
- sdubby
ExclusiveArch: %{efi}
- seabios
ExclusiveArch: x86_64
- seadrive-gui
ExclusiveArch: %{qt5_qtwebengine_arches}
- seafile-client
ExclusiveArch: %{qt6_qtwebengine_arches}
- seamonkey
ExclusiveArch: x86_64
- sedutil
ExcludeArch: ppc ppc64 s390 s390x
- sentencepiece
ExcludeArch: s390x
- seqan3
ExclusiveArch: %{power64} x86_64 aarch64
- sequeler
ExcludeArch: %{ix86}
- sequence-library
ExclusiveArch: %{java_arches} noarch
- servicelog
ExclusiveArch: ppc %{power64}
- setserial
ExcludeArch: s390 s390x
- sfnt2woff-zopfli
ExcludeArch: %{ix86}
- sharedmeataxe
ExcludeArch: %{ix86}
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: %{efi}
ExcludeArch: %{ix86}
ExcludeArch: %{arm}
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- shim-unsigned-x64
ExclusiveArch: x86_64
- sigil
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- sigul
ExclusiveArch: x86_64
ExcludeArch: %{ix86}
- simdutf
ExcludeArch: s390 s390x
- singularity-ce
ExclusiveArch: %{go_arches}
ExcludeArch: %{ix86}
- sirocco
ExcludeArch: %{ix86}
- sisu
ExclusiveArch: %{java_arches} noarch
- sisu-mojos
ExclusiveArch: %{java_arches} noarch
- skanpage
ExclusiveArch: %{qt6_qtwebengine_arches}
- ski
ExcludeArch: %{ix86}
ExcludeArch: aarch64
- skopeo
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- skychart
ExclusiveArch: %{fpc_arches}
ExcludeArch: %{ix86}
- slapi-nis
ExcludeArch: %{ix86}
- sleef
ExcludeArch: %{ix86}
- slf4j
ExclusiveArch: %{java_arches} noarch
- slic3r
ExcludeArch: %{ix86}
ExcludeArch: ppc ppc64 s390 s390x %{ix86}
ExcludeArch: ppc ppc64 s390 s390x
- slick-greeter
ExcludeArch: %{ix86}
- slimdata
ExcludeArch: ppc64 ppc sparcv9 sparc64
- slirp4netns
ExclusiveArch: %{golang_arches_future}
- slurm
ExcludeArch: armv7hl
ExcludeArch: i686
- smartmontools
ExcludeArch: %{ix86}
- snakeyaml
ExclusiveArch: %{java_arches} noarch
- snapd
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm} aarch64 ppc64le s390x}
- snapshot
ExcludeArch: %{ix86}
- snip
ExclusiveArch: %{java_arches} noarch
- softnet-stat
ExclusiveArch: %{rust_arches}
- soplex
ExcludeArch: %{ix86}
- sound-juicer
ExcludeArch: s390 s390x
- soup-sharp
ExclusiveArch: %{mono_arches}
- sourcextractor++
ExcludeArch: %{ix86}
- spacebar
ExclusiveArch: %{java_arches}
- sparkleshare
ExclusiveArch: %{mono_arches}
ExcludeArch: %{ix86}
- spasm
ExcludeArch: %{ix86}
- spec-version-maven-plugin
ExclusiveArch: %{java_arches} noarch
- speed-dreams
ExcludeArch: s390x
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 riscv64
- spice-parent
ExclusiveArch: %{java_arches} noarch
- springlobby
ExclusiveArch: %{ix86} x86_64
- spyder
ExcludeArch: %{ix86}
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- squeekboard
ExclusiveArch: %{rust_arches}
ExcludeArch: ppc64le
ExcludeArch: s390x
- squirrel
ExcludeArch: %{ix86}
- startdde
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- stats-collect
ExclusiveArch: %{ix86} x86_64 noarch
- statsd
ExclusiveArch: %{nodejs_arches} noarch
- statserial
ExcludeArch: s390 s390x
- steinberg-bravura-fonts
ExcludeArch: %{ix86}
- steinberg-petaluma-fonts
ExcludeArch: %{ix86}
- stellarium
ExcludeArch: armv7hl
- stlsplit
ExcludeArch: %{ix86}
- stp
ExcludeArch: %{ix86}
- stratis-cli
ExclusiveArch: %{rust_arches} noarch
ExcludeArch: i686
- stratisd
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
- string-template-maven-plugin
ExclusiveArch: %{java_arches} noarch
- stringtemplate
ExclusiveArch: %{java_arches} noarch
- stringtemplate4
ExclusiveArch: %{java_arches} noarch
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- subscription-manager-cockpit
ExclusiveArch: %{nodejs_arches} noarch
- supercollider
ExclusiveArch: %{qt5_qtwebengine_arches}
- supermin
ExcludeArch: %{ix86}
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- supertux
ExcludeArch: s390x
- suricata
ExcludeArch: ppc64le i686
- svt-vp9
ExclusiveArch: x86_64
- swift-lang
ExclusiveArch: x86_64 aarch64
- swiftlint
ExclusiveArch: x86_64 aarch64
- swing-layout
ExclusiveArch: %{java_arches} noarch
- symfpu
ExcludeArch: %{ix86}
- symmetrica
ExcludeArch: %{ix86}
- sympol
ExcludeArch: %{ix86}
- sympow
ExcludeArch: %{ix86}
- synfig
ExcludeArch: ppc64le
- synfigstudio
ExcludeArch: ppc64le
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64le s390x
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- system-rules
ExclusiveArch: %{java_arches} noarch
- systemd-boot
ExclusiveArch: %efi
- t-digest
ExclusiveArch: %{java_arches} noarch
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tagsoup
ExclusiveArch: %{java_arches} noarch
- tarantool
ExclusiveArch: %{ix86} x86_64
- tboot
ExclusiveArch: %{ix86} x86_64
- tcmu-runner
ExcludeArch: i686 armv7hl
- tdlib
ExclusiveArch: x86_64 aarch64
- teem
ExcludeArch: %{ix86}
- templates_parser
ExclusiveArch: %GPRbuild_arches
- terminology
ExcludeArch: s390x
- terminus-fonts
ExcludeArch: %{grub2_exclude_arches}
- ternimal
ExclusiveArch: %{rust_arches}
- testcloud
ExclusiveArch: %{kernel_arches} noarch
- testng
ExclusiveArch: %{java_arches} noarch
- texlive
ExclusiveArch: %{java_arches} noarch
- texmaker
ExclusiveArch: %{qt6_qtwebengine_arches}
ExcludeArch: ppc64 ppc64le s390x
- thermald
ExclusiveArch: %{ix86} x86_64
- thunderbird
ExcludeArch: armv7hl
ExcludeArch: s390x
- tiled
ExcludeArch: %{ix86}
- tilix
ExclusiveArch: %{ldc_arches}
- tinygo
ExcludeArch: ppc64le s390x
ExcludeArch: %{ix86}
- tokodon
ExclusiveArch: %{qt6_qtwebengine_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tomcat
ExclusiveArch: %{java_arches} noarch
- tomcat-jakartaee-migration
ExclusiveArch: %{java_arches} noarch
- tomcat-native
ExclusiveArch: %{java_arches}
- tomcat-taglibs-parent
ExclusiveArch: %{java_arches} noarch
- torbrowser-launcher
ExclusiveArch: %{ix86} x86_64
- trace-cmd
ExcludeArch: %{ix86} %{arm}
- trafficserver
ExcludeArch: %{arm} %{ix86} s390x
- treelayout
ExclusiveArch: %{java_arches} noarch
- trilead-ssh2
ExclusiveArch: %{java_arches} noarch
- trojita
ExcludeArch: ppc64 ppc64le s390x
- trunk
ExcludeArch: %{ix86}
- truth
ExclusiveArch: %{java_arches} noarch
- tth
ExcludeArch: %{ix86}
- tuned-profiles-nfv-host-bin
ExclusiveArch: %{ix86} x86_64
- tuxguitar
ExcludeArch: s390 %{arm} %{ix86}
- tvtime
ExcludeArch: s390 s390x
- typescript
ExclusiveArch: %{nodejs_arches} noarch
- tzdata
ExcludeArch: i686
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- uboot-tools
ExcludeArch: s390x
- ucx
ExclusiveArch: aarch64 ppc64le x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
- ugrep
ExcludeArch: %{ix86}
- umr
ExclusiveArch: x86_64 aarch64 ppc64le
- unetbootin
ExclusiveArch: %{ix86} x86_64
- unicorn
ExcludeArch: s390x
- unison
ExcludeArch: %{ix86}
- univocity-parsers
ExclusiveArch: %{java_arches} noarch
- ursa-major
ExclusiveArch: noarch aarch64 ppc64le s390x x86_64
- usbip
ExcludeArch: s390x
- usd
ExclusiveArch: aarch64 x86_64
- usnic-tools
ExcludeArch: %{arm}
- utop
ExcludeArch: %{ix86}
- uwsgi
ExcludeArch: %{ix86}
- v-hacd
ExcludeArch: %{ix86}
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- vakzination
ExclusiveArch: %{java_arches}
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- valkey
ExcludeArch: %{ix86}
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vdo
ExcludeArch: %{ix86}
- vdr-tvscraper
ExcludeArch: armv7hl
- vecmath1.2
ExclusiveArch: %{java_arches} noarch
- vectorscan
ExcludeArch: s390x
- velocity
ExclusiveArch: %{java_arches} noarch
- viking
ExcludeArch: s390 s390x
- vim-go
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- vim-perl-support
ExcludeArch: %{ix86}
- vim-syntastic
ExclusiveArch: %{java_arches} noarch
- vinci
ExcludeArch: %{ix86}
- virt-p2v
ExclusiveArch: x86_64
- virt-top
ExcludeArch: %{ix86}
ExcludeArch: %{power64}
- virt-v2v
ExcludeArch: %{ix86}
ExclusiveArch: x86_64
- virtiofsd
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
- virtualbox-guest-additions
ExclusiveArch: i686 x86_64
- visidata
ExcludeArch: %{ix86}
- visualboyadvance-m
ExcludeArch: %{ix86}
- vkd3d
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- vkmark
ExcludeArch: s390x
- vmaf
ExclusiveArch: x86_64
- voms-api-java
ExclusiveArch: %{java_arches} noarch
- voms-clients-java
ExclusiveArch: %{java_arches} noarch
- votca
ExcludeArch: %{ix86}
- vrq
ExclusiveArch: %{ix86} x86_64
- wangle
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{ix86} x86_64 %{arm}
- warzone2100
ExcludeArch: %{ix86}
- wasmedge
ExclusiveArch: x86_64 aarch64
- watchman
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- wdt
ExclusiveArch: x86_64 aarch64 ppc64le
- webkit2-sharp
ExclusiveArch: %mono_arches
- weld-parent
ExclusiveArch: %{java_arches} noarch
- whatip
ExcludeArch: s390x
- whipper
ExcludeArch: s390x
- whisper-cpp
ExclusiveArch: x86_64 aarch64 ppc64le
- why3
ExclusiveArch: %{ocaml_native_compiler}
- widevine-installer
ExclusiveArch: aarch64
- wildcard
ExcludeArch: %{ix86} s390x
- wine
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86}
- wine-dxvk
ExclusiveArch: %{ix86} x86_64
- wine-mono
ExcludeArch: %{power64} s390x s390
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExcludeArch: ppc64 ppc64le
- wlmaker
ExcludeArch: %{ix86} ppc64le
- woff
ExcludeArch: %{ix86}
- workrave
ExcludeArch: %{ix86}
- ws-commons-util
ExclusiveArch: %{java_arches} noarch
- wsdl4j
ExclusiveArch: %{java_arches} noarch
- wult
ExclusiveArch: x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x2goclient
ExclusiveArch: x86_64
- x2gokdrive
ExcludeArch: %{ix86}
- x86-simd-sort
ExclusiveArch: x86_64
- xalan-j2
ExclusiveArch: %{java_arches} noarch
- xapps
ExcludeArch: %{ix86}
- xbean
ExclusiveArch: %{java_arches} noarch
- xbyak
ExclusiveArch: x86_64
- xbyak_aarch64
ExclusiveArch: aarch64
- xdg-desktop-portal
ExcludeArch: %{ix86}
- xdg-desktop-portal-gnome
ExcludeArch: %{ix86}
- xdg-desktop-portal-gtk
ExcludeArch: %{ix86}
- xdg-desktop-portal-hyprland
ExcludeArch: %{ix86}
- xe-guest-utilities-latest
ExclusiveArch: %{ix86} x86_64
- xed
ExcludeArch: %{ix86}
- xen
ExclusiveArch: x86_64 aarch64
- xephem
ExcludeArch: %{ix86}
- xerces-j2
ExclusiveArch: %{java_arches} noarch
- xeus
ExcludeArch: %{ix86}
- xeus-zmq
ExcludeArch: %{ix86}
- xfce4-sensors-plugin
ExcludeArch: s390 s390x
- xgap
ExcludeArch: %{ix86}
- xiphos
ExcludeArch: ppc64
- xml-commons-apis
ExclusiveArch: %{java_arches} noarch
- xml-commons-resolver
ExclusiveArch: %{java_arches} noarch
- xml-maven-plugin
ExclusiveArch: %{java_arches} noarch
- xmlada
ExclusiveArch: %{GPRbuild_arches}
- xmlgraphics-commons
ExclusiveArch: %{java_arches} noarch
- xmlpull
ExclusiveArch: %{java_arches} noarch
- xmlstreambuffer
ExclusiveArch: %{java_arches} noarch
- xmlunit
ExclusiveArch: %{java_arches} noarch
- xmvn
ExclusiveArch: %{java_arches} noarch
- xmvn-connector-ivy
ExclusiveArch: %{java_arches} noarch
- xmvn-generator
ExclusiveArch: %{java_arches}
- xnnpack
ExclusiveArch: x86_64 aarch64
- xnvme
ExcludeArch: %{ix86}
- xorg-x11-drv-amdgpu
ExcludeArch: s390 s390x
- xorg-x11-drv-armsoc
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-ati
ExcludeArch: s390 s390x
- xorg-x11-drv-fbdev
ExcludeArch: s390 s390x
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-nouveau
ExcludeArch: s390 s390x
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-qxl
ExcludeArch: s390 s390x
- xorg-x11-drv-synaptics
ExcludeArch: s390 s390x
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xreader
ExcludeArch: %{ix86}
- xrgears
ExcludeArch: %{ix86}
- xsensors
ExcludeArch: %{ix86}
- xsp
ExclusiveArch: %mono_arches
- xstream
ExclusiveArch: %{java_arches} noarch
- xtb
ExcludeArch: s390x
- xtensor-python
ExcludeArch: armv7hl ppc64le s390x
- xz-java
ExclusiveArch: %{java_arches} noarch
- yarnpkg
ExclusiveArch: %{nodejs_arches}
- yices
ExcludeArch: %{ix86}
- yle-dl
ExcludeArch: %{ix86}
- yosys
ExcludeArch: %{ix86}
ExcludeArch: s390x
- zcfan
ExclusiveArch: x86_64
- zeal
ExclusiveArch: aarch64 x86_64
- zenon
ExclusiveArch: %{ocaml_native_compiler}
- zeromq-ada
ExclusiveArch: %{GPRbuild_arches}
- zfs-fuse
ExcludeArch: s390 s390x aarch64
- zig
ExclusiveArch: %{zig_arches}
- zile
ExcludeArch: ppc64le
- zimpl
ExcludeArch: %{ix86}
- zlib-ada
ExclusiveArch: %{GPRbuild_arches}
- zola
ExclusiveArch: %{rust_arches}
- zstr
ExcludeArch: %{ix86}
- zxcvbn-c
ExcludeArch: %{ix86}
- zycore-c
ExcludeArch: s390x
- zydis
ExcludeArch: s390x
2 weeks, 2 days
Architecture specific change in rpms/ghostwriter.git
by githook-noreply@fedoraproject.org
The package rpms/ghostwriter.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/ghostwriter.git/commit/?id=af81ac....
Change:
+ExclusiveArch: %{qt5_qtwebengine_arches}
Thanks.
Full change:
============
commit af81ac29cedf7e9834ce993232346162dc8b1d8d
Author: Yaakov Selkowitz <yselkowi(a)redhat.com>
Date: Sun Jun 9 10:54:47 2024 -0400
Use Qt5/KF5
ghostwriter crashes when built with Qt6/KF6, and has not been officially
listed as converted to Qt6/KF6 in KDE release notes.
diff --git a/ghostwriter.spec b/ghostwriter.spec
index 5ee9268..c3d9b7e 100644
--- a/ghostwriter.spec
+++ b/ghostwriter.spec
@@ -1,42 +1,39 @@
Name: ghostwriter
Version: 24.05.0
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPL-3.0-or-later AND Apache-2.0 AND CC-BY-4.0 AND CC-BY-SA-4.0 AND MPL-1.1 AND BSD AND LGPL-3.0-only AND MIT AND ISC
Summary: Cross-platform, aesthetic, distraction-free Markdown editor
URL: https://invent.kde.org/office/%{name}
-Source0: https://download.kde.org/%{stable_kf6}/release-service/%{version}/src/%{n...
+Source0: https://download.kde.org/%{stable_kf5}/release-service/%{version}/src/%{n...
BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires: desktop-file-utils
BuildRequires: libappstream-glib
BuildRequires: extra-cmake-modules
-BuildRequires: kf6-rpm-macros
+BuildRequires: kf5-rpm-macros
BuildRequires: hunspell-devel
-BuildRequires: cmake(KF6ConfigWidgets)
-BuildRequires: cmake(KF6CoreAddons)
-BuildRequires: cmake(KF6Sonnet)
-BuildRequires: cmake(KF6WidgetsAddons)
-BuildRequires: cmake(KF6XmlGui)
-BuildRequires: cmake(KF6DocTools)
-
-BuildRequires: cmake(Qt6Concurrent)
-BuildRequires: cmake(Qt6Core)
-BuildRequires: cmake(Qt6DBus)
-BuildRequires: cmake(Qt6Gui)
-BuildRequires: cmake(Qt6Help)
-BuildRequires: cmake(Qt6LinguistTools)
-BuildRequires: cmake(Qt6Network)
-BuildRequires: cmake(Qt6Svg)
-BuildRequires: cmake(Qt6WebEngineCoreTools)
-BuildRequires: cmake(Qt6WebEngineWidgets)
-BuildRequires: cmake(Qt6WebChannel)
-BuildRequires: cmake(Qt6Widgets)
-BuildRequires: cmake(Qt6QmlTools)
-BuildRequires: cmake(Qt6Core5Compat)
+BuildRequires: cmake(KF5ConfigWidgets)
+BuildRequires: cmake(KF5CoreAddons)
+BuildRequires: cmake(KF5Sonnet)
+BuildRequires: cmake(KF5WidgetsAddons)
+BuildRequires: cmake(KF5XmlGui)
+BuildRequires: cmake(KF5DocTools)
+
+BuildRequires: cmake(Qt5Concurrent)
+BuildRequires: cmake(Qt5Core)
+BuildRequires: cmake(Qt5DBus)
+BuildRequires: cmake(Qt5Gui)
+BuildRequires: cmake(Qt5Help)
+BuildRequires: cmake(Qt5LinguistTools)
+BuildRequires: cmake(Qt5Network)
+BuildRequires: cmake(Qt5Svg)
+BuildRequires: cmake(Qt5WebEngineWidgets)
+BuildRequires: cmake(Qt5WebChannel)
+BuildRequires: cmake(Qt5Widgets)
Provides: bundled(cmark-gfm) = 0.29.0.gfm.6
Provides: bundled(fontawesome-fonts) = 5.10.2
@@ -51,7 +48,7 @@ Recommends: multimarkdown%{?_isa}
Recommends: pandoc%{?_isa}
# Required qt5-qtwebengine is not available on some arches.
-ExclusiveArch: %{qt6_qtwebengine_arches}
+ExclusiveArch: %{qt5_qtwebengine_arches}
%description
Ghostwriter is a text editor for Markdown, which is a plain text markup
@@ -66,14 +63,12 @@ or your novel.
%autosetup -p1
%build
-%cmake_kf6 \
- -DQT_MAJOR_VERSION=6
-
+%cmake_kf5
%cmake_build
%check
-appstream-util validate-relax --nonet %{buildroot}%{_kf6_metainfodir}/org.kde.%{name}.metainfo.xml
-desktop-file-validate %{buildroot}%{_kf6_datadir}/applications/org.kde.%{name}.desktop
+appstream-util validate-relax --nonet %{buildroot}%{_kf5_metainfodir}/org.kde.%{name}.metainfo.xml
+desktop-file-validate %{buildroot}%{_kf5_datadir}/applications/org.kde.%{name}.desktop
%install
%cmake_install
@@ -82,13 +77,16 @@ desktop-file-validate %{buildroot}%{_kf6_datadir}/applications/org.kde.%{name}.d
%files -f %{name}.lang
%doc CHANGELOG.md CONTRIBUTING.md README.md
%license COPYING
-%{_kf6_bindir}/%{name}
-%{_kf6_datadir}/applications/org.kde.%{name}.desktop
-%{_kf6_datadir}/icons/hicolor/*/apps/%{name}.*
-%{_kf6_metainfodir}/org.kde.%{name}.metainfo.xml
+%{_kf5_bindir}/%{name}
+%{_kf5_datadir}/applications/org.kde.%{name}.desktop
+%{_kf5_datadir}/icons/hicolor/*/apps/%{name}.*
+%{_kf5_metainfodir}/org.kde.%{name}.metainfo.xml
%{_mandir}/man1/ghostwriter.*
%changelog
+* Sun Jun 09 2024 Yaakov Selkowitz <yselkowi(a)redhat.com> - 24.05.0-2
+- Use KF5
+
* Fri May 17 2024 Marc Deop i Argemí <marcdeop(a)fedoraproject.org> - 24.05.0-1
- 24.05.0
2 weeks, 3 days
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=95f73fc33a01c...
https://src.fedoraproject.org/cgit/rpms/root.git/commit/?id=4d9bac38913ea....
Change:
+%ifarch %{ix86}
+%ifarch %{ix86} %{arm}
Thanks.
Full change:
============
commit 95f73fc33a01c2cbdedf36cdb9e4fab77a7e6381
Author: Mattias Ellert <ellert(a)ellert.se>
Date: Fri Jun 7 12:04:22 2024 +0200
Update to 6.32.00
Drop EPEL 8 build (now requires Python >= 3.7 ans tbb >= 2020)
Dropped patches: 12
New patches: 6
The JsMVA python module is now a submodule of the ROOT python module
The notebook package was merged with the JupyROOT package
diff --git a/root-32bit-tests.patch b/root-32bit-tests.patch
index ea926b4..ae15a5d 100644
--- a/root-32bit-tests.patch
+++ b/root-32bit-tests.patch
@@ -1,7 +1,7 @@
-From 70d941cd6ebbc3726e08ef7f52d0135453f0b840 Mon Sep 17 00:00:00 2001
+From 55446dcd6eabc1fff218f266c11f31697fe99f09 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Fri, 13 Mar 2020 16:21:55 +0100
-Subject: [PATCH 2/3] Run tests on 32 bit
+Subject: [PATCH] Run tests on 32 bit
---
test/stressGeometry.cxx | 8 --------
@@ -9,7 +9,7 @@ Subject: [PATCH 2/3] Run tests on 32 bit
2 files changed, 3 insertions(+), 15 deletions(-)
diff --git a/test/stressGeometry.cxx b/test/stressGeometry.cxx
-index 5e81f5f2ca..18e41a6f45 100644
+index f8d78f4f54..617b9e1644 100644
--- a/test/stressGeometry.cxx
+++ b/test/stressGeometry.cxx
@@ -257,14 +257,6 @@ void stressGeometry(const char *exp="*", Bool_t generate_ref=kFALSE, Bool_t vecg
@@ -28,26 +28,26 @@ index 5e81f5f2ca..18e41a6f45 100644
TString fname;
for (i=0; i<NG; i++) {
diff --git a/tree/tree/test/CMakeLists.txt b/tree/tree/test/CMakeLists.txt
-index 0c1a39d01e..3bafe47934 100644
+index 5bb222edc5..f29a17801d 100644
--- a/tree/tree/test/CMakeLists.txt
+++ b/tree/tree/test/CMakeLists.txt
-@@ -12,13 +12,9 @@ ROOT_ADD_GTEST(testTOffsetGeneration TOffsetGeneration.cxx ElementStruct.cxx Ele
+@@ -17,13 +17,9 @@ endif()
target_include_directories(testTOffsetGeneration PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
ROOT_STANDARD_LIBRARY_PACKAGE(SillyStruct NO_INSTALL_HEADERS HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/SillyStruct.h SOURCES SillyStruct.cxx LINKDEF SillyStructLinkDef.h DEPENDENCIES RIO)
ROOT_ADD_GTEST(testBulkApi BulkApi.cxx LIBRARIES RIO Tree TreePlayer)
-#FIXME: tests are having timeout on 32bit CERN VM (in docker container everything is fine),
-# to be reverted after investigation.
-if(NOT CMAKE_SIZEOF_VOID_P EQUAL 4)
-- ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer)
+- ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000)
- ROOT_ADD_GTEST(testBulkApiVarLength BulkApiVarLength.cxx LIBRARIES RIO Tree TreePlayer)
- ROOT_ADD_GTEST(testBulkApiSillyStruct BulkApiSillyStruct.cxx LIBRARIES RIO Tree TreePlayer SillyStruct)
-endif()
-+ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer)
++ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000)
+ROOT_ADD_GTEST(testBulkApiVarLength BulkApiVarLength.cxx LIBRARIES RIO Tree TreePlayer)
+ROOT_ADD_GTEST(testBulkApiSillyStruct BulkApiSillyStruct.cxx LIBRARIES RIO Tree TreePlayer SillyStruct)
ROOT_ADD_GTEST(testTBasket TBasket.cxx LIBRARIES RIO Tree)
ROOT_ADD_GTEST(testTBranch TBranch.cxx LIBRARIES RIO Tree MathCore)
ROOT_ADD_GTEST(testTIOFeatures TIOFeatures.cxx LIBRARIES RIO Tree)
--
-2.24.1
+2.45.1
diff --git a/root-avoid-out-of-memory-during-linking.patch b/root-avoid-out-of-memory-during-linking.patch
deleted file mode 100644
index d182e44..0000000
--- a/root-avoid-out-of-memory-during-linking.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 51b84e7bc21f8729de8d3e8f9ff08b337af33b78 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 17 Nov 2023 17:15:15 +0100
-Subject: [PATCH] Avoid out of memory during linking regardless of build type
-
----
- 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 e750480eb3..dd50793d29 100644
---- a/core/metacling/src/CMakeLists.txt
-+++ b/core/metacling/src/CMakeLists.txt
-@@ -111,11 +111,8 @@ ROOT_LINKER_LIBRARY(Cling
- $<TARGET_OBJECTS:MetaCling>
- LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS} ${CLING_PLUGIN_LINK_LIBS})
-
--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)
---
-2.43.0
-
diff --git a/root-big-endian-byte-swap.patch b/root-big-endian-byte-swap.patch
deleted file mode 100644
index caa3076..0000000
--- a/root-big-endian-byte-swap.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From b32c7a1b080cb5d14f242070bf906ea6929d604d 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 | 23 +++++++++++++++-----
- 1 file changed, 17 insertions(+), 6 deletions(-)
-
-diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
-index ab457dcddc..d701fb3299 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 "onnx_proto3.pb.h"
-
-@@ -335,9 +336,14 @@ RModel RModelParser_ONNX::Parse(std::string filename, bool verbose)
- case ETensorType::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<uint32_t *>(data.get()))[k] =
-+ Rbswap_32((reinterpret_cast<const uint32_t *>(tensorproto->raw_data().c_str()))[k]);
-+#endif
- } else {
- tensorproto->mutable_float_data()->ExtractSubrange(0, tensorproto->float_data_size(),
- static_cast<float *>(data.get()));
-@@ -350,9 +356,14 @@ RModel RModelParser_ONNX::Parse(std::string filename, bool verbose)
- case ETensorType::INT64: {
- std::shared_ptr<void> data(malloc(fLength * sizeof(int64_t)), free);
-
-- if (tensorproto->raw_data().empty() == false) {
-- auto raw_data_ptr = reinterpret_cast<int64_t *>(const_cast<char *>(tensorproto->raw_data().c_str()));
-- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(int64_t));
-+ if (!tensorproto->raw_data().empty()) {
-+#ifdef R__BYTESWAP
-+ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(int64_t));
-+#else
-+ for (std::size_t k = 0; k < fLength; ++k)
-+ (reinterpret_cast<uint64_t *>(data.get()))[k] =
-+ Rbswap_64((reinterpret_cast<const uint64_t *>(tensorproto->raw_data().c_str()))[k]);
-+#endif
- } else {
- tensorproto->mutable_int64_data()->ExtractSubrange(0, tensorproto->int64_data_size(),
- static_cast<int64_t *>(data.get()));
---
-2.39.2
-
diff --git a/root-clad.patch b/root-clad.patch
deleted file mode 100644
index 139775e..0000000
--- a/root-clad.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From fae9b92742c5e991ad33769d1357a721838e93f9 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 17 Nov 2023 11:37:23 +0100
-Subject: [PATCH 1/3] Add fit/exampleFit3D.C to clad veto
-
----
- tutorials/CMakeLists.txt | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt
-index 5cba95407b..81f6539f03 100644
---- a/tutorials/CMakeLists.txt
-+++ b/tutorials/CMakeLists.txt
-@@ -74,7 +74,8 @@ if(NOT ROOT_minuit2_FOUND)
- #---Tutorials disabled depending on the build components-------------
-
- if(NOT clad)
-- set(clad_veto fit/minuit2GausFit.C)
-+ set(clad_veto fit/minuit2GausFit.C
-+ fit/exampleFit3D.C)
- endif()
-
- # RBatchGenerator tutorials need Python 3.8+.
---
-2.42.0
-
diff --git a/root-failure-on-ppc64le-and-s390x.patch b/root-failure-on-ppc64le-and-s390x.patch
new file mode 100644
index 0000000..787eab5
--- /dev/null
+++ b/root-failure-on-ppc64le-and-s390x.patch
@@ -0,0 +1,35 @@
+From d3b5ef223500c69efadb9b8c4735247d9ba5c5ea Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sun, 2 Jun 2024 07:03:42 +0200
+Subject: [PATCH] Fix test failure on ppc64le and s390x
+
+---
+ hist/hist/test/test_tprofile2poly.cxx | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx
+index 26b9801593..1dfa93259c 100644
+--- a/hist/hist/test/test_tprofile2poly.cxx
++++ b/hist/hist/test/test_tprofile2poly.cxx
+@@ -25,10 +25,16 @@ void FillForTest(TProfile2D* tp2d, TProfile2Poly* tpp, TRandom& ran) {
+ }
+
+ void globalStatsCompare(TProfile2D* tp2d, TProfile2Poly* tpp) {
++ const double relTol = 1e-12;
++ double cont1, cont2;
+ for(Int_t c=1; c<=3; ++c) {
+ ASSERT_DOUBLE_EQ(tp2d->GetMean(c), tpp->GetMean(c));
+- ASSERT_DOUBLE_EQ(tp2d->GetMeanError(c), tpp->GetMeanError(c));
+- ASSERT_DOUBLE_EQ(tp2d->GetStdDev(c), tpp->GetStdDev(c));
++ cont1 = tp2d->GetMeanError(c);
++ cont2 = tpp->GetMeanError(c);
++ ASSERT_NEAR(cont1, cont2, relTol * cont2);
++ cont1 = tp2d->GetStdDev(c);
++ cont2 = tpp->GetStdDev(c);
++ ASSERT_NEAR(cont1, cont2, relTol * cont2);
+ }
+ }
+
+--
+2.45.1
+
diff --git a/root-fix-one-more-broken-import-in-JsMVA.patch b/root-fix-one-more-broken-import-in-JsMVA.patch
new file mode 100644
index 0000000..0393bdc
--- /dev/null
+++ b/root-fix-one-more-broken-import-in-JsMVA.patch
@@ -0,0 +1,25 @@
+From de85dbd3344709d1c5ca87e93c87cdbce147ce5b Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Wed, 5 Jun 2024 08:49:14 +0200
+Subject: [PATCH] Fix one more broken import in JsMVA
+
+---
+ bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py b/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py
+index 57358765e4..7f56cd6dd5 100644
+--- a/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py
++++ b/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py
+@@ -23,7 +23,7 @@ class JsMVAMagic(Magics):
+ @magic_arguments()
+ @argument("arg", nargs="?", default="on", help="Enable/Disable JavaScript visualisation for TMVA")
+ def jsmva(self, line):
+- from JsMVA.JPyInterface import functions
++ from .JPyInterface import functions
+
+ args = parse_argstring(self.jsmva, line)
+ if args.arg == "on":
+--
+2.45.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
deleted file mode 100644
index 274aa66..0000000
--- a/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 15f50c71b4d89bfbf06ce817dee38e843f0f55cd Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Mon, 17 Jan 2022 23:50:47 +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 | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx
-index 40cb3052a2..ecf559a4b3 100644
---- a/hist/hist/test/test_tprofile2poly.cxx
-+++ b/hist/hist/test/test_tprofile2poly.cxx
-@@ -58,15 +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);
- }
-
- void binErrorCompare(TProfile2D* tp2d, TProfile2Poly* tpp) {
---
-2.39.2
-
diff --git a/root-fontconfig.patch b/root-fontconfig.patch
index d0f38b1..185b1c4 100644
--- a/root-fontconfig.patch
+++ b/root-fontconfig.patch
@@ -490,10 +490,10 @@ index ca38ed1f9c..8f1d62686b 100644
- { "Root.TTFont.1", "FreeSerifItalic.otf" },
- { "Root.TTFont.2", "FreeSerifBold.otf" },
- { "Root.TTFont.3", "FreeSerifBoldItalic.otf" },
-- { "Root.TTFont.4", "FreeSans.otf" },
-- { "Root.TTFont.5", "FreeSansOblique.otf" },
-- { "Root.TTFont.6", "FreeSansBold.otf" },
-- { "Root.TTFont.7", "FreeSansBoldOblique.otf" },
+- { "Root.TTFont.4", "texgyreheros-regular.otf" },
+- { "Root.TTFont.5", "texgyreheros-italic.otf" },
+- { "Root.TTFont.6", "texgyreheros-bold.otf" },
+- { "Root.TTFont.7", "texgyreheros-bolditalic.otf" },
- { "Root.TTFont.8", "FreeMono.otf" },
- { "Root.TTFont.9", "FreeMonoOblique.otf" },
- { "Root.TTFont.10", "FreeMonoBold.otf" },
diff --git a/root-format-warnings-32-bit.patch b/root-format-warnings-32-bit.patch
new file mode 100644
index 0000000..3583398
--- /dev/null
+++ b/root-format-warnings-32-bit.patch
@@ -0,0 +1,73 @@
+From 8592c5e065b8cf46480f5a1efe0363fcf2150551 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Tue, 4 Jun 2024 08:47:04 +0200
+Subject: [PATCH] Correct format - warnings seen on 32 bit architectures
+
+---
+ core/clib/src/mmapsup.c | 2 +-
+ roofit/xroofit/src/xRooNode.cxx | 2 +-
+ tree/dataframe/src/RDFDisplay.cxx | 4 ++--
+ tree/dataframe/src/RDFHelpers.cxx | 2 +-
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/core/clib/src/mmapsup.c b/core/clib/src/mmapsup.c
+index 81f68a2059..da46dc7ba5 100644
+--- a/core/clib/src/mmapsup.c
++++ b/core/clib/src/mmapsup.c
+@@ -174,7 +174,7 @@ PTR __mmalloc_mmap_morecore(struct mdesc *mdp, int size)
+ if (mdp -> top != PAGE_ALIGN(mdp -> top)) {
+ fprintf(stderr,
+ "mmap_morecore error: base memory location (%p) is not aligned with %zu as required.\n",
+- mdp -> top, (long)pagesize);
++ mdp -> top, pagesize);
+ return result;
+ }
+ mapto = mmap (mdp -> top, mapbytes, PROT_READ | PROT_WRITE,
+diff --git a/roofit/xroofit/src/xRooNode.cxx b/roofit/xroofit/src/xRooNode.cxx
+index f8c96fbf62..852e6997c0 100644
+--- a/roofit/xroofit/src/xRooNode.cxx
++++ b/roofit/xroofit/src/xRooNode.cxx
+@@ -11075,7 +11075,7 @@ std::string cling::printValue(const xRooNode *v)
+ out += "{";
+ out += n->GetName();
+ if (out.length() > 100 && left > 0) {
+- out += TString::Format(",... and %lu more", left);
++ out += TString::Format(",... and %zu more", left);
+ break;
+ }
+ }
+diff --git a/tree/dataframe/src/RDFDisplay.cxx b/tree/dataframe/src/RDFDisplay.cxx
+index 9dc555fc1d..2ef7de7ddc 100644
+--- a/tree/dataframe/src/RDFDisplay.cxx
++++ b/tree/dataframe/src/RDFDisplay.cxx
+@@ -232,12 +232,12 @@ void RDisplay::Print() const
+ // Thus, the first column is only the Row column and the actual first column is printed
+ columnsToPrint = 2;
+ }
+- Info("Print", "Only showing %lu columns out of %lu\n", columnsToPrint, fNColumns);
++ Info("Print", "Only showing %zu columns out of %zu\n", columnsToPrint, fNColumns);
+ allColumnsFit = false;
+ }
+
+ if (fNMaxCollectionElements < 1)
+- Info("Print", "No collections shown since fNMaxCollectionElements is %lu\n", fNMaxCollectionElements);
++ Info("Print", "No collections shown since fNMaxCollectionElements is %zu\n", fNMaxCollectionElements);
+
+ auto nrRows = fTable.size();
+ std::cout << DashesBetweenLines(columnsToPrint, allColumnsFit); // Print dashes in the top of the table
+diff --git a/tree/dataframe/src/RDFHelpers.cxx b/tree/dataframe/src/RDFHelpers.cxx
+index 4891454cc0..3490901b5d 100644
+--- a/tree/dataframe/src/RDFHelpers.cxx
++++ b/tree/dataframe/src/RDFHelpers.cxx
+@@ -74,7 +74,7 @@ unsigned int ROOT::RDF::RunGraphs(std::vector<RResultHandle> handles)
+ const unsigned int nToRun =
+ std::count_if(handles.begin(), handles.end(), [](const auto &h) { return !h.IsReady(); });
+ if (nToRun < handles.size()) {
+- Warning("RunGraphs", "Got %lu handles from which %lu link to results which are already ready.", handles.size(),
++ Warning("RunGraphs", "Got %zu handles from which %zu link to results which are already ready.", handles.size(),
+ handles.size() - nToRun);
+ }
+ if (nToRun == 0u)
+--
+2.45.1
+
diff --git a/root-gtest-back.patch b/root-gtest-back.patch
deleted file mode 100644
index 1624451..0000000
--- a/root-gtest-back.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 1942f5569b1d101f2c89341765ea37850e3de669 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 17 Nov 2023 11:43:46 +0100
-Subject: [PATCH 2/3] Add old gtest compat for SetUpTestSuite/TearDownTestSuite
-
----
- tree/tree/test/friendinfo.cxx | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/tree/tree/test/friendinfo.cxx b/tree/tree/test/friendinfo.cxx
-index 141a495052..6e94056946 100644
---- a/tree/tree/test/friendinfo.cxx
-+++ b/tree/tree/test/friendinfo.cxx
-@@ -14,6 +14,8 @@
- // Backward compatibility for gtest version < 1.10.0
- #ifndef INSTANTIATE_TEST_SUITE_P
- #define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
-+#define SetUpTestSuite SetUpTestCase
-+#define TearDownTestSuite TearDownTestCase
- #endif
-
- namespace {
---
-2.42.0
-
diff --git a/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch b/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch
deleted file mode 100644
index 20e2ee5..0000000
--- a/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-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] 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.
----
- core/testsupport/src/TestSupport.cxx | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/core/testsupport/src/TestSupport.cxx b/core/testsupport/src/TestSupport.cxx
-index 259ab4e09c..79cd476950 100644
---- a/core/testsupport/src/TestSupport.cxx
-+++ b/core/testsupport/src/TestSupport.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.42.0
-
diff --git a/root-jsmva-static.patch b/root-jsmva-static.patch
deleted file mode 100644
index 2550f4d..0000000
--- a/root-jsmva-static.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff -ur root-6.24.02.orig/bindings/jsmva/python/JsMVA/JPyInterface.py root-6.24.02/bindings/jsmva/python/JsMVA/JPyInterface.py
---- root-6.24.02.orig/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-08-11 09:06:21.894746090 +0200
-@@ -188,7 +188,7 @@
- ## Class for creating the output scripts and inserting them to cell output
- class JsDraw:
- ## Base repository
-- __jsMVARepo = "https://root.cern.ch/js/jsmva/latest"
-+ __jsMVARepo = "/static/JsMVA"
-
- ## String containing the link to JavaScript files
- __jsMVASourceDir = __jsMVARepo + "/js"
-diff -ur root-6.24.02.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py root-6.24.02/bindings/pyroot_legacy/JsMVA/JPyInterface.py
---- root-6.24.02.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-08-11 09:06:21.925746168 +0200
-@@ -188,7 +188,7 @@
- ## Class for creating the output scripts and inserting them to cell output
- class JsDraw:
- ## Base repository
-- __jsMVARepo = "https://root.cern.ch/js/jsmva/latest"
-+ __jsMVARepo = "/static/JsMVA"
-
- ## String containing the link to JavaScript files
- __jsMVASourceDir = __jsMVARepo + "/js"
-diff -ur root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.24.02/etc/notebook/JsMVA/js/JsMVA.js
---- root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/etc/notebook/JsMVA/js/JsMVA.js 2021-08-11 09:10:45.638410266 +0200
-@@ -16,7 +16,7 @@
-
- (function(factory){
-
-- var JSROOT_source_dir = "https://root.cern/js/5.9.1/scripts/";
-+ var JSROOT_source_dir = "/static/scripts/";
-
- var url = "";
- if (requirejs.s.contexts.hasOwnProperty("_")) {
diff --git a/root-new-zlib.patch b/root-new-zlib.patch
deleted file mode 100644
index f12eef7..0000000
--- a/root-new-zlib.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 260fc202a1387cfc3f3ef756f584923ab5b0a198 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Thu, 21 Dec 2023 17:58:49 +0100
-Subject: [PATCH] Adapt tests to work with zlib-ng
-
-Fedora 40 has replaced zlib with a zlib compatible version of zlib-ng
----
- test/stress.cxx | 2 +-
- test/stressGraphics.ref | 28 ++++++++++++++--------------
- 2 files changed, 15 insertions(+), 15 deletions(-)
-
-diff --git a/test/stress.cxx b/test/stress.cxx
-index de8061a9fc..77f48d43b8 100644
---- a/test/stress.cxx
-+++ b/test/stress.cxx
-@@ -406,7 +406,7 @@ void stress3()
- #else
- constexpr Long64_t lastgood = 52090;
- #endif
-- constexpr Long64_t tolerance = 150;
-+ constexpr Long64_t tolerance = 300;
- #ifdef R__HAS_DEFAULT_LZ4
- constexpr Long64_t difflastgoodlz4 = 5500;
- if (last < lastgood - tolerance || last > lastgood + difflastgoodlz4 + tolerance || comp < 1.5 || comp > 2.1)
-diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref
-index 16d06e33fa..a21068927d 100644
---- a/test/stressGraphics.ref
-+++ b/test/stressGraphics.ref
-@@ -2,12 +2,12 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN
- 1 529 50 12767 50 23848 3700 3937 100 569 60
- 2 4627 600 14506 100 13368 7900 9208 3000 4690 600
- 3 452 50 12694 50 11232 4200 3796 10700 492 50
-- 4 23617 1500 19386 100 143320 123000 45665 11000 24908 1500
-+ 4 23617 1500 19386 200 143320 123000 45665 11000 24908 1500
- 5 1025 150 12802 200 33468 9900 30846 5000 1072 200
- 6 430 50 12669 50 9558 100 5325 700 471 50
- 7 4980 50 13893 50 16143 1300 12230 500 5011 70
- 8 5442 80 13473 50 18430 700 12398 300 5469 80
-- 9 9253 100 14377 50 19851 2400 12199 900 9449 100
-+ 9 9253 100 14377 100 19851 2400 12199 900 9449 100
- 10 8863 70 13645 100 24343 1100 23278 1700 8894 70
- 11 12971 100 14444 50 34063 2000 32033 1200 12864 150
- 12 7674 100 13533 50 83557 3000 38505 4000 7720 150
-@@ -15,30 +15,30 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN
- 14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000
- 15 15690 5000 17179 200 23076 9500 15202 900 10437 5000
- 16 28072 400 23287 200 44462 11000 30062 5000 38007 400
-- 17 20444 400 21520 100 27511 11000 16867 600 20721 400
-- 18 15894 100 19305 100 27187 10300 15925 350 15925 100
-- 19 22521 300 42926 150 43868 17000 19232 11000 22729 300
-+ 17 20444 400 21520 150 27511 11000 16867 600 20721 400
-+ 18 15894 100 19305 200 27187 10300 15925 350 15925 100
-+ 19 22521 300 42926 200 43868 17000 19232 11000 22729 300
- 20 3664 600 14437 100 19824 6300 10396 900 4220 600
- 21 17608 600 13900 150 49440 6300 37586 9000 5938 600
- 22 4866 600 14162 100 30889 10050 21311 1800 4845 600
-- 23 4131 40 15272 50 34038 2500 12258 1400 4162 40
-+ 23 4131 40 15272 100 34038 2500 12258 1400 4162 40
- 24 7813 300 23739 100 11085 6000 6973 3100 8081 300
- 25 28422 150 29391 300 14104 14800 7386 2800 14493 150
- 26 4545 150 14541 100 27602 14800 13094 2800 4467 150
- 27 6141 200 15967 100 39594 21600 19331 7000 6596 500
- 28 9110 500 16584 200 21346 21600 10645 7000 8869 500
- 29 7419 500 15112 200 18872 21600 7928 7000 7296 500
-- 30 17016 5500 18198 100 32434 17400 22157 5000 20823 5500
-- 31 30615 8200 27176 150 50520 18200 35724 5400 36690 8200
-- 32 3304592 100 712308 500 62688 19000 123056 7000 0 0
-+ 30 17016 5500 18198 250 32434 17400 22157 5000 20823 5500
-+ 31 30615 8200 27176 200 50520 18200 35724 5400 36690 8200
-+ 32 3304592 100 712308 3000 62688 19000 123056 7000 0 0
- 33 89233 500 47975 300 65532 27800 37314 12000 90600 500
- 34 36514 300 16815 200 47408 12700 33739 3700 36399 300
-- 35 207729 750 87126 100 76094 38000 54717 11000 210497 800
-- 36 401670 6500 156361 500 62719 34100 45592 14000 410114 6500
-- 37 566142 5000 225206 750 65828 31800 53934 6500 573396 5000
-- 38 3738751 35000 1292739 8000 60580 9900 133547 3500 3783013 35000
-+ 35 207729 750 87126 750 76094 38000 54717 11000 210497 800
-+ 36 401670 6500 156361 2000 62719 34100 45592 14000 410114 6500
-+ 37 566142 5000 225206 2000 65828 31800 53934 6500 573396 5000
-+ 38 3738751 35000 1292739 12000 60580 9900 133547 3500 3783013 35000
- 39 1466028 9000 853193 50000 38425 13500 91242 18100 1463263 7500
-- 40 38312 200 56877 250 36524 11800 119641 8000 38121 200
-+ 40 38312 200 56877 750 36524 11800 119641 8000 38121 200
- 41 15025 3000 29289 500 42525 11300 33336 3900 14787 4000
- 42 254604 5000 383258 7000 55666 30400 46534 6500 259594 7000
- 43 4846 150 14075 150 33239 600 25303 300 4877 150
---
-2.43.0
-
diff --git a/root-no-export-python-modules.patch b/root-no-export-python-modules.patch
index aa7604d..be22620 100644
--- a/root-no-export-python-modules.patch
+++ b/root-no-export-python-modules.patch
@@ -1,30 +1,16 @@
-diff -ur root-6.24.02.orig/bindings/jupyroot/CMakeLists.txt root-6.24.02/bindings/jupyroot/CMakeLists.txt
---- root-6.24.02.orig/bindings/jupyroot/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/bindings/jupyroot/CMakeLists.txt 2021-08-11 10:53:03.272202496 +0200
-@@ -70,8 +70,7 @@
- endforeach()
+--- root-6.32.00/bindings/pyroot/pythonizations/CMakeLists.txt 2024-05-28 06:06:46.000000000 +0200
++++ root-6.32.00/bindings/pyroot/pythonizations/CMakeLists.txt 2024-05-29 09:47:08.960324940 +0200
+@@ -189,11 +189,10 @@
+ # Create meta-target PyROOT3 (INTERFACE library)
+ # Export of targets are not supported for custom targets(add_custom_targets())
+ add_library(PyROOT INTERFACE)
+-target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy ROOTPythonizations)
++target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy)
- # Install library
-- install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports
-- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
-+ install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
- LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries
- ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries)
-
-diff -ur root-6.24.02.orig/bindings/pyroot/pythonizations/CMakeLists.txt root-6.24.02/bindings/pyroot/pythonizations/CMakeLists.txt
---- root-6.24.02.orig/bindings/pyroot/pythonizations/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/bindings/pyroot/pythonizations/CMakeLists.txt 2021-08-11 10:53:03.272202496 +0200
-@@ -137,11 +137,10 @@
- # Create meta-target PyROOT2 and PyROOT3 (INTERFACE library)
- # Export of targets are not supported for custom targets(add_custom_targets())
- add_library(PyROOT${python_major_version_string} INTERFACE)
-- target_link_libraries(PyROOT${python_major_version_string} INTERFACE cppyy_backend${python_under_version_string} cppyy${python_under_version_string} ROOTPythonizations${python_under_version_string})
-+ target_link_libraries(PyROOT${python_major_version_string} INTERFACE cppyy_backend${python_under_version_string} cppyy${python_under_version_string})
-
- # Install library
-- install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports
-- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
-+ install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
- LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries
- ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries)
+ # Install library
+-install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports
+- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
++install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
+ LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries)
diff --git a/root-np32.patch b/root-np32.patch
deleted file mode 100644
index 832f6c7..0000000
--- a/root-np32.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 42b9c691fdd2d0001c61f78cc8adfbb9c994f6b4 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 17 Nov 2023 11:46:14 +0100
-Subject: [PATCH 3/3] Fix pythonizations test errors on ix86 Linux
-
-======================================================================
-ERROR: test_sliced_array (rdataframe_makenumpy.DataFrameFromNumpy.test_sliced_array)
-Test correct reading of a sliced numpy array (#13690)
-----------------------------------------------------------------------
-Traceback (most recent call last):
- File "/builddir/build/BUILD/root-6.30.00/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py", line 153, in test_sliced_array
- x_col = df.Take['Long64_t']("x")
- ^^^^^^^^^^^^^^^^^^^^^^^^
-cppyy.gbl.std.runtime_error: Could not instantiate Take<Long64_t>:
- ROOT::RDF::RResultPtr<vector<Long64_t> > ROOT::RDF::RInterface<ROOT::Detail::RDF::RLoopManager,void>::Take(basic_string_view<char,char_traits<char> > column = "") =>
- runtime_error: Column x has type int while the id specified is associated to type Long64_t
-----------------------------------------------------------------------
-
-======================================================================
-ERROR: test_dtypes (rtensor.AsRTensor.test_dtypes)
-Test adoption of numpy arrays with different data types
-----------------------------------------------------------------------
-Traceback (most recent call last):
- File "/builddir/build/BUILD/root-6.30.00/bindings/pyroot/pythonizations/test/rtensor.py", line 45, in test_dtypes
- root_obj = ROOT.TMVA.Experimental.RTensor(self.cpptypes[i])(np_obj)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/builddir/build/BUILD/root-6.30.00/redhat-linux-build/lib/ROOT/_pythonization/_tmva/_rtensor.py", line 131, in RTensorInit
- return self._original_init_(data,shape,layout)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-TypeError: none of the 6 overloaded methods succeeded. Full details:
- RTensor<long,vector<long> >::RTensor<long,vector<long> >(TMVA::Experimental::RTensor<long,vector<long> >&&) =>
- TypeError: takes at most 1 arguments (3 given)
- RTensor<long,vector<long> >::RTensor<long,vector<long> >(const TMVA::Experimental::RTensor<long,vector<long> >&) =>
- TypeError: takes at most 1 arguments (3 given)
- RTensor<long,vector<long> >::RTensor<long,vector<long> >(shared_ptr<vector<long> > container, vector<unsigned int> shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) =>
- TypeError: could not convert argument 1
- RTensor<long,vector<long> >::RTensor<long,vector<long> >(vector<unsigned int> shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) =>
- TypeError: takes at most 2 arguments (3 given)
- RTensor<long,vector<long> >::RTensor<long,vector<long> >(long* data, vector<unsigned int> shape, vector<unsigned int> strides, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) =>
- TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr)
- RTensor<long,vector<long> >::RTensor<long,vector<long> >(long* data, vector<unsigned int> shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) =>
- TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr)
-----------------------------------------------------------------------
----
- .../pyroot/pythonizations/test/rdataframe_makenumpy.py | 8 ++++----
- bindings/pyroot/pythonizations/test/rtensor.py | 8 +-------
- 2 files changed, 5 insertions(+), 11 deletions(-)
-
-diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
-index cd2ebc9b5b..cc46f5bea1 100644
---- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
-+++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
-@@ -142,19 +142,19 @@ class DataFrameFromNumpy(unittest.TestCase):
- gc.collect()
- ref4 = sys.getrefcount(x)
- self.assertEqual(ref1, ref4)
--
-+
- def test_sliced_array(self):
- """
- Test correct reading of a sliced numpy array (#13690)
- """
-- table = np.array([[1,2], [3,4]])
-+ table = np.array([[1,2], [3,4]], dtype="int64")
- columns = {'x': table[:,0], 'y': table[:,1]}
- df = ROOT.RDF.FromNumpy(columns)
- x_col = df.Take['Long64_t']("x")
- y_col = df.Take['Long64_t']("y")
-- self.assertEqual(list(x_col.GetValue()), [1,3])
-+ self.assertEqual(list(x_col.GetValue()), [1,3])
- self.assertEqual(list(y_col.GetValue()), [2,4])
--
-+
-
- if __name__ == '__main__':
- unittest.main()
-diff --git a/bindings/pyroot/pythonizations/test/rtensor.py b/bindings/pyroot/pythonizations/test/rtensor.py
-index 99b458cfa9..ca119f0b41 100644
---- a/bindings/pyroot/pythonizations/test/rtensor.py
-+++ b/bindings/pyroot/pythonizations/test/rtensor.py
-@@ -2,7 +2,6 @@ import unittest
- import ROOT
- RTensor = ROOT.TMVA.Experimental.RTensor
- import numpy as np
--import platform
-
-
- def check_shape(root_obj, np_obj):
-@@ -21,18 +20,13 @@ class AsRTensor(unittest.TestCase):
- dtypes = [
- "int32", "int64", "uint32", "uint64", "float32", "float64"
- ]
-- cpptypes = ["int", "long", "unsigned int", "unsigned long", "float", "double"]
-+ cpptypes = ["int32_t", "int64_t", "uint32_t", "uint64_t", "float", "double"]
-
- # Tests
- def test_dtypes(self):
- """
- Test adoption of numpy arrays with different data types
- """
-- #using long long on Linux does not work although it is same size as long
-- if (platform.system() == "Windows") :
-- self.cpptypes[1] = "long long"
-- self.cpptypes[3] = "unsigned long long"
--
- i = 0
- for dtype in self.dtypes:
- np_obj = np.array([[1, 2], [3, 4], [5, 6]], dtype=dtype)
---
-2.43.0
-
diff --git a/root-old-gtest.patch b/root-old-gtest.patch
deleted file mode 100644
index 87b6fe4..0000000
--- a/root-old-gtest.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 8b7369a527aa52204e1ce529c8cb206cfee4c61b Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 17 Nov 2023 16:18:12 +0100
-Subject: [PATCH] Disable tests that don't compile with old gtest (EPEL 8)
-
----
- core/metacling/test/TClingLoadUnloadFileTests.cxx | 2 ++
- roofit/histfactory/test/testHistFactory.cxx | 2 ++
- roofit/roofitcore/test/testRooProdPdf.cxx | 2 ++
- roofit/roofitcore/test/testTestStatistics.cxx | 2 ++
- 4 files changed, 8 insertions(+)
-
-diff --git a/core/metacling/test/TClingLoadUnloadFileTests.cxx b/core/metacling/test/TClingLoadUnloadFileTests.cxx
-index 7f97f3f441..d1b7a65fbc 100644
---- a/core/metacling/test/TClingLoadUnloadFileTests.cxx
-+++ b/core/metacling/test/TClingLoadUnloadFileTests.cxx
-@@ -73,6 +73,7 @@ void remove_n_library_artifacts(const std::string &basename, unsigned int n)
- }
- }
-
-+/*
- TEST(TClingLoadUnloadFile, ConcurrentLoadUnloadSameLib)
- {
- GTEST_SKIP() << "fails sporadically, see "
-@@ -125,3 +126,4 @@ TEST(TClingLoadUnloadFile, ConcurrentLoadUnloadOneLibPerThread)
-
- remove_n_library_artifacts(basename, n_libraries);
- }
-+*/
-diff --git a/roofit/histfactory/test/testHistFactory.cxx b/roofit/histfactory/test/testHistFactory.cxx
-index 7553ba4e4a..fefdca8e97 100644
---- a/roofit/histfactory/test/testHistFactory.cxx
-+++ b/roofit/histfactory/test/testHistFactory.cxx
-@@ -752,6 +752,7 @@ std::string getNameFromInfo(testing::TestParamInfo<HFFixture::ParamType> const &
- return getName(paramInfo.param, false);
- }
-
-+/*
- INSTANTIATE_TEST_SUITE_P(
- HistFactory, HFFixture,
- testing::Combine(testing::Values(MakeModelMode::OverallSyst, MakeModelMode::HistoSyst, MakeModelMode::StatSyst,
-@@ -784,3 +785,4 @@ INSTANTIATE_TEST_SUITE_P(HistFactoryCodeGen, HFFixtureFit,
- testing::Values(RooFit::EvalBackend::Codegen())),
- getNameFromInfo);
- #endif
-+*/
-diff --git a/roofit/roofitcore/test/testRooProdPdf.cxx b/roofit/roofitcore/test/testRooProdPdf.cxx
-index 34fb559cd1..09734f5c5d 100644
---- a/roofit/roofitcore/test/testRooProdPdf.cxx
-+++ b/roofit/roofitcore/test/testRooProdPdf.cxx
-@@ -64,6 +64,7 @@ TEST_P(TestProdPdf, CachingOpt)
- << "b=" << b.getVal() << " +- " << b.getError() << " doesn't match truth value with O" << _optimize << ".";
- }
-
-+/*
- INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf,
- testing::Combine(testing::Values(0, 1, 2),
- testing::Values(ROOFIT_EVAL_BACKENDS)),
-@@ -72,6 +73,7 @@ INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf,
- ss << "opt" << std::get<0>(paramInfo.param) << std::get<1>(paramInfo.param).name();
- return ss.str();
- });
-+*/
-
- TEST(RooProdPdf, TestGetPartIntList)
- {
-diff --git a/roofit/roofitcore/test/testTestStatistics.cxx b/roofit/roofitcore/test/testTestStatistics.cxx
-index 3099d82060..5846353043 100644
---- a/roofit/roofitcore/test/testTestStatistics.cxx
-+++ b/roofit/roofitcore/test/testTestStatistics.cxx
-@@ -585,6 +585,7 @@ INSTANTIATE_TEST_SUITE_P(RooNLLVar, TestStatisticTest, testing::Values(ROOFIT_EV
- return ss.str();
- });
-
-+/*
- INSTANTIATE_TEST_SUITE_P(RooNLLVar, OffsetBinTest,
- testing::Combine(testing::Values(ROOFIT_EVAL_BACKENDS), // EvalBackend
- testing::Values(false, true), // unbinned or binned
-@@ -622,3 +623,4 @@ INSTANTIATE_TEST_SUITE_P(RooNLLVarBinnedL, OffsetBinTest,
- ss << (std::get<5>(paramInfo.param) ? "BinnedL" : "");
- return ss.str();
- });
-+*/
diff --git a/root-out-of-bounds.patch b/root-out-of-bounds.patch
new file mode 100644
index 0000000..fbae2ea
--- /dev/null
+++ b/root-out-of-bounds.patch
@@ -0,0 +1,26 @@
+From 069359fe9e6c36a4287a64d3356246d516409149 Mon Sep 17 00:00:00 2001
+From: Jonas Rembser <jonas.rembser(a)cern.ch>
+Date: Tue, 4 Jun 2024 12:53:53 +0200
+Subject: [PATCH] [RF] Set size of offsets vector in LikelihoodJob correctly
+
+When `std::copy`ing into a vector, it needs to have the right size
+before. Doing only `std::reserve` is not enough.
+
+Fixes #15730.
+---
+ roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx
+index 85c3d02c02ccf..42d191833d14c 100644
+--- a/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx
++++ b/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx
+@@ -93,7 +93,7 @@ void LikelihoodJob::update_state()
+ assert(!more);
+ auto offsets_message_begin = offsets_message.data<ROOT::Math::KahanSum<double>>();
+ std::size_t N_offsets = offsets_message.size() / sizeof(ROOT::Math::KahanSum<double>);
+- shared_offset_.offsets().reserve(N_offsets);
++ shared_offset_.offsets().resize(N_offsets);
+ auto offsets_message_end = offsets_message_begin + N_offsets;
+ std::copy(offsets_message_begin, offsets_message_end, shared_offset_.offsets().begin());
+ }
diff --git a/root-pcre2.patch b/root-pcre2.patch
deleted file mode 100644
index 359acc2..0000000
--- a/root-pcre2.patch
+++ /dev/null
@@ -1,456 +0,0 @@
-From f89fc640f9ca1b2cccf0dc496b0b7ea434b53fad Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Mon, 2 Oct 2023 09:25:13 +0200
-Subject: [PATCH] Support PCRE2
-
----
- .../pythonizations/test/import_load_libs.py | 1 +
- cmake/modules/FindPCRE2.cmake | 106 ++++++++++++++++++
- cmake/modules/SearchInstalledSoftware.cmake | 17 +--
- core/base/CMakeLists.txt | 9 +-
- core/base/src/TPRegexp.cxx | 99 +++++++++++++++-
- tutorials/legacy/regexp/regexp.C | 6 +-
- 6 files changed, 223 insertions(+), 15 deletions(-)
- create mode 100644 cmake/modules/FindPCRE2.cmake
-
-diff --git a/bindings/pyroot/pythonizations/test/import_load_libs.py b/bindings/pyroot/pythonizations/test/import_load_libs.py
-index 087db7da5c..179c76f6fd 100644
---- a/bindings/pyroot/pythonizations/test/import_load_libs.py
-+++ b/bindings/pyroot/pythonizations/test/import_load_libs.py
-@@ -23,6 +23,7 @@ class ImportLoadLibs(unittest.TestCase):
- 'libc',
- 'libdl',
- 'libpcre',
-+ 'libpcre2-8',
- # libCling and dependencies
- 'libCling.*',
- 'librt',
-diff --git a/cmake/modules/FindPCRE2.cmake b/cmake/modules/FindPCRE2.cmake
-new file mode 100644
-index 0000000000..2417453e8b
---- /dev/null
-+++ b/cmake/modules/FindPCRE2.cmake
-@@ -0,0 +1,106 @@
-+# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers.
-+# All rights reserved.
-+#
-+# For the licensing terms see $ROOTSYS/LICENSE.
-+# For the list of contributors see $ROOTSYS/README/CREDITS.
-+
-+#.rst:
-+# FindPCRE2
-+# --------
-+#
-+# Find PCRE2 library
-+#
-+# Imported Targets
-+# ^^^^^^^^^^^^^^^^
-+#
-+# This module defines :prop_tgt:`IMPORTED` target:
-+#
-+# ``PCRE2::PCRE2``
-+# The pcre2 library, if found.
-+#
-+# Result Variables
-+# ^^^^^^^^^^^^^^^^
-+# This module will set the following variables in your project:
-+#
-+# ``PCRE2_FOUND``
-+# True if PCRE2 has been found.
-+# ``PCRE2_INCLUDE_DIRS``
-+# Where to find pcre2.h
-+# ``PCRE2_LIBRARIES``
-+# The libraries to link against to use PCRE2.
-+# ``PCRE2_VERSION``
-+# The version of the PCRE2 found (e.g. 10.42)
-+#
-+# Obsolete variables
-+# ^^^^^^^^^^^^^^^^^^
-+#
-+# The following variables may also be set, for backwards compatibility:
-+#
-+# ``PCRE2_PCRE2_LIBRARY``
-+# where to find the PCRE2_PCRE2 library.
-+# ``PCRE2_INCLUDE_DIR``
-+# where to find the pcre2.h header (same as PCRE2_INCLUDE_DIRS)
-+#
-+
-+foreach(var PCRE2_FOUND PCRE2_INCLUDE_DIR PCRE2_PCRE2_LIBRARY PCRE2_LIBRARIES)
-+ unset(${var} CACHE)
-+endforeach()
-+
-+find_path(PCRE2_INCLUDE_DIR NAMES pcre2.h PATH_SUFFIXES include)
-+mark_as_advanced(PCRE2_INCLUDE_DIR)
-+
-+if (PCRE2_INCLUDE_DIR AND EXISTS "${PCRE2_INCLUDE_DIR}/pcre2.h")
-+ file(STRINGS "${PCRE2_INCLUDE_DIR}/pcre2.h" PCRE2_H REGEX "^#define PCRE2_(MAJOR|MINOR).*$")
-+ string(REGEX REPLACE "^.*PCRE2_MAJOR[ ]+([0-9]+).*$" "\\1" PCRE2_VERSION_MAJOR "${PCRE2_H}")
-+ string(REGEX REPLACE "^.*PCRE2_MINOR[ ]+([0-9]+).*$" "\\1" PCRE2_VERSION_MINOR "${PCRE2_H}")
-+ set(PCRE2_VERSION "${PCRE2_VERSION_MAJOR}.${PCRE2_VERSION_MINOR}")
-+endif()
-+
-+if(NOT PCRE2_PCRE2_LIBRARY)
-+ find_library(PCRE2_PCRE2_LIBRARY_RELEASE NAMES pcre2-8)
-+ find_library(PCRE2_PCRE2_LIBRARY_DEBUG NAMES pcre2-8${CMAKE_DEBUG_POSTFIX} pcre2-8d)
-+ include(SelectLibraryConfigurations)
-+ select_library_configurations(PCRE2_PCRE2)
-+endif()
-+
-+include(FindPackageHandleStandardArgs)
-+find_package_handle_standard_args(PCRE2
-+ REQUIRED_VARS
-+ PCRE2_INCLUDE_DIR
-+ PCRE2_PCRE2_LIBRARY
-+ VERSION_VAR
-+ PCRE2_VERSION
-+)
-+
-+if(PCRE2_FOUND)
-+ set(PCRE2_INCLUDE_DIRS "${PCRE2_INCLUDE_DIR}")
-+
-+ if (NOT PCRE2_LIBRARIES)
-+ set(PCRE2_LIBRARIES "${PCRE2_PCRE2_LIBRARY}")
-+ endif()
-+
-+ if(NOT TARGET PCRE2::PCRE2)
-+ add_library(PCRE2::PCRE2 UNKNOWN IMPORTED)
-+ set_target_properties(PCRE2::PCRE2 PROPERTIES
-+ INTERFACE_INCLUDE_DIRECTORIES "${PCRE2_INCLUDE_DIRS}")
-+
-+ if(PCRE2_PCRE2_LIBRARY_DEBUG)
-+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY
-+ IMPORTED_CONFIGURATIONS DEBUG)
-+ set_target_properties(PCRE2::PCRE2 PROPERTIES
-+ IMPORTED_LOCATION_DEBUG "${PCRE2_PCRE2_LIBRARY_DEBUG}")
-+ endif()
-+
-+ if(PCRE2_PCRE2_LIBRARY_RELEASE)
-+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY
-+ IMPORTED_CONFIGURATIONS RELEASE)
-+ set_target_properties(PCRE2::PCRE2 PROPERTIES
-+ IMPORTED_LOCATION_RELEASE "${PCRE2_PCRE2_LIBRARY_RELEASE}")
-+ endif()
-+
-+ if(NOT PCRE2_PCRE2_LIBRARY_DEBUG AND NOT PCRE2_PCRE2_LIBRARY_RELEASE)
-+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY
-+ IMPORTED_LOCATION "${PCRE2_PCRE2_LIBRARY}")
-+ endif()
-+ endif()
-+endif()
-diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake
-index 464155fd50..252aa56737 100644
---- a/cmake/modules/SearchInstalledSoftware.cmake
-+++ b/cmake/modules/SearchInstalledSoftware.cmake
-@@ -204,13 +204,16 @@ if(NOT builtin_pcre)
- foreach(suffix FOUND INCLUDE_DIR PCRE_LIBRARY)
- unset(PCRE_${suffix} CACHE)
- endforeach()
-- if(fail-on-missing)
-- find_package(PCRE REQUIRED)
-- else()
-- find_package(PCRE)
-- if(NOT PCRE_FOUND)
-- message(STATUS "PCRE not found. Switching on builtin_pcre option")
-- set(builtin_pcre ON CACHE BOOL "Enabled because PCRE not found (${builtin_pcre_description})" FORCE)
-+ find_package(PCRE2)
-+ if(NOT PCRE2_FOUND)
-+ if(fail-on-missing)
-+ find_package(PCRE REQUIRED)
-+ else()
-+ find_package(PCRE)
-+ if(NOT PCRE_FOUND)
-+ message(STATUS "PCRE not found. Switching on builtin_pcre option")
-+ set(builtin_pcre ON CACHE BOOL "Enabled because PCRE not found (${builtin_pcre_description})" FORCE)
-+ endif()
- endif()
- endif()
- endif()
-diff --git a/core/base/CMakeLists.txt b/core/base/CMakeLists.txt
-index df701fedea..5798c93775 100644
---- a/core/base/CMakeLists.txt
-+++ b/core/base/CMakeLists.txt
-@@ -214,7 +214,14 @@ target_include_directories(Core PUBLIC
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/v7/inc>
- )
-
--target_link_libraries(Core PRIVATE PCRE::PCRE)
-+if(PCRE2_FOUND)
-+ target_link_libraries(Core PRIVATE PCRE2::PCRE2)
-+ set_source_files_properties(src/TPRegexp.cxx
-+ TARGET_DIRECTORY Core
-+ PROPERTIES COMPILE_DEFINITIONS USE_PCRE2)
-+else()
-+ target_link_libraries(Core PRIVATE PCRE::PCRE)
-+endif()
-
- ROOT_INSTALL_HEADERS(${BASE_HEADER_DIRS})
-
-diff --git a/core/base/src/TPRegexp.cxx b/core/base/src/TPRegexp.cxx
-index 949b8cc8e9..d70f3e5b8b 100644
---- a/core/base/src/TPRegexp.cxx
-+++ b/core/base/src/TPRegexp.cxx
-@@ -25,19 +25,36 @@ found at : http://perldoc.perl.org/perlre.html
- #include "TObjString.h"
- #include "TError.h"
-
-+#ifdef USE_PCRE2
-+#ifdef R__WIN32
-+#define PCRE2_STATIC
-+#endif
-+#define PCRE2_CODE_UNIT_WIDTH 8
-+#include <pcre2.h>
-+#define PCRE_CASELESS PCRE2_CASELESS
-+#define PCRE_MULTILINE PCRE2_MULTILINE
-+#define PCRE_DOTALL PCRE2_DOTALL
-+#define PCRE_EXTENDED PCRE2_EXTENDED
-+#define PCRE_ERROR_NOMATCH PCRE2_ERROR_NOMATCH
-+#else
- #ifdef R__WIN32
- #define PCRE_STATIC
- #endif
- #include <pcre.h>
-+#endif
-
- #include <vector>
- #include <stdexcept>
-
- struct PCREPriv_t {
-+#ifdef USE_PCRE2
-+ pcre2_code *fPCRE;
-+ PCREPriv_t() { fPCRE = nullptr; }
-+#else
- pcre *fPCRE;
- pcre_extra *fPCREExtra;
--
- PCREPriv_t() { fPCRE = nullptr; fPCREExtra = nullptr; }
-+#endif
- };
-
-
-@@ -79,10 +96,15 @@ TPRegexp::TPRegexp(const TPRegexp &p)
-
- TPRegexp::~TPRegexp()
- {
-+#ifdef USE_PCRE2
-+ if (fPriv->fPCRE)
-+ pcre2_code_free(fPriv->fPCRE);
-+#else
- if (fPriv->fPCRE)
- pcre_free(fPriv->fPCRE);
- if (fPriv->fPCREExtra)
- pcre_free(fPriv->fPCREExtra);
-+#endif
- delete fPriv;
- }
-
-@@ -93,12 +115,18 @@ TPRegexp &TPRegexp::operator=(const TPRegexp &p)
- {
- if (this != &p) {
- fPattern = p.fPattern;
-+#ifdef USE_PCRE2
-+ if (fPriv->fPCRE)
-+ pcre2_code_free(fPriv->fPCRE);
-+ fPriv->fPCRE = nullptr;
-+#else
- if (fPriv->fPCRE)
- pcre_free(fPriv->fPCRE);
- fPriv->fPCRE = nullptr;
- if (fPriv->fPCREExtra)
- pcre_free(fPriv->fPCREExtra);
- fPriv->fPCREExtra = nullptr;
-+#endif
- fPCREOpts = p.fPCREOpts;
- }
- return *this;
-@@ -197,31 +225,50 @@ TString TPRegexp::GetModifiers() const
-
- void TPRegexp::Compile()
- {
-+#ifdef USE_PCRE2
-+ if (fPriv->fPCRE)
-+ pcre2_code_free(fPriv->fPCRE);
-+#else
- if (fPriv->fPCRE)
- pcre_free(fPriv->fPCRE);
-+#endif
-
- if (fPCREOpts & kPCRE_DEBUG_MSGS)
- Info("Compile", "PREGEX compiling %s", fPattern.Data());
-
-+#ifdef USE_PCRE2
-+ int errcode;
-+ PCRE2_SIZE patIndex;
-+ fPriv->fPCRE = pcre2_compile((PCRE2_SPTR)fPattern.Data(), fPattern.Length(),
-+ fPCREOpts & kPCRE_INTMASK,
-+ &errcode, &patIndex, nullptr);
-+#else
- const char *errstr;
- Int_t patIndex;
- fPriv->fPCRE = pcre_compile(fPattern.Data(), fPCREOpts & kPCRE_INTMASK,
- &errstr, &patIndex, nullptr);
-+#endif
-
- if (!fPriv->fPCRE) {
-+#ifdef USE_PCRE2
-+ PCRE2_UCHAR errstr[256];
-+ pcre2_get_error_message(errcode, errstr, 256);
-+#endif
- if (fgThrowAtCompileError) {
- throw std::runtime_error
- (TString::Format("TPRegexp::Compile() compilation of TPRegexp(%s) failed at: %d because %s",
-- fPattern.Data(), patIndex, errstr).Data());
-+ fPattern.Data(), (int)patIndex, errstr).Data());
- } else {
- Error("Compile", "compilation of TPRegexp(%s) failed at: %d because %s",
-- fPattern.Data(), patIndex, errstr);
-+ fPattern.Data(), (int)patIndex, errstr);
- return;
- }
- }
-
-+#ifndef USE_PCRE2
- if (fPriv->fPCREExtra || (fPCREOpts & kPCRE_OPTIMIZE))
- Optimize();
-+#endif
- }
-
- ////////////////////////////////////////////////////////////////////////////////
-@@ -229,6 +276,7 @@ void TPRegexp::Compile()
-
- void TPRegexp::Optimize()
- {
-+#ifndef USE_PCRE2
- if (fPriv->fPCREExtra)
- pcre_free(fPriv->fPCREExtra);
-
-@@ -243,6 +291,7 @@ void TPRegexp::Optimize()
- Error("Optimize", "Optimization of TPRegexp(%s) failed: %s",
- fPattern.Data(), errstr);
- }
-+#endif
- }
-
- ////////////////////////////////////////////////////////////////////////////////
-@@ -308,21 +357,43 @@ Int_t TPRegexp::MatchInternal(const TString &s, Int_t start,
- Int_t nMaxMatch, TArrayI *pos) const
- {
- Int_t *offVec = new Int_t[3*nMaxMatch];
-+
-+#ifdef USE_PCRE2
-+ pcre2_match_data *match_data;
-+ match_data = pcre2_match_data_create_from_pattern(fPriv->fPCRE, nullptr);
-+ Int_t nrMatch = pcre2_match(fPriv->fPCRE, (PCRE2_SPTR8)s.Data(),
-+ s.Length(), start, 0,
-+ match_data, nullptr);
-+#else
- // pcre_exec allows less options - see pcre_internal.h PUBLIC_EXEC_OPTIONS.
- Int_t nrMatch = pcre_exec(fPriv->fPCRE, fPriv->fPCREExtra, s.Data(),
- s.Length(), start, 0,
- offVec, 3*nMaxMatch);
-+#endif
-
- if (nrMatch == PCRE_ERROR_NOMATCH)
- nrMatch = 0;
- else if (nrMatch <= 0) {
- Error("Match","pcre_exec error = %d", nrMatch);
-+#ifdef USE_PCRE2
-+ pcre2_match_data_free(match_data);
-+#endif
- delete [] offVec;
- return 0;
- }
-
-- if (pos)
-+ if (pos) {
-+#ifdef USE_PCRE2
-+ PCRE2_SIZE *oVec = pcre2_get_ovector_pointer(match_data);
-+ for (int i = 0; i < 2 * nrMatch; ++i)
-+ offVec[i] = oVec[i];
-+#endif
- pos->Set(2*nrMatch, offVec);
-+ }
-+
-+#ifdef USE_PCRE2
-+ pcre2_match_data_free(match_data);
-+#endif
- delete [] offVec;
-
- return nrMatch;
-@@ -404,13 +475,24 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern,
- Int_t offset = start;
- Int_t last = 0;
-
-+#ifdef USE_PCRE2
-+ pcre2_match_data *match_data;
-+ match_data = pcre2_match_data_create_from_pattern(fPriv->fPCRE, nullptr);
-+#endif
-+
- while (kTRUE) {
-
- // find next matching subs
- // pcre_exec allows less options - see pcre_internal.h PUBLIC_EXEC_OPTIONS.
-+#ifdef USE_PCRE2
-+ Int_t nrMatch = pcre2_match(fPriv->fPCRE, (PCRE2_SPTR)s.Data(),
-+ s.Length(), offset, 0,
-+ match_data, nullptr);
-+#else
- Int_t nrMatch = pcre_exec(fPriv->fPCRE, fPriv->fPCREExtra, s.Data(),
- s.Length(), offset, 0,
- offVec, 3*nMaxMatch);
-+#endif
-
- if (nrMatch == PCRE_ERROR_NOMATCH) {
- break;
-@@ -419,6 +501,12 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern,
- break;
- }
-
-+#ifdef USE_PCRE2
-+ PCRE2_SIZE *oVec = pcre2_get_ovector_pointer(match_data);
-+ for (int i = 0; i < 2 * nrMatch; ++i)
-+ offVec[i] = oVec[i];
-+#endif
-+
- // append anything previously unmatched, but not substituted
- if (last <= offVec[0]) {
- fin += s(last,offVec[0]-last);
-@@ -446,6 +534,9 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern,
- }
- }
-
-+#ifdef USE_PCRE2
-+ pcre2_match_data_free(match_data);
-+#endif
- delete [] offVec;
-
- fin += s(last,s.Length()-last);
-diff --git a/tutorials/legacy/regexp/regexp.C b/tutorials/legacy/regexp/regexp.C
-index 995b823bce..f38ed6799e 100644
---- a/tutorials/legacy/regexp/regexp.C
-+++ b/tutorials/legacy/regexp/regexp.C
-@@ -94,11 +94,11 @@ void regexp()
- // criteria:
- // 1) It should be of the form string1@string2 . The "^" and "$" ensure that we compare the complete
- // email string
-- // 2) ([\\w-\\.]+) :
-+ // 2) ([\\w\\-\\.]+) :
- // string1 is only allowed to be composed out of the alphanumeric characters, "-" and "." .
- // The "+" ensures that string1 can not be empty .
- // 3) string2 is matched against three different parts :
-- // a. ((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+)) :
-+ // a. ((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+)) :
- // This regular expression ensures that EITHER the string starts with "[" followed by three groups
- // of numbers, separated by "." , where each group has 1 to 3 numbers, OR alphanumeric strings,
- // possibly containing "-" characters, separated by "." .
-@@ -108,7 +108,7 @@ void regexp()
- // At most one "]" character .
-
- TString s5("fons.rademakers(a)cern.ch");
-- TPRegexp r5("^([\\w-\\.]+)(a)((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
-+ TPRegexp r5("^([\\w\\-\\.]+)(a)((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
- cout << "Check if the email address \"" << s5 << "\" is valid: " << (r5.MatchB(s5) ? "TRUE" : "FALSE") << endl;
-
- // Substitute Example with pattern modifier :
---
-2.41.0
-
diff --git a/root-stress.patch b/root-stress.patch
new file mode 100644
index 0000000..bf7f468
--- /dev/null
+++ b/root-stress.patch
@@ -0,0 +1,32 @@
+From 706c94ca916387287f7459c984d61439e52c1aba Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sun, 2 Jun 2024 06:19:43 +0200
+Subject: [PATCH] Adjust stressGraphics.ref
+
+---
+ test/stressGraphics.ref | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref
+index 37077a2fb9..9d5cd0352d 100644
+--- a/test/stressGraphics.ref
++++ b/test/stressGraphics.ref
+@@ -7,13 +7,13 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN
+ 6 430 50 12669 50 9558 100 5325 700 471 50
+ 7 4980 50 13893 50 16143 1300 12230 500 5011 70
+ 8 5442 80 13473 50 18430 700 12398 300 5469 80
+- 9 9253 100 14377 100 19851 2400 12199 900 9283 100
++ 9 9253 100 14377 150 19851 2400 12199 900 9283 100
+ 10 8863 70 13645 100 24343 1100 23278 1700 8894 70
+ 11 12971 100 14444 50 34063 2000 32033 1200 12864 150
+ 12 7674 100 13533 50 83557 3000 38505 4000 7720 150
+ 13 5600 400 13242 300 16881 400 15063 800 5638 400
+ 14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000
+- 15 15690 5000 17179 200 23076 9500 14232 1000 10437 5000
++ 15 15690 5000 17179 200 23076 9500 14232 1500 10437 5000
+ 16 28072 400 23287 200 44462 11000 30062 5000 38007 400
+ 17 20444 400 21520 150 27511 11000 16867 600 20721 400
+ 18 15894 100 19305 200 27187 10300 15925 350 15925 100
+--
+2.45.1
+
diff --git a/root-use-consistent-wording-in-tmva-test-comments.patch b/root-use-consistent-wording-in-tmva-test-comments.patch
deleted file mode 100644
index 1d3e52a..0000000
--- a/root-use-consistent-wording-in-tmva-test-comments.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From e6928c405fe1647a0ee6ea32543b18ebc3828227 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Thu, 23 Feb 2023 22:10:46 +0100
-Subject: [PATCH] Use consistent wording of the comments in the different TMVA
- classification tests to avoid confusion.
-
----
- tutorials/tmva/TMVA_CNN_Classification.C | 2 +-
- tutorials/tmva/TMVA_CNN_Classification.py | 4 ++--
- tutorials/tmva/TMVA_RNN_Classification.C | 6 ++++--
- tutorials/tmva/TMVA_RNN_Classification.py | 5 +++--
- 4 files changed, 10 insertions(+), 7 deletions(-)
-
-diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C
-index cc6829a24d..db5af784d4 100644
---- a/tutorials/tmva/TMVA_CNN_Classification.C
-+++ b/tutorials/tmva/TMVA_CNN_Classification.C
-@@ -134,7 +134,7 @@ void TMVA_CNN_Classification(int nevts = 1000, std::vector<bool> opt = {1, 1, 1,
-
- bool writeOutputFile = true;
-
-- int num_threads = 4; // use by default 4 threads if value is not set before
-+ int num_threads = 4; // use max 4 threads
- // switch off MT in OpenBLAS to avoid conflict with tbb
- gSystem->Setenv("OMP_NUM_THREADS", "1");
-
-diff --git a/tutorials/tmva/TMVA_CNN_Classification.py b/tutorials/tmva/TMVA_CNN_Classification.py
-index 85fde20763..5d3c6e7220 100644
---- a/tutorials/tmva/TMVA_CNN_Classification.py
-+++ b/tutorials/tmva/TMVA_CNN_Classification.py
-@@ -25,7 +25,7 @@
-
- import ROOT
-
--#switch off MT in OpenMP (BLAS)
-+# switch off MT in OpenBLAS to avoid conflict with tbb
- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1")
-
- TMVA = ROOT.TMVA
-@@ -145,7 +145,7 @@ if not useTMVACNN:
-
- writeOutputFile = True
-
--num_threads = 4 # use default threads
-+num_threads = 4 # use max 4 threads
- max_epochs = 10 # maximum number of epochs used for training
-
-
-diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C
-index 8701ba6c19..d4bb7a4e4a 100644
---- a/tutorials/tmva/TMVA_RNN_Classification.C
-+++ b/tutorials/tmva/TMVA_RNN_Classification.C
-@@ -191,8 +191,10 @@ void TMVA_RNN_Classification(int nevts = 2000, int use_type = 1)
- useKeras = false;
- #endif
-
-- int num_threads = 4; // use by default all threads
-- gSystem->Setenv("OMP_NUM_THREADS", "1"); // switch off MT in OpenBLAS
-+ int num_threads = 4; // use max 4 threads
-+ // switch off MT in OpenBLAS to avoid conflict with tbb
-+ gSystem->Setenv("OMP_NUM_THREADS", "1");
-+
- // do enable MT running
- if (num_threads >= 0) {
- ROOT::EnableImplicitMT(num_threads);
-diff --git a/tutorials/tmva/TMVA_RNN_Classification.py b/tutorials/tmva/TMVA_RNN_Classification.py
-index 625a120b3d..65aa83c070 100644
---- a/tutorials/tmva/TMVA_RNN_Classification.py
-+++ b/tutorials/tmva/TMVA_RNN_Classification.py
-@@ -26,10 +26,11 @@ num_threads = 4 # use max 4 threads
- # do enable MT running
- if ROOT.gSystem.GetFromPipe("root-config --has-imt") == "yes":
- ROOT.EnableImplicitMT(num_threads)
-- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") # switch OFF MT in OpenBLAS
-+ # switch off MT in OpenBLAS to avoid conflict with tbb
-+ ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1")
- print("Running with nthreads = {}".format(ROOT.GetThreadPoolSize()))
- else:
-- print("Running in serail mode since ROOT does not support MT")
-+ print("Running in serial mode since ROOT does not support MT")
-
-
- TMVA = ROOT.TMVA
---
-2.39.2
-
diff --git a/root-write-array.patch b/root-write-array.patch
new file mode 100644
index 0000000..30b5945
--- /dev/null
+++ b/root-write-array.patch
@@ -0,0 +1,125 @@
+From a7be6f726b13a7ccf1c46dec35f53520781159df Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Fri, 7 Jun 2024 06:49:39 +0200
+Subject: [PATCH] Put back check for n = 0
+
+---
+ io/io/src/TBufferFile.cxx | 25 ++++++++++++++++++++++++-
+ 1 file changed, 24 insertions(+), 1 deletion(-)
+
+diff --git a/io/io/src/TBufferFile.cxx b/io/io/src/TBufferFile.cxx
+index 81e0f95e02..b5b7ef9831 100644
+--- a/io/io/src/TBufferFile.cxx
++++ b/io/io/src/TBufferFile.cxx
+@@ -1948,6 +1948,8 @@ void TBufferFile::WriteArrayDouble32(const Double_t *d, Int_t n, TStreamerElemen
+
+ void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(UChar_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -1974,6 +1976,8 @@ void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Char_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -1995,6 +1999,8 @@ void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n)
+
+ void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Char_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2023,6 +2029,8 @@ void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Short_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2054,7 +2062,8 @@ void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n)
+ {
+-
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = 4;
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2086,6 +2095,8 @@ void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = 8;
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2108,6 +2119,8 @@ void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = 8;
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2128,6 +2141,8 @@ void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Long64_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2154,6 +2169,8 @@ void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Float_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2185,6 +2202,8 @@ void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Double_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2212,6 +2231,8 @@ void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n)
+
+ void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerElement *ele)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Float_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2270,6 +2291,8 @@ void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerE
+
+ void TBufferFile::WriteFastArrayDouble32(const Double_t *d, Long64_t n, TStreamerElement *ele)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Float_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+--
+2.45.2
+
diff --git a/root.spec b/root.spec
index bfe8824..c39adee 100644
--- a/root.spec
+++ b/root.spec
@@ -1,47 +1,16 @@
-# Needed for EPEL 8
-%undefine __cmake_in_source_build
-
# Disable package note flags, since root saves the compiler/linker flags
# used during the build
%undefine _package_note_flags
-%global python3_version_uscore %(tr . _ <<< "%{python3_version}")
-
%global root7 1
-
-%if %{?rhel}%{!?rhel:0} == 8
-%ifarch %{power64}
-# These modules cause "pure virtual method called" errors
-# https://github.com/root-project/root/issues/12372
-%global dataframe 0
-%global roofit 0
-%global tmvasofieparser 0
-%else
%global dataframe 1
%global roofit 1
%global tmvasofieparser 1
-%endif
-%else
-%global dataframe 1
-%global roofit 1
-%global tmvasofieparser 1
-%endif
-
-%if %{?rhel}%{!?rhel:0} == 8
-# DistRDF requires Python 3.8 or later, RHEL 8 has version 3.6
-%global distrdf 0
-%else
%global distrdf %{dataframe}
-%endif
-%if %{?rhel}%{!?rhel:0} == 8
-# Requires nlohmann json version 3.9 or later, RHEL 8 has version 3.6
-%global bundlejson 1
-%else
%global bundlejson 0
-%endif
-%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8
+%if %{?fedora}%{!?fedora:0}
%ifarch %{ix86} %{arm}
%global pandas 0
%else
@@ -55,9 +24,9 @@
%global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$
Name: root
-Version: 6.30.06
+Version: 6.32.00
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 5%{?dist}
+Release: 1%{?dist}
Summary: Numerical data analysis framework
License: LGPL-2.1-or-later
@@ -92,39 +61,33 @@ Patch2: %{name}-dont-install-minicern.patch
Patch3: %{name}-no-export-python-modules.patch
# Run some test on 32 bit that upstream has disabled
Patch4: %{name}-32bit-tests.patch
-# Use local static script and style files for JsMVA
-Patch5: %{name}-jsmva-static.patch
-# Fix test failure on ppc64le and aarch64 with gcc 12
-# https://github.com/root-project/root/pull/9601
-Patch6: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch
-# Byte swap values read from the protobuf raw data stream on
-# big endian architectures
-# https://github.com/root-project/root/pull/10308
-Patch7: %{name}-big-endian-byte-swap.patch
-# https://github.com/root-project/root/pull/12375
-Patch8: %{name}-use-consistent-wording-in-tmva-test-comments.patch
-# https://github.com/root-project/root/pull/10303
-Patch9: %{name}-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch
-# Port to pcre2
-# https://github.com/root-project/root/issues/11395
-# https://github.com/root-project/root/pull/13771
-Patch10: %{name}-pcre2.patch
-# https://github.com/root-project/root/pull/14111
-Patch11: %{name}-avoid-out-of-memory-during-linking.patch
-# https://github.com/root-project/root/pull/14112
-Patch12: %{name}-clad.patch
-Patch13: %{name}-gtest-back.patch
-Patch14: %{name}-np32.patch
-# Adjust tests for zlib-ng
-# https://github.com/root-project/root/pull/14295
-Patch15: %{name}-new-zlib.patch
-# Only for EPEL 8 - disable tests not working with old gtest
-Patch16: %{name}-old-gtest.patch
+# Adjust stress graphics reference
+# https://github.com/root-project/root/pull/15735
+Patch5: %{name}-stress.patch
+# Avoid segmentation fault on ix86
+# https://github.com/root-project/root/issues/15738
+# https://github.com/root-project/root/pull/15780
+Patch6: %{name}-write-array.patch
+# Adjust test limit
+# https://github.com/root-project/root/pull/15734
+Patch7: %{name}-failure-on-ppc64le-and-s390x.patch
+# Correct format warnings seen on 32 bit architectures
+# https://github.com/root-project/root/pull/15732
+Patch8: %{name}-format-warnings-32-bit.patch
+# Out-of-bounds vector access
+# https://github.com/root-project/root/issues/15730
+# https://github.com/root-project/root/pull/15739
+Patch9: %{name}-out-of-bounds.patch
+# Fix one more broken import in JsMVA
+# https://github.com/root-project/root/pull/15752
+Patch10: %{name}-fix-one-more-broken-import-in-JsMVA.patch
BuildRequires: gcc-c++
BuildRequires: gcc-gfortran
BuildRequires: make
-BuildRequires: cmake >= 3.16
+# root on Linux requires cmake 3.16
+# but 3.19 is needed for flexiblas support
+BuildRequires: cmake >= 3.19
BuildRequires: libX11-devel
BuildRequires: libXpm-devel
BuildRequires: libXft-devel
@@ -141,9 +104,10 @@ BuildRequires: xz-devel
BuildRequires: lz4-devel
BuildRequires: xxhash-devel
BuildRequires: libzstd-devel
-# Require a version of libAfterImage that is properly linked to
-# its dependencies
-BuildRequires: libAfterImage-devel >= 1.20-21
+BuildRequires: libtiff-devel
+BuildRequires: libpng-devel
+BuildRequires: giflib-devel
+BuildRequires: libjpeg-devel
BuildRequires: ncurses-devel
BuildRequires: libxml2-devel
BuildRequires: fftw-devel
@@ -155,7 +119,7 @@ BuildRequires: unixODBC-devel
BuildRequires: libGL-devel
BuildRequires: libGLU-devel
BuildRequires: libpq-devel
-BuildRequires: python%{python3_pkgversion}-devel
+BuildRequires: python%{python3_pkgversion}-devel >= 3.7
BuildRequires: python%{python3_pkgversion}-setuptools
BuildRequires: python%{python3_pkgversion}-numpy
%ifarch %{qt5_qtwebengine_arches}
@@ -172,23 +136,17 @@ BuildRequires: desktop-file-utils
BuildRequires: dcap-devel
BuildRequires: xrootd-client-devel >= 1:5.0.0
BuildRequires: cfitsio-devel
-BuildRequires: davix-devel >= 0.6.4
+# Davix version >= 0.6.4, but not between 0.6.8 and 0.7.0
+BuildRequires: davix-devel >= 0.7.1
BuildRequires: R-Rcpp-devel
BuildRequires: R-RInside-devel
BuildRequires: readline-devel
-BuildRequires: tbb-devel >= 2018
+BuildRequires: tbb-devel >= 2020
BuildRequires: libuuid-devel
BuildRequires: graphviz-devel
BuildRequires: expat-devel
BuildRequires: pythia8-devel >= 8.1.80
-%if %{?fedora}%{!?fedora:0} || %{?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)
-BuildRequires: cmake-data >= 3.18.3-1
-%else
-BuildRequires: openblas-devel
-%endif
%if ! %{bundlejson}
BuildRequires: json-devel >= 3.9
%endif
@@ -361,26 +319,6 @@ Obsoletes: %{name}-montecarlo-vmc < 6.26.00
Obsoletes: %{name}-doc < 6.26.00
Obsoletes: %{name}-io-gfal < 6.30.00
Obsoletes: %{name}-roofit-common < 6.30.00
-%if %{?rhel}%{!?rhel:0} == 8
-# Obsolete the DistRDF package in EPEL 8
-# Minimum Python version requirement introduced
-Obsoletes: python%{python3_pkgversion}-distrdf < 6.26.00
-%ifarch %{power64}
-# Obsolete for ppc64le in EPEL 8
-# These modules cause "pure virtual method called" errors
-Obsoletes: %{name}-tree-dataframe < 6.28.00
-Obsoletes: %{name}-roofit < 6.28.00
-Obsoletes: %{name}-roofit-common < 6.28.00
-Obsoletes: %{name}-roofit-core < 6.28.00
-Obsoletes: %{name}-roofit-more < 6.28.00
-Obsoletes: %{name}-roofit-batchcompute < 6.28.00
-Obsoletes: %{name}-roofit-dataframe-helpers < 6.28.00
-Obsoletes: %{name}-roofit-hs3 < 6.28.00
-Obsoletes: %{name}-roostats < 6.28.00
-Obsoletes: %{name}-hist-factory < 6.28.00
-Obsoletes: %{name}-tmva-sofie-parser < 6.28.00
-%endif
-%endif
%description core
This package contains the core libraries used by ROOT: libCore, libNew,
@@ -446,6 +384,9 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release}
Requires: %{name}-tree%{?_isa} = %{version}-%{release}
# Package split (tpython from Python bindings)
Obsoletes: python%{python3_pkgversion}-%{name} < 6.22.00
+# JsMVA python module is now a submodule of ROOT python module
+Provides: python%{python3_pkgversion}-jsmva = %{version}-%{release}
+Obsoletes: python%{python3_pkgversion}-jsmva < 6.32.00
%description -n python%{python3_pkgversion}-%{name}
This package contains the Python extension for ROOT. It makes it
@@ -453,12 +394,18 @@ possible to use ROOT classes in Python.
%package -n python%{python3_pkgversion}-jupyroot
Summary: ROOT Jupyter kernel
+BuildArch: noarch
%py_provides python%{python3_pkgversion}-jupyroot
-Requires: python%{python3_pkgversion}-%{name}%{?_isa} = %{version}-%{release}
-Requires: python%{python3_pkgversion}-jsmva = %{version}-%{release}
-Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-notebook = %{version}-%{release}
+Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release}
+Requires: %{name}-core = %{version}-%{release}
+# notebook package was merged with JupyROOT package
+Provides: %{name}-notebook = %{version}-%{release}
+Obsoletes: %{name}-notebook < 6.32.00
+Requires: js-jsroot >= 7.5
%if %{?fedora}%{!?fedora:0}
+# jupyter-notebook not available in RHEL/EPEL
+# some functionality missing
+Requires: jupyter-notebook
# python-metakernel not available in RHEL/EPEL
# some functionality missing
Requires: python%{python3_pkgversion}-ipython
@@ -469,15 +416,6 @@ Requires: python-jupyter-filesystem
%description -n python%{python3_pkgversion}-jupyroot
The Jupyter kernel for the ROOT notebook.
-%package -n python%{python3_pkgversion}-jsmva
-Summary: TMVA interface used by JupyROOT
-BuildArch: noarch
-%py_provides python%{python3_pkgversion}-jsmva
-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
@@ -594,9 +532,6 @@ Requires: %{name}-gui%{?_isa} = %{version}-%{release}
Requires: %{name}-hist%{?_isa} = %{version}-%{release}
Requires: %{name}-io%{?_isa} = %{version}-%{release}
Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
-# Require a version of libAfterImage that is properly linked to
-# its dependencies
-Requires: libAfterImage >= 1.20-21
%description graf-asimage
This package contains the AfterImage renderer for ROOT, which allows
@@ -1801,20 +1736,6 @@ Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release}
The ROOT command line utilities is a set of scripts for common tasks
written in python.
-%package notebook
-Summary: Static files for the Jupyter ROOT Notebook
-BuildArch: noarch
-Requires: %{name}-core = %{version}-%{release}
-Requires: js-jsroot >= 7.5
-%if %{?fedora}%{!?fedora:0}
-# jupyter-notebook not available in RHEL/EPEL
-# some functionality missing
-Requires: jupyter-notebook
-%endif
-
-%description notebook
-Javascript and style files for the Jupyter ROOT Notebook.
-
%package gui-webdisplay
Summary: Web display for ROOT
Requires: %{name}-core%{?_isa} = %{version}-%{release}
@@ -1994,46 +1915,34 @@ This package contains utility functions for ntuples.
%prep
%setup -q -a 1
-%patch -P 0 -p1
-%patch -P 1 -p1
-%patch -P 2 -p1
-%patch -P 3 -p1
-%patch -P 4 -p1
-%patch -P 5 -p1
-%patch -P 6 -p1
-%patch -P 7 -p1
-%patch -P 8 -p1
-%patch -P 9 -p1
-%patch -P 10 -p1
-%patch -P 11 -p1
-%patch -P 12 -p1
-%patch -P 13 -p1
-%patch -P 14 -p1
-%patch -P 15 -p1
-%if %{?rhel}%{!?rhel:0} == 8
-%patch -P 16 -p1
-%endif
+%patch -P0 -p1
+%patch -P1 -p1
+%patch -P2 -p1
+%patch -P3 -p1
+%patch -P4 -p1
+%patch -P5 -p1
+%patch -P6 -p1
+%patch -P7 -p1
+%patch -P8 -p1
+%patch -P9 -p1
+%patch -P10 -p1
# Remove bundled sources in order to be sure they are not used
# * afterimage
-rm -rf graf2d/asimage/src/libAfterImage
+rm -rf graf2d/asimage/src/libAfterImage/{libjpeg,libpng,libungif,zlib}
+sed '/zlib\/zlib.h/d' -i graf2d/asimage/src/libAfterImage/.depend
# * ftgl
rm -rf graf3d/ftgl/src graf3d/ftgl/inc
# * freetype
rm -rf graf2d/freetype/src
-# * davix, glew, lz4, nlohmann, openssl, pcre, tbb, xxhash, zlib, zstd
-rm -rf builtins/davix
+# * glew, lz4, nlohmann, pcre, xxhash, zlib, zstd
rm -rf builtins/glew
rm -rf builtins/lz4
%if ! %{bundlejson}
rm -rf builtins/nlohmann
%endif
-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
@@ -2053,6 +1962,9 @@ rm -rf js/[^f]* js/files/draw.htm js/files/online.htm
rm etc/notebook/JsMVA/js/*.min.js
rm etc/notebook/JsMVA/css/*.min.css
+# Additional documentation
+install -p -m 644 %{SOURCE7} bindings/jupyroot
+
%build
# This package triggers a fault in LLVM when LTO is enabled. Until LLVM
# is analyzed and fixed, disable LTO
@@ -2070,20 +1982,15 @@ for s in etc/notebook/JsMVA/css/*.css ; do
python3 -m rcssmin < ${s} > ${s%.css}.min.css
done
-# Avoid overlinking (this is the default on Fedora and EPEL 9)
-%if %{?rhel}%{!?rhel:0} == 8
-LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-%endif
-
%cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \
-DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir}/%{name} \
-DCMAKE_INSTALL_PYTHONDIR:PATH=%{python3_sitearch} \
-DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_datadir}/%{name} \
-DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \
- -DPYTHON_EXECUTABLE=%{__python3} \
+ -DPython3_EXECUTABLE=%{__python3} \
-Dgnuinstall:BOOL=ON \
- -Dbuiltin_afterimage:BOOL=OFF \
+ -Dbuiltin_afterimage:BOOL=ON \
-Dbuiltin_cfitsio:BOOL=OFF \
-Dbuiltin_clang:BOOL=ON \
-Dbuiltin_cling:BOOL=ON \
@@ -2129,6 +2036,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dclad:BOOL=OFF \
-Dcocoa:BOOL=OFF \
-Dcuda:BOOL=OFF \
+ -Dcudnn:BOOL=OFF \
-Dcxxmodules:BOOL=OFF \
-Ddaos:BOOL=OFF \
%if %{dataframe}
@@ -2139,7 +2047,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Ddavix:BOOL=ON \
-Ddcache:BOOL=ON \
-Ddev:BOOL=OFF \
- -Dexceptions:BOOL=ON \
-Dfcgi:BOOL=ON \
-Dfftw3:BOOL=ON \
-DFIREFOX_EXECUTABLE:PATH=/usr/bin/firefox \
@@ -2152,20 +2059,15 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dlibcxx:BOOL=OFF \
-Dmathmore:BOOL=ON \
-Dmemory_termination:BOOL=OFF \
- -Dminuit2:BOOL=ON \
-Dminuit2_mpi:BOOL=OFF \
-Dminuit2_omp:BOOL=OFF \
- -Dmlp:BOOL=ON \
-Dmpi:BOOL=OFF \
-Dmysql:BOOL=ON \
-Dodbc:BOOL=ON \
-Dopengl:BOOL=ON \
- -Doracle:BOOL=OFF \
-Dpgsql:BOOL=ON \
-Dproof:BOOL=ON \
-Dpyroot:BOOL=ON \
- -Dpyroot-python2:BOOL=OFF \
- -Dpythia6:BOOL=OFF \
-Dpythia8:BOOL=ON \
%ifarch %{qt5_qtwebengine_arches}
-Dqt5web:BOOL=ON \
@@ -2259,9 +2161,6 @@ install -p -m 644 %{SOURCE5} %{buildroot}%{_datadir}/mime/packages
install -p -m 644 %{SOURCE6} \
%{buildroot}%{_datadir}/icons/hicolor/48x48/mimetypes
-# Additional documentation
-install -p -m 644 %{SOURCE7} %{buildroot}%{_pkgdocdir}
-
# Move python cli helper to its own directory
mkdir -p %{buildroot}%{_datadir}/%{name}/cli
mv %{buildroot}%{python3_sitearch}/cmdLineUtils.py \
@@ -2274,43 +2173,37 @@ mv %{buildroot}%{_libdir}/%{name}/*-gdb.py \
%{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name}
# Fix python extension suffix
-mv %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so.%{version} \
- %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix}
-rm %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so.%{libversion}
-rm %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so
-
-mv %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so.%{version} \
- %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix}
-rm %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so.%{libversion}
-rm %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so
+mv %{buildroot}%{python3_sitearch}/libROOTPythonizations.so.%{version} \
+ %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_ext_suffix}
+rm %{buildroot}%{python3_sitearch}/libROOTPythonizations.so.%{libversion}
+rm %{buildroot}%{python3_sitearch}/libROOTPythonizations.so
# Move noarch python modules to sitelib
if [ "%{python3_sitelib}" != "%{python3_sitearch}" ] ; then
mkdir -p %{buildroot}%{python3_sitelib}
-mv %{buildroot}%{python3_sitearch}/JsMVA %{buildroot}%{python3_sitelib}
+mv %{buildroot}%{python3_sitearch}/JupyROOT %{buildroot}%{python3_sitelib}
%if %{distrdf}
mv %{buildroot}%{python3_sitearch}/DistRDF %{buildroot}%{python3_sitelib}
%endif
fi
-# Create .egg-info files so that rpm auto-generates provides
+# Create .dist-info files so that rpm auto-generates provides
+mkdir %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info
echo 'Name: ROOT' > \
- %{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info
+ %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info/METADATA
echo 'Version: %{version}' >> \
- %{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info
+ %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info/METADATA
+mkdir %{buildroot}%{python3_sitelib}/JupyROOT-%{version}.dist-info
echo 'Name: JupyROOT' > \
- %{buildroot}%{python3_sitearch}/JupyROOT-%{version}.egg-info
-echo 'Version: %{version}' >> \
- %{buildroot}%{python3_sitearch}/JupyROOT-%{version}.egg-info
-echo 'Name: JsMVA' > \
- %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info
+ %{buildroot}%{python3_sitelib}/JupyROOT-%{version}.dist-info/METADATA
echo 'Version: %{version}' >> \
- %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info
+ %{buildroot}%{python3_sitelib}/JupyROOT-%{version}.dist-info/METADATA
%if %{distrdf}
+mkdir %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info
echo 'Name: DistRDF' > \
- %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info
+ %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info/METADATA
echo 'Version: %{version}' >> \
- %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info
+ %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info/METADATA
%endif
# Put jupyter stuff in the right places
@@ -2322,7 +2215,7 @@ sed -e 's/ROOT C++/& (Python 3)/' \
-e 's!python[0-9]*\.[0-9]*!%{__python3}!' \
-i %{buildroot}%{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot/kernel.json
sed -e '/^\#!/d' \
- -i %{buildroot}%{python3_sitearch}/JupyROOT/kernel/rootkernel.py
+ -i %{buildroot}%{python3_sitelib}/JupyROOT/kernel/rootkernel.py
rm -rf %{buildroot}%{_datadir}/%{name}/notebook/custom
rm -rf %{buildroot}%{_datadir}/%{name}/notebook/html
@@ -2391,10 +2284,10 @@ pushd %{buildroot}%{_datadir}/%{name}/plugins
%if ! %{root7}
rm TBrowserImp/P030_RWebBrowserImp.C
%endif
-rm TFile/P050_TGFALFile.C
rm TGLManager/P020_TGWin32GLManager.C
rm TGLManager/P030_TGOSXGLManager.C
rm TProofMgr/P010_TXProofMgr.C
+rm TProofMonSender/P010_TProofMonSenderML.C
rm TProofServ/P010_TXProofServ.C
rm TSlave/P010_TXSlave.C
rm TSQLServer/P040_TOracleServer.C
@@ -2516,10 +2409,6 @@ popd
# reads input data over network:
# root://eospublic.cern.ch//eos/opendata/atlas/OutreachDatasets/2020-01-22/
#
-# - tutorial-v7-global_temperatures.cxx
-# reads input data over network
-# http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv
-#
# - tutorial-v7-ntuple-ntpl003_lhcbOpenData
# reads input data over network
# http://root.cern.ch/files/LHCb/lhcb_B2HHH_MagnetUp.root (425 MB)
@@ -2532,6 +2421,10 @@ popd
# reads input data over network
# http://root.cern.ch/files/HiggsTauTauReduced/GluGluToHToTauTau.root (20 MB)
#
+# - tutorial-v7-ntuple-ntpl011_global_temperatures
+# reads input data over network
+# http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv
+#
# - gtest-net-davix-test-RRawFileDavix
# reads input file over network
# http://root.cern.ch/files/davix.test
@@ -2586,10 +2479,10 @@ tutorial-dataframe-df106_HiggsToFourLeptons|\
tutorial-dataframe-df107_SingleTopAnalysis-py|\
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-ntuple-ntpl008_import|\
+tutorial-v7-ntuple-ntpl011_global_temperatures|\
gtest-net-davix-test-RRawFileDavix|\
gtest-net-netxng-test-RRawFileNetXNG|\
gtest-net-netxng-test-TNetXNGFileTest|\
@@ -2607,87 +2500,36 @@ test-webgui-ping"
%if ! %{pandas}
# - test-import-pandas
# - tutorial-dataframe-df026_AsNumpyArrays-py
+# - tutorial-dataframe-df035_RDFFromPandas-py
# - tutorial-roofit-rf409_NumPyPandasToRooFit-py
# Requires the pandas python module not (yet) available in RHEL/EPEL 9
excluded="${excluded}|\
test-import-pandas|\
tutorial-dataframe-df026_AsNumpyArrays-py|\
+tutorial-dataframe-df035_RDFFromPandas-py|\
tutorial-roofit-rf409_NumPyPandasToRooFit-py"
%endif
%ifarch %{ix86}
# - gtest-tree-dataframe-test-dataframe-concurrency
# "There's already an active task arena."
+#
+# - gtest-tree-dataframe-test-dataframe-simple
+# free(): invalid pointer
excluded="${excluded}|\
-gtest-tree-dataframe-test-dataframe-concurrency"
+gtest-tree-dataframe-test-dataframe-concurrency|\
+gtest-tree-dataframe-test-dataframe-simple"
%endif
%ifarch %{power64}
-# PPC64LE specific failures
-# - test-stresshistofit-interpreted
-# - test-stresshistogram-interpreted
-# - test-stressmathcore-interpreted
-#
-# Always timeout (hang?)
-# - test-stressinterpreter
-# - tutorial-unuran-unuranFoamTest
-excluded="${excluded}|\
-test-stresshistofit-interpreted|\
-test-stresshistogram-interpreted|\
-test-stressmathcore-interpreted|\
-test-stressinterpreter|\
-tutorial-unuran-unuranFoamTest"
-
-%if %{?rhel}%{!?rhel:0} == 8
-# Fails on ppc64le since RHEL 8.5 update
-# Exception: Found not whitelisted libraries after importing ROOT:
-# - libpthread-2.28
-# - libm-2.28
-# - libc-2.28
-# - librt-2.28
-# - pyunittests-pyroot-import-load-libs
+# - test-stressgraphics(-interpreted)
+# *** stack smashing detected ***: terminated
#
-# - tutorial-fit-combinedFit(-py)
-# - tutorial-fit-fit2dHist
-# - tutorial-fit-fitCircle
-# - tutorial-fit-line3Dfit
-# - tutorial-math-exampleFunction-py
-# - tutorial-multicore-mt103_fillNtupleFromMultipleThreads
-# - tutorial-multicore-mt201_parallelHistoFill
-# - tutorial-multicore-mt304_fillHistos
-# - tutorial-multicore-mtbb001_fillHistos
-# - tutorial-multicore-mtbb101_fillNtuples
-# - tutorial-multicore-mtbb201_parallelHistoFill
-# - tutorial-rcanvas-*
-# - tutorial-v7-concurrentfill.cxx
-# - tutorial-v7-ntuple-ntpl001_staff
-# - tutorial-v7-ntuple-ntpl002_vector
-# - tutorial-v7-ntuple-ntpl005_introspection
-# - tutorial-v7-ntuple-ntpl006_friends
-# - tutorial-v7-ntuple-ntpl007_mtFill
-# - tutorial-v7-simple.cxx
+# - tutorial-roostats-IntervalExamples-py
+# *** Break *** segmentation violation
excluded="${excluded}|\
-pyunittests-pyroot-import-load-libs|\
-tutorial-fit-combinedFit|\
-tutorial-fit-fit2dHist|\
-tutorial-fit-fitCircle|\
-tutorial-fit-line3Dfit|\
-tutorial-math-exampleFunction-py|\
-tutorial-multicore-mt103_fillNtupleFromMultipleThreads|\
-tutorial-multicore-mt201_parallelHistoFill|\
-tutorial-multicore-mt304_fillHistos|\
-tutorial-multicore-mtbb001_fillHistos|\
-tutorial-multicore-mtbb101_fillNtuples|\
-tutorial-multicore-mtbb201_parallelHistoFill|\
-tutorial-rcanvas|\
-tutorial-v7-concurrentfill.cxx|\
-tutorial-v7-ntuple-ntpl001_staff|\
-tutorial-v7-ntuple-ntpl002_vector|\
-tutorial-v7-ntuple-ntpl005_introspection|\
-tutorial-v7-ntuple-ntpl006_friends|\
-tutorial-v7-ntuple-ntpl007_mtFill|\
-tutorial-v7-simple.cxx"
-%endif
+test-stressgraphics|\
+tutorial-roostats-IntervalExamples-py"
%endif
%ifarch s390x
@@ -2696,19 +2538,21 @@ tutorial-v7-simple.cxx"
excluded="${excluded}|\
gtest-roofit-roofitcore-test-testNaNPacker"
-# - gtest-core-base-test-CoreBaseTests
# - gtest-core-dictgen-test-dictgen-base
-# - gtest-core-meta-test-testTDataType
+# - gtest-tree-dataframe-test-dataframe-unified-constructor
#
# - gtest-tree-dataframe-test-datasource-ntuple
# - gtest-tree-ntuple-v7-test-ntuple-basics
# - gtest-tree-ntuple-v7-test-ntuple-bulk
+# - gtest-tree-ntuple-v7-test-ntuple-compat
# - gtest-tree-ntuple-v7-test-ntuple-endian
# - gtest-tree-ntuple-v7-test-ntuple-extended
# - gtest-tree-ntuple-v7-test-ntuple-friends
+# - gtest-tree-ntuple-v7-test-ntuple-merger
# - gtest-tree-ntuple-v7-test-ntuple-minifile
# - gtest-tree-ntuple-v7-test-ntuple-modelext
# - gtest-tree-ntuple-v7-test-ntuple-packing
+# - gtest-tree-ntuple-v7-test-ntuple-parallel-writer
# - gtest-tree-ntuple-v7-test-ntuple-project
# - gtest-tree-ntuple-v7-test-ntuple-serialize
# - gtest-tree-ntuple-v7-test-ntuple-show
@@ -2716,6 +2560,8 @@ gtest-roofit-roofitcore-test-testNaNPacker"
# - gtest-tree-ntuple-v7-test-ntuple-storage-daos
# - gtest-tree-ntuple-v7-test-ntuple-types
# - gtest-tree-ntuple-v7-test-ntuple-view
+# - gtest-tree-ntuple-v7-test-rfield-class
+# - gtest-tree-ntuple-v7-test-rfield-variant
# - gtest-tree-ntuple-v7-test-rfield-vector
# - gtest-tree-ntupleutil-v7-test-ntuple-importer
# - gtest-tree-ntupleutil-v7-test-ntuple-inspector
@@ -2726,18 +2572,9 @@ gtest-roofit-roofitcore-test-testNaNPacker"
# - pyunittests-pyroot-pyz-stl-vector
# - tutorial-dataframe-df006_ranges-py
# - tutorial-fit-combinedFit-py
-# - tutorial-fit-fitcont
# - tutorial-fit-NumericalMinimization-py
# - tutorial-math-exampleFunction-py
# - tutorial-rcanvas-rbox-py
-# - tutorial-roofit-rf108_plotbinning-py
-# - tutorial-roofit-rf306_condpereventerrors-py
-# - tutorial-roofit-rf307_fullpereventerrors-py
-# - tutorial-roofit-rf310_sliceplot-py
-# - tutorial-roofit-rf708_bphysics-py
-# - tutorial-tmva-TMVA_CNN_Classification-py
-# - tutorial-tmva-TMVA_Higgs_Classification-py
-# - tutorial-tmva-TMVA_RNN_Classification-py
# https://github.com/root-project/root/issues/12429
#
# - tutorial-tree-drawsparse
@@ -2748,18 +2585,20 @@ gtest-roofit-roofitcore-test-testNaNPacker"
# - test-stresshistogram
# - test-stresshistogram-interpreted
excluded="${excluded}|\
-gtest-core-base-test-CoreBaseTests|\
gtest-core-dictgen-test-dictgen-base|\
-gtest-core-meta-test-testTDataType|\
+gtest-tree-dataframe-test-dataframe-unified-constructor|\
gtest-tree-dataframe-test-datasource-ntuple|\
gtest-tree-ntuple-v7-test-ntuple-basics|\
gtest-tree-ntuple-v7-test-ntuple-bulk|\
+gtest-tree-ntuple-v7-test-ntuple-compat|\
gtest-tree-ntuple-v7-test-ntuple-endian|\
gtest-tree-ntuple-v7-test-ntuple-extended|\
gtest-tree-ntuple-v7-test-ntuple-friends|\
+gtest-tree-ntuple-v7-test-ntuple-merger|\
gtest-tree-ntuple-v7-test-ntuple-minifile|\
gtest-tree-ntuple-v7-test-ntuple-modelext|\
gtest-tree-ntuple-v7-test-ntuple-packing|\
+gtest-tree-ntuple-v7-test-ntuple-parallel-writer|\
gtest-tree-ntuple-v7-test-ntuple-project|\
gtest-tree-ntuple-v7-test-ntuple-serialize|\
gtest-tree-ntuple-v7-test-ntuple-show|\
@@ -2767,6 +2606,8 @@ gtest-tree-ntuple-v7-test-ntuple-storage|\
gtest-tree-ntuple-v7-test-ntuple-storage-daos|\
gtest-tree-ntuple-v7-test-ntuple-types|\
gtest-tree-ntuple-v7-test-ntuple-view|\
+gtest-tree-ntuple-v7-test-rfield-class|\
+gtest-tree-ntuple-v7-test-rfield-variant|\
gtest-tree-ntuple-v7-test-rfield-vector|\
gtest-tree-ntupleutil-v7-test-ntuple-importer|\
gtest-tree-ntupleutil-v7-test-ntuple-inspector|\
@@ -2775,36 +2616,14 @@ pyunittests-pyroot-pyz-rtensor|\
pyunittests-pyroot-pyz-stl-vector|\
tutorial-dataframe-df006_ranges-py|\
tutorial-fit-combinedFit-py|\
-tutorial-fit-fitcont|\
tutorial-fit-NumericalMinimization-py|\
tutorial-math-exampleFunction-py|\
tutorial-rcanvas-rbox-py|\
-tutorial-roofit-rf108_plotbinning-py|\
-tutorial-roofit-rf306_condpereventerrors-py|\
-tutorial-roofit-rf307_fullpereventerrors-py|\
-tutorial-roofit-rf310_sliceplot-py|\
-tutorial-roofit-rf708_bphysics-py|\
-tutorial-tmva-TMVA_CNN_Classification-py|\
-tutorial-tmva-TMVA_Higgs_Classification-py|\
-tutorial-tmva-TMVA_RNN_Classification-py|\
tutorial-tree-drawsparse|\
test-stresshistofit\$\$|\
test-stresshistofit-interpreted|\
test-stresshistogram\$\$|\
test-stresshistogram-interpreted"
-
-%if %{?rhel}%{!?rhel:0} == 8
-# Issues with file sizes on EPEL 8 s390x
-# - gtest-tree-readspeed-test-readspeed-general
-# - gtest-tree-tree-test-testTBranch
-# - test-stress
-# - test-stressgraphics(-interpreted)
-excluded="${excluded}|\
-gtest-tree-readspeed-test-readspeed-general|\
-gtest-tree-tree-test-testTBranch|\
-test-stress\$\$|\
-test-stressgraphics"
-%endif
%endif
%if %{?fedora}%{!?fedora:0} >= 40
@@ -2818,15 +2637,21 @@ gtest-math-matrix-test-testMatrixTSparse"
%endif
# Filter out parts of tests that require remote network access
+# RNTuple.StdAtomic fails on ix86 (different alignment 64 bit (non)atomic)
# TClingDataMemberInfo.Offset fails on s390x
# https://github.com/root-project/root/issues/14512
GTEST_FILTER=-\
+%ifarch %{ix86}
+RNTuple.StdAtomic:\
+%endif
%ifarch s390x
TClingDataMemberInfo.Offset:\
%endif
RCsvDS.Remote:\
+RNTuple.OpenHTTP:\
RRawFile.Remote:\
RSqliteDS.Davix:\
+TChainParsing.DoubleSlash:\
TChainParsing.RemoteGlob:\
TFile.ReadWithoutGlobalRegistrationNet:\
TFile.ReadWithoutGlobalRegistrationWeb \
@@ -2859,38 +2684,36 @@ if [ -r /var/lib/alternatives/libPyROOT.so ] ; then
done
fi
-%post notebook
+%post -n python%{python3_pkgversion}-jupyroot
mkdir -p /etc/jupyter
if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then
- sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py
+ sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py
fi
cat << EOF >> /etc/jupyter/jupyter_notebook_config.py
-# Extra static path for JupyROOT - start - do not remove this line
+# Extra static paths for JupyROOT - start - do not remove this line
c.NotebookApp.extra_static_paths.append('%{_jsdir}/jsroot')
-c.NotebookApp.extra_static_paths.append('%{_datadir}/%{name}/notebook')
-# Extra static path for JupyROOT - end - do not remove this line
+# Extra static paths for JupyROOT - end - do not remove this line
EOF
if [ -e /etc/jupyter/jupyter_server_config.py ] ; then
- sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py
+ sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py
fi
cat << EOF >> /etc/jupyter/jupyter_server_config.py
-# Extra static path for JupyROOT - start - do not remove this line
+# Extra static paths for JupyROOT - start - do not remove this line
c.ServerApp.extra_static_paths.append('%{_jsdir}/jsroot')
-c.ServerApp.extra_static_paths.append('%{_datadir}/%{name}/notebook')
-# Extra static path for JupyROOT - end - do not remove this line
+# Extra static paths for JupyROOT - end - do not remove this line
EOF
-%postun notebook
+%postun -n python%{python3_pkgversion}-jupyroot
if [ $1 -eq 0 ] ; then
if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then
- sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py
+ sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py
if [ ! -s /etc/jupyter/jupyter_notebook_config.py ] ; then
rm /etc/jupyter/jupyter_notebook_config.py
rmdir /etc/jupyter 2>/dev/null || :
fi
fi
if [ -e /etc/jupyter/jupyter_server_config.py ] ; then
- sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py
+ sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py
if [ ! -s /etc/jupyter/jupyter_server_config.py ] ; then
rm /etc/jupyter/jupyter_server_config.py
rmdir /etc/jupyter 2>/dev/null || :
@@ -3016,29 +2839,27 @@ fi
%{python3_sitearch}/cppyy
%{python3_sitearch}/cppyy_backend
%{python3_sitearch}/ROOT
-%{python3_sitearch}/ROOT-*.egg-info
-%{python3_sitearch}/libcppyy%{python3_version_uscore}.so
-%{python3_sitearch}/libcppyy_backend%{python3_version_uscore}.so
-%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix}
-%{_libdir}/%{name}/libcppyy%{python3_version_uscore}.*
-%{_libdir}/%{name}/libcppyy_backend%{python3_version_uscore}.*
+%{python3_sitearch}/ROOT-*.dist-info
+%{python3_sitearch}/libcppyy.so
+%{python3_sitearch}/libcppyy_backend.so
+%{python3_sitearch}/libROOTPythonizations%{python3_ext_suffix}
+%{_libdir}/%{name}/libcppyy.*
+%{_libdir}/%{name}/libcppyy_backend.*
%dir %{_includedir}/%{name}/CPyCppyy
%files -n python%{python3_pkgversion}-jupyroot
-%{python3_sitearch}/JupyROOT
-%{python3_sitearch}/JupyROOT-*.egg-info
-%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix}
+%{python3_sitelib}/JupyROOT
+%{python3_sitelib}/JupyROOT-*.dist-info
%{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot
+%{_bindir}/rootnb.exe
+%{_datadir}/%{name}/notebook
%doc bindings/jupyroot/README.md
-
-%files -n python%{python3_pkgversion}-jsmva
-%{python3_sitelib}/JsMVA
-%{python3_sitelib}/JsMVA-*.egg-info
+%doc bindings/jupyroot/JupyROOT-on-EPEL
%if %{distrdf}
%files -n python%{python3_pkgversion}-distrdf
%{python3_sitelib}/DistRDF
-%{python3_sitelib}/DistRDF-*.egg-info
+%{python3_sitelib}/DistRDF-*.dist-info
%endif
%files r -f includelist-bindings-r
@@ -3433,7 +3254,6 @@ fi
%{_libdir}/%{name}/libProofDraw_rdict.pcm
%{_libdir}/%{name}/libProofPlayer.*
%{_libdir}/%{name}/libProofPlayer_rdict.pcm
-%{_datadir}/%{name}/plugins/TProofMonSender/P010_TProofMonSenderML.C
%{_datadir}/%{name}/plugins/TProofMonSender/P020_TProofMonSenderSQL.C
%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P010_TProofPlayer.C
%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P020_TProofPlayerRemote.C
@@ -3554,33 +3374,30 @@ fi
%dir %{_includedir}/%{name}/TMVA/DNN/CNN
%dir %{_includedir}/%{name}/TMVA/DNN/RNN
%license tmva/doc/LICENSE
+%exclude %{_includedir}/%{name}/TMVA/RBatchGenerator.hxx
+%exclude %{_includedir}/%{name}/TMVA/RBatchLoader.hxx
%exclude %{_includedir}/%{name}/TMVA/RBDT.hxx
+%exclude %{_includedir}/%{name}/TMVA/RChunkLoader.hxx
%exclude %{_includedir}/%{name}/TMVA/RInferenceUtils.hxx
%exclude %{_includedir}/%{name}/TMVA/RReader.hxx
%exclude %{_includedir}/%{name}/TMVA/RSofieReader.hxx
%exclude %{_includedir}/%{name}/TMVA/RStandardScaler.hxx
%exclude %{_includedir}/%{name}/TMVA/RTensorUtils.hxx
-%exclude %{_includedir}/%{name}/TMVA/TreeInference/BranchlessTree.hxx
-%exclude %{_includedir}/%{name}/TMVA/TreeInference/Forest.hxx
-%exclude %{_includedir}/%{name}/TMVA/TreeInference/Objectives.hxx
-%exclude %{_includedir}/%{name}/TMVA/TreeInference/PythonHelpers.hxx
%if %{dataframe}
%files tmva-utils
%{_libdir}/%{name}/libTMVAUtils.*
%{_libdir}/%{name}/libTMVAUtils_rdict.pcm
%dir %{_includedir}/%{name}/TMVA
-%dir %{_includedir}/%{name}/TMVA/TreeInference
+%{_includedir}/%{name}/TMVA/RBatchGenerator.hxx
+%{_includedir}/%{name}/TMVA/RBatchLoader.hxx
%{_includedir}/%{name}/TMVA/RBDT.hxx
+%{_includedir}/%{name}/TMVA/RChunkLoader.hxx
%{_includedir}/%{name}/TMVA/RInferenceUtils.hxx
%{_includedir}/%{name}/TMVA/RReader.hxx
%{_includedir}/%{name}/TMVA/RSofieReader.hxx
%{_includedir}/%{name}/TMVA/RStandardScaler.hxx
%{_includedir}/%{name}/TMVA/RTensorUtils.hxx
-%{_includedir}/%{name}/TMVA/TreeInference/BranchlessTree.hxx
-%{_includedir}/%{name}/TMVA/TreeInference/Forest.hxx
-%{_includedir}/%{name}/TMVA/TreeInference/Objectives.hxx
-%{_includedir}/%{name}/TMVA/TreeInference/PythonHelpers.hxx
%endif
%files tmva-python -f includelist-tmva-pymva
@@ -3650,14 +3467,10 @@ fi
%{_bindir}/rootslimtree
%{_datadir}/%{name}/cli
-%files notebook
-%{_bindir}/rootnb.exe
-%{_datadir}/%{name}/notebook
-%doc %{_pkgdocdir}/JupyROOT-on-EPEL
-
%files gui-webdisplay -f includelist-gui-webdisplay
%{_libdir}/%{name}/libROOTWebDisplay.*
%{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm
+%{_datadir}/%{name}/runfirefox.sh
%{_datadir}/%{name}/ui5
%ifarch %{qt5_qtwebengine_arches}
@@ -3744,6 +3557,14 @@ fi
%endif
%changelog
+* Mon Jun 03 2024 Mattias Ellert <ellert(a)ellert.se> - 6.32.00-1
+- Update to 6.32.00
+- Drop EPEL 8 build (now requires Python >= 3.7 ans tbb >= 2020)
+- Dropped patches: 12
+- New patches: 6
+- The JsMVA python module is now a submodule of the ROOT python module
+- The notebook package was merged with the JupyROOT package
+
* Wed May 15 2024 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.30.06-5
- Rebuilt for libarrow.so.1601
- Improved fontconfig support
diff --git a/sources b/sources
index 755c137..a8ec13f 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (root-6.30.06.tar.xz) = 10309321a8e803f1ea2019a4d8ddde6220b052ddfa1ed7dedd432201db5917da748e944b2323794317251fd0d70048b276ad7bed6e3fcd84835de7be88b4c420
+SHA512 (root-6.32.00.tar.xz) = 4b1015684b79aa352edd42316a3a87ae48f4330a7566230349f0a5c4e3ff49cddca79b5171128300d88575dfe2503ab1357cb3bd99d2c2a78985cc9aabd742f6
SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f
commit 4d9bac38913ea0c73ef57610b910aa09bd579004
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Wed May 15 12:58:24 2024 +0200
Rebuilt for libarrow.so.1601
Improved fontconfig support
diff --git a/root-fontconfig.patch b/root-fontconfig.patch
index e8ad108..d0f38b1 100644
--- a/root-fontconfig.patch
+++ b/root-fontconfig.patch
@@ -1,7 +1,28 @@
-diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base/src/TApplication.cxx
---- root-6.28.00.orig/core/base/src/TApplication.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/core/base/src/TApplication.cxx 2023-02-04 12:47:19.757759982 +0100
-@@ -251,18 +251,11 @@
+From c5f13cb25c3b803346d1a6cac483badbcf2ced62 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sat, 11 May 2024 20:09:47 +0200
+Subject: [PATCH] Use system fonts via fontconfig
+
+---
+ core/base/src/TApplication.cxx | 11 +-
+ graf2d/asimage/CMakeLists.txt | 1 +
+ graf2d/asimage/src/TASImage.cxx | 91 +++++++-
+ graf2d/graf/CMakeLists.txt | 1 +
+ graf2d/graf/inc/TTF.h | 3 +-
+ graf2d/graf/src/TTF.cxx | 291 +++++++++++++++++---------
+ graf2d/postscript/CMakeLists.txt | 1 +
+ graf2d/postscript/src/TPostScript.cxx | 106 +++++-----
+ graf3d/gl/CMakeLists.txt | 1 +
+ graf3d/gl/src/TGLFontManager.cxx | 123 ++++++++++-
+ graf3d/gl/src/TGLText.cxx | 56 +++--
+ gui/gui/src/TGApplication.cxx | 10 +-
+ 12 files changed, 494 insertions(+), 201 deletions(-)
+
+diff --git a/core/base/src/TApplication.cxx b/core/base/src/TApplication.cxx
+index 992713264a..32bfc0bbb9 100644
+--- a/core/base/src/TApplication.cxx
++++ b/core/base/src/TApplication.cxx
+@@ -251,18 +251,12 @@ void TApplication::InitializeGraphics(Bool_t only_web)
LoadGraphicsLibs();
// Try to load TrueType font renderer. Only try to load if not in batch
@@ -14,7 +35,7 @@ diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base
- // Check for use of DFSG - fonts
- if (!ttfont)
- ttfont = gSystem->Which(ttpath, "FreeSansBold.ttf", kReadPermission);
--
+
#if !defined(R__WIN32)
if (!gROOT->IsBatch() && !strcmp(gVirtualX->GetName(), "X11") &&
- ttfont && gEnv->GetValue("Root.UseTTFonts", 1)) {
@@ -22,7 +43,7 @@ diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base
if (gClassTable->GetDict("TGX11TTF")) {
// in principle we should not have linked anything against libGX11TTF
// but with ACLiC this can happen, initialize TGX11TTF by hand
-@@ -276,7 +269,6 @@
+@@ -276,7 +270,6 @@ void TApplication::InitializeGraphics(Bool_t only_web)
}
}
#endif
@@ -30,10 +51,11 @@ diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base
}
if (!only_web || !fAppImp) {
-diff -ur root-6.28.00.orig/graf2d/asimage/CMakeLists.txt root-6.28.00/graf2d/asimage/CMakeLists.txt
---- root-6.28.00.orig/graf2d/asimage/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/asimage/CMakeLists.txt 2023-02-04 12:47:19.757759982 +0100
-@@ -30,6 +30,7 @@
+diff --git a/graf2d/asimage/CMakeLists.txt b/graf2d/asimage/CMakeLists.txt
+index 31114ad45d..be95419491 100644
+--- a/graf2d/asimage/CMakeLists.txt
++++ b/graf2d/asimage/CMakeLists.txt
+@@ -30,6 +30,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ASImage
${FREETYPE_LIBRARIES}
${X11_LIBRARIES}
ZLIB::ZLIB
@@ -41,10 +63,11 @@ diff -ur root-6.28.00.orig/graf2d/asimage/CMakeLists.txt root-6.28.00/graf2d/asi
DEPENDENCIES
Core
Graf
-diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/asimage/src/TASImage.cxx
---- root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/asimage/src/TASImage.cxx 2023-02-04 12:47:19.760759989 +0100
-@@ -115,6 +115,8 @@
+diff --git a/graf2d/asimage/src/TASImage.cxx b/graf2d/asimage/src/TASImage.cxx
+index 7e046f4724..137265bd4a 100644
+--- a/graf2d/asimage/src/TASImage.cxx
++++ b/graf2d/asimage/src/TASImage.cxx
+@@ -117,6 +117,8 @@ extern "C" {
# include <draw.h>
}
@@ -53,135 +76,101 @@ diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/a
// auxiliary functions for general polygon filling
#include "TASPolyUtils.c"
-@@ -2590,14 +2592,120 @@
- TString fn = font_name;
- fn.Strip();
+@@ -2595,11 +2597,88 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size,
+ // This is for backward compatibility...
+ if (fn.Last('/') == 0) fn = fn(1, fn.Length() - 1);
-- // This is for backward compatibility...
-- if (fn.Last('/') == 0) fn = fn(1, fn.Length() - 1);
+- const char *ttpath = gEnv->GetValue("Root.TTFontPath",
+- TROOT::GetTTFFontDir());
+- char *tmpstr = gSystem->Which(ttpath, fn, kReadPermission);
+- fn = tmpstr;
+- delete [] tmpstr;
+ const char *basename = gSystem->BaseName(fn);
+
-+ char *ttfnt = nullptr;
+ int ttindex = 0;
+
-+ FcPattern *pat, *match;
++ FcPattern *pat = nullptr, *match;
+ FcResult result;
+
-+ pat = FcPatternCreate ();
-+
+ if (strcmp(basename, "timesi.ttf") == 0 ||
+ strcmp(basename, "FreeSerifItalic.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "freeserif:italic");
+ }
+ else if (strcmp(basename, "timesbd.ttf") == 0 ||
+ strcmp(basename, "FreeSerifBold.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "freeserif:bold");
+ }
+ else if (strcmp(basename, "timesbi.ttf") == 0 ||
+ strcmp(basename, "FreeSerifBoldItalic.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "freeserif:bold:italic");
+ }
+ else if (strcmp(basename, "arial.ttf") == 0 ||
+ strcmp(basename, "FreeSans.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "freesans");
+ }
+ else if (strcmp(basename, "ariali.ttf") == 0 ||
+ strcmp(basename, "FreeSansOblique.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "freesans:italic");
+ }
+ else if (strcmp(basename, "arialbd.ttf") == 0 ||
+ strcmp(basename, "FreeSansBold.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "freesans:bold");
+ }
+ else if (strcmp(basename, "arialbi.ttf") == 0 ||
+ strcmp(basename, "FreeSansBoldOblique.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "freesans:bold:italic");
+ }
+ else if (strcmp(basename, "cour.ttf") == 0 ||
+ strcmp(basename, "FreeMono.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "freemono");
+ }
+ else if (strcmp(basename, "couri.ttf") == 0 ||
+ strcmp(basename, "FreeMonoOblique.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "freemono:italic");
+ }
+ else if (strcmp(basename, "courbd.ttf") == 0 ||
+ strcmp(basename, "FreeMonoBold.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "freemono:bold");
+ }
+ else if (strcmp(basename, "courbi.ttf") == 0 ||
+ strcmp(basename, "FreeMonoBoldOblique.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "freemono:bold:italic");
+ }
+ else if (strcmp(basename, "symbol.ttf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "standardsymbolsps");
+ }
+ else if (strcmp(basename, "times.ttf") == 0 ||
+ strcmp(basename, "FreeSerif.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "freeserif");
+ }
+ else if (strcmp(basename, "wingding.ttf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "dingbats");
+ }
+ else if (strcmp(basename, "BlackChancery.ttf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"urwchanceryl");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "urwchanceryl");
+ }
-+ else {
-+ Warning("DrawText", "cannot find a font %s", font_name);
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ else if (gSystem->AccessPathName(fn, kReadPermission) != 0) {
++ // Font name is not a file - usae as pattern
++ pat = FcNameParse ((const FcChar8*) fn.Data());
+ }
+
-+ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
-+ FcDefaultSubstitute (pat);
-+ match = FcFontMatch (nullptr, pat, &result);
-+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt);
-+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex);
-
-- const char *ttpath = gEnv->GetValue("Root.TTFontPath",
-- TROOT::GetTTFFontDir());
-- char *tmpstr = gSystem->Which(ttpath, fn, kReadPermission);
-- fn = tmpstr;
-- delete [] tmpstr;
-+ fn = ttfnt;
-+
-+ FcPatternDestroy (match);
-+ FcPatternDestroy (pat);
++ if (pat) {
++ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
++ FcDefaultSubstitute (pat);
++ match = FcFontMatch (nullptr, pat, &result);
++ if (match) {
++ char *ttfnt;
++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfnt);
++ fn = ttfnt;
++ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex);
++ FcPatternDestroy (match);
++ }
++ FcPatternDestroy (pat);
++ }
if (fn.EndsWith(".pfa") || fn.EndsWith(".PFA") || fn.EndsWith(".pfb") || fn.EndsWith(".PFB") || fn.EndsWith(".ttf") || fn.EndsWith(".TTF") || fn.EndsWith(".otf") || fn.EndsWith(".OTF")) {
ttfont = kTRUE;
-@@ -2621,14 +2729,11 @@
+@@ -2623,7 +2702,7 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size,
return;
}
@@ -189,20 +178,12 @@ diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/a
+ ASFont *font = get_asfont(gFontManager, fn.Data(), ttindex, size, ASF_GuessWho);
if (!font) {
-- font = get_asfont(gFontManager, "fixed", 0, size, ASF_GuessWho);
-- if (!font) {
-- Warning("DrawText", "cannot find a font %s", font_name);
-- return;
-- }
-+ Warning("DrawText", "cannot find a font %s", font_name);
-+ return;
- }
-
- get_text_size(text, font, (ASText3DType)type, &width, &height);
-diff -ur root-6.28.00.orig/graf2d/graf/CMakeLists.txt root-6.28.00/graf2d/graf/CMakeLists.txt
---- root-6.28.00.orig/graf2d/graf/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/graf/CMakeLists.txt 2023-02-04 12:47:19.861760233 +0100
-@@ -91,6 +91,7 @@
+ font = get_asfont(gFontManager, "fixed", 0, size, ASF_GuessWho);
+diff --git a/graf2d/graf/CMakeLists.txt b/graf2d/graf/CMakeLists.txt
+index d7d1b77c21..c4ebb994a4 100644
+--- a/graf2d/graf/CMakeLists.txt
++++ b/graf2d/graf/CMakeLists.txt
+@@ -91,6 +91,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Graf
${FREETYPE_LIBRARIES}
ZLIB::ZLIB
mathtext
@@ -210,24 +191,27 @@ diff -ur root-6.28.00.orig/graf2d/graf/CMakeLists.txt root-6.28.00/graf2d/graf/C
DEPENDENCIES
Hist
Matrix
-diff -ur root-6.28.00.orig/graf2d/graf/inc/TTF.h root-6.28.00/graf2d/graf/inc/TTF.h
---- root-6.28.00.orig/graf2d/graf/inc/TTF.h 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/graf/inc/TTF.h 2023-02-04 12:47:19.862760235 +0100
-@@ -76,9 +76,8 @@
+diff --git a/graf2d/graf/inc/TTF.h b/graf2d/graf/inc/TTF.h
+index 0bef9dcb95..ea96fe47ce 100644
+--- a/graf2d/graf/inc/TTF.h
++++ b/graf2d/graf/inc/TTF.h
+@@ -76,9 +76,10 @@ protected:
static FT_BBox fgCBox; ///< string control box
static FT_CharMap fgCharMap[kTTMaxFonts]; ///< font character map
static Int_t fgCurFontIdx; ///< current font index
- static Int_t fgSymbItaFontIdx; ///< Symbol italic font index
static Int_t fgFontCount; ///< number of fonts loaded
-- static char *fgFontName[kTTMaxFonts]; ///< font name
-+ static Int_t fgFontID[kTTMaxFonts]; ///< font ID
+ static char *fgFontName[kTTMaxFonts]; ///< font name
++ static Int_t fgFontIdx[kTTMaxFonts]; ///< font index in font file
++ static Int_t fgFontIta[kTTMaxFonts]; ///< font slanted using transform
static FT_Face fgFace[kTTMaxFonts]; ///< font face
static TTF::TTGlyph fgGlyphs[kMaxGlyphs]; ///< glyphs
static Bool_t fgHinting; ///< use hinting (true by default)
-diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/TTF.cxx
---- root-6.28.00.orig/graf2d/graf/src/TTF.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/graf/src/TTF.cxx 2023-02-04 12:47:19.863760238 +0100
-@@ -25,6 +25,8 @@
+diff --git a/graf2d/graf/src/TTF.cxx b/graf2d/graf/src/TTF.cxx
+index ca38ed1f9c..8f1d62686b 100644
+--- a/graf2d/graf/src/TTF.cxx
++++ b/graf2d/graf/src/TTF.cxx
+@@ -25,6 +25,8 @@ Interface to the freetype 2 library.
#include "TMath.h"
#include "TError.h"
@@ -236,19 +220,20 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
// to scale fonts to the same size as the old TT version
const Float_t kScale = 0.93376068;
-@@ -38,10 +40,9 @@
+@@ -38,10 +40,11 @@ Int_t TTF::fgTBlankW = 0;
Int_t TTF::fgWidth = 0;
Int_t TTF::fgAscent = 0;
Int_t TTF::fgCurFontIdx = -1;
-Int_t TTF::fgSymbItaFontIdx = -1;
Int_t TTF::fgFontCount = 0;
Int_t TTF::fgNumGlyphs = 0;
--char *TTF::fgFontName[kTTMaxFonts];
-+Int_t TTF::fgFontID[kTTMaxFonts];
+ char *TTF::fgFontName[kTTMaxFonts];
++Int_t TTF::fgFontIdx[kTTMaxFonts];
++Int_t TTF::fgFontIta[kTTMaxFonts];
FT_Matrix *TTF::fgRotMatrix = nullptr;
FT_Library TTF::fgLibrary;
FT_BBox TTF::fgCBox;
-@@ -72,6 +73,11 @@
+@@ -72,6 +75,11 @@ void TTF::Init()
return;
}
@@ -260,180 +245,159 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
// load default font (arialbd)
SetTextFont(62);
}
-@@ -84,7 +90,6 @@
- if (!fgInit) return;
-
- for (int i = 0; i < fgFontCount; i++) {
-- delete [] fgFontName[i];
- FT_Done_Face(fgFace[i]);
- }
- if (fgRotMatrix) delete fgRotMatrix;
-@@ -109,12 +114,22 @@
+@@ -109,12 +117,15 @@ Short_t TTF::CharToUnicode(UInt_t code)
charmap = fgFace[fgCurFontIdx]->charmaps[i];
platform = charmap->platform_id;
encoding = charmap->encoding_id;
- if ((platform == 3 && encoding == 1) ||
+ if ((platform == 3 && encoding == 1 &&
-+ (fgFontID[fgCurFontIdx] != 12 &&
-+ fgFontID[fgCurFontIdx] != 14 &&
-+ fgFontID[fgCurFontIdx] != 15)) ||
++ (fgFontIta[fgCurFontIdx] & 2) == 0) ||
(platform == 0 && encoding == 0) ||
+ (platform == 7 && encoding == 2 &&
-+ (fgFontID[fgCurFontIdx] == 12 ||
-+ fgFontID[fgCurFontIdx] == 14 ||
-+ fgFontID[fgCurFontIdx] == 15)) ||
++ (fgFontIta[fgCurFontIdx] & 2) != 0) ||
+ (platform == 0 && encoding == 3 &&
-+ (fgFontID[fgCurFontIdx] == 12 ||
-+ fgFontID[fgCurFontIdx] == 15)) ||
++ (fgFontIta[fgCurFontIdx] & 2) != 0) ||
(platform == 1 && encoding == 0 &&
- !strcmp(fgFontName[fgCurFontIdx], "wingding.ttf")) ||
- (platform == 1 && encoding == 0 &&
- !strcmp(fgFontName[fgCurFontIdx], "symbol.ttf")))
-+ (fgFontID[fgCurFontIdx] == 12 ||
-+ fgFontID[fgCurFontIdx] == 14 ||
-+ fgFontID[fgCurFontIdx] == 15)))
++ (fgFontIta[fgCurFontIdx] & 2) != 0))
{
fgCharMap[fgCurFontIdx] = charmap;
if (FT_Set_Charmap(fgFace[fgCurFontIdx], fgCharMap[fgCurFontIdx]))
-@@ -381,27 +393,147 @@
-
- if (!fontname || !fontname[0]) {
- Warning("TTF::SetTextFont",
-- "no font name specified, using default font %s", fgFontName[0]);
-+ "no font name specified, using default font");
- fgCurFontIdx = 0;
- return 0;
+@@ -387,21 +398,145 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
}
const char *basename = gSystem->BaseName(fontname);
++ char *ttfont = nullptr;
++ int ttindex = 0;
++
++ FcPattern *pat = nullptr, *match;
++ FcResult result;
++
+ if (strcmp(basename, "timesi.ttf") == 0 ||
+ strcmp(basename, "FreeSerifItalic.otf") == 0) {
-+ SetTextFont(12);
++ pat = FcNameParse ((const FcChar8*) "freeserif:italic");
+ }
+ else if (strcmp(basename, "timesbd.ttf") == 0 ||
+ strcmp(basename, "FreeSerifBold.otf") == 0) {
-+ SetTextFont(22);
++ pat = FcNameParse ((const FcChar8*) "freeserif:bold");
+ }
+ else if (strcmp(basename, "timesbi.ttf") == 0 ||
+ strcmp(basename, "FreeSerifBoldItalic.otf") == 0) {
-+ SetTextFont(32);
++ pat = FcNameParse ((const FcChar8*) "freeserif:bold:italic");
+ }
+ else if (strcmp(basename, "arial.ttf") == 0 ||
+ strcmp(basename, "FreeSans.otf") == 0) {
-+ SetTextFont(42);
++ pat = FcNameParse ((const FcChar8*) "freesans");
+ }
+ else if (strcmp(basename, "ariali.ttf") == 0 ||
+ strcmp(basename, "FreeSansOblique.otf") == 0) {
-+ SetTextFont(52);
++ pat = FcNameParse ((const FcChar8*) "freesans:italic");
+ }
+ else if (strcmp(basename, "arialbd.ttf") == 0 ||
+ strcmp(basename, "FreeSansBold.otf") == 0) {
-+ SetTextFont(62);
++ pat = FcNameParse ((const FcChar8*) "freesans:bold");
+ }
+ else if (strcmp(basename, "arialbi.ttf") == 0 ||
+ strcmp(basename, "FreeSansBoldOblique.otf") == 0) {
-+ SetTextFont(72);
++ pat = FcNameParse ((const FcChar8*) "freesans:bold:italic");
+ }
+ else if (strcmp(basename, "cour.ttf") == 0 ||
+ strcmp(basename, "FreeMono.otf") == 0) {
-+ SetTextFont(82);
++ pat = FcNameParse ((const FcChar8*) "freemono");
+ }
+ else if (strcmp(basename, "couri.ttf") == 0 ||
+ strcmp(basename, "FreeMonoOblique.otf") == 0) {
-+ SetTextFont(92);
++ pat = FcNameParse ((const FcChar8*) "freemono:italic");
+ }
+ else if (strcmp(basename, "courbd.ttf") == 0 ||
+ strcmp(basename, "FreeMonoBold.otf") == 0) {
-+ SetTextFont(102);
++ pat = FcNameParse ((const FcChar8*) "freemono:bold");
+ }
+ else if (strcmp(basename, "courbi.ttf") == 0 ||
+ strcmp(basename, "FreeMonoBoldOblique.otf") == 0) {
-+ SetTextFont(112);
++ pat = FcNameParse ((const FcChar8*) "freemono:bold:italic");
+ }
+ else if (strcmp(basename, "symbol.ttf") == 0) {
-+ if (italic)
-+ SetTextFont(152);
-+ else
-+ SetTextFont(122);
++ pat = FcNameParse ((const FcChar8*) "standardsymbolsps");
++ italic &= 2;
+ }
+ else if (strcmp(basename, "times.ttf") == 0 ||
+ strcmp(basename, "FreeSerif.otf") == 0) {
-+ SetTextFont(132);
++ pat = FcNameParse ((const FcChar8*) "freeserif");
+ }
+ else if (strcmp(basename, "wingding.ttf") == 0) {
-+ SetTextFont(142);
++ pat = FcNameParse ((const FcChar8*) "dingbats");
++ italic &= 2;
+ }
+ else if (strcmp(basename, "STIXGeneral.otf") == 0) {
-+ SetTextFont(162);
++ pat = FcNameParse ((const FcChar8*) "stixgeneral");
+ }
+ else if (strcmp(basename, "STIXGeneralItalic.otf") == 0) {
-+ SetTextFont(172);
++ pat = FcNameParse ((const FcChar8*) "stixgeneral:italic");
+ }
+ else if (strcmp(basename, "STIXGeneralBol.otf") == 0) {
-+ SetTextFont(182);
++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold");
+ }
+ else if (strcmp(basename, "STIXGeneralBolIta.otf") == 0) {
-+ SetTextFont(192);
++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold:italic");
+ }
+ else if (strcmp(basename, "STIXSiz1Sym.otf") == 0) {
-+ SetTextFont(202);
++ pat = FcNameParse ((const FcChar8*) "stixsize1");
+ }
+ else if (strcmp(basename, "STIXSiz1SymBol.otf") == 0) {
-+ SetTextFont(212);
++ pat = FcNameParse ((const FcChar8*) "stixsize1:bold");
+ }
+ else if (strcmp(basename, "STIXSiz2Sym.otf") == 0) {
-+ SetTextFont(222);
++ pat = FcNameParse ((const FcChar8*) "stixsize2");
+ }
+ else if (strcmp(basename, "STIXSiz2SymBol.otf") == 0) {
-+ SetTextFont(232);
++ pat = FcNameParse ((const FcChar8*) "stixsize2:bold");
+ }
+ else if (strcmp(basename, "STIXSiz3Sym.otf") == 0) {
-+ SetTextFont(242);
++ pat = FcNameParse ((const FcChar8*) "stixsize3");
+ }
+ else if (strcmp(basename, "STIXSiz3SymBol.otf") == 0) {
-+ SetTextFont(252);
++ pat = FcNameParse ((const FcChar8*) "stixsize3:bold");
+ }
+ else if (strcmp(basename, "STIXSiz4Sym.otf") == 0) {
-+ SetTextFont(262);
++ pat = FcNameParse ((const FcChar8*) "stixsize4");
+ }
+ else if (strcmp(basename, "STIXSiz4SymBol.otf") == 0) {
-+ SetTextFont(272);
++ pat = FcNameParse ((const FcChar8*) "stixsize4:bold");
+ }
+ else if (strcmp(basename, "STIXSiz5Sym.otf") == 0) {
-+ SetTextFont(282);
++ pat = FcNameParse ((const FcChar8*) "stixsize5");
+ }
+ else if (strcmp(basename, "DroidSansFallback.ttf") == 0) {
-+ SetTextFont(292);
++ pat = FcNameParse ((const FcChar8*) "droidsansfallback:charset=4e00 0410");
+ }
-+ else {
-+ Error("TTF::SetTextFont", "font %s not known to ROOT", basename);
-+ if (fgFontCount) {
-+ Warning("TTF::SetTextFont", "using default font");
-+ fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
-+ return 0;
-+ } else {
-+ return 1;
-+ }
++ else if (strcmp(basename, "BlackChancery.ttf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "urwchanceryl");
++ }
++ else if (gSystem->AccessPathName(fontname, kReadPermission) != 0) {
++ // Font name is not a file - usae as pattern
++ pat = FcNameParse ((const FcChar8*) fontname);
+ }
+
-+ return 0;
-+}
-+
-+//______________________________________________________________________________
-+void TTF::SetTextFont(Font_t fontnumber)
-+{
-+ int fontid = fontnumber / 10;
-+ if (fontid < 0 || fontid > 31) fontid = 0;
-+
-+ Int_t italic = 0;
-+ if (fontid==15) italic = 1;
++ if (pat) {
++ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
++ FcDefaultSubstitute (pat);
++ match = FcFontMatch (nullptr, pat, &result);
++ if (match) {
++ const char *ttfnt;
++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfnt);
++ ttfont = StrDup(ttfnt);
++ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex);
++ FcPatternDestroy (match);
++ }
++ FcPatternDestroy (pat);
++ }
+
-+ if (!fgInit) Init();
++ if (!ttfont) ttfont = StrDup(fontname);
+
-+ if (fontid == 0) {
-+ fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
-+ return;
-+ }
++ basename = gSystem->BaseName(ttfont);
+
// check if font is in cache
int i;
@@ -450,30 +414,28 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
- return 0;
- }
- }
-+ if (fgFontID[i] == fontid) {
++ if (!strcmp(fgFontName[i], basename) &&
++ (fgFontIdx[i] == ttindex) &&
++ (fgFontIta[i] == italic)) {
+ fgCurFontIdx = i;
-+ return;
++ delete [] ttfont;
++ return 0;
}
}
-@@ -409,151 +541,215 @@
- if (fgFontCount >= kTTMaxFonts) {
- Error("TTF::SetTextFont", "too many fonts opened (increase kTTMaxFont = %d)",
+@@ -411,28 +546,13 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
kTTMaxFonts);
-- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
-+ Warning("TTF::SetTextFont", "using default font");
+ Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
-- return 0;
-+ return;
++ delete [] ttfont;
+ return 0;
}
- // try to load font (font must be in Root.TTFontPath resource)
- const char *ttpath = gEnv->GetValue("Root.TTFontPath",
- TROOT::GetTTFFontDir());
- char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission);
-+ char *ttfont = nullptr;
-+ int ttindex = 0;
-
+-
- if (!ttfont) {
- Error("TTF::SetTextFont", "font file %s not found in path", fontname);
- if (fgFontCount) {
@@ -483,180 +445,8 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
- } else {
- return 1;
- }
-+ FcPattern *pat, *match;
-+ FcCharSet *set = nullptr;
-+ FcResult result;
-+
-+ pat = FcPatternCreate ();
-+
-+ switch (fontid) {
-+ case 1:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 2:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 3:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 4:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 5:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 6:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 7:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 8:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 9:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 10:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 11:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 12:
-+ case 15:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 13:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 14:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 16:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 17:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 18:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 19:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 20:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 21:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 22:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 23:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 24:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 25:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 26:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 27:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 28:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize5");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 29:
-+ case 30:
-+ case 31:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"droidsansfallback");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ set = FcCharSetCreate ();
-+ FcCharSetAddChar (set, 0x0410); // Cyrillic
-+ FcCharSetAddChar (set, 0x4e00); // CJK
-+ FcPatternAddCharSet (pat, FC_CHARSET, set);
-+ break;
-+ default:
-+ Error("TTF::SetTextFont", "font %i not known to ROOT", fontid);
-+ FcPatternDestroy (pat);
-+ Warning("TTF::SetTextFont", "using default font");
-+ fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
-+ return;
-+ break;
- }
-
-+ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
-+ FcDefaultSubstitute (pat);
-+ match = FcFontMatch (nullptr, pat, &result);
-+ char *ttfnt;
-+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt);
-+ ttfont = StrDup (ttfnt);
-+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex);
-+ FcPatternDestroy (match);
-+ FcPatternDestroy (pat);
-+ if (set) FcCharSetDestroy (set);
-+
+- }
+-
FT_Face tface = (FT_Face) 0;
- if (FT_New_Face(fgLibrary, ttfont, 0, &tface)) {
@@ -664,64 +454,34 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
Error("TTF::SetTextFont", "error loading font %s", ttfont);
delete [] ttfont;
if (tface) FT_Done_Face(tface);
-- if (fgFontCount) {
-- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
-- fgCurFontIdx = 0;
-- return 0;
-- } else {
-- return 1;
-- }
-+ Warning("TTF::SetTextFont", "using default font");
-+ fgCurFontIdx = 0;
-+ return;
- }
-
+@@ -448,19 +568,20 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
delete [] ttfont;
-- fgFontName[fgFontCount] = StrDup(basename);
-+ fgFontID[fgFontCount] = fontid;
+ fgFontName[fgFontCount] = StrDup(basename);
++ fgFontIdx[fgFontCount] = ttindex;
++ fgFontIta[fgFontCount] = italic;
fgCurFontIdx = fgFontCount;
fgFace[fgCurFontIdx] = tface;
fgCharMap[fgCurFontIdx] = (FT_CharMap) 0;
fgFontCount++;
- if (italic) {
+- if (italic) {
- fgSymbItaFontIdx = fgCurFontIdx;
++ if ((italic & 1) != 0) {
FT_Matrix slantMat;
slantMat.xx = (1 << 16);
slantMat.xy = ((1 << 16) >> 2);
slantMat.yx = 0;
slantMat.yy = (1 << 16);
- FT_Set_Transform( fgFace[fgSymbItaFontIdx], &slantMat, NULL );
-- }
--
-- return 0;
--}
--
--////////////////////////////////////////////////////////////////////////////////
--/// Set specified font.
--/// List of the currently supported fonts (screen and PostScript)
--///
--/// | Font ID | X11 | TTF |
--/// |---------|---------------------------|------------------|
--/// | 1 | times-medium-i-normal | timesi.ttf |
--/// | 2 | times-bold-r-normal | timesbd.ttf |
--/// | 3 | times-bold-i-normal | timesbi.ttf |
--/// | 4 | helvetica-medium-r-normal | arial.ttf |
--/// | 5 | helvetica-medium-o-normal | ariali.ttf |
--/// | 6 | helvetica-bold-r-normal | arialbd.ttf |
--/// | 7 | helvetica-bold-o-normal | arialbi.ttf |
--/// | 8 | courier-medium-r-normal | cour.ttf |
--/// | 9 | courier-medium-o-normal | couri.ttf |
--/// | 10 | courier-bold-r-normal | courbd.ttf |
--/// | 11 | courier-bold-o-normal | courbi.ttf |
--/// | 12 | symbol-medium-r-normal | symbol.ttf |
--/// | 13 | times-medium-r-normal | times.ttf |
--/// | 14 | | wingding.ttf |
--/// | 15 | symbol oblique is emulated from symbol.ttf | |
--
--void TTF::SetTextFont(Font_t fontnumber)
--{
++ FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, nullptr );
+ }
+
+ return 0;
+@@ -489,70 +610,50 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
+
+ void TTF::SetTextFont(Font_t fontnumber)
+ {
- // Added by cholm for use of DFSG - fonts - based on Kevins fix.
- // Table of Microsoft and (for non-MSFT operating systems) backup
- // FreeFont TTF fonts.
@@ -758,14 +518,47 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
- { "Root.TTFont.ME", "DroidSansFallback.ttf" },
- { "Root.TTFont.CJKMing", "DroidSansFallback.ttf" },
- { "Root.TTFont.CJKGothic", "DroidSansFallback.ttf" }
-- };
--
++ static const char *fonttable[] = {
++ "freesans:bold",
++ "freeserif:italic",
++ "freeserif:bold",
++ "freeserif:bold:italic",
++ "freesans",
++ "freesans:italic",
++ "freesans:bold",
++ "freesans:bold:italic",
++ "freemono",
++ "freemono:italic",
++ "freemono:bold",
++ "freemono:bold:italic",
++ "standardsymbolsps",
++ "freeserif",
++ "dingbats",
++ "standardsymbolsps",
++ "stixgeneral",
++ "stixgeneral:italic",
++ "stixgeneral:bold",
++ "stixgeneral:bold:italic",
++ "stixsize1",
++ "stixsize1:bold",
++ "stixsize2",
++ "stixsize2:bold",
++ "stixsize3",
++ "stixsize3:bold",
++ "stixsize4",
++ "stixsize4:bold",
++ "stixsize5",
++ "droidsansfallback:charset=4e00 0410",
++ "droidsansfallback:charset=4e00 0410",
++ "droidsansfallback:charset=4e00 0410"
+ };
+
- static int fontset = -1;
- int thisset = fontset;
-
-- int fontid = fontnumber / 10;
-- if (fontid < 0 || fontid > 31) fontid = 0;
--
+ int fontid = fontnumber / 10;
+ if (fontid < 0 || fontid > 31) fontid = 0;
+
- if (thisset == -1) {
- // try to load font (font must be in Root.TTFontPath resource)
- // to see which fontset we have available
@@ -779,21 +572,26 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
- // try backup free font
- thisset = 1;
- }
-+ FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, nullptr );
- }
-- Int_t italic = 0;
+- }
+ Int_t italic = 0;
- if (fontid==15) italic = 1;
- int ret = SetTextFont(gEnv->GetValue(fonttable[fontid][thisset], fonttable[fontid][1]), italic);
- // Do not define font set is we're loading the symbol.ttf - it's
- // the same in both cases.
- if (ret == 0 && fontid != 12) fontset = thisset;
++ if (fontid==12) italic = 2;
++ if (fontid==14) italic = 2;
++ if (fontid==15) italic = 3;
++
++ SetTextFont(fonttable[fontid], italic);
}
////////////////////////////////////////////////////////////////////////////////
-diff -ur root-6.28.00.orig/graf2d/postscript/CMakeLists.txt root-6.28.00/graf2d/postscript/CMakeLists.txt
---- root-6.28.00.orig/graf2d/postscript/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/postscript/CMakeLists.txt 2023-02-04 12:47:19.863760238 +0100
-@@ -27,6 +27,7 @@
+diff --git a/graf2d/postscript/CMakeLists.txt b/graf2d/postscript/CMakeLists.txt
+index eb091bbb39..a05023a3f4 100644
+--- a/graf2d/postscript/CMakeLists.txt
++++ b/graf2d/postscript/CMakeLists.txt
+@@ -27,6 +27,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Postscript
LIBRARIES
ZLIB::ZLIB
mathtext
@@ -801,10 +599,11 @@ diff -ur root-6.28.00.orig/graf2d/postscript/CMakeLists.txt root-6.28.00/graf2d/
DEPENDENCIES
Graf
)
-diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/graf2d/postscript/src/TPostScript.cxx
---- root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/postscript/src/TPostScript.cxx 2023-02-04 12:47:19.864760240 +0100
-@@ -234,6 +234,7 @@
+diff --git a/graf2d/postscript/src/TPostScript.cxx b/graf2d/postscript/src/TPostScript.cxx
+index 09ea7ffa9c..180fd5e3c1 100644
+--- a/graf2d/postscript/src/TPostScript.cxx
++++ b/graf2d/postscript/src/TPostScript.cxx
+@@ -234,6 +234,7 @@ To change the color model use `gStyle->SetColorModelPS(c)`.
#include <cctype>
#include <cwchar>
#include <fstream>
@@ -812,7 +611,7 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr
#include "strlcpy.h"
#include "snprintf.h"
-@@ -1585,56 +1586,179 @@
+@@ -1585,56 +1586,60 @@ Bool_t TPostScript::FontEmbedType42(const char *filename)
void TPostScript::FontEmbed(void)
{
@@ -849,8 +648,41 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr
- { "Root.TTFont.ME", "DroidSansFallback.ttf" },
- { "Root.TTFont.CJKMing", "DroidSansFallback.ttf" },
- { "Root.TTFont.CJKCothic", "DroidSansFallback.ttf" }
-- };
--
++ static const char *fonttable[] = {
++ "freesans:bold",
++ "freeserif:italic",
++ "freeserif:bold",
++ "freeserif:bold:italic",
++ "freesans",
++ "freesans:italic",
++ "freesans:bold",
++ "freesans:bold:italic",
++ "freemono",
++ "freemono:italic",
++ "freemono:bold",
++ "freemono:bold:italic",
++ "standardsymbolsps",
++ "freeserif",
++ "dingbats",
++ "standardsymbolsps",
++ "stixgeneral",
++ "stixgeneral:italic",
++ "stixgeneral:bold",
++ "stixgeneral:bold:italic",
++ "stixsize1",
++ "stixsize1:bold",
++ "stixsize2",
++ "stixsize2:bold",
++ "stixsize3",
++ "stixsize3:bold",
++ "stixsize4",
++ "stixsize4:bold",
++ "stixsize5",
++ "droidsansfallback:charset=4e00 0410",
++ "droidsansfallback:charset=4e00 0410",
++ "droidsansfallback:charset=4e00 0410"
+ };
+
PrintStr("%%IncludeResource: ProcSet (FontSetInit)@");
- // try to load font (font must be in Root.TTFontPath resource)
@@ -862,182 +694,28 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr
- const char *filename = gEnv->GetValue(
- fonttable[fontid][0], fonttable[fontid][1]);
- char *ttfont = gSystem->Which(ttpath, filename, kReadPermission);
-+
+ char *ttfont = nullptr;
+
+ FcPattern *pat, *match;
-+ FcCharSet *set = nullptr;
+ FcResult result;
+
-+ pat = FcPatternCreate ();
-+
-+ switch (fontid) {
-+ case 1:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 2:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 3:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 4:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 5:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 6:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 7:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 8:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 9:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 10:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 11:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 12:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 13:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 14:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 16:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 17:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 18:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 19:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 20:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 21:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 22:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 23:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 24:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 25:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 26:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 27:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 28:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize5");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 29:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"droidsansfallback");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ set = FcCharSetCreate ();
-+ FcCharSetAddChar (set, 0x0410); // Cyrillic
-+ FcCharSetAddChar (set, 0x4e00); // CJK
-+ FcPatternAddCharSet (pat, FC_CHARSET, set);
-+ break;
-+ }
++ pat = FcNameParse ((const FcChar8*) fonttable[fontid]);
+
+ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
+ FcDefaultSubstitute (pat);
+ match = FcFontMatch (nullptr, pat, &result);
-+ char *ttfnt;
-+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt);
-+ ttfont = StrDup(ttfnt);
-+ FcPatternDestroy (match);
-+ FcPatternDestroy (pat);
-+ if (set) FcCharSetDestroy (set);
++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfont);
+
if (!ttfont) {
- Error("TPostScript::FontEmbed",
- "font %d (filename `%s') not found in path",
- fontid, filename);
-+ Error("TPostScript::FontEmbed", "font %d not found in path",
++ Error("TPostScript::FontEmbed", "font %d not found",
+ fontid);
} else {
if (FontEmbedType2(ttfont)) {
// nothing
-@@ -1643,9 +1767,8 @@
+@@ -1643,12 +1648,13 @@ void TPostScript::FontEmbed(void)
} else if(FontEmbedType42(ttfont)) {
// nothing
} else {
@@ -1047,9 +725,15 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr
+ Error("TPostScript::FontEmbed", "failed to embed font %d)",
+ fontid);
}
- delete [] ttfont;
+- delete [] ttfont;
}
-@@ -2837,10 +2960,10 @@
++
++ FcPatternDestroy (match);
++ FcPatternDestroy (pat);
+ }
+ }
+ PrintStr("%%IncludeResource: font Times-Roman@");
+@@ -2837,10 +2843,10 @@ void TPostScript::Text(Double_t xx, Double_t yy, const wchar_t *chars)
{ "Root.PSFont.9", "/FreeMonoOblique" },
{ "Root.PSFont.10", "/FreeMonoBold" },
{ "Root.PSFont.11", "/FreeMonoBoldOblique" },
@@ -1063,10 +747,11 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr
{ "Root.PSFont.STIXGen", "/STIXGeneral" },
{ "Root.PSFont.STIXGenIt", "/STIXGeneral-Italic" },
{ "Root.PSFont.STIXGenBd", "/STIXGeneral-Bold" },
-diff -ur root-6.28.00.orig/graf3d/gl/CMakeLists.txt root-6.28.00/graf3d/gl/CMakeLists.txt
---- root-6.28.00.orig/graf3d/gl/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf3d/gl/CMakeLists.txt 2023-02-04 12:47:19.867760247 +0100
-@@ -208,6 +208,7 @@
+diff --git a/graf3d/gl/CMakeLists.txt b/graf3d/gl/CMakeLists.txt
+index a874da9e1d..5454469606 100644
+--- a/graf3d/gl/CMakeLists.txt
++++ b/graf3d/gl/CMakeLists.txt
+@@ -208,6 +208,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RGL
${GL2PS_LIBRARIES}
${X11_LIBRARIES}
RGlew
@@ -1074,9 +759,10 @@ diff -ur root-6.28.00.orig/graf3d/gl/CMakeLists.txt root-6.28.00/graf3d/gl/CMake
DEPENDENCIES
Hist
Gui
-diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/gl/src/TGLFontManager.cxx
---- root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf3d/gl/src/TGLFontManager.cxx 2023-02-04 12:47:19.867760247 +0100
+diff --git a/graf3d/gl/src/TGLFontManager.cxx b/graf3d/gl/src/TGLFontManager.cxx
+index 776e9d286f..c4134c5980 100644
+--- a/graf3d/gl/src/TGLFontManager.cxx
++++ b/graf3d/gl/src/TGLFontManager.cxx
@@ -36,6 +36,7 @@
# include "FTGLBitmapFont.h"
#endif
@@ -1085,16 +771,7 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/
/** \class TGLFont
\ingroup opengl
-@@ -419,7 +420,7 @@
- ClassImp(TGLFontManager);
-
- TObjArray TGLFontManager::fgFontFileArray;
--Int_t TGLFontManager::fgExtendedFontStart;
-+Int_t TGLFontManager::fgExtendedFontStart = 0;
- TGLFontManager::FontSizeVec_t TGLFontManager::fgFontSizeArray;
- Bool_t TGLFontManager::fgStaticInitDone = kFALSE;
-
-@@ -450,17 +451,175 @@
+@@ -450,16 +451,120 @@ void TGLFontManager::RegisterFont(Int_t sizeIn, Int_t fileID, TGLFont::EMode mod
FontMap_i it = fFontMap.find(TGLFont(size, fileID, mode));
if (it == fFontMap.end())
{
@@ -1107,234 +784,127 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/
- ((TObjString*)fgFontFileArray[fileID])->String());
- file = fp;
- delete [] fp;
-+ char *file = nullptr;
-+ int ttindex = 0;
++ TString file;
+
-+ FcPattern *pat, *match;
-+ FcCharSet *set = nullptr;
-+ FcResult result;
++ TString fontname = fileID < fgExtendedFontStart ?
++ ((TObjString*)fgFontFileArray[fileID])->String() + ".ttf" :
++ ((TObjString*)fgFontFileArray[fileID])->String();
+
-+ pat = FcPatternCreate ();
++ FcPattern *pat = nullptr, *match;
++ FcResult result;
+
-+ switch (fileID) {
-+ case 0:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 1:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 2:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 3:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 4:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 5:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 6:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 7:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 8:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 9:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 10:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 11:
-+ case 14:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 12:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 13:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 15:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 16:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 17:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 18:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 19:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 20:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 21:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 22:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 23:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 24:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 25:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 26:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 27:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize5");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 28:
-+ case 29:
-+ case 30:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"droidsansfallback");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ set = FcCharSetCreate ();
-+ FcCharSetAddChar (set, 0x0410); // Cyrillic
-+ FcCharSetAddChar (set, 0x4e00); // CJK
-+ FcPatternAddCharSet (pat, FC_CHARSET, set);
++ if (strcmp(fontname, "timesi.ttf") == 0 ||
++ strcmp(fontname, "FreeSerifItalic.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freeserif:italic");
++ }
++ else if (strcmp(fontname, "timesbd.ttf") == 0 ||
++ strcmp(fontname, "FreeSerifBold.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freeserif:bold");
++ }
++ else if (strcmp(fontname, "timesbi.ttf") == 0 ||
++ strcmp(fontname, "FreeSerifBoldItalic.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freeserif:bold:italic");
++ }
++ else if (strcmp(fontname, "arial.ttf") == 0 ||
++ strcmp(fontname, "FreeSans.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freesans");
++ }
++ else if (strcmp(fontname, "ariali.ttf") == 0 ||
++ strcmp(fontname, "FreeSansOblique.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freesans:italic");
++ }
++ else if (strcmp(fontname, "arialbd.ttf") == 0 ||
++ strcmp(fontname, "FreeSansBold.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freesans:bold");
++ }
++ else if (strcmp(fontname, "arialbi.ttf") == 0 ||
++ strcmp(fontname, "FreeSansBoldOblique.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freesans:bold:italic");
++ }
++ else if (strcmp(fontname, "cour.ttf") == 0 ||
++ strcmp(fontname, "FreeMono.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freemono");
++ }
++ else if (strcmp(fontname, "couri.ttf") == 0 ||
++ strcmp(fontname, "FreeMonoOblique.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freemono:italic");
++ }
++ else if (strcmp(fontname, "courbd.ttf") == 0 ||
++ strcmp(fontname, "FreeMonoBold.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freemono:bold");
++ }
++ else if (strcmp(fontname, "courbi.ttf") == 0 ||
++ strcmp(fontname, "FreeMonoBoldOblique.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freemono:bold:italic");
++ }
++ else if (strcmp(fontname, "symbol.ttf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "standardsymbolsps");
++ }
++ else if (strcmp(fontname, "times.ttf") == 0 ||
++ strcmp(fontname, "FreeSerif.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freeserif");
}
-
++ else if (strcmp(fontname, "wingding.ttf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "dingbats");
++ }
++ else if (strcmp(fontname, "STIXGeneral.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixgeneral");
++ }
++ else if (strcmp(fontname, "STIXGeneralItalic.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixgeneral:italic");
++ }
++ else if (strcmp(fontname, "STIXGeneralBol.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold");
++ }
++ else if (strcmp(fontname, "STIXGeneralBolIta.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold:italic");
++ }
++ else if (strcmp(fontname, "STIXSiz1Sym.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize1");
++ }
++ else if (strcmp(fontname, "STIXSiz1SymBol.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize1:bold");
++ }
++ else if (strcmp(fontname, "STIXSiz2Sym.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize2");
++ }
++ else if (strcmp(fontname, "STIXSiz2SymBol.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize2:bold");
++ }
++ else if (strcmp(fontname, "STIXSiz3Sym.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize3");
++ }
++ else if (strcmp(fontname, "STIXSiz3SymBol.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize3:bold");
++ }
++ else if (strcmp(fontname, "STIXSiz4Sym.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize4");
++ }
++ else if (strcmp(fontname, "STIXSiz4SymBol.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize4:bold");
++ }
++ else if (strcmp(fontname, "STIXSiz5Sym.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize5");
++ }
++ else if (strcmp(fontname, "DroidSansFallback.ttf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "droidsansfallback:charset=4e00 0410");
++ }
++
+ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
+ FcDefaultSubstitute (pat);
+ match = FcFontMatch (nullptr, pat, &result);
+ char *ttfnt;
-+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt);
-+ file = StrDup (ttfnt);
-+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex);
++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfnt);
++ file = ttfnt;
+ FcPatternDestroy (match);
+ FcPatternDestroy (pat);
-+ if (set) FcCharSetDestroy (set);
-+
+
FTFont* ftfont = 0;
switch (mode)
- {
-@@ -484,10 +643,14 @@
- ftfont = new FTGLTextureFont(file);
- break;
- default:
-+ delete [] file;
- Error("TGLFontManager::RegisterFont", "invalid FTGL type");
- return;
- break;
- }
-+
-+ delete [] file;
-+
- ftfont->FaceSize(size);
- const TGLFont &mf = fFontMap.insert(std::make_pair(TGLFont(size, fileID, mode, ftfont, 0), 1)).first->first;
- out.CopyAttributes(mf);
-@@ -570,8 +733,6 @@
- {
- if (fgStaticInitDone == kFALSE) InitStatics();
-
-- assert(fgExtendedFontStart > 0 && "GetExtendedFontStartIndex, invalid index");
--
- return fgExtendedFontStart;
- }
-
-@@ -641,28 +802,6 @@
- fgFontFileArray.Add(new TObjString("wingding")); // 140
- fgFontFileArray.Add(new TObjString("symbol")); // 150
-
-- fgExtendedFontStart = fgFontFileArray.GetEntries();
-- //"Extended" fonts for gl-pad.
-- //fgPadFontStart + ...
-- fgFontFileArray.Add(new TObjString("FreeSerifItalic.otf")); // 10 (160)
-- fgFontFileArray.Add(new TObjString("FreeSerifBold.otf")); // 20 (170)
-- fgFontFileArray.Add(new TObjString("FreeSerifBoldItalic.otf")); // 30
--
-- fgFontFileArray.Add(new TObjString("FreeSans.otf")); // 40
-- fgFontFileArray.Add(new TObjString("FreeSansOblique.otf")); // 50
-- fgFontFileArray.Add(new TObjString("FreeSansBold.otf")); // 60
-- fgFontFileArray.Add(new TObjString("FreeSansBoldOblique.otf")); // 70
--
-- fgFontFileArray.Add(new TObjString("FreeMono.otf")); // 80
-- fgFontFileArray.Add(new TObjString("FreeMonoOblique.otf")); // 90
-- fgFontFileArray.Add(new TObjString("FreeMonoBold.otf")); // 100
-- fgFontFileArray.Add(new TObjString("FreeMonoBoldOblique.otf")); // 110
--
-- fgFontFileArray.Add(new TObjString("symbol.ttf")); // 120
-- fgFontFileArray.Add(new TObjString("FreeSerif.otf")); // 130
-- fgFontFileArray.Add(new TObjString("wingding.ttf")); // 140
-- fgFontFileArray.Add(new TObjString("symbol.ttf")); // 150
--
- fgFontFileArray.Add(new TObjString("STIXGeneral.otf")); // 200
- fgFontFileArray.Add(new TObjString("STIXGeneralItalic.otf")); // 210
- fgFontFileArray.Add(new TObjString("STIXGeneralBol.otf")); // 220
-diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/TGLText.cxx
---- root-6.28.00.orig/graf3d/gl/src/TGLText.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf3d/gl/src/TGLText.cxx 2023-02-04 12:47:19.868760250 +0100
+diff --git a/graf3d/gl/src/TGLText.cxx b/graf3d/gl/src/TGLText.cxx
+index f84f5193d2..8a672c787c 100644
+--- a/graf3d/gl/src/TGLText.cxx
++++ b/graf3d/gl/src/TGLText.cxx
@@ -32,6 +32,8 @@
# include "FTGLBitmapFont.h"
#endif
@@ -1344,7 +914,7 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/
#define FTGL_BITMAP 0
#define FTGL_PIXMAP 1
#define FTGL_OUTLINE 2
-@@ -176,27 +178,92 @@
+@@ -176,27 +178,35 @@ void TGLText::SetGLTextFont(Font_t fontnumber)
{
int fontid = fontnumber / 10;
@@ -1369,96 +939,39 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/
- const char *ttpath = gEnv->GetValue("Root.TTFontPath",
- TROOT::GetTTFFontDir());
- char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission);
-+ FcPattern *pat, *match;
-+ FcResult result;
++ static const char *fonttable[] = {
++ "freesans:bold",
++ "freeserif:italic",
++ "freeserif:bold",
++ "freeserif:bold:italic",
++ "freesans",
++ "freesans:italic",
++ "freesans:bold",
++ "freesans:bold:italic",
++ "freemono",
++ "freemono:italic",
++ "freemono:bold",
++ "freemono:bold:italic",
++ "standardsymbolsps",
++ "freeserif",
++ "dingbats",
++ };
++
+ char *ttfont;
-+ int ttindex;
+
-+ pat = FcPatternCreate ();
++ FcPattern *pat, *match;
++ FcResult result;
+
-+ switch (fontid) {
-+ case 1:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 2:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 3:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 4:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 5:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 0:
-+ case 6:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 7:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 8:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 9:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 10:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 11:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 12:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 13:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 14:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ }
++ pat = FcNameParse ((const FcChar8*) fonttable[fontid]);
+
+ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
+ FcDefaultSubstitute (pat);
+ match = FcFontMatch (nullptr, pat, &result);
-+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfont);
-+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex);
++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfont);
if (fGLTextFont) delete fGLTextFont;
-@@ -204,7 +271,9 @@
+@@ -204,7 +214,9 @@ void TGLText::SetGLTextFont(Font_t fontnumber)
fGLTextFont = new FTGLPolygonFont(ttfont);
@@ -1469,10 +982,11 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/
Error("SetGLTextFont","Cannot set FTGL::FaceSize");
- delete [] ttfont;
}
-diff -ur root-6.28.00.orig/gui/gui/src/TGApplication.cxx root-6.28.00/gui/gui/src/TGApplication.cxx
---- root-6.28.00.orig/gui/gui/src/TGApplication.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/gui/gui/src/TGApplication.cxx 2023-02-04 12:47:19.868760250 +0100
-@@ -81,20 +81,12 @@
+diff --git a/gui/gui/src/TGApplication.cxx b/gui/gui/src/TGApplication.cxx
+index 72d7dbbf95..73a44fdd7f 100644
+--- a/gui/gui/src/TGApplication.cxx
++++ b/gui/gui/src/TGApplication.cxx
+@@ -81,20 +81,12 @@ TGApplication::TGApplication(const char *appClassName,
gROOT->SetBatch(kFALSE);
if (strcmp(appClassName, "proofserv")) {
@@ -1494,3 +1008,6 @@ diff -ur root-6.28.00.orig/gui/gui/src/TGApplication.cxx root-6.28.00/gui/gui/sr
}
// Create the canvas colors early so they are allocated before
+--
+2.45.0
+
diff --git a/root.spec b/root.spec
index 207b1f5..bfe8824 100644
--- a/root.spec
+++ b/root.spec
@@ -41,13 +41,23 @@
%global bundlejson 0
%endif
+%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8
+%ifarch %{ix86} %{arm}
+%global pandas 0
+%else
+%global pandas 1
+%endif
+%else
+%global pandas 0
+%endif
+
# Do not generate autoprovides for Python modules
%global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$
Name: root
Version: 6.30.06
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Numerical data analysis framework
License: LGPL-2.1-or-later
@@ -201,7 +211,7 @@ BuildRequires: zeromq-devel >= 4.3.5
BuildRequires: cppzmq-devel
%endif
%endif
-%if (0%{?fedora} && 0%{?__isa_bits} == 64) || 0%{?rhel} == 8
+%if %{pandas}
BuildRequires: python%{python3_pkgversion}-pandas
%endif
BuildRequires: python%{python3_pkgversion}-rcssmin
@@ -2594,7 +2604,7 @@ tutorial-pyroot-pyroot004_NumbaDeclare-py|\
pyunittests-pyroot-numbadeclare|\
test-webgui-ping"
-%if (0%{?fedora} && 0%{?__isa_bits} != 64) || 0%{?rhel} == 8
+%if ! %{pandas}
# - test-import-pandas
# - tutorial-dataframe-df026_AsNumpyArrays-py
# - tutorial-roofit-rf409_NumPyPandasToRooFit-py
@@ -2820,7 +2830,7 @@ RSqliteDS.Davix:\
TChainParsing.RemoteGlob:\
TFile.ReadWithoutGlobalRegistrationNet:\
TFile.ReadWithoutGlobalRegistrationWeb \
-%if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 )
+%if ! %{pandas}
ROOTTEST_IGNORE_PANDAS_PY3=1 \
%endif
ROOTTEST_IGNORE_NUMBA_PY3=1 \
@@ -3734,6 +3744,10 @@ fi
%endif
%changelog
+* Wed May 15 2024 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.30.06-5
+- Rebuilt for libarrow.so.1601
+- Improved fontconfig support
+
* Sun Apr 28 2024 Benjamin A. Beasley <code(a)musicinmybrain.net> - 6.30.06-4
- Do not test with Pandas on 32-bit architectures
commit 0f2b684662cd83ea098314b4a50741ab93dc99b6
Author: Benjamin A. Beasley <code(a)musicinmybrain.net>
Date: Mon Feb 19 13:49:35 2024 -0500
Do not test with Pandas on 32-bit architectures
https://bugzilla.redhat.com/show_bug.cgi?id=2263999
diff --git a/root.spec b/root.spec
index 3aba984..207b1f5 100644
--- a/root.spec
+++ b/root.spec
@@ -47,7 +47,7 @@
Name: root
Version: 6.30.06
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Numerical data analysis framework
License: LGPL-2.1-or-later
@@ -201,7 +201,7 @@ BuildRequires: zeromq-devel >= 4.3.5
BuildRequires: cppzmq-devel
%endif
%endif
-%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8
+%if (0%{?fedora} && 0%{?__isa_bits} == 64) || 0%{?rhel} == 8
BuildRequires: python%{python3_pkgversion}-pandas
%endif
BuildRequires: python%{python3_pkgversion}-rcssmin
@@ -2594,7 +2594,7 @@ tutorial-pyroot-pyroot004_NumbaDeclare-py|\
pyunittests-pyroot-numbadeclare|\
test-webgui-ping"
-%if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 )
+%if (0%{?fedora} && 0%{?__isa_bits} != 64) || 0%{?rhel} == 8
# - test-import-pandas
# - tutorial-dataframe-df026_AsNumpyArrays-py
# - tutorial-roofit-rf409_NumPyPandasToRooFit-py
@@ -3734,6 +3734,9 @@ fi
%endif
%changelog
+* Sun Apr 28 2024 Benjamin A. Beasley <code(a)musicinmybrain.net> - 6.30.06-4
+- Do not test with Pandas on 32-bit architectures
+
* Thu Apr 25 2024 Iñaki Úcar <iucar(a)fedoraproject.org> - 6.30.06-3
- R-maint-sig mass rebuild
2 weeks, 3 days
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=95f73fc33a01c...
https://src.fedoraproject.org/cgit/rpms/root.git/commit/?id=4d9bac38913ea....
Change:
+%ifarch %{ix86}
+%ifarch %{ix86} %{arm}
Thanks.
Full change:
============
commit 95f73fc33a01c2cbdedf36cdb9e4fab77a7e6381
Author: Mattias Ellert <ellert(a)ellert.se>
Date: Fri Jun 7 12:04:22 2024 +0200
Update to 6.32.00
Drop EPEL 8 build (now requires Python >= 3.7 ans tbb >= 2020)
Dropped patches: 12
New patches: 6
The JsMVA python module is now a submodule of the ROOT python module
The notebook package was merged with the JupyROOT package
diff --git a/root-32bit-tests.patch b/root-32bit-tests.patch
index ea926b4..ae15a5d 100644
--- a/root-32bit-tests.patch
+++ b/root-32bit-tests.patch
@@ -1,7 +1,7 @@
-From 70d941cd6ebbc3726e08ef7f52d0135453f0b840 Mon Sep 17 00:00:00 2001
+From 55446dcd6eabc1fff218f266c11f31697fe99f09 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Fri, 13 Mar 2020 16:21:55 +0100
-Subject: [PATCH 2/3] Run tests on 32 bit
+Subject: [PATCH] Run tests on 32 bit
---
test/stressGeometry.cxx | 8 --------
@@ -9,7 +9,7 @@ Subject: [PATCH 2/3] Run tests on 32 bit
2 files changed, 3 insertions(+), 15 deletions(-)
diff --git a/test/stressGeometry.cxx b/test/stressGeometry.cxx
-index 5e81f5f2ca..18e41a6f45 100644
+index f8d78f4f54..617b9e1644 100644
--- a/test/stressGeometry.cxx
+++ b/test/stressGeometry.cxx
@@ -257,14 +257,6 @@ void stressGeometry(const char *exp="*", Bool_t generate_ref=kFALSE, Bool_t vecg
@@ -28,26 +28,26 @@ index 5e81f5f2ca..18e41a6f45 100644
TString fname;
for (i=0; i<NG; i++) {
diff --git a/tree/tree/test/CMakeLists.txt b/tree/tree/test/CMakeLists.txt
-index 0c1a39d01e..3bafe47934 100644
+index 5bb222edc5..f29a17801d 100644
--- a/tree/tree/test/CMakeLists.txt
+++ b/tree/tree/test/CMakeLists.txt
-@@ -12,13 +12,9 @@ ROOT_ADD_GTEST(testTOffsetGeneration TOffsetGeneration.cxx ElementStruct.cxx Ele
+@@ -17,13 +17,9 @@ endif()
target_include_directories(testTOffsetGeneration PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
ROOT_STANDARD_LIBRARY_PACKAGE(SillyStruct NO_INSTALL_HEADERS HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/SillyStruct.h SOURCES SillyStruct.cxx LINKDEF SillyStructLinkDef.h DEPENDENCIES RIO)
ROOT_ADD_GTEST(testBulkApi BulkApi.cxx LIBRARIES RIO Tree TreePlayer)
-#FIXME: tests are having timeout on 32bit CERN VM (in docker container everything is fine),
-# to be reverted after investigation.
-if(NOT CMAKE_SIZEOF_VOID_P EQUAL 4)
-- ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer)
+- ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000)
- ROOT_ADD_GTEST(testBulkApiVarLength BulkApiVarLength.cxx LIBRARIES RIO Tree TreePlayer)
- ROOT_ADD_GTEST(testBulkApiSillyStruct BulkApiSillyStruct.cxx LIBRARIES RIO Tree TreePlayer SillyStruct)
-endif()
-+ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer)
++ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000)
+ROOT_ADD_GTEST(testBulkApiVarLength BulkApiVarLength.cxx LIBRARIES RIO Tree TreePlayer)
+ROOT_ADD_GTEST(testBulkApiSillyStruct BulkApiSillyStruct.cxx LIBRARIES RIO Tree TreePlayer SillyStruct)
ROOT_ADD_GTEST(testTBasket TBasket.cxx LIBRARIES RIO Tree)
ROOT_ADD_GTEST(testTBranch TBranch.cxx LIBRARIES RIO Tree MathCore)
ROOT_ADD_GTEST(testTIOFeatures TIOFeatures.cxx LIBRARIES RIO Tree)
--
-2.24.1
+2.45.1
diff --git a/root-avoid-out-of-memory-during-linking.patch b/root-avoid-out-of-memory-during-linking.patch
deleted file mode 100644
index d182e44..0000000
--- a/root-avoid-out-of-memory-during-linking.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 51b84e7bc21f8729de8d3e8f9ff08b337af33b78 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 17 Nov 2023 17:15:15 +0100
-Subject: [PATCH] Avoid out of memory during linking regardless of build type
-
----
- 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 e750480eb3..dd50793d29 100644
---- a/core/metacling/src/CMakeLists.txt
-+++ b/core/metacling/src/CMakeLists.txt
-@@ -111,11 +111,8 @@ ROOT_LINKER_LIBRARY(Cling
- $<TARGET_OBJECTS:MetaCling>
- LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS} ${CLING_PLUGIN_LINK_LIBS})
-
--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)
---
-2.43.0
-
diff --git a/root-big-endian-byte-swap.patch b/root-big-endian-byte-swap.patch
deleted file mode 100644
index caa3076..0000000
--- a/root-big-endian-byte-swap.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From b32c7a1b080cb5d14f242070bf906ea6929d604d 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 | 23 +++++++++++++++-----
- 1 file changed, 17 insertions(+), 6 deletions(-)
-
-diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
-index ab457dcddc..d701fb3299 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 "onnx_proto3.pb.h"
-
-@@ -335,9 +336,14 @@ RModel RModelParser_ONNX::Parse(std::string filename, bool verbose)
- case ETensorType::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<uint32_t *>(data.get()))[k] =
-+ Rbswap_32((reinterpret_cast<const uint32_t *>(tensorproto->raw_data().c_str()))[k]);
-+#endif
- } else {
- tensorproto->mutable_float_data()->ExtractSubrange(0, tensorproto->float_data_size(),
- static_cast<float *>(data.get()));
-@@ -350,9 +356,14 @@ RModel RModelParser_ONNX::Parse(std::string filename, bool verbose)
- case ETensorType::INT64: {
- std::shared_ptr<void> data(malloc(fLength * sizeof(int64_t)), free);
-
-- if (tensorproto->raw_data().empty() == false) {
-- auto raw_data_ptr = reinterpret_cast<int64_t *>(const_cast<char *>(tensorproto->raw_data().c_str()));
-- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(int64_t));
-+ if (!tensorproto->raw_data().empty()) {
-+#ifdef R__BYTESWAP
-+ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(int64_t));
-+#else
-+ for (std::size_t k = 0; k < fLength; ++k)
-+ (reinterpret_cast<uint64_t *>(data.get()))[k] =
-+ Rbswap_64((reinterpret_cast<const uint64_t *>(tensorproto->raw_data().c_str()))[k]);
-+#endif
- } else {
- tensorproto->mutable_int64_data()->ExtractSubrange(0, tensorproto->int64_data_size(),
- static_cast<int64_t *>(data.get()));
---
-2.39.2
-
diff --git a/root-clad.patch b/root-clad.patch
deleted file mode 100644
index 139775e..0000000
--- a/root-clad.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From fae9b92742c5e991ad33769d1357a721838e93f9 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 17 Nov 2023 11:37:23 +0100
-Subject: [PATCH 1/3] Add fit/exampleFit3D.C to clad veto
-
----
- tutorials/CMakeLists.txt | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt
-index 5cba95407b..81f6539f03 100644
---- a/tutorials/CMakeLists.txt
-+++ b/tutorials/CMakeLists.txt
-@@ -74,7 +74,8 @@ if(NOT ROOT_minuit2_FOUND)
- #---Tutorials disabled depending on the build components-------------
-
- if(NOT clad)
-- set(clad_veto fit/minuit2GausFit.C)
-+ set(clad_veto fit/minuit2GausFit.C
-+ fit/exampleFit3D.C)
- endif()
-
- # RBatchGenerator tutorials need Python 3.8+.
---
-2.42.0
-
diff --git a/root-failure-on-ppc64le-and-s390x.patch b/root-failure-on-ppc64le-and-s390x.patch
new file mode 100644
index 0000000..787eab5
--- /dev/null
+++ b/root-failure-on-ppc64le-and-s390x.patch
@@ -0,0 +1,35 @@
+From d3b5ef223500c69efadb9b8c4735247d9ba5c5ea Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sun, 2 Jun 2024 07:03:42 +0200
+Subject: [PATCH] Fix test failure on ppc64le and s390x
+
+---
+ hist/hist/test/test_tprofile2poly.cxx | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx
+index 26b9801593..1dfa93259c 100644
+--- a/hist/hist/test/test_tprofile2poly.cxx
++++ b/hist/hist/test/test_tprofile2poly.cxx
+@@ -25,10 +25,16 @@ void FillForTest(TProfile2D* tp2d, TProfile2Poly* tpp, TRandom& ran) {
+ }
+
+ void globalStatsCompare(TProfile2D* tp2d, TProfile2Poly* tpp) {
++ const double relTol = 1e-12;
++ double cont1, cont2;
+ for(Int_t c=1; c<=3; ++c) {
+ ASSERT_DOUBLE_EQ(tp2d->GetMean(c), tpp->GetMean(c));
+- ASSERT_DOUBLE_EQ(tp2d->GetMeanError(c), tpp->GetMeanError(c));
+- ASSERT_DOUBLE_EQ(tp2d->GetStdDev(c), tpp->GetStdDev(c));
++ cont1 = tp2d->GetMeanError(c);
++ cont2 = tpp->GetMeanError(c);
++ ASSERT_NEAR(cont1, cont2, relTol * cont2);
++ cont1 = tp2d->GetStdDev(c);
++ cont2 = tpp->GetStdDev(c);
++ ASSERT_NEAR(cont1, cont2, relTol * cont2);
+ }
+ }
+
+--
+2.45.1
+
diff --git a/root-fix-one-more-broken-import-in-JsMVA.patch b/root-fix-one-more-broken-import-in-JsMVA.patch
new file mode 100644
index 0000000..0393bdc
--- /dev/null
+++ b/root-fix-one-more-broken-import-in-JsMVA.patch
@@ -0,0 +1,25 @@
+From de85dbd3344709d1c5ca87e93c87cdbce147ce5b Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Wed, 5 Jun 2024 08:49:14 +0200
+Subject: [PATCH] Fix one more broken import in JsMVA
+
+---
+ bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py b/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py
+index 57358765e4..7f56cd6dd5 100644
+--- a/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py
++++ b/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py
+@@ -23,7 +23,7 @@ class JsMVAMagic(Magics):
+ @magic_arguments()
+ @argument("arg", nargs="?", default="on", help="Enable/Disable JavaScript visualisation for TMVA")
+ def jsmva(self, line):
+- from JsMVA.JPyInterface import functions
++ from .JPyInterface import functions
+
+ args = parse_argstring(self.jsmva, line)
+ if args.arg == "on":
+--
+2.45.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
deleted file mode 100644
index 274aa66..0000000
--- a/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 15f50c71b4d89bfbf06ce817dee38e843f0f55cd Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Mon, 17 Jan 2022 23:50:47 +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 | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx
-index 40cb3052a2..ecf559a4b3 100644
---- a/hist/hist/test/test_tprofile2poly.cxx
-+++ b/hist/hist/test/test_tprofile2poly.cxx
-@@ -58,15 +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);
- }
-
- void binErrorCompare(TProfile2D* tp2d, TProfile2Poly* tpp) {
---
-2.39.2
-
diff --git a/root-fontconfig.patch b/root-fontconfig.patch
index d0f38b1..185b1c4 100644
--- a/root-fontconfig.patch
+++ b/root-fontconfig.patch
@@ -490,10 +490,10 @@ index ca38ed1f9c..8f1d62686b 100644
- { "Root.TTFont.1", "FreeSerifItalic.otf" },
- { "Root.TTFont.2", "FreeSerifBold.otf" },
- { "Root.TTFont.3", "FreeSerifBoldItalic.otf" },
-- { "Root.TTFont.4", "FreeSans.otf" },
-- { "Root.TTFont.5", "FreeSansOblique.otf" },
-- { "Root.TTFont.6", "FreeSansBold.otf" },
-- { "Root.TTFont.7", "FreeSansBoldOblique.otf" },
+- { "Root.TTFont.4", "texgyreheros-regular.otf" },
+- { "Root.TTFont.5", "texgyreheros-italic.otf" },
+- { "Root.TTFont.6", "texgyreheros-bold.otf" },
+- { "Root.TTFont.7", "texgyreheros-bolditalic.otf" },
- { "Root.TTFont.8", "FreeMono.otf" },
- { "Root.TTFont.9", "FreeMonoOblique.otf" },
- { "Root.TTFont.10", "FreeMonoBold.otf" },
diff --git a/root-format-warnings-32-bit.patch b/root-format-warnings-32-bit.patch
new file mode 100644
index 0000000..3583398
--- /dev/null
+++ b/root-format-warnings-32-bit.patch
@@ -0,0 +1,73 @@
+From 8592c5e065b8cf46480f5a1efe0363fcf2150551 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Tue, 4 Jun 2024 08:47:04 +0200
+Subject: [PATCH] Correct format - warnings seen on 32 bit architectures
+
+---
+ core/clib/src/mmapsup.c | 2 +-
+ roofit/xroofit/src/xRooNode.cxx | 2 +-
+ tree/dataframe/src/RDFDisplay.cxx | 4 ++--
+ tree/dataframe/src/RDFHelpers.cxx | 2 +-
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/core/clib/src/mmapsup.c b/core/clib/src/mmapsup.c
+index 81f68a2059..da46dc7ba5 100644
+--- a/core/clib/src/mmapsup.c
++++ b/core/clib/src/mmapsup.c
+@@ -174,7 +174,7 @@ PTR __mmalloc_mmap_morecore(struct mdesc *mdp, int size)
+ if (mdp -> top != PAGE_ALIGN(mdp -> top)) {
+ fprintf(stderr,
+ "mmap_morecore error: base memory location (%p) is not aligned with %zu as required.\n",
+- mdp -> top, (long)pagesize);
++ mdp -> top, pagesize);
+ return result;
+ }
+ mapto = mmap (mdp -> top, mapbytes, PROT_READ | PROT_WRITE,
+diff --git a/roofit/xroofit/src/xRooNode.cxx b/roofit/xroofit/src/xRooNode.cxx
+index f8c96fbf62..852e6997c0 100644
+--- a/roofit/xroofit/src/xRooNode.cxx
++++ b/roofit/xroofit/src/xRooNode.cxx
+@@ -11075,7 +11075,7 @@ std::string cling::printValue(const xRooNode *v)
+ out += "{";
+ out += n->GetName();
+ if (out.length() > 100 && left > 0) {
+- out += TString::Format(",... and %lu more", left);
++ out += TString::Format(",... and %zu more", left);
+ break;
+ }
+ }
+diff --git a/tree/dataframe/src/RDFDisplay.cxx b/tree/dataframe/src/RDFDisplay.cxx
+index 9dc555fc1d..2ef7de7ddc 100644
+--- a/tree/dataframe/src/RDFDisplay.cxx
++++ b/tree/dataframe/src/RDFDisplay.cxx
+@@ -232,12 +232,12 @@ void RDisplay::Print() const
+ // Thus, the first column is only the Row column and the actual first column is printed
+ columnsToPrint = 2;
+ }
+- Info("Print", "Only showing %lu columns out of %lu\n", columnsToPrint, fNColumns);
++ Info("Print", "Only showing %zu columns out of %zu\n", columnsToPrint, fNColumns);
+ allColumnsFit = false;
+ }
+
+ if (fNMaxCollectionElements < 1)
+- Info("Print", "No collections shown since fNMaxCollectionElements is %lu\n", fNMaxCollectionElements);
++ Info("Print", "No collections shown since fNMaxCollectionElements is %zu\n", fNMaxCollectionElements);
+
+ auto nrRows = fTable.size();
+ std::cout << DashesBetweenLines(columnsToPrint, allColumnsFit); // Print dashes in the top of the table
+diff --git a/tree/dataframe/src/RDFHelpers.cxx b/tree/dataframe/src/RDFHelpers.cxx
+index 4891454cc0..3490901b5d 100644
+--- a/tree/dataframe/src/RDFHelpers.cxx
++++ b/tree/dataframe/src/RDFHelpers.cxx
+@@ -74,7 +74,7 @@ unsigned int ROOT::RDF::RunGraphs(std::vector<RResultHandle> handles)
+ const unsigned int nToRun =
+ std::count_if(handles.begin(), handles.end(), [](const auto &h) { return !h.IsReady(); });
+ if (nToRun < handles.size()) {
+- Warning("RunGraphs", "Got %lu handles from which %lu link to results which are already ready.", handles.size(),
++ Warning("RunGraphs", "Got %zu handles from which %zu link to results which are already ready.", handles.size(),
+ handles.size() - nToRun);
+ }
+ if (nToRun == 0u)
+--
+2.45.1
+
diff --git a/root-gtest-back.patch b/root-gtest-back.patch
deleted file mode 100644
index 1624451..0000000
--- a/root-gtest-back.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 1942f5569b1d101f2c89341765ea37850e3de669 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 17 Nov 2023 11:43:46 +0100
-Subject: [PATCH 2/3] Add old gtest compat for SetUpTestSuite/TearDownTestSuite
-
----
- tree/tree/test/friendinfo.cxx | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/tree/tree/test/friendinfo.cxx b/tree/tree/test/friendinfo.cxx
-index 141a495052..6e94056946 100644
---- a/tree/tree/test/friendinfo.cxx
-+++ b/tree/tree/test/friendinfo.cxx
-@@ -14,6 +14,8 @@
- // Backward compatibility for gtest version < 1.10.0
- #ifndef INSTANTIATE_TEST_SUITE_P
- #define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
-+#define SetUpTestSuite SetUpTestCase
-+#define TearDownTestSuite TearDownTestCase
- #endif
-
- namespace {
---
-2.42.0
-
diff --git a/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch b/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch
deleted file mode 100644
index 20e2ee5..0000000
--- a/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-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] 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.
----
- core/testsupport/src/TestSupport.cxx | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/core/testsupport/src/TestSupport.cxx b/core/testsupport/src/TestSupport.cxx
-index 259ab4e09c..79cd476950 100644
---- a/core/testsupport/src/TestSupport.cxx
-+++ b/core/testsupport/src/TestSupport.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.42.0
-
diff --git a/root-jsmva-static.patch b/root-jsmva-static.patch
deleted file mode 100644
index 2550f4d..0000000
--- a/root-jsmva-static.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff -ur root-6.24.02.orig/bindings/jsmva/python/JsMVA/JPyInterface.py root-6.24.02/bindings/jsmva/python/JsMVA/JPyInterface.py
---- root-6.24.02.orig/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-08-11 09:06:21.894746090 +0200
-@@ -188,7 +188,7 @@
- ## Class for creating the output scripts and inserting them to cell output
- class JsDraw:
- ## Base repository
-- __jsMVARepo = "https://root.cern.ch/js/jsmva/latest"
-+ __jsMVARepo = "/static/JsMVA"
-
- ## String containing the link to JavaScript files
- __jsMVASourceDir = __jsMVARepo + "/js"
-diff -ur root-6.24.02.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py root-6.24.02/bindings/pyroot_legacy/JsMVA/JPyInterface.py
---- root-6.24.02.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-08-11 09:06:21.925746168 +0200
-@@ -188,7 +188,7 @@
- ## Class for creating the output scripts and inserting them to cell output
- class JsDraw:
- ## Base repository
-- __jsMVARepo = "https://root.cern.ch/js/jsmva/latest"
-+ __jsMVARepo = "/static/JsMVA"
-
- ## String containing the link to JavaScript files
- __jsMVASourceDir = __jsMVARepo + "/js"
-diff -ur root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.24.02/etc/notebook/JsMVA/js/JsMVA.js
---- root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/etc/notebook/JsMVA/js/JsMVA.js 2021-08-11 09:10:45.638410266 +0200
-@@ -16,7 +16,7 @@
-
- (function(factory){
-
-- var JSROOT_source_dir = "https://root.cern/js/5.9.1/scripts/";
-+ var JSROOT_source_dir = "/static/scripts/";
-
- var url = "";
- if (requirejs.s.contexts.hasOwnProperty("_")) {
diff --git a/root-new-zlib.patch b/root-new-zlib.patch
deleted file mode 100644
index f12eef7..0000000
--- a/root-new-zlib.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 260fc202a1387cfc3f3ef756f584923ab5b0a198 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Thu, 21 Dec 2023 17:58:49 +0100
-Subject: [PATCH] Adapt tests to work with zlib-ng
-
-Fedora 40 has replaced zlib with a zlib compatible version of zlib-ng
----
- test/stress.cxx | 2 +-
- test/stressGraphics.ref | 28 ++++++++++++++--------------
- 2 files changed, 15 insertions(+), 15 deletions(-)
-
-diff --git a/test/stress.cxx b/test/stress.cxx
-index de8061a9fc..77f48d43b8 100644
---- a/test/stress.cxx
-+++ b/test/stress.cxx
-@@ -406,7 +406,7 @@ void stress3()
- #else
- constexpr Long64_t lastgood = 52090;
- #endif
-- constexpr Long64_t tolerance = 150;
-+ constexpr Long64_t tolerance = 300;
- #ifdef R__HAS_DEFAULT_LZ4
- constexpr Long64_t difflastgoodlz4 = 5500;
- if (last < lastgood - tolerance || last > lastgood + difflastgoodlz4 + tolerance || comp < 1.5 || comp > 2.1)
-diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref
-index 16d06e33fa..a21068927d 100644
---- a/test/stressGraphics.ref
-+++ b/test/stressGraphics.ref
-@@ -2,12 +2,12 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN
- 1 529 50 12767 50 23848 3700 3937 100 569 60
- 2 4627 600 14506 100 13368 7900 9208 3000 4690 600
- 3 452 50 12694 50 11232 4200 3796 10700 492 50
-- 4 23617 1500 19386 100 143320 123000 45665 11000 24908 1500
-+ 4 23617 1500 19386 200 143320 123000 45665 11000 24908 1500
- 5 1025 150 12802 200 33468 9900 30846 5000 1072 200
- 6 430 50 12669 50 9558 100 5325 700 471 50
- 7 4980 50 13893 50 16143 1300 12230 500 5011 70
- 8 5442 80 13473 50 18430 700 12398 300 5469 80
-- 9 9253 100 14377 50 19851 2400 12199 900 9449 100
-+ 9 9253 100 14377 100 19851 2400 12199 900 9449 100
- 10 8863 70 13645 100 24343 1100 23278 1700 8894 70
- 11 12971 100 14444 50 34063 2000 32033 1200 12864 150
- 12 7674 100 13533 50 83557 3000 38505 4000 7720 150
-@@ -15,30 +15,30 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN
- 14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000
- 15 15690 5000 17179 200 23076 9500 15202 900 10437 5000
- 16 28072 400 23287 200 44462 11000 30062 5000 38007 400
-- 17 20444 400 21520 100 27511 11000 16867 600 20721 400
-- 18 15894 100 19305 100 27187 10300 15925 350 15925 100
-- 19 22521 300 42926 150 43868 17000 19232 11000 22729 300
-+ 17 20444 400 21520 150 27511 11000 16867 600 20721 400
-+ 18 15894 100 19305 200 27187 10300 15925 350 15925 100
-+ 19 22521 300 42926 200 43868 17000 19232 11000 22729 300
- 20 3664 600 14437 100 19824 6300 10396 900 4220 600
- 21 17608 600 13900 150 49440 6300 37586 9000 5938 600
- 22 4866 600 14162 100 30889 10050 21311 1800 4845 600
-- 23 4131 40 15272 50 34038 2500 12258 1400 4162 40
-+ 23 4131 40 15272 100 34038 2500 12258 1400 4162 40
- 24 7813 300 23739 100 11085 6000 6973 3100 8081 300
- 25 28422 150 29391 300 14104 14800 7386 2800 14493 150
- 26 4545 150 14541 100 27602 14800 13094 2800 4467 150
- 27 6141 200 15967 100 39594 21600 19331 7000 6596 500
- 28 9110 500 16584 200 21346 21600 10645 7000 8869 500
- 29 7419 500 15112 200 18872 21600 7928 7000 7296 500
-- 30 17016 5500 18198 100 32434 17400 22157 5000 20823 5500
-- 31 30615 8200 27176 150 50520 18200 35724 5400 36690 8200
-- 32 3304592 100 712308 500 62688 19000 123056 7000 0 0
-+ 30 17016 5500 18198 250 32434 17400 22157 5000 20823 5500
-+ 31 30615 8200 27176 200 50520 18200 35724 5400 36690 8200
-+ 32 3304592 100 712308 3000 62688 19000 123056 7000 0 0
- 33 89233 500 47975 300 65532 27800 37314 12000 90600 500
- 34 36514 300 16815 200 47408 12700 33739 3700 36399 300
-- 35 207729 750 87126 100 76094 38000 54717 11000 210497 800
-- 36 401670 6500 156361 500 62719 34100 45592 14000 410114 6500
-- 37 566142 5000 225206 750 65828 31800 53934 6500 573396 5000
-- 38 3738751 35000 1292739 8000 60580 9900 133547 3500 3783013 35000
-+ 35 207729 750 87126 750 76094 38000 54717 11000 210497 800
-+ 36 401670 6500 156361 2000 62719 34100 45592 14000 410114 6500
-+ 37 566142 5000 225206 2000 65828 31800 53934 6500 573396 5000
-+ 38 3738751 35000 1292739 12000 60580 9900 133547 3500 3783013 35000
- 39 1466028 9000 853193 50000 38425 13500 91242 18100 1463263 7500
-- 40 38312 200 56877 250 36524 11800 119641 8000 38121 200
-+ 40 38312 200 56877 750 36524 11800 119641 8000 38121 200
- 41 15025 3000 29289 500 42525 11300 33336 3900 14787 4000
- 42 254604 5000 383258 7000 55666 30400 46534 6500 259594 7000
- 43 4846 150 14075 150 33239 600 25303 300 4877 150
---
-2.43.0
-
diff --git a/root-no-export-python-modules.patch b/root-no-export-python-modules.patch
index aa7604d..be22620 100644
--- a/root-no-export-python-modules.patch
+++ b/root-no-export-python-modules.patch
@@ -1,30 +1,16 @@
-diff -ur root-6.24.02.orig/bindings/jupyroot/CMakeLists.txt root-6.24.02/bindings/jupyroot/CMakeLists.txt
---- root-6.24.02.orig/bindings/jupyroot/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/bindings/jupyroot/CMakeLists.txt 2021-08-11 10:53:03.272202496 +0200
-@@ -70,8 +70,7 @@
- endforeach()
+--- root-6.32.00/bindings/pyroot/pythonizations/CMakeLists.txt 2024-05-28 06:06:46.000000000 +0200
++++ root-6.32.00/bindings/pyroot/pythonizations/CMakeLists.txt 2024-05-29 09:47:08.960324940 +0200
+@@ -189,11 +189,10 @@
+ # Create meta-target PyROOT3 (INTERFACE library)
+ # Export of targets are not supported for custom targets(add_custom_targets())
+ add_library(PyROOT INTERFACE)
+-target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy ROOTPythonizations)
++target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy)
- # Install library
-- install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports
-- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
-+ install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
- LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries
- ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries)
-
-diff -ur root-6.24.02.orig/bindings/pyroot/pythonizations/CMakeLists.txt root-6.24.02/bindings/pyroot/pythonizations/CMakeLists.txt
---- root-6.24.02.orig/bindings/pyroot/pythonizations/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200
-+++ root-6.24.02/bindings/pyroot/pythonizations/CMakeLists.txt 2021-08-11 10:53:03.272202496 +0200
-@@ -137,11 +137,10 @@
- # Create meta-target PyROOT2 and PyROOT3 (INTERFACE library)
- # Export of targets are not supported for custom targets(add_custom_targets())
- add_library(PyROOT${python_major_version_string} INTERFACE)
-- target_link_libraries(PyROOT${python_major_version_string} INTERFACE cppyy_backend${python_under_version_string} cppyy${python_under_version_string} ROOTPythonizations${python_under_version_string})
-+ target_link_libraries(PyROOT${python_major_version_string} INTERFACE cppyy_backend${python_under_version_string} cppyy${python_under_version_string})
-
- # Install library
-- install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports
-- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
-+ install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
- LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries
- ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries)
+ # Install library
+-install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports
+- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
++install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
+ LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries)
diff --git a/root-np32.patch b/root-np32.patch
deleted file mode 100644
index 832f6c7..0000000
--- a/root-np32.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 42b9c691fdd2d0001c61f78cc8adfbb9c994f6b4 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 17 Nov 2023 11:46:14 +0100
-Subject: [PATCH 3/3] Fix pythonizations test errors on ix86 Linux
-
-======================================================================
-ERROR: test_sliced_array (rdataframe_makenumpy.DataFrameFromNumpy.test_sliced_array)
-Test correct reading of a sliced numpy array (#13690)
-----------------------------------------------------------------------
-Traceback (most recent call last):
- File "/builddir/build/BUILD/root-6.30.00/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py", line 153, in test_sliced_array
- x_col = df.Take['Long64_t']("x")
- ^^^^^^^^^^^^^^^^^^^^^^^^
-cppyy.gbl.std.runtime_error: Could not instantiate Take<Long64_t>:
- ROOT::RDF::RResultPtr<vector<Long64_t> > ROOT::RDF::RInterface<ROOT::Detail::RDF::RLoopManager,void>::Take(basic_string_view<char,char_traits<char> > column = "") =>
- runtime_error: Column x has type int while the id specified is associated to type Long64_t
-----------------------------------------------------------------------
-
-======================================================================
-ERROR: test_dtypes (rtensor.AsRTensor.test_dtypes)
-Test adoption of numpy arrays with different data types
-----------------------------------------------------------------------
-Traceback (most recent call last):
- File "/builddir/build/BUILD/root-6.30.00/bindings/pyroot/pythonizations/test/rtensor.py", line 45, in test_dtypes
- root_obj = ROOT.TMVA.Experimental.RTensor(self.cpptypes[i])(np_obj)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/builddir/build/BUILD/root-6.30.00/redhat-linux-build/lib/ROOT/_pythonization/_tmva/_rtensor.py", line 131, in RTensorInit
- return self._original_init_(data,shape,layout)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-TypeError: none of the 6 overloaded methods succeeded. Full details:
- RTensor<long,vector<long> >::RTensor<long,vector<long> >(TMVA::Experimental::RTensor<long,vector<long> >&&) =>
- TypeError: takes at most 1 arguments (3 given)
- RTensor<long,vector<long> >::RTensor<long,vector<long> >(const TMVA::Experimental::RTensor<long,vector<long> >&) =>
- TypeError: takes at most 1 arguments (3 given)
- RTensor<long,vector<long> >::RTensor<long,vector<long> >(shared_ptr<vector<long> > container, vector<unsigned int> shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) =>
- TypeError: could not convert argument 1
- RTensor<long,vector<long> >::RTensor<long,vector<long> >(vector<unsigned int> shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) =>
- TypeError: takes at most 2 arguments (3 given)
- RTensor<long,vector<long> >::RTensor<long,vector<long> >(long* data, vector<unsigned int> shape, vector<unsigned int> strides, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) =>
- TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr)
- RTensor<long,vector<long> >::RTensor<long,vector<long> >(long* data, vector<unsigned int> shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) =>
- TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr)
-----------------------------------------------------------------------
----
- .../pyroot/pythonizations/test/rdataframe_makenumpy.py | 8 ++++----
- bindings/pyroot/pythonizations/test/rtensor.py | 8 +-------
- 2 files changed, 5 insertions(+), 11 deletions(-)
-
-diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
-index cd2ebc9b5b..cc46f5bea1 100644
---- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
-+++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
-@@ -142,19 +142,19 @@ class DataFrameFromNumpy(unittest.TestCase):
- gc.collect()
- ref4 = sys.getrefcount(x)
- self.assertEqual(ref1, ref4)
--
-+
- def test_sliced_array(self):
- """
- Test correct reading of a sliced numpy array (#13690)
- """
-- table = np.array([[1,2], [3,4]])
-+ table = np.array([[1,2], [3,4]], dtype="int64")
- columns = {'x': table[:,0], 'y': table[:,1]}
- df = ROOT.RDF.FromNumpy(columns)
- x_col = df.Take['Long64_t']("x")
- y_col = df.Take['Long64_t']("y")
-- self.assertEqual(list(x_col.GetValue()), [1,3])
-+ self.assertEqual(list(x_col.GetValue()), [1,3])
- self.assertEqual(list(y_col.GetValue()), [2,4])
--
-+
-
- if __name__ == '__main__':
- unittest.main()
-diff --git a/bindings/pyroot/pythonizations/test/rtensor.py b/bindings/pyroot/pythonizations/test/rtensor.py
-index 99b458cfa9..ca119f0b41 100644
---- a/bindings/pyroot/pythonizations/test/rtensor.py
-+++ b/bindings/pyroot/pythonizations/test/rtensor.py
-@@ -2,7 +2,6 @@ import unittest
- import ROOT
- RTensor = ROOT.TMVA.Experimental.RTensor
- import numpy as np
--import platform
-
-
- def check_shape(root_obj, np_obj):
-@@ -21,18 +20,13 @@ class AsRTensor(unittest.TestCase):
- dtypes = [
- "int32", "int64", "uint32", "uint64", "float32", "float64"
- ]
-- cpptypes = ["int", "long", "unsigned int", "unsigned long", "float", "double"]
-+ cpptypes = ["int32_t", "int64_t", "uint32_t", "uint64_t", "float", "double"]
-
- # Tests
- def test_dtypes(self):
- """
- Test adoption of numpy arrays with different data types
- """
-- #using long long on Linux does not work although it is same size as long
-- if (platform.system() == "Windows") :
-- self.cpptypes[1] = "long long"
-- self.cpptypes[3] = "unsigned long long"
--
- i = 0
- for dtype in self.dtypes:
- np_obj = np.array([[1, 2], [3, 4], [5, 6]], dtype=dtype)
---
-2.43.0
-
diff --git a/root-old-gtest.patch b/root-old-gtest.patch
deleted file mode 100644
index 87b6fe4..0000000
--- a/root-old-gtest.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 8b7369a527aa52204e1ce529c8cb206cfee4c61b Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Fri, 17 Nov 2023 16:18:12 +0100
-Subject: [PATCH] Disable tests that don't compile with old gtest (EPEL 8)
-
----
- core/metacling/test/TClingLoadUnloadFileTests.cxx | 2 ++
- roofit/histfactory/test/testHistFactory.cxx | 2 ++
- roofit/roofitcore/test/testRooProdPdf.cxx | 2 ++
- roofit/roofitcore/test/testTestStatistics.cxx | 2 ++
- 4 files changed, 8 insertions(+)
-
-diff --git a/core/metacling/test/TClingLoadUnloadFileTests.cxx b/core/metacling/test/TClingLoadUnloadFileTests.cxx
-index 7f97f3f441..d1b7a65fbc 100644
---- a/core/metacling/test/TClingLoadUnloadFileTests.cxx
-+++ b/core/metacling/test/TClingLoadUnloadFileTests.cxx
-@@ -73,6 +73,7 @@ void remove_n_library_artifacts(const std::string &basename, unsigned int n)
- }
- }
-
-+/*
- TEST(TClingLoadUnloadFile, ConcurrentLoadUnloadSameLib)
- {
- GTEST_SKIP() << "fails sporadically, see "
-@@ -125,3 +126,4 @@ TEST(TClingLoadUnloadFile, ConcurrentLoadUnloadOneLibPerThread)
-
- remove_n_library_artifacts(basename, n_libraries);
- }
-+*/
-diff --git a/roofit/histfactory/test/testHistFactory.cxx b/roofit/histfactory/test/testHistFactory.cxx
-index 7553ba4e4a..fefdca8e97 100644
---- a/roofit/histfactory/test/testHistFactory.cxx
-+++ b/roofit/histfactory/test/testHistFactory.cxx
-@@ -752,6 +752,7 @@ std::string getNameFromInfo(testing::TestParamInfo<HFFixture::ParamType> const &
- return getName(paramInfo.param, false);
- }
-
-+/*
- INSTANTIATE_TEST_SUITE_P(
- HistFactory, HFFixture,
- testing::Combine(testing::Values(MakeModelMode::OverallSyst, MakeModelMode::HistoSyst, MakeModelMode::StatSyst,
-@@ -784,3 +785,4 @@ INSTANTIATE_TEST_SUITE_P(HistFactoryCodeGen, HFFixtureFit,
- testing::Values(RooFit::EvalBackend::Codegen())),
- getNameFromInfo);
- #endif
-+*/
-diff --git a/roofit/roofitcore/test/testRooProdPdf.cxx b/roofit/roofitcore/test/testRooProdPdf.cxx
-index 34fb559cd1..09734f5c5d 100644
---- a/roofit/roofitcore/test/testRooProdPdf.cxx
-+++ b/roofit/roofitcore/test/testRooProdPdf.cxx
-@@ -64,6 +64,7 @@ TEST_P(TestProdPdf, CachingOpt)
- << "b=" << b.getVal() << " +- " << b.getError() << " doesn't match truth value with O" << _optimize << ".";
- }
-
-+/*
- INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf,
- testing::Combine(testing::Values(0, 1, 2),
- testing::Values(ROOFIT_EVAL_BACKENDS)),
-@@ -72,6 +73,7 @@ INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf,
- ss << "opt" << std::get<0>(paramInfo.param) << std::get<1>(paramInfo.param).name();
- return ss.str();
- });
-+*/
-
- TEST(RooProdPdf, TestGetPartIntList)
- {
-diff --git a/roofit/roofitcore/test/testTestStatistics.cxx b/roofit/roofitcore/test/testTestStatistics.cxx
-index 3099d82060..5846353043 100644
---- a/roofit/roofitcore/test/testTestStatistics.cxx
-+++ b/roofit/roofitcore/test/testTestStatistics.cxx
-@@ -585,6 +585,7 @@ INSTANTIATE_TEST_SUITE_P(RooNLLVar, TestStatisticTest, testing::Values(ROOFIT_EV
- return ss.str();
- });
-
-+/*
- INSTANTIATE_TEST_SUITE_P(RooNLLVar, OffsetBinTest,
- testing::Combine(testing::Values(ROOFIT_EVAL_BACKENDS), // EvalBackend
- testing::Values(false, true), // unbinned or binned
-@@ -622,3 +623,4 @@ INSTANTIATE_TEST_SUITE_P(RooNLLVarBinnedL, OffsetBinTest,
- ss << (std::get<5>(paramInfo.param) ? "BinnedL" : "");
- return ss.str();
- });
-+*/
diff --git a/root-out-of-bounds.patch b/root-out-of-bounds.patch
new file mode 100644
index 0000000..fbae2ea
--- /dev/null
+++ b/root-out-of-bounds.patch
@@ -0,0 +1,26 @@
+From 069359fe9e6c36a4287a64d3356246d516409149 Mon Sep 17 00:00:00 2001
+From: Jonas Rembser <jonas.rembser(a)cern.ch>
+Date: Tue, 4 Jun 2024 12:53:53 +0200
+Subject: [PATCH] [RF] Set size of offsets vector in LikelihoodJob correctly
+
+When `std::copy`ing into a vector, it needs to have the right size
+before. Doing only `std::reserve` is not enough.
+
+Fixes #15730.
+---
+ roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx
+index 85c3d02c02ccf..42d191833d14c 100644
+--- a/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx
++++ b/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx
+@@ -93,7 +93,7 @@ void LikelihoodJob::update_state()
+ assert(!more);
+ auto offsets_message_begin = offsets_message.data<ROOT::Math::KahanSum<double>>();
+ std::size_t N_offsets = offsets_message.size() / sizeof(ROOT::Math::KahanSum<double>);
+- shared_offset_.offsets().reserve(N_offsets);
++ shared_offset_.offsets().resize(N_offsets);
+ auto offsets_message_end = offsets_message_begin + N_offsets;
+ std::copy(offsets_message_begin, offsets_message_end, shared_offset_.offsets().begin());
+ }
diff --git a/root-pcre2.patch b/root-pcre2.patch
deleted file mode 100644
index 359acc2..0000000
--- a/root-pcre2.patch
+++ /dev/null
@@ -1,456 +0,0 @@
-From f89fc640f9ca1b2cccf0dc496b0b7ea434b53fad Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Mon, 2 Oct 2023 09:25:13 +0200
-Subject: [PATCH] Support PCRE2
-
----
- .../pythonizations/test/import_load_libs.py | 1 +
- cmake/modules/FindPCRE2.cmake | 106 ++++++++++++++++++
- cmake/modules/SearchInstalledSoftware.cmake | 17 +--
- core/base/CMakeLists.txt | 9 +-
- core/base/src/TPRegexp.cxx | 99 +++++++++++++++-
- tutorials/legacy/regexp/regexp.C | 6 +-
- 6 files changed, 223 insertions(+), 15 deletions(-)
- create mode 100644 cmake/modules/FindPCRE2.cmake
-
-diff --git a/bindings/pyroot/pythonizations/test/import_load_libs.py b/bindings/pyroot/pythonizations/test/import_load_libs.py
-index 087db7da5c..179c76f6fd 100644
---- a/bindings/pyroot/pythonizations/test/import_load_libs.py
-+++ b/bindings/pyroot/pythonizations/test/import_load_libs.py
-@@ -23,6 +23,7 @@ class ImportLoadLibs(unittest.TestCase):
- 'libc',
- 'libdl',
- 'libpcre',
-+ 'libpcre2-8',
- # libCling and dependencies
- 'libCling.*',
- 'librt',
-diff --git a/cmake/modules/FindPCRE2.cmake b/cmake/modules/FindPCRE2.cmake
-new file mode 100644
-index 0000000000..2417453e8b
---- /dev/null
-+++ b/cmake/modules/FindPCRE2.cmake
-@@ -0,0 +1,106 @@
-+# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers.
-+# All rights reserved.
-+#
-+# For the licensing terms see $ROOTSYS/LICENSE.
-+# For the list of contributors see $ROOTSYS/README/CREDITS.
-+
-+#.rst:
-+# FindPCRE2
-+# --------
-+#
-+# Find PCRE2 library
-+#
-+# Imported Targets
-+# ^^^^^^^^^^^^^^^^
-+#
-+# This module defines :prop_tgt:`IMPORTED` target:
-+#
-+# ``PCRE2::PCRE2``
-+# The pcre2 library, if found.
-+#
-+# Result Variables
-+# ^^^^^^^^^^^^^^^^
-+# This module will set the following variables in your project:
-+#
-+# ``PCRE2_FOUND``
-+# True if PCRE2 has been found.
-+# ``PCRE2_INCLUDE_DIRS``
-+# Where to find pcre2.h
-+# ``PCRE2_LIBRARIES``
-+# The libraries to link against to use PCRE2.
-+# ``PCRE2_VERSION``
-+# The version of the PCRE2 found (e.g. 10.42)
-+#
-+# Obsolete variables
-+# ^^^^^^^^^^^^^^^^^^
-+#
-+# The following variables may also be set, for backwards compatibility:
-+#
-+# ``PCRE2_PCRE2_LIBRARY``
-+# where to find the PCRE2_PCRE2 library.
-+# ``PCRE2_INCLUDE_DIR``
-+# where to find the pcre2.h header (same as PCRE2_INCLUDE_DIRS)
-+#
-+
-+foreach(var PCRE2_FOUND PCRE2_INCLUDE_DIR PCRE2_PCRE2_LIBRARY PCRE2_LIBRARIES)
-+ unset(${var} CACHE)
-+endforeach()
-+
-+find_path(PCRE2_INCLUDE_DIR NAMES pcre2.h PATH_SUFFIXES include)
-+mark_as_advanced(PCRE2_INCLUDE_DIR)
-+
-+if (PCRE2_INCLUDE_DIR AND EXISTS "${PCRE2_INCLUDE_DIR}/pcre2.h")
-+ file(STRINGS "${PCRE2_INCLUDE_DIR}/pcre2.h" PCRE2_H REGEX "^#define PCRE2_(MAJOR|MINOR).*$")
-+ string(REGEX REPLACE "^.*PCRE2_MAJOR[ ]+([0-9]+).*$" "\\1" PCRE2_VERSION_MAJOR "${PCRE2_H}")
-+ string(REGEX REPLACE "^.*PCRE2_MINOR[ ]+([0-9]+).*$" "\\1" PCRE2_VERSION_MINOR "${PCRE2_H}")
-+ set(PCRE2_VERSION "${PCRE2_VERSION_MAJOR}.${PCRE2_VERSION_MINOR}")
-+endif()
-+
-+if(NOT PCRE2_PCRE2_LIBRARY)
-+ find_library(PCRE2_PCRE2_LIBRARY_RELEASE NAMES pcre2-8)
-+ find_library(PCRE2_PCRE2_LIBRARY_DEBUG NAMES pcre2-8${CMAKE_DEBUG_POSTFIX} pcre2-8d)
-+ include(SelectLibraryConfigurations)
-+ select_library_configurations(PCRE2_PCRE2)
-+endif()
-+
-+include(FindPackageHandleStandardArgs)
-+find_package_handle_standard_args(PCRE2
-+ REQUIRED_VARS
-+ PCRE2_INCLUDE_DIR
-+ PCRE2_PCRE2_LIBRARY
-+ VERSION_VAR
-+ PCRE2_VERSION
-+)
-+
-+if(PCRE2_FOUND)
-+ set(PCRE2_INCLUDE_DIRS "${PCRE2_INCLUDE_DIR}")
-+
-+ if (NOT PCRE2_LIBRARIES)
-+ set(PCRE2_LIBRARIES "${PCRE2_PCRE2_LIBRARY}")
-+ endif()
-+
-+ if(NOT TARGET PCRE2::PCRE2)
-+ add_library(PCRE2::PCRE2 UNKNOWN IMPORTED)
-+ set_target_properties(PCRE2::PCRE2 PROPERTIES
-+ INTERFACE_INCLUDE_DIRECTORIES "${PCRE2_INCLUDE_DIRS}")
-+
-+ if(PCRE2_PCRE2_LIBRARY_DEBUG)
-+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY
-+ IMPORTED_CONFIGURATIONS DEBUG)
-+ set_target_properties(PCRE2::PCRE2 PROPERTIES
-+ IMPORTED_LOCATION_DEBUG "${PCRE2_PCRE2_LIBRARY_DEBUG}")
-+ endif()
-+
-+ if(PCRE2_PCRE2_LIBRARY_RELEASE)
-+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY
-+ IMPORTED_CONFIGURATIONS RELEASE)
-+ set_target_properties(PCRE2::PCRE2 PROPERTIES
-+ IMPORTED_LOCATION_RELEASE "${PCRE2_PCRE2_LIBRARY_RELEASE}")
-+ endif()
-+
-+ if(NOT PCRE2_PCRE2_LIBRARY_DEBUG AND NOT PCRE2_PCRE2_LIBRARY_RELEASE)
-+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY
-+ IMPORTED_LOCATION "${PCRE2_PCRE2_LIBRARY}")
-+ endif()
-+ endif()
-+endif()
-diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake
-index 464155fd50..252aa56737 100644
---- a/cmake/modules/SearchInstalledSoftware.cmake
-+++ b/cmake/modules/SearchInstalledSoftware.cmake
-@@ -204,13 +204,16 @@ if(NOT builtin_pcre)
- foreach(suffix FOUND INCLUDE_DIR PCRE_LIBRARY)
- unset(PCRE_${suffix} CACHE)
- endforeach()
-- if(fail-on-missing)
-- find_package(PCRE REQUIRED)
-- else()
-- find_package(PCRE)
-- if(NOT PCRE_FOUND)
-- message(STATUS "PCRE not found. Switching on builtin_pcre option")
-- set(builtin_pcre ON CACHE BOOL "Enabled because PCRE not found (${builtin_pcre_description})" FORCE)
-+ find_package(PCRE2)
-+ if(NOT PCRE2_FOUND)
-+ if(fail-on-missing)
-+ find_package(PCRE REQUIRED)
-+ else()
-+ find_package(PCRE)
-+ if(NOT PCRE_FOUND)
-+ message(STATUS "PCRE not found. Switching on builtin_pcre option")
-+ set(builtin_pcre ON CACHE BOOL "Enabled because PCRE not found (${builtin_pcre_description})" FORCE)
-+ endif()
- endif()
- endif()
- endif()
-diff --git a/core/base/CMakeLists.txt b/core/base/CMakeLists.txt
-index df701fedea..5798c93775 100644
---- a/core/base/CMakeLists.txt
-+++ b/core/base/CMakeLists.txt
-@@ -214,7 +214,14 @@ target_include_directories(Core PUBLIC
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/v7/inc>
- )
-
--target_link_libraries(Core PRIVATE PCRE::PCRE)
-+if(PCRE2_FOUND)
-+ target_link_libraries(Core PRIVATE PCRE2::PCRE2)
-+ set_source_files_properties(src/TPRegexp.cxx
-+ TARGET_DIRECTORY Core
-+ PROPERTIES COMPILE_DEFINITIONS USE_PCRE2)
-+else()
-+ target_link_libraries(Core PRIVATE PCRE::PCRE)
-+endif()
-
- ROOT_INSTALL_HEADERS(${BASE_HEADER_DIRS})
-
-diff --git a/core/base/src/TPRegexp.cxx b/core/base/src/TPRegexp.cxx
-index 949b8cc8e9..d70f3e5b8b 100644
---- a/core/base/src/TPRegexp.cxx
-+++ b/core/base/src/TPRegexp.cxx
-@@ -25,19 +25,36 @@ found at : http://perldoc.perl.org/perlre.html
- #include "TObjString.h"
- #include "TError.h"
-
-+#ifdef USE_PCRE2
-+#ifdef R__WIN32
-+#define PCRE2_STATIC
-+#endif
-+#define PCRE2_CODE_UNIT_WIDTH 8
-+#include <pcre2.h>
-+#define PCRE_CASELESS PCRE2_CASELESS
-+#define PCRE_MULTILINE PCRE2_MULTILINE
-+#define PCRE_DOTALL PCRE2_DOTALL
-+#define PCRE_EXTENDED PCRE2_EXTENDED
-+#define PCRE_ERROR_NOMATCH PCRE2_ERROR_NOMATCH
-+#else
- #ifdef R__WIN32
- #define PCRE_STATIC
- #endif
- #include <pcre.h>
-+#endif
-
- #include <vector>
- #include <stdexcept>
-
- struct PCREPriv_t {
-+#ifdef USE_PCRE2
-+ pcre2_code *fPCRE;
-+ PCREPriv_t() { fPCRE = nullptr; }
-+#else
- pcre *fPCRE;
- pcre_extra *fPCREExtra;
--
- PCREPriv_t() { fPCRE = nullptr; fPCREExtra = nullptr; }
-+#endif
- };
-
-
-@@ -79,10 +96,15 @@ TPRegexp::TPRegexp(const TPRegexp &p)
-
- TPRegexp::~TPRegexp()
- {
-+#ifdef USE_PCRE2
-+ if (fPriv->fPCRE)
-+ pcre2_code_free(fPriv->fPCRE);
-+#else
- if (fPriv->fPCRE)
- pcre_free(fPriv->fPCRE);
- if (fPriv->fPCREExtra)
- pcre_free(fPriv->fPCREExtra);
-+#endif
- delete fPriv;
- }
-
-@@ -93,12 +115,18 @@ TPRegexp &TPRegexp::operator=(const TPRegexp &p)
- {
- if (this != &p) {
- fPattern = p.fPattern;
-+#ifdef USE_PCRE2
-+ if (fPriv->fPCRE)
-+ pcre2_code_free(fPriv->fPCRE);
-+ fPriv->fPCRE = nullptr;
-+#else
- if (fPriv->fPCRE)
- pcre_free(fPriv->fPCRE);
- fPriv->fPCRE = nullptr;
- if (fPriv->fPCREExtra)
- pcre_free(fPriv->fPCREExtra);
- fPriv->fPCREExtra = nullptr;
-+#endif
- fPCREOpts = p.fPCREOpts;
- }
- return *this;
-@@ -197,31 +225,50 @@ TString TPRegexp::GetModifiers() const
-
- void TPRegexp::Compile()
- {
-+#ifdef USE_PCRE2
-+ if (fPriv->fPCRE)
-+ pcre2_code_free(fPriv->fPCRE);
-+#else
- if (fPriv->fPCRE)
- pcre_free(fPriv->fPCRE);
-+#endif
-
- if (fPCREOpts & kPCRE_DEBUG_MSGS)
- Info("Compile", "PREGEX compiling %s", fPattern.Data());
-
-+#ifdef USE_PCRE2
-+ int errcode;
-+ PCRE2_SIZE patIndex;
-+ fPriv->fPCRE = pcre2_compile((PCRE2_SPTR)fPattern.Data(), fPattern.Length(),
-+ fPCREOpts & kPCRE_INTMASK,
-+ &errcode, &patIndex, nullptr);
-+#else
- const char *errstr;
- Int_t patIndex;
- fPriv->fPCRE = pcre_compile(fPattern.Data(), fPCREOpts & kPCRE_INTMASK,
- &errstr, &patIndex, nullptr);
-+#endif
-
- if (!fPriv->fPCRE) {
-+#ifdef USE_PCRE2
-+ PCRE2_UCHAR errstr[256];
-+ pcre2_get_error_message(errcode, errstr, 256);
-+#endif
- if (fgThrowAtCompileError) {
- throw std::runtime_error
- (TString::Format("TPRegexp::Compile() compilation of TPRegexp(%s) failed at: %d because %s",
-- fPattern.Data(), patIndex, errstr).Data());
-+ fPattern.Data(), (int)patIndex, errstr).Data());
- } else {
- Error("Compile", "compilation of TPRegexp(%s) failed at: %d because %s",
-- fPattern.Data(), patIndex, errstr);
-+ fPattern.Data(), (int)patIndex, errstr);
- return;
- }
- }
-
-+#ifndef USE_PCRE2
- if (fPriv->fPCREExtra || (fPCREOpts & kPCRE_OPTIMIZE))
- Optimize();
-+#endif
- }
-
- ////////////////////////////////////////////////////////////////////////////////
-@@ -229,6 +276,7 @@ void TPRegexp::Compile()
-
- void TPRegexp::Optimize()
- {
-+#ifndef USE_PCRE2
- if (fPriv->fPCREExtra)
- pcre_free(fPriv->fPCREExtra);
-
-@@ -243,6 +291,7 @@ void TPRegexp::Optimize()
- Error("Optimize", "Optimization of TPRegexp(%s) failed: %s",
- fPattern.Data(), errstr);
- }
-+#endif
- }
-
- ////////////////////////////////////////////////////////////////////////////////
-@@ -308,21 +357,43 @@ Int_t TPRegexp::MatchInternal(const TString &s, Int_t start,
- Int_t nMaxMatch, TArrayI *pos) const
- {
- Int_t *offVec = new Int_t[3*nMaxMatch];
-+
-+#ifdef USE_PCRE2
-+ pcre2_match_data *match_data;
-+ match_data = pcre2_match_data_create_from_pattern(fPriv->fPCRE, nullptr);
-+ Int_t nrMatch = pcre2_match(fPriv->fPCRE, (PCRE2_SPTR8)s.Data(),
-+ s.Length(), start, 0,
-+ match_data, nullptr);
-+#else
- // pcre_exec allows less options - see pcre_internal.h PUBLIC_EXEC_OPTIONS.
- Int_t nrMatch = pcre_exec(fPriv->fPCRE, fPriv->fPCREExtra, s.Data(),
- s.Length(), start, 0,
- offVec, 3*nMaxMatch);
-+#endif
-
- if (nrMatch == PCRE_ERROR_NOMATCH)
- nrMatch = 0;
- else if (nrMatch <= 0) {
- Error("Match","pcre_exec error = %d", nrMatch);
-+#ifdef USE_PCRE2
-+ pcre2_match_data_free(match_data);
-+#endif
- delete [] offVec;
- return 0;
- }
-
-- if (pos)
-+ if (pos) {
-+#ifdef USE_PCRE2
-+ PCRE2_SIZE *oVec = pcre2_get_ovector_pointer(match_data);
-+ for (int i = 0; i < 2 * nrMatch; ++i)
-+ offVec[i] = oVec[i];
-+#endif
- pos->Set(2*nrMatch, offVec);
-+ }
-+
-+#ifdef USE_PCRE2
-+ pcre2_match_data_free(match_data);
-+#endif
- delete [] offVec;
-
- return nrMatch;
-@@ -404,13 +475,24 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern,
- Int_t offset = start;
- Int_t last = 0;
-
-+#ifdef USE_PCRE2
-+ pcre2_match_data *match_data;
-+ match_data = pcre2_match_data_create_from_pattern(fPriv->fPCRE, nullptr);
-+#endif
-+
- while (kTRUE) {
-
- // find next matching subs
- // pcre_exec allows less options - see pcre_internal.h PUBLIC_EXEC_OPTIONS.
-+#ifdef USE_PCRE2
-+ Int_t nrMatch = pcre2_match(fPriv->fPCRE, (PCRE2_SPTR)s.Data(),
-+ s.Length(), offset, 0,
-+ match_data, nullptr);
-+#else
- Int_t nrMatch = pcre_exec(fPriv->fPCRE, fPriv->fPCREExtra, s.Data(),
- s.Length(), offset, 0,
- offVec, 3*nMaxMatch);
-+#endif
-
- if (nrMatch == PCRE_ERROR_NOMATCH) {
- break;
-@@ -419,6 +501,12 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern,
- break;
- }
-
-+#ifdef USE_PCRE2
-+ PCRE2_SIZE *oVec = pcre2_get_ovector_pointer(match_data);
-+ for (int i = 0; i < 2 * nrMatch; ++i)
-+ offVec[i] = oVec[i];
-+#endif
-+
- // append anything previously unmatched, but not substituted
- if (last <= offVec[0]) {
- fin += s(last,offVec[0]-last);
-@@ -446,6 +534,9 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern,
- }
- }
-
-+#ifdef USE_PCRE2
-+ pcre2_match_data_free(match_data);
-+#endif
- delete [] offVec;
-
- fin += s(last,s.Length()-last);
-diff --git a/tutorials/legacy/regexp/regexp.C b/tutorials/legacy/regexp/regexp.C
-index 995b823bce..f38ed6799e 100644
---- a/tutorials/legacy/regexp/regexp.C
-+++ b/tutorials/legacy/regexp/regexp.C
-@@ -94,11 +94,11 @@ void regexp()
- // criteria:
- // 1) It should be of the form string1@string2 . The "^" and "$" ensure that we compare the complete
- // email string
-- // 2) ([\\w-\\.]+) :
-+ // 2) ([\\w\\-\\.]+) :
- // string1 is only allowed to be composed out of the alphanumeric characters, "-" and "." .
- // The "+" ensures that string1 can not be empty .
- // 3) string2 is matched against three different parts :
-- // a. ((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+)) :
-+ // a. ((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+)) :
- // This regular expression ensures that EITHER the string starts with "[" followed by three groups
- // of numbers, separated by "." , where each group has 1 to 3 numbers, OR alphanumeric strings,
- // possibly containing "-" characters, separated by "." .
-@@ -108,7 +108,7 @@ void regexp()
- // At most one "]" character .
-
- TString s5("fons.rademakers(a)cern.ch");
-- TPRegexp r5("^([\\w-\\.]+)(a)((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
-+ TPRegexp r5("^([\\w\\-\\.]+)(a)((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
- cout << "Check if the email address \"" << s5 << "\" is valid: " << (r5.MatchB(s5) ? "TRUE" : "FALSE") << endl;
-
- // Substitute Example with pattern modifier :
---
-2.41.0
-
diff --git a/root-stress.patch b/root-stress.patch
new file mode 100644
index 0000000..bf7f468
--- /dev/null
+++ b/root-stress.patch
@@ -0,0 +1,32 @@
+From 706c94ca916387287f7459c984d61439e52c1aba Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sun, 2 Jun 2024 06:19:43 +0200
+Subject: [PATCH] Adjust stressGraphics.ref
+
+---
+ test/stressGraphics.ref | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref
+index 37077a2fb9..9d5cd0352d 100644
+--- a/test/stressGraphics.ref
++++ b/test/stressGraphics.ref
+@@ -7,13 +7,13 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN
+ 6 430 50 12669 50 9558 100 5325 700 471 50
+ 7 4980 50 13893 50 16143 1300 12230 500 5011 70
+ 8 5442 80 13473 50 18430 700 12398 300 5469 80
+- 9 9253 100 14377 100 19851 2400 12199 900 9283 100
++ 9 9253 100 14377 150 19851 2400 12199 900 9283 100
+ 10 8863 70 13645 100 24343 1100 23278 1700 8894 70
+ 11 12971 100 14444 50 34063 2000 32033 1200 12864 150
+ 12 7674 100 13533 50 83557 3000 38505 4000 7720 150
+ 13 5600 400 13242 300 16881 400 15063 800 5638 400
+ 14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000
+- 15 15690 5000 17179 200 23076 9500 14232 1000 10437 5000
++ 15 15690 5000 17179 200 23076 9500 14232 1500 10437 5000
+ 16 28072 400 23287 200 44462 11000 30062 5000 38007 400
+ 17 20444 400 21520 150 27511 11000 16867 600 20721 400
+ 18 15894 100 19305 200 27187 10300 15925 350 15925 100
+--
+2.45.1
+
diff --git a/root-use-consistent-wording-in-tmva-test-comments.patch b/root-use-consistent-wording-in-tmva-test-comments.patch
deleted file mode 100644
index 1d3e52a..0000000
--- a/root-use-consistent-wording-in-tmva-test-comments.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From e6928c405fe1647a0ee6ea32543b18ebc3828227 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Thu, 23 Feb 2023 22:10:46 +0100
-Subject: [PATCH] Use consistent wording of the comments in the different TMVA
- classification tests to avoid confusion.
-
----
- tutorials/tmva/TMVA_CNN_Classification.C | 2 +-
- tutorials/tmva/TMVA_CNN_Classification.py | 4 ++--
- tutorials/tmva/TMVA_RNN_Classification.C | 6 ++++--
- tutorials/tmva/TMVA_RNN_Classification.py | 5 +++--
- 4 files changed, 10 insertions(+), 7 deletions(-)
-
-diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C
-index cc6829a24d..db5af784d4 100644
---- a/tutorials/tmva/TMVA_CNN_Classification.C
-+++ b/tutorials/tmva/TMVA_CNN_Classification.C
-@@ -134,7 +134,7 @@ void TMVA_CNN_Classification(int nevts = 1000, std::vector<bool> opt = {1, 1, 1,
-
- bool writeOutputFile = true;
-
-- int num_threads = 4; // use by default 4 threads if value is not set before
-+ int num_threads = 4; // use max 4 threads
- // switch off MT in OpenBLAS to avoid conflict with tbb
- gSystem->Setenv("OMP_NUM_THREADS", "1");
-
-diff --git a/tutorials/tmva/TMVA_CNN_Classification.py b/tutorials/tmva/TMVA_CNN_Classification.py
-index 85fde20763..5d3c6e7220 100644
---- a/tutorials/tmva/TMVA_CNN_Classification.py
-+++ b/tutorials/tmva/TMVA_CNN_Classification.py
-@@ -25,7 +25,7 @@
-
- import ROOT
-
--#switch off MT in OpenMP (BLAS)
-+# switch off MT in OpenBLAS to avoid conflict with tbb
- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1")
-
- TMVA = ROOT.TMVA
-@@ -145,7 +145,7 @@ if not useTMVACNN:
-
- writeOutputFile = True
-
--num_threads = 4 # use default threads
-+num_threads = 4 # use max 4 threads
- max_epochs = 10 # maximum number of epochs used for training
-
-
-diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C
-index 8701ba6c19..d4bb7a4e4a 100644
---- a/tutorials/tmva/TMVA_RNN_Classification.C
-+++ b/tutorials/tmva/TMVA_RNN_Classification.C
-@@ -191,8 +191,10 @@ void TMVA_RNN_Classification(int nevts = 2000, int use_type = 1)
- useKeras = false;
- #endif
-
-- int num_threads = 4; // use by default all threads
-- gSystem->Setenv("OMP_NUM_THREADS", "1"); // switch off MT in OpenBLAS
-+ int num_threads = 4; // use max 4 threads
-+ // switch off MT in OpenBLAS to avoid conflict with tbb
-+ gSystem->Setenv("OMP_NUM_THREADS", "1");
-+
- // do enable MT running
- if (num_threads >= 0) {
- ROOT::EnableImplicitMT(num_threads);
-diff --git a/tutorials/tmva/TMVA_RNN_Classification.py b/tutorials/tmva/TMVA_RNN_Classification.py
-index 625a120b3d..65aa83c070 100644
---- a/tutorials/tmva/TMVA_RNN_Classification.py
-+++ b/tutorials/tmva/TMVA_RNN_Classification.py
-@@ -26,10 +26,11 @@ num_threads = 4 # use max 4 threads
- # do enable MT running
- if ROOT.gSystem.GetFromPipe("root-config --has-imt") == "yes":
- ROOT.EnableImplicitMT(num_threads)
-- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") # switch OFF MT in OpenBLAS
-+ # switch off MT in OpenBLAS to avoid conflict with tbb
-+ ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1")
- print("Running with nthreads = {}".format(ROOT.GetThreadPoolSize()))
- else:
-- print("Running in serail mode since ROOT does not support MT")
-+ print("Running in serial mode since ROOT does not support MT")
-
-
- TMVA = ROOT.TMVA
---
-2.39.2
-
diff --git a/root-write-array.patch b/root-write-array.patch
new file mode 100644
index 0000000..30b5945
--- /dev/null
+++ b/root-write-array.patch
@@ -0,0 +1,125 @@
+From a7be6f726b13a7ccf1c46dec35f53520781159df Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Fri, 7 Jun 2024 06:49:39 +0200
+Subject: [PATCH] Put back check for n = 0
+
+---
+ io/io/src/TBufferFile.cxx | 25 ++++++++++++++++++++++++-
+ 1 file changed, 24 insertions(+), 1 deletion(-)
+
+diff --git a/io/io/src/TBufferFile.cxx b/io/io/src/TBufferFile.cxx
+index 81e0f95e02..b5b7ef9831 100644
+--- a/io/io/src/TBufferFile.cxx
++++ b/io/io/src/TBufferFile.cxx
+@@ -1948,6 +1948,8 @@ void TBufferFile::WriteArrayDouble32(const Double_t *d, Int_t n, TStreamerElemen
+
+ void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(UChar_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -1974,6 +1976,8 @@ void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Char_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -1995,6 +1999,8 @@ void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n)
+
+ void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Char_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2023,6 +2029,8 @@ void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Short_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2054,7 +2062,8 @@ void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n)
+ {
+-
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = 4;
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2086,6 +2095,8 @@ void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = 8;
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2108,6 +2119,8 @@ void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = 8;
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2128,6 +2141,8 @@ void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Long64_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2154,6 +2169,8 @@ void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Float_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2185,6 +2202,8 @@ void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n)
+
+ void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Double_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2212,6 +2231,8 @@ void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n)
+
+ void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerElement *ele)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Float_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+@@ -2270,6 +2291,8 @@ void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerE
+
+ void TBufferFile::WriteFastArrayDouble32(const Double_t *d, Long64_t n, TStreamerElement *ele)
+ {
++ if (n == 0) return;
++
+ constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Float_t));
+ const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
+ if (n < 0 || n > maxElements)
+--
+2.45.2
+
diff --git a/root.spec b/root.spec
index bfe8824..c39adee 100644
--- a/root.spec
+++ b/root.spec
@@ -1,47 +1,16 @@
-# Needed for EPEL 8
-%undefine __cmake_in_source_build
-
# Disable package note flags, since root saves the compiler/linker flags
# used during the build
%undefine _package_note_flags
-%global python3_version_uscore %(tr . _ <<< "%{python3_version}")
-
%global root7 1
-
-%if %{?rhel}%{!?rhel:0} == 8
-%ifarch %{power64}
-# These modules cause "pure virtual method called" errors
-# https://github.com/root-project/root/issues/12372
-%global dataframe 0
-%global roofit 0
-%global tmvasofieparser 0
-%else
%global dataframe 1
%global roofit 1
%global tmvasofieparser 1
-%endif
-%else
-%global dataframe 1
-%global roofit 1
-%global tmvasofieparser 1
-%endif
-
-%if %{?rhel}%{!?rhel:0} == 8
-# DistRDF requires Python 3.8 or later, RHEL 8 has version 3.6
-%global distrdf 0
-%else
%global distrdf %{dataframe}
-%endif
-%if %{?rhel}%{!?rhel:0} == 8
-# Requires nlohmann json version 3.9 or later, RHEL 8 has version 3.6
-%global bundlejson 1
-%else
%global bundlejson 0
-%endif
-%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8
+%if %{?fedora}%{!?fedora:0}
%ifarch %{ix86} %{arm}
%global pandas 0
%else
@@ -55,9 +24,9 @@
%global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$
Name: root
-Version: 6.30.06
+Version: 6.32.00
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 5%{?dist}
+Release: 1%{?dist}
Summary: Numerical data analysis framework
License: LGPL-2.1-or-later
@@ -92,39 +61,33 @@ Patch2: %{name}-dont-install-minicern.patch
Patch3: %{name}-no-export-python-modules.patch
# Run some test on 32 bit that upstream has disabled
Patch4: %{name}-32bit-tests.patch
-# Use local static script and style files for JsMVA
-Patch5: %{name}-jsmva-static.patch
-# Fix test failure on ppc64le and aarch64 with gcc 12
-# https://github.com/root-project/root/pull/9601
-Patch6: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch
-# Byte swap values read from the protobuf raw data stream on
-# big endian architectures
-# https://github.com/root-project/root/pull/10308
-Patch7: %{name}-big-endian-byte-swap.patch
-# https://github.com/root-project/root/pull/12375
-Patch8: %{name}-use-consistent-wording-in-tmva-test-comments.patch
-# https://github.com/root-project/root/pull/10303
-Patch9: %{name}-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch
-# Port to pcre2
-# https://github.com/root-project/root/issues/11395
-# https://github.com/root-project/root/pull/13771
-Patch10: %{name}-pcre2.patch
-# https://github.com/root-project/root/pull/14111
-Patch11: %{name}-avoid-out-of-memory-during-linking.patch
-# https://github.com/root-project/root/pull/14112
-Patch12: %{name}-clad.patch
-Patch13: %{name}-gtest-back.patch
-Patch14: %{name}-np32.patch
-# Adjust tests for zlib-ng
-# https://github.com/root-project/root/pull/14295
-Patch15: %{name}-new-zlib.patch
-# Only for EPEL 8 - disable tests not working with old gtest
-Patch16: %{name}-old-gtest.patch
+# Adjust stress graphics reference
+# https://github.com/root-project/root/pull/15735
+Patch5: %{name}-stress.patch
+# Avoid segmentation fault on ix86
+# https://github.com/root-project/root/issues/15738
+# https://github.com/root-project/root/pull/15780
+Patch6: %{name}-write-array.patch
+# Adjust test limit
+# https://github.com/root-project/root/pull/15734
+Patch7: %{name}-failure-on-ppc64le-and-s390x.patch
+# Correct format warnings seen on 32 bit architectures
+# https://github.com/root-project/root/pull/15732
+Patch8: %{name}-format-warnings-32-bit.patch
+# Out-of-bounds vector access
+# https://github.com/root-project/root/issues/15730
+# https://github.com/root-project/root/pull/15739
+Patch9: %{name}-out-of-bounds.patch
+# Fix one more broken import in JsMVA
+# https://github.com/root-project/root/pull/15752
+Patch10: %{name}-fix-one-more-broken-import-in-JsMVA.patch
BuildRequires: gcc-c++
BuildRequires: gcc-gfortran
BuildRequires: make
-BuildRequires: cmake >= 3.16
+# root on Linux requires cmake 3.16
+# but 3.19 is needed for flexiblas support
+BuildRequires: cmake >= 3.19
BuildRequires: libX11-devel
BuildRequires: libXpm-devel
BuildRequires: libXft-devel
@@ -141,9 +104,10 @@ BuildRequires: xz-devel
BuildRequires: lz4-devel
BuildRequires: xxhash-devel
BuildRequires: libzstd-devel
-# Require a version of libAfterImage that is properly linked to
-# its dependencies
-BuildRequires: libAfterImage-devel >= 1.20-21
+BuildRequires: libtiff-devel
+BuildRequires: libpng-devel
+BuildRequires: giflib-devel
+BuildRequires: libjpeg-devel
BuildRequires: ncurses-devel
BuildRequires: libxml2-devel
BuildRequires: fftw-devel
@@ -155,7 +119,7 @@ BuildRequires: unixODBC-devel
BuildRequires: libGL-devel
BuildRequires: libGLU-devel
BuildRequires: libpq-devel
-BuildRequires: python%{python3_pkgversion}-devel
+BuildRequires: python%{python3_pkgversion}-devel >= 3.7
BuildRequires: python%{python3_pkgversion}-setuptools
BuildRequires: python%{python3_pkgversion}-numpy
%ifarch %{qt5_qtwebengine_arches}
@@ -172,23 +136,17 @@ BuildRequires: desktop-file-utils
BuildRequires: dcap-devel
BuildRequires: xrootd-client-devel >= 1:5.0.0
BuildRequires: cfitsio-devel
-BuildRequires: davix-devel >= 0.6.4
+# Davix version >= 0.6.4, but not between 0.6.8 and 0.7.0
+BuildRequires: davix-devel >= 0.7.1
BuildRequires: R-Rcpp-devel
BuildRequires: R-RInside-devel
BuildRequires: readline-devel
-BuildRequires: tbb-devel >= 2018
+BuildRequires: tbb-devel >= 2020
BuildRequires: libuuid-devel
BuildRequires: graphviz-devel
BuildRequires: expat-devel
BuildRequires: pythia8-devel >= 8.1.80
-%if %{?fedora}%{!?fedora:0} || %{?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)
-BuildRequires: cmake-data >= 3.18.3-1
-%else
-BuildRequires: openblas-devel
-%endif
%if ! %{bundlejson}
BuildRequires: json-devel >= 3.9
%endif
@@ -361,26 +319,6 @@ Obsoletes: %{name}-montecarlo-vmc < 6.26.00
Obsoletes: %{name}-doc < 6.26.00
Obsoletes: %{name}-io-gfal < 6.30.00
Obsoletes: %{name}-roofit-common < 6.30.00
-%if %{?rhel}%{!?rhel:0} == 8
-# Obsolete the DistRDF package in EPEL 8
-# Minimum Python version requirement introduced
-Obsoletes: python%{python3_pkgversion}-distrdf < 6.26.00
-%ifarch %{power64}
-# Obsolete for ppc64le in EPEL 8
-# These modules cause "pure virtual method called" errors
-Obsoletes: %{name}-tree-dataframe < 6.28.00
-Obsoletes: %{name}-roofit < 6.28.00
-Obsoletes: %{name}-roofit-common < 6.28.00
-Obsoletes: %{name}-roofit-core < 6.28.00
-Obsoletes: %{name}-roofit-more < 6.28.00
-Obsoletes: %{name}-roofit-batchcompute < 6.28.00
-Obsoletes: %{name}-roofit-dataframe-helpers < 6.28.00
-Obsoletes: %{name}-roofit-hs3 < 6.28.00
-Obsoletes: %{name}-roostats < 6.28.00
-Obsoletes: %{name}-hist-factory < 6.28.00
-Obsoletes: %{name}-tmva-sofie-parser < 6.28.00
-%endif
-%endif
%description core
This package contains the core libraries used by ROOT: libCore, libNew,
@@ -446,6 +384,9 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release}
Requires: %{name}-tree%{?_isa} = %{version}-%{release}
# Package split (tpython from Python bindings)
Obsoletes: python%{python3_pkgversion}-%{name} < 6.22.00
+# JsMVA python module is now a submodule of ROOT python module
+Provides: python%{python3_pkgversion}-jsmva = %{version}-%{release}
+Obsoletes: python%{python3_pkgversion}-jsmva < 6.32.00
%description -n python%{python3_pkgversion}-%{name}
This package contains the Python extension for ROOT. It makes it
@@ -453,12 +394,18 @@ possible to use ROOT classes in Python.
%package -n python%{python3_pkgversion}-jupyroot
Summary: ROOT Jupyter kernel
+BuildArch: noarch
%py_provides python%{python3_pkgversion}-jupyroot
-Requires: python%{python3_pkgversion}-%{name}%{?_isa} = %{version}-%{release}
-Requires: python%{python3_pkgversion}-jsmva = %{version}-%{release}
-Requires: %{name}-core%{?_isa} = %{version}-%{release}
-Requires: %{name}-notebook = %{version}-%{release}
+Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release}
+Requires: %{name}-core = %{version}-%{release}
+# notebook package was merged with JupyROOT package
+Provides: %{name}-notebook = %{version}-%{release}
+Obsoletes: %{name}-notebook < 6.32.00
+Requires: js-jsroot >= 7.5
%if %{?fedora}%{!?fedora:0}
+# jupyter-notebook not available in RHEL/EPEL
+# some functionality missing
+Requires: jupyter-notebook
# python-metakernel not available in RHEL/EPEL
# some functionality missing
Requires: python%{python3_pkgversion}-ipython
@@ -469,15 +416,6 @@ Requires: python-jupyter-filesystem
%description -n python%{python3_pkgversion}-jupyroot
The Jupyter kernel for the ROOT notebook.
-%package -n python%{python3_pkgversion}-jsmva
-Summary: TMVA interface used by JupyROOT
-BuildArch: noarch
-%py_provides python%{python3_pkgversion}-jsmva
-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
@@ -594,9 +532,6 @@ Requires: %{name}-gui%{?_isa} = %{version}-%{release}
Requires: %{name}-hist%{?_isa} = %{version}-%{release}
Requires: %{name}-io%{?_isa} = %{version}-%{release}
Requires: %{name}-mathcore%{?_isa} = %{version}-%{release}
-# Require a version of libAfterImage that is properly linked to
-# its dependencies
-Requires: libAfterImage >= 1.20-21
%description graf-asimage
This package contains the AfterImage renderer for ROOT, which allows
@@ -1801,20 +1736,6 @@ Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release}
The ROOT command line utilities is a set of scripts for common tasks
written in python.
-%package notebook
-Summary: Static files for the Jupyter ROOT Notebook
-BuildArch: noarch
-Requires: %{name}-core = %{version}-%{release}
-Requires: js-jsroot >= 7.5
-%if %{?fedora}%{!?fedora:0}
-# jupyter-notebook not available in RHEL/EPEL
-# some functionality missing
-Requires: jupyter-notebook
-%endif
-
-%description notebook
-Javascript and style files for the Jupyter ROOT Notebook.
-
%package gui-webdisplay
Summary: Web display for ROOT
Requires: %{name}-core%{?_isa} = %{version}-%{release}
@@ -1994,46 +1915,34 @@ This package contains utility functions for ntuples.
%prep
%setup -q -a 1
-%patch -P 0 -p1
-%patch -P 1 -p1
-%patch -P 2 -p1
-%patch -P 3 -p1
-%patch -P 4 -p1
-%patch -P 5 -p1
-%patch -P 6 -p1
-%patch -P 7 -p1
-%patch -P 8 -p1
-%patch -P 9 -p1
-%patch -P 10 -p1
-%patch -P 11 -p1
-%patch -P 12 -p1
-%patch -P 13 -p1
-%patch -P 14 -p1
-%patch -P 15 -p1
-%if %{?rhel}%{!?rhel:0} == 8
-%patch -P 16 -p1
-%endif
+%patch -P0 -p1
+%patch -P1 -p1
+%patch -P2 -p1
+%patch -P3 -p1
+%patch -P4 -p1
+%patch -P5 -p1
+%patch -P6 -p1
+%patch -P7 -p1
+%patch -P8 -p1
+%patch -P9 -p1
+%patch -P10 -p1
# Remove bundled sources in order to be sure they are not used
# * afterimage
-rm -rf graf2d/asimage/src/libAfterImage
+rm -rf graf2d/asimage/src/libAfterImage/{libjpeg,libpng,libungif,zlib}
+sed '/zlib\/zlib.h/d' -i graf2d/asimage/src/libAfterImage/.depend
# * ftgl
rm -rf graf3d/ftgl/src graf3d/ftgl/inc
# * freetype
rm -rf graf2d/freetype/src
-# * davix, glew, lz4, nlohmann, openssl, pcre, tbb, xxhash, zlib, zstd
-rm -rf builtins/davix
+# * glew, lz4, nlohmann, pcre, xxhash, zlib, zstd
rm -rf builtins/glew
rm -rf builtins/lz4
%if ! %{bundlejson}
rm -rf builtins/nlohmann
%endif
-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
@@ -2053,6 +1962,9 @@ rm -rf js/[^f]* js/files/draw.htm js/files/online.htm
rm etc/notebook/JsMVA/js/*.min.js
rm etc/notebook/JsMVA/css/*.min.css
+# Additional documentation
+install -p -m 644 %{SOURCE7} bindings/jupyroot
+
%build
# This package triggers a fault in LLVM when LTO is enabled. Until LLVM
# is analyzed and fixed, disable LTO
@@ -2070,20 +1982,15 @@ for s in etc/notebook/JsMVA/css/*.css ; do
python3 -m rcssmin < ${s} > ${s%.css}.min.css
done
-# Avoid overlinking (this is the default on Fedora and EPEL 9)
-%if %{?rhel}%{!?rhel:0} == 8
-LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-%endif
-
%cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \
-DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir}/%{name} \
-DCMAKE_INSTALL_PYTHONDIR:PATH=%{python3_sitearch} \
-DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_datadir}/%{name} \
-DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \
- -DPYTHON_EXECUTABLE=%{__python3} \
+ -DPython3_EXECUTABLE=%{__python3} \
-Dgnuinstall:BOOL=ON \
- -Dbuiltin_afterimage:BOOL=OFF \
+ -Dbuiltin_afterimage:BOOL=ON \
-Dbuiltin_cfitsio:BOOL=OFF \
-Dbuiltin_clang:BOOL=ON \
-Dbuiltin_cling:BOOL=ON \
@@ -2129,6 +2036,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dclad:BOOL=OFF \
-Dcocoa:BOOL=OFF \
-Dcuda:BOOL=OFF \
+ -Dcudnn:BOOL=OFF \
-Dcxxmodules:BOOL=OFF \
-Ddaos:BOOL=OFF \
%if %{dataframe}
@@ -2139,7 +2047,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Ddavix:BOOL=ON \
-Ddcache:BOOL=ON \
-Ddev:BOOL=OFF \
- -Dexceptions:BOOL=ON \
-Dfcgi:BOOL=ON \
-Dfftw3:BOOL=ON \
-DFIREFOX_EXECUTABLE:PATH=/usr/bin/firefox \
@@ -2152,20 +2059,15 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}"
-Dlibcxx:BOOL=OFF \
-Dmathmore:BOOL=ON \
-Dmemory_termination:BOOL=OFF \
- -Dminuit2:BOOL=ON \
-Dminuit2_mpi:BOOL=OFF \
-Dminuit2_omp:BOOL=OFF \
- -Dmlp:BOOL=ON \
-Dmpi:BOOL=OFF \
-Dmysql:BOOL=ON \
-Dodbc:BOOL=ON \
-Dopengl:BOOL=ON \
- -Doracle:BOOL=OFF \
-Dpgsql:BOOL=ON \
-Dproof:BOOL=ON \
-Dpyroot:BOOL=ON \
- -Dpyroot-python2:BOOL=OFF \
- -Dpythia6:BOOL=OFF \
-Dpythia8:BOOL=ON \
%ifarch %{qt5_qtwebengine_arches}
-Dqt5web:BOOL=ON \
@@ -2259,9 +2161,6 @@ install -p -m 644 %{SOURCE5} %{buildroot}%{_datadir}/mime/packages
install -p -m 644 %{SOURCE6} \
%{buildroot}%{_datadir}/icons/hicolor/48x48/mimetypes
-# Additional documentation
-install -p -m 644 %{SOURCE7} %{buildroot}%{_pkgdocdir}
-
# Move python cli helper to its own directory
mkdir -p %{buildroot}%{_datadir}/%{name}/cli
mv %{buildroot}%{python3_sitearch}/cmdLineUtils.py \
@@ -2274,43 +2173,37 @@ mv %{buildroot}%{_libdir}/%{name}/*-gdb.py \
%{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name}
# Fix python extension suffix
-mv %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so.%{version} \
- %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix}
-rm %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so.%{libversion}
-rm %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so
-
-mv %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so.%{version} \
- %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix}
-rm %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so.%{libversion}
-rm %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so
+mv %{buildroot}%{python3_sitearch}/libROOTPythonizations.so.%{version} \
+ %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_ext_suffix}
+rm %{buildroot}%{python3_sitearch}/libROOTPythonizations.so.%{libversion}
+rm %{buildroot}%{python3_sitearch}/libROOTPythonizations.so
# Move noarch python modules to sitelib
if [ "%{python3_sitelib}" != "%{python3_sitearch}" ] ; then
mkdir -p %{buildroot}%{python3_sitelib}
-mv %{buildroot}%{python3_sitearch}/JsMVA %{buildroot}%{python3_sitelib}
+mv %{buildroot}%{python3_sitearch}/JupyROOT %{buildroot}%{python3_sitelib}
%if %{distrdf}
mv %{buildroot}%{python3_sitearch}/DistRDF %{buildroot}%{python3_sitelib}
%endif
fi
-# Create .egg-info files so that rpm auto-generates provides
+# Create .dist-info files so that rpm auto-generates provides
+mkdir %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info
echo 'Name: ROOT' > \
- %{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info
+ %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info/METADATA
echo 'Version: %{version}' >> \
- %{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info
+ %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info/METADATA
+mkdir %{buildroot}%{python3_sitelib}/JupyROOT-%{version}.dist-info
echo 'Name: JupyROOT' > \
- %{buildroot}%{python3_sitearch}/JupyROOT-%{version}.egg-info
-echo 'Version: %{version}' >> \
- %{buildroot}%{python3_sitearch}/JupyROOT-%{version}.egg-info
-echo 'Name: JsMVA' > \
- %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info
+ %{buildroot}%{python3_sitelib}/JupyROOT-%{version}.dist-info/METADATA
echo 'Version: %{version}' >> \
- %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info
+ %{buildroot}%{python3_sitelib}/JupyROOT-%{version}.dist-info/METADATA
%if %{distrdf}
+mkdir %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info
echo 'Name: DistRDF' > \
- %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info
+ %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info/METADATA
echo 'Version: %{version}' >> \
- %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info
+ %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info/METADATA
%endif
# Put jupyter stuff in the right places
@@ -2322,7 +2215,7 @@ sed -e 's/ROOT C++/& (Python 3)/' \
-e 's!python[0-9]*\.[0-9]*!%{__python3}!' \
-i %{buildroot}%{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot/kernel.json
sed -e '/^\#!/d' \
- -i %{buildroot}%{python3_sitearch}/JupyROOT/kernel/rootkernel.py
+ -i %{buildroot}%{python3_sitelib}/JupyROOT/kernel/rootkernel.py
rm -rf %{buildroot}%{_datadir}/%{name}/notebook/custom
rm -rf %{buildroot}%{_datadir}/%{name}/notebook/html
@@ -2391,10 +2284,10 @@ pushd %{buildroot}%{_datadir}/%{name}/plugins
%if ! %{root7}
rm TBrowserImp/P030_RWebBrowserImp.C
%endif
-rm TFile/P050_TGFALFile.C
rm TGLManager/P020_TGWin32GLManager.C
rm TGLManager/P030_TGOSXGLManager.C
rm TProofMgr/P010_TXProofMgr.C
+rm TProofMonSender/P010_TProofMonSenderML.C
rm TProofServ/P010_TXProofServ.C
rm TSlave/P010_TXSlave.C
rm TSQLServer/P040_TOracleServer.C
@@ -2516,10 +2409,6 @@ popd
# reads input data over network:
# root://eospublic.cern.ch//eos/opendata/atlas/OutreachDatasets/2020-01-22/
#
-# - tutorial-v7-global_temperatures.cxx
-# reads input data over network
-# http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv
-#
# - tutorial-v7-ntuple-ntpl003_lhcbOpenData
# reads input data over network
# http://root.cern.ch/files/LHCb/lhcb_B2HHH_MagnetUp.root (425 MB)
@@ -2532,6 +2421,10 @@ popd
# reads input data over network
# http://root.cern.ch/files/HiggsTauTauReduced/GluGluToHToTauTau.root (20 MB)
#
+# - tutorial-v7-ntuple-ntpl011_global_temperatures
+# reads input data over network
+# http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv
+#
# - gtest-net-davix-test-RRawFileDavix
# reads input file over network
# http://root.cern.ch/files/davix.test
@@ -2586,10 +2479,10 @@ tutorial-dataframe-df106_HiggsToFourLeptons|\
tutorial-dataframe-df107_SingleTopAnalysis-py|\
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-ntuple-ntpl008_import|\
+tutorial-v7-ntuple-ntpl011_global_temperatures|\
gtest-net-davix-test-RRawFileDavix|\
gtest-net-netxng-test-RRawFileNetXNG|\
gtest-net-netxng-test-TNetXNGFileTest|\
@@ -2607,87 +2500,36 @@ test-webgui-ping"
%if ! %{pandas}
# - test-import-pandas
# - tutorial-dataframe-df026_AsNumpyArrays-py
+# - tutorial-dataframe-df035_RDFFromPandas-py
# - tutorial-roofit-rf409_NumPyPandasToRooFit-py
# Requires the pandas python module not (yet) available in RHEL/EPEL 9
excluded="${excluded}|\
test-import-pandas|\
tutorial-dataframe-df026_AsNumpyArrays-py|\
+tutorial-dataframe-df035_RDFFromPandas-py|\
tutorial-roofit-rf409_NumPyPandasToRooFit-py"
%endif
%ifarch %{ix86}
# - gtest-tree-dataframe-test-dataframe-concurrency
# "There's already an active task arena."
+#
+# - gtest-tree-dataframe-test-dataframe-simple
+# free(): invalid pointer
excluded="${excluded}|\
-gtest-tree-dataframe-test-dataframe-concurrency"
+gtest-tree-dataframe-test-dataframe-concurrency|\
+gtest-tree-dataframe-test-dataframe-simple"
%endif
%ifarch %{power64}
-# PPC64LE specific failures
-# - test-stresshistofit-interpreted
-# - test-stresshistogram-interpreted
-# - test-stressmathcore-interpreted
-#
-# Always timeout (hang?)
-# - test-stressinterpreter
-# - tutorial-unuran-unuranFoamTest
-excluded="${excluded}|\
-test-stresshistofit-interpreted|\
-test-stresshistogram-interpreted|\
-test-stressmathcore-interpreted|\
-test-stressinterpreter|\
-tutorial-unuran-unuranFoamTest"
-
-%if %{?rhel}%{!?rhel:0} == 8
-# Fails on ppc64le since RHEL 8.5 update
-# Exception: Found not whitelisted libraries after importing ROOT:
-# - libpthread-2.28
-# - libm-2.28
-# - libc-2.28
-# - librt-2.28
-# - pyunittests-pyroot-import-load-libs
+# - test-stressgraphics(-interpreted)
+# *** stack smashing detected ***: terminated
#
-# - tutorial-fit-combinedFit(-py)
-# - tutorial-fit-fit2dHist
-# - tutorial-fit-fitCircle
-# - tutorial-fit-line3Dfit
-# - tutorial-math-exampleFunction-py
-# - tutorial-multicore-mt103_fillNtupleFromMultipleThreads
-# - tutorial-multicore-mt201_parallelHistoFill
-# - tutorial-multicore-mt304_fillHistos
-# - tutorial-multicore-mtbb001_fillHistos
-# - tutorial-multicore-mtbb101_fillNtuples
-# - tutorial-multicore-mtbb201_parallelHistoFill
-# - tutorial-rcanvas-*
-# - tutorial-v7-concurrentfill.cxx
-# - tutorial-v7-ntuple-ntpl001_staff
-# - tutorial-v7-ntuple-ntpl002_vector
-# - tutorial-v7-ntuple-ntpl005_introspection
-# - tutorial-v7-ntuple-ntpl006_friends
-# - tutorial-v7-ntuple-ntpl007_mtFill
-# - tutorial-v7-simple.cxx
+# - tutorial-roostats-IntervalExamples-py
+# *** Break *** segmentation violation
excluded="${excluded}|\
-pyunittests-pyroot-import-load-libs|\
-tutorial-fit-combinedFit|\
-tutorial-fit-fit2dHist|\
-tutorial-fit-fitCircle|\
-tutorial-fit-line3Dfit|\
-tutorial-math-exampleFunction-py|\
-tutorial-multicore-mt103_fillNtupleFromMultipleThreads|\
-tutorial-multicore-mt201_parallelHistoFill|\
-tutorial-multicore-mt304_fillHistos|\
-tutorial-multicore-mtbb001_fillHistos|\
-tutorial-multicore-mtbb101_fillNtuples|\
-tutorial-multicore-mtbb201_parallelHistoFill|\
-tutorial-rcanvas|\
-tutorial-v7-concurrentfill.cxx|\
-tutorial-v7-ntuple-ntpl001_staff|\
-tutorial-v7-ntuple-ntpl002_vector|\
-tutorial-v7-ntuple-ntpl005_introspection|\
-tutorial-v7-ntuple-ntpl006_friends|\
-tutorial-v7-ntuple-ntpl007_mtFill|\
-tutorial-v7-simple.cxx"
-%endif
+test-stressgraphics|\
+tutorial-roostats-IntervalExamples-py"
%endif
%ifarch s390x
@@ -2696,19 +2538,21 @@ tutorial-v7-simple.cxx"
excluded="${excluded}|\
gtest-roofit-roofitcore-test-testNaNPacker"
-# - gtest-core-base-test-CoreBaseTests
# - gtest-core-dictgen-test-dictgen-base
-# - gtest-core-meta-test-testTDataType
+# - gtest-tree-dataframe-test-dataframe-unified-constructor
#
# - gtest-tree-dataframe-test-datasource-ntuple
# - gtest-tree-ntuple-v7-test-ntuple-basics
# - gtest-tree-ntuple-v7-test-ntuple-bulk
+# - gtest-tree-ntuple-v7-test-ntuple-compat
# - gtest-tree-ntuple-v7-test-ntuple-endian
# - gtest-tree-ntuple-v7-test-ntuple-extended
# - gtest-tree-ntuple-v7-test-ntuple-friends
+# - gtest-tree-ntuple-v7-test-ntuple-merger
# - gtest-tree-ntuple-v7-test-ntuple-minifile
# - gtest-tree-ntuple-v7-test-ntuple-modelext
# - gtest-tree-ntuple-v7-test-ntuple-packing
+# - gtest-tree-ntuple-v7-test-ntuple-parallel-writer
# - gtest-tree-ntuple-v7-test-ntuple-project
# - gtest-tree-ntuple-v7-test-ntuple-serialize
# - gtest-tree-ntuple-v7-test-ntuple-show
@@ -2716,6 +2560,8 @@ gtest-roofit-roofitcore-test-testNaNPacker"
# - gtest-tree-ntuple-v7-test-ntuple-storage-daos
# - gtest-tree-ntuple-v7-test-ntuple-types
# - gtest-tree-ntuple-v7-test-ntuple-view
+# - gtest-tree-ntuple-v7-test-rfield-class
+# - gtest-tree-ntuple-v7-test-rfield-variant
# - gtest-tree-ntuple-v7-test-rfield-vector
# - gtest-tree-ntupleutil-v7-test-ntuple-importer
# - gtest-tree-ntupleutil-v7-test-ntuple-inspector
@@ -2726,18 +2572,9 @@ gtest-roofit-roofitcore-test-testNaNPacker"
# - pyunittests-pyroot-pyz-stl-vector
# - tutorial-dataframe-df006_ranges-py
# - tutorial-fit-combinedFit-py
-# - tutorial-fit-fitcont
# - tutorial-fit-NumericalMinimization-py
# - tutorial-math-exampleFunction-py
# - tutorial-rcanvas-rbox-py
-# - tutorial-roofit-rf108_plotbinning-py
-# - tutorial-roofit-rf306_condpereventerrors-py
-# - tutorial-roofit-rf307_fullpereventerrors-py
-# - tutorial-roofit-rf310_sliceplot-py
-# - tutorial-roofit-rf708_bphysics-py
-# - tutorial-tmva-TMVA_CNN_Classification-py
-# - tutorial-tmva-TMVA_Higgs_Classification-py
-# - tutorial-tmva-TMVA_RNN_Classification-py
# https://github.com/root-project/root/issues/12429
#
# - tutorial-tree-drawsparse
@@ -2748,18 +2585,20 @@ gtest-roofit-roofitcore-test-testNaNPacker"
# - test-stresshistogram
# - test-stresshistogram-interpreted
excluded="${excluded}|\
-gtest-core-base-test-CoreBaseTests|\
gtest-core-dictgen-test-dictgen-base|\
-gtest-core-meta-test-testTDataType|\
+gtest-tree-dataframe-test-dataframe-unified-constructor|\
gtest-tree-dataframe-test-datasource-ntuple|\
gtest-tree-ntuple-v7-test-ntuple-basics|\
gtest-tree-ntuple-v7-test-ntuple-bulk|\
+gtest-tree-ntuple-v7-test-ntuple-compat|\
gtest-tree-ntuple-v7-test-ntuple-endian|\
gtest-tree-ntuple-v7-test-ntuple-extended|\
gtest-tree-ntuple-v7-test-ntuple-friends|\
+gtest-tree-ntuple-v7-test-ntuple-merger|\
gtest-tree-ntuple-v7-test-ntuple-minifile|\
gtest-tree-ntuple-v7-test-ntuple-modelext|\
gtest-tree-ntuple-v7-test-ntuple-packing|\
+gtest-tree-ntuple-v7-test-ntuple-parallel-writer|\
gtest-tree-ntuple-v7-test-ntuple-project|\
gtest-tree-ntuple-v7-test-ntuple-serialize|\
gtest-tree-ntuple-v7-test-ntuple-show|\
@@ -2767,6 +2606,8 @@ gtest-tree-ntuple-v7-test-ntuple-storage|\
gtest-tree-ntuple-v7-test-ntuple-storage-daos|\
gtest-tree-ntuple-v7-test-ntuple-types|\
gtest-tree-ntuple-v7-test-ntuple-view|\
+gtest-tree-ntuple-v7-test-rfield-class|\
+gtest-tree-ntuple-v7-test-rfield-variant|\
gtest-tree-ntuple-v7-test-rfield-vector|\
gtest-tree-ntupleutil-v7-test-ntuple-importer|\
gtest-tree-ntupleutil-v7-test-ntuple-inspector|\
@@ -2775,36 +2616,14 @@ pyunittests-pyroot-pyz-rtensor|\
pyunittests-pyroot-pyz-stl-vector|\
tutorial-dataframe-df006_ranges-py|\
tutorial-fit-combinedFit-py|\
-tutorial-fit-fitcont|\
tutorial-fit-NumericalMinimization-py|\
tutorial-math-exampleFunction-py|\
tutorial-rcanvas-rbox-py|\
-tutorial-roofit-rf108_plotbinning-py|\
-tutorial-roofit-rf306_condpereventerrors-py|\
-tutorial-roofit-rf307_fullpereventerrors-py|\
-tutorial-roofit-rf310_sliceplot-py|\
-tutorial-roofit-rf708_bphysics-py|\
-tutorial-tmva-TMVA_CNN_Classification-py|\
-tutorial-tmva-TMVA_Higgs_Classification-py|\
-tutorial-tmva-TMVA_RNN_Classification-py|\
tutorial-tree-drawsparse|\
test-stresshistofit\$\$|\
test-stresshistofit-interpreted|\
test-stresshistogram\$\$|\
test-stresshistogram-interpreted"
-
-%if %{?rhel}%{!?rhel:0} == 8
-# Issues with file sizes on EPEL 8 s390x
-# - gtest-tree-readspeed-test-readspeed-general
-# - gtest-tree-tree-test-testTBranch
-# - test-stress
-# - test-stressgraphics(-interpreted)
-excluded="${excluded}|\
-gtest-tree-readspeed-test-readspeed-general|\
-gtest-tree-tree-test-testTBranch|\
-test-stress\$\$|\
-test-stressgraphics"
-%endif
%endif
%if %{?fedora}%{!?fedora:0} >= 40
@@ -2818,15 +2637,21 @@ gtest-math-matrix-test-testMatrixTSparse"
%endif
# Filter out parts of tests that require remote network access
+# RNTuple.StdAtomic fails on ix86 (different alignment 64 bit (non)atomic)
# TClingDataMemberInfo.Offset fails on s390x
# https://github.com/root-project/root/issues/14512
GTEST_FILTER=-\
+%ifarch %{ix86}
+RNTuple.StdAtomic:\
+%endif
%ifarch s390x
TClingDataMemberInfo.Offset:\
%endif
RCsvDS.Remote:\
+RNTuple.OpenHTTP:\
RRawFile.Remote:\
RSqliteDS.Davix:\
+TChainParsing.DoubleSlash:\
TChainParsing.RemoteGlob:\
TFile.ReadWithoutGlobalRegistrationNet:\
TFile.ReadWithoutGlobalRegistrationWeb \
@@ -2859,38 +2684,36 @@ if [ -r /var/lib/alternatives/libPyROOT.so ] ; then
done
fi
-%post notebook
+%post -n python%{python3_pkgversion}-jupyroot
mkdir -p /etc/jupyter
if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then
- sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py
+ sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py
fi
cat << EOF >> /etc/jupyter/jupyter_notebook_config.py
-# Extra static path for JupyROOT - start - do not remove this line
+# Extra static paths for JupyROOT - start - do not remove this line
c.NotebookApp.extra_static_paths.append('%{_jsdir}/jsroot')
-c.NotebookApp.extra_static_paths.append('%{_datadir}/%{name}/notebook')
-# Extra static path for JupyROOT - end - do not remove this line
+# Extra static paths for JupyROOT - end - do not remove this line
EOF
if [ -e /etc/jupyter/jupyter_server_config.py ] ; then
- sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py
+ sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py
fi
cat << EOF >> /etc/jupyter/jupyter_server_config.py
-# Extra static path for JupyROOT - start - do not remove this line
+# Extra static paths for JupyROOT - start - do not remove this line
c.ServerApp.extra_static_paths.append('%{_jsdir}/jsroot')
-c.ServerApp.extra_static_paths.append('%{_datadir}/%{name}/notebook')
-# Extra static path for JupyROOT - end - do not remove this line
+# Extra static paths for JupyROOT - end - do not remove this line
EOF
-%postun notebook
+%postun -n python%{python3_pkgversion}-jupyroot
if [ $1 -eq 0 ] ; then
if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then
- sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py
+ sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py
if [ ! -s /etc/jupyter/jupyter_notebook_config.py ] ; then
rm /etc/jupyter/jupyter_notebook_config.py
rmdir /etc/jupyter 2>/dev/null || :
fi
fi
if [ -e /etc/jupyter/jupyter_server_config.py ] ; then
- sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py
+ sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py
if [ ! -s /etc/jupyter/jupyter_server_config.py ] ; then
rm /etc/jupyter/jupyter_server_config.py
rmdir /etc/jupyter 2>/dev/null || :
@@ -3016,29 +2839,27 @@ fi
%{python3_sitearch}/cppyy
%{python3_sitearch}/cppyy_backend
%{python3_sitearch}/ROOT
-%{python3_sitearch}/ROOT-*.egg-info
-%{python3_sitearch}/libcppyy%{python3_version_uscore}.so
-%{python3_sitearch}/libcppyy_backend%{python3_version_uscore}.so
-%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix}
-%{_libdir}/%{name}/libcppyy%{python3_version_uscore}.*
-%{_libdir}/%{name}/libcppyy_backend%{python3_version_uscore}.*
+%{python3_sitearch}/ROOT-*.dist-info
+%{python3_sitearch}/libcppyy.so
+%{python3_sitearch}/libcppyy_backend.so
+%{python3_sitearch}/libROOTPythonizations%{python3_ext_suffix}
+%{_libdir}/%{name}/libcppyy.*
+%{_libdir}/%{name}/libcppyy_backend.*
%dir %{_includedir}/%{name}/CPyCppyy
%files -n python%{python3_pkgversion}-jupyroot
-%{python3_sitearch}/JupyROOT
-%{python3_sitearch}/JupyROOT-*.egg-info
-%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix}
+%{python3_sitelib}/JupyROOT
+%{python3_sitelib}/JupyROOT-*.dist-info
%{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot
+%{_bindir}/rootnb.exe
+%{_datadir}/%{name}/notebook
%doc bindings/jupyroot/README.md
-
-%files -n python%{python3_pkgversion}-jsmva
-%{python3_sitelib}/JsMVA
-%{python3_sitelib}/JsMVA-*.egg-info
+%doc bindings/jupyroot/JupyROOT-on-EPEL
%if %{distrdf}
%files -n python%{python3_pkgversion}-distrdf
%{python3_sitelib}/DistRDF
-%{python3_sitelib}/DistRDF-*.egg-info
+%{python3_sitelib}/DistRDF-*.dist-info
%endif
%files r -f includelist-bindings-r
@@ -3433,7 +3254,6 @@ fi
%{_libdir}/%{name}/libProofDraw_rdict.pcm
%{_libdir}/%{name}/libProofPlayer.*
%{_libdir}/%{name}/libProofPlayer_rdict.pcm
-%{_datadir}/%{name}/plugins/TProofMonSender/P010_TProofMonSenderML.C
%{_datadir}/%{name}/plugins/TProofMonSender/P020_TProofMonSenderSQL.C
%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P010_TProofPlayer.C
%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P020_TProofPlayerRemote.C
@@ -3554,33 +3374,30 @@ fi
%dir %{_includedir}/%{name}/TMVA/DNN/CNN
%dir %{_includedir}/%{name}/TMVA/DNN/RNN
%license tmva/doc/LICENSE
+%exclude %{_includedir}/%{name}/TMVA/RBatchGenerator.hxx
+%exclude %{_includedir}/%{name}/TMVA/RBatchLoader.hxx
%exclude %{_includedir}/%{name}/TMVA/RBDT.hxx
+%exclude %{_includedir}/%{name}/TMVA/RChunkLoader.hxx
%exclude %{_includedir}/%{name}/TMVA/RInferenceUtils.hxx
%exclude %{_includedir}/%{name}/TMVA/RReader.hxx
%exclude %{_includedir}/%{name}/TMVA/RSofieReader.hxx
%exclude %{_includedir}/%{name}/TMVA/RStandardScaler.hxx
%exclude %{_includedir}/%{name}/TMVA/RTensorUtils.hxx
-%exclude %{_includedir}/%{name}/TMVA/TreeInference/BranchlessTree.hxx
-%exclude %{_includedir}/%{name}/TMVA/TreeInference/Forest.hxx
-%exclude %{_includedir}/%{name}/TMVA/TreeInference/Objectives.hxx
-%exclude %{_includedir}/%{name}/TMVA/TreeInference/PythonHelpers.hxx
%if %{dataframe}
%files tmva-utils
%{_libdir}/%{name}/libTMVAUtils.*
%{_libdir}/%{name}/libTMVAUtils_rdict.pcm
%dir %{_includedir}/%{name}/TMVA
-%dir %{_includedir}/%{name}/TMVA/TreeInference
+%{_includedir}/%{name}/TMVA/RBatchGenerator.hxx
+%{_includedir}/%{name}/TMVA/RBatchLoader.hxx
%{_includedir}/%{name}/TMVA/RBDT.hxx
+%{_includedir}/%{name}/TMVA/RChunkLoader.hxx
%{_includedir}/%{name}/TMVA/RInferenceUtils.hxx
%{_includedir}/%{name}/TMVA/RReader.hxx
%{_includedir}/%{name}/TMVA/RSofieReader.hxx
%{_includedir}/%{name}/TMVA/RStandardScaler.hxx
%{_includedir}/%{name}/TMVA/RTensorUtils.hxx
-%{_includedir}/%{name}/TMVA/TreeInference/BranchlessTree.hxx
-%{_includedir}/%{name}/TMVA/TreeInference/Forest.hxx
-%{_includedir}/%{name}/TMVA/TreeInference/Objectives.hxx
-%{_includedir}/%{name}/TMVA/TreeInference/PythonHelpers.hxx
%endif
%files tmva-python -f includelist-tmva-pymva
@@ -3650,14 +3467,10 @@ fi
%{_bindir}/rootslimtree
%{_datadir}/%{name}/cli
-%files notebook
-%{_bindir}/rootnb.exe
-%{_datadir}/%{name}/notebook
-%doc %{_pkgdocdir}/JupyROOT-on-EPEL
-
%files gui-webdisplay -f includelist-gui-webdisplay
%{_libdir}/%{name}/libROOTWebDisplay.*
%{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm
+%{_datadir}/%{name}/runfirefox.sh
%{_datadir}/%{name}/ui5
%ifarch %{qt5_qtwebengine_arches}
@@ -3744,6 +3557,14 @@ fi
%endif
%changelog
+* Mon Jun 03 2024 Mattias Ellert <ellert(a)ellert.se> - 6.32.00-1
+- Update to 6.32.00
+- Drop EPEL 8 build (now requires Python >= 3.7 ans tbb >= 2020)
+- Dropped patches: 12
+- New patches: 6
+- The JsMVA python module is now a submodule of the ROOT python module
+- The notebook package was merged with the JupyROOT package
+
* Wed May 15 2024 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.30.06-5
- Rebuilt for libarrow.so.1601
- Improved fontconfig support
diff --git a/sources b/sources
index 755c137..a8ec13f 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (root-6.30.06.tar.xz) = 10309321a8e803f1ea2019a4d8ddde6220b052ddfa1ed7dedd432201db5917da748e944b2323794317251fd0d70048b276ad7bed6e3fcd84835de7be88b4c420
+SHA512 (root-6.32.00.tar.xz) = 4b1015684b79aa352edd42316a3a87ae48f4330a7566230349f0a5c4e3ff49cddca79b5171128300d88575dfe2503ab1357cb3bd99d2c2a78985cc9aabd742f6
SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f
commit 4d9bac38913ea0c73ef57610b910aa09bd579004
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Wed May 15 12:58:24 2024 +0200
Rebuilt for libarrow.so.1601
Improved fontconfig support
diff --git a/root-fontconfig.patch b/root-fontconfig.patch
index e8ad108..d0f38b1 100644
--- a/root-fontconfig.patch
+++ b/root-fontconfig.patch
@@ -1,7 +1,28 @@
-diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base/src/TApplication.cxx
---- root-6.28.00.orig/core/base/src/TApplication.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/core/base/src/TApplication.cxx 2023-02-04 12:47:19.757759982 +0100
-@@ -251,18 +251,11 @@
+From c5f13cb25c3b803346d1a6cac483badbcf2ced62 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sat, 11 May 2024 20:09:47 +0200
+Subject: [PATCH] Use system fonts via fontconfig
+
+---
+ core/base/src/TApplication.cxx | 11 +-
+ graf2d/asimage/CMakeLists.txt | 1 +
+ graf2d/asimage/src/TASImage.cxx | 91 +++++++-
+ graf2d/graf/CMakeLists.txt | 1 +
+ graf2d/graf/inc/TTF.h | 3 +-
+ graf2d/graf/src/TTF.cxx | 291 +++++++++++++++++---------
+ graf2d/postscript/CMakeLists.txt | 1 +
+ graf2d/postscript/src/TPostScript.cxx | 106 +++++-----
+ graf3d/gl/CMakeLists.txt | 1 +
+ graf3d/gl/src/TGLFontManager.cxx | 123 ++++++++++-
+ graf3d/gl/src/TGLText.cxx | 56 +++--
+ gui/gui/src/TGApplication.cxx | 10 +-
+ 12 files changed, 494 insertions(+), 201 deletions(-)
+
+diff --git a/core/base/src/TApplication.cxx b/core/base/src/TApplication.cxx
+index 992713264a..32bfc0bbb9 100644
+--- a/core/base/src/TApplication.cxx
++++ b/core/base/src/TApplication.cxx
+@@ -251,18 +251,12 @@ void TApplication::InitializeGraphics(Bool_t only_web)
LoadGraphicsLibs();
// Try to load TrueType font renderer. Only try to load if not in batch
@@ -14,7 +35,7 @@ diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base
- // Check for use of DFSG - fonts
- if (!ttfont)
- ttfont = gSystem->Which(ttpath, "FreeSansBold.ttf", kReadPermission);
--
+
#if !defined(R__WIN32)
if (!gROOT->IsBatch() && !strcmp(gVirtualX->GetName(), "X11") &&
- ttfont && gEnv->GetValue("Root.UseTTFonts", 1)) {
@@ -22,7 +43,7 @@ diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base
if (gClassTable->GetDict("TGX11TTF")) {
// in principle we should not have linked anything against libGX11TTF
// but with ACLiC this can happen, initialize TGX11TTF by hand
-@@ -276,7 +269,6 @@
+@@ -276,7 +270,6 @@ void TApplication::InitializeGraphics(Bool_t only_web)
}
}
#endif
@@ -30,10 +51,11 @@ diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base
}
if (!only_web || !fAppImp) {
-diff -ur root-6.28.00.orig/graf2d/asimage/CMakeLists.txt root-6.28.00/graf2d/asimage/CMakeLists.txt
---- root-6.28.00.orig/graf2d/asimage/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/asimage/CMakeLists.txt 2023-02-04 12:47:19.757759982 +0100
-@@ -30,6 +30,7 @@
+diff --git a/graf2d/asimage/CMakeLists.txt b/graf2d/asimage/CMakeLists.txt
+index 31114ad45d..be95419491 100644
+--- a/graf2d/asimage/CMakeLists.txt
++++ b/graf2d/asimage/CMakeLists.txt
+@@ -30,6 +30,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ASImage
${FREETYPE_LIBRARIES}
${X11_LIBRARIES}
ZLIB::ZLIB
@@ -41,10 +63,11 @@ diff -ur root-6.28.00.orig/graf2d/asimage/CMakeLists.txt root-6.28.00/graf2d/asi
DEPENDENCIES
Core
Graf
-diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/asimage/src/TASImage.cxx
---- root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/asimage/src/TASImage.cxx 2023-02-04 12:47:19.760759989 +0100
-@@ -115,6 +115,8 @@
+diff --git a/graf2d/asimage/src/TASImage.cxx b/graf2d/asimage/src/TASImage.cxx
+index 7e046f4724..137265bd4a 100644
+--- a/graf2d/asimage/src/TASImage.cxx
++++ b/graf2d/asimage/src/TASImage.cxx
+@@ -117,6 +117,8 @@ extern "C" {
# include <draw.h>
}
@@ -53,135 +76,101 @@ diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/a
// auxiliary functions for general polygon filling
#include "TASPolyUtils.c"
-@@ -2590,14 +2592,120 @@
- TString fn = font_name;
- fn.Strip();
+@@ -2595,11 +2597,88 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size,
+ // This is for backward compatibility...
+ if (fn.Last('/') == 0) fn = fn(1, fn.Length() - 1);
-- // This is for backward compatibility...
-- if (fn.Last('/') == 0) fn = fn(1, fn.Length() - 1);
+- const char *ttpath = gEnv->GetValue("Root.TTFontPath",
+- TROOT::GetTTFFontDir());
+- char *tmpstr = gSystem->Which(ttpath, fn, kReadPermission);
+- fn = tmpstr;
+- delete [] tmpstr;
+ const char *basename = gSystem->BaseName(fn);
+
-+ char *ttfnt = nullptr;
+ int ttindex = 0;
+
-+ FcPattern *pat, *match;
++ FcPattern *pat = nullptr, *match;
+ FcResult result;
+
-+ pat = FcPatternCreate ();
-+
+ if (strcmp(basename, "timesi.ttf") == 0 ||
+ strcmp(basename, "FreeSerifItalic.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "freeserif:italic");
+ }
+ else if (strcmp(basename, "timesbd.ttf") == 0 ||
+ strcmp(basename, "FreeSerifBold.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "freeserif:bold");
+ }
+ else if (strcmp(basename, "timesbi.ttf") == 0 ||
+ strcmp(basename, "FreeSerifBoldItalic.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "freeserif:bold:italic");
+ }
+ else if (strcmp(basename, "arial.ttf") == 0 ||
+ strcmp(basename, "FreeSans.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "freesans");
+ }
+ else if (strcmp(basename, "ariali.ttf") == 0 ||
+ strcmp(basename, "FreeSansOblique.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "freesans:italic");
+ }
+ else if (strcmp(basename, "arialbd.ttf") == 0 ||
+ strcmp(basename, "FreeSansBold.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "freesans:bold");
+ }
+ else if (strcmp(basename, "arialbi.ttf") == 0 ||
+ strcmp(basename, "FreeSansBoldOblique.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "freesans:bold:italic");
+ }
+ else if (strcmp(basename, "cour.ttf") == 0 ||
+ strcmp(basename, "FreeMono.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "freemono");
+ }
+ else if (strcmp(basename, "couri.ttf") == 0 ||
+ strcmp(basename, "FreeMonoOblique.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "freemono:italic");
+ }
+ else if (strcmp(basename, "courbd.ttf") == 0 ||
+ strcmp(basename, "FreeMonoBold.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "freemono:bold");
+ }
+ else if (strcmp(basename, "courbi.ttf") == 0 ||
+ strcmp(basename, "FreeMonoBoldOblique.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "freemono:bold:italic");
+ }
+ else if (strcmp(basename, "symbol.ttf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "standardsymbolsps");
+ }
+ else if (strcmp(basename, "times.ttf") == 0 ||
+ strcmp(basename, "FreeSerif.otf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "freeserif");
+ }
+ else if (strcmp(basename, "wingding.ttf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ pat = FcNameParse ((const FcChar8*) "dingbats");
+ }
+ else if (strcmp(basename, "BlackChancery.ttf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"urwchanceryl");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ pat = FcNameParse ((const FcChar8*) "urwchanceryl");
+ }
-+ else {
-+ Warning("DrawText", "cannot find a font %s", font_name);
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ else if (gSystem->AccessPathName(fn, kReadPermission) != 0) {
++ // Font name is not a file - usae as pattern
++ pat = FcNameParse ((const FcChar8*) fn.Data());
+ }
+
-+ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
-+ FcDefaultSubstitute (pat);
-+ match = FcFontMatch (nullptr, pat, &result);
-+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt);
-+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex);
-
-- const char *ttpath = gEnv->GetValue("Root.TTFontPath",
-- TROOT::GetTTFFontDir());
-- char *tmpstr = gSystem->Which(ttpath, fn, kReadPermission);
-- fn = tmpstr;
-- delete [] tmpstr;
-+ fn = ttfnt;
-+
-+ FcPatternDestroy (match);
-+ FcPatternDestroy (pat);
++ if (pat) {
++ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
++ FcDefaultSubstitute (pat);
++ match = FcFontMatch (nullptr, pat, &result);
++ if (match) {
++ char *ttfnt;
++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfnt);
++ fn = ttfnt;
++ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex);
++ FcPatternDestroy (match);
++ }
++ FcPatternDestroy (pat);
++ }
if (fn.EndsWith(".pfa") || fn.EndsWith(".PFA") || fn.EndsWith(".pfb") || fn.EndsWith(".PFB") || fn.EndsWith(".ttf") || fn.EndsWith(".TTF") || fn.EndsWith(".otf") || fn.EndsWith(".OTF")) {
ttfont = kTRUE;
-@@ -2621,14 +2729,11 @@
+@@ -2623,7 +2702,7 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size,
return;
}
@@ -189,20 +178,12 @@ diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/a
+ ASFont *font = get_asfont(gFontManager, fn.Data(), ttindex, size, ASF_GuessWho);
if (!font) {
-- font = get_asfont(gFontManager, "fixed", 0, size, ASF_GuessWho);
-- if (!font) {
-- Warning("DrawText", "cannot find a font %s", font_name);
-- return;
-- }
-+ Warning("DrawText", "cannot find a font %s", font_name);
-+ return;
- }
-
- get_text_size(text, font, (ASText3DType)type, &width, &height);
-diff -ur root-6.28.00.orig/graf2d/graf/CMakeLists.txt root-6.28.00/graf2d/graf/CMakeLists.txt
---- root-6.28.00.orig/graf2d/graf/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/graf/CMakeLists.txt 2023-02-04 12:47:19.861760233 +0100
-@@ -91,6 +91,7 @@
+ font = get_asfont(gFontManager, "fixed", 0, size, ASF_GuessWho);
+diff --git a/graf2d/graf/CMakeLists.txt b/graf2d/graf/CMakeLists.txt
+index d7d1b77c21..c4ebb994a4 100644
+--- a/graf2d/graf/CMakeLists.txt
++++ b/graf2d/graf/CMakeLists.txt
+@@ -91,6 +91,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Graf
${FREETYPE_LIBRARIES}
ZLIB::ZLIB
mathtext
@@ -210,24 +191,27 @@ diff -ur root-6.28.00.orig/graf2d/graf/CMakeLists.txt root-6.28.00/graf2d/graf/C
DEPENDENCIES
Hist
Matrix
-diff -ur root-6.28.00.orig/graf2d/graf/inc/TTF.h root-6.28.00/graf2d/graf/inc/TTF.h
---- root-6.28.00.orig/graf2d/graf/inc/TTF.h 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/graf/inc/TTF.h 2023-02-04 12:47:19.862760235 +0100
-@@ -76,9 +76,8 @@
+diff --git a/graf2d/graf/inc/TTF.h b/graf2d/graf/inc/TTF.h
+index 0bef9dcb95..ea96fe47ce 100644
+--- a/graf2d/graf/inc/TTF.h
++++ b/graf2d/graf/inc/TTF.h
+@@ -76,9 +76,10 @@ protected:
static FT_BBox fgCBox; ///< string control box
static FT_CharMap fgCharMap[kTTMaxFonts]; ///< font character map
static Int_t fgCurFontIdx; ///< current font index
- static Int_t fgSymbItaFontIdx; ///< Symbol italic font index
static Int_t fgFontCount; ///< number of fonts loaded
-- static char *fgFontName[kTTMaxFonts]; ///< font name
-+ static Int_t fgFontID[kTTMaxFonts]; ///< font ID
+ static char *fgFontName[kTTMaxFonts]; ///< font name
++ static Int_t fgFontIdx[kTTMaxFonts]; ///< font index in font file
++ static Int_t fgFontIta[kTTMaxFonts]; ///< font slanted using transform
static FT_Face fgFace[kTTMaxFonts]; ///< font face
static TTF::TTGlyph fgGlyphs[kMaxGlyphs]; ///< glyphs
static Bool_t fgHinting; ///< use hinting (true by default)
-diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/TTF.cxx
---- root-6.28.00.orig/graf2d/graf/src/TTF.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/graf/src/TTF.cxx 2023-02-04 12:47:19.863760238 +0100
-@@ -25,6 +25,8 @@
+diff --git a/graf2d/graf/src/TTF.cxx b/graf2d/graf/src/TTF.cxx
+index ca38ed1f9c..8f1d62686b 100644
+--- a/graf2d/graf/src/TTF.cxx
++++ b/graf2d/graf/src/TTF.cxx
+@@ -25,6 +25,8 @@ Interface to the freetype 2 library.
#include "TMath.h"
#include "TError.h"
@@ -236,19 +220,20 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
// to scale fonts to the same size as the old TT version
const Float_t kScale = 0.93376068;
-@@ -38,10 +40,9 @@
+@@ -38,10 +40,11 @@ Int_t TTF::fgTBlankW = 0;
Int_t TTF::fgWidth = 0;
Int_t TTF::fgAscent = 0;
Int_t TTF::fgCurFontIdx = -1;
-Int_t TTF::fgSymbItaFontIdx = -1;
Int_t TTF::fgFontCount = 0;
Int_t TTF::fgNumGlyphs = 0;
--char *TTF::fgFontName[kTTMaxFonts];
-+Int_t TTF::fgFontID[kTTMaxFonts];
+ char *TTF::fgFontName[kTTMaxFonts];
++Int_t TTF::fgFontIdx[kTTMaxFonts];
++Int_t TTF::fgFontIta[kTTMaxFonts];
FT_Matrix *TTF::fgRotMatrix = nullptr;
FT_Library TTF::fgLibrary;
FT_BBox TTF::fgCBox;
-@@ -72,6 +73,11 @@
+@@ -72,6 +75,11 @@ void TTF::Init()
return;
}
@@ -260,180 +245,159 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
// load default font (arialbd)
SetTextFont(62);
}
-@@ -84,7 +90,6 @@
- if (!fgInit) return;
-
- for (int i = 0; i < fgFontCount; i++) {
-- delete [] fgFontName[i];
- FT_Done_Face(fgFace[i]);
- }
- if (fgRotMatrix) delete fgRotMatrix;
-@@ -109,12 +114,22 @@
+@@ -109,12 +117,15 @@ Short_t TTF::CharToUnicode(UInt_t code)
charmap = fgFace[fgCurFontIdx]->charmaps[i];
platform = charmap->platform_id;
encoding = charmap->encoding_id;
- if ((platform == 3 && encoding == 1) ||
+ if ((platform == 3 && encoding == 1 &&
-+ (fgFontID[fgCurFontIdx] != 12 &&
-+ fgFontID[fgCurFontIdx] != 14 &&
-+ fgFontID[fgCurFontIdx] != 15)) ||
++ (fgFontIta[fgCurFontIdx] & 2) == 0) ||
(platform == 0 && encoding == 0) ||
+ (platform == 7 && encoding == 2 &&
-+ (fgFontID[fgCurFontIdx] == 12 ||
-+ fgFontID[fgCurFontIdx] == 14 ||
-+ fgFontID[fgCurFontIdx] == 15)) ||
++ (fgFontIta[fgCurFontIdx] & 2) != 0) ||
+ (platform == 0 && encoding == 3 &&
-+ (fgFontID[fgCurFontIdx] == 12 ||
-+ fgFontID[fgCurFontIdx] == 15)) ||
++ (fgFontIta[fgCurFontIdx] & 2) != 0) ||
(platform == 1 && encoding == 0 &&
- !strcmp(fgFontName[fgCurFontIdx], "wingding.ttf")) ||
- (platform == 1 && encoding == 0 &&
- !strcmp(fgFontName[fgCurFontIdx], "symbol.ttf")))
-+ (fgFontID[fgCurFontIdx] == 12 ||
-+ fgFontID[fgCurFontIdx] == 14 ||
-+ fgFontID[fgCurFontIdx] == 15)))
++ (fgFontIta[fgCurFontIdx] & 2) != 0))
{
fgCharMap[fgCurFontIdx] = charmap;
if (FT_Set_Charmap(fgFace[fgCurFontIdx], fgCharMap[fgCurFontIdx]))
-@@ -381,27 +393,147 @@
-
- if (!fontname || !fontname[0]) {
- Warning("TTF::SetTextFont",
-- "no font name specified, using default font %s", fgFontName[0]);
-+ "no font name specified, using default font");
- fgCurFontIdx = 0;
- return 0;
+@@ -387,21 +398,145 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
}
const char *basename = gSystem->BaseName(fontname);
++ char *ttfont = nullptr;
++ int ttindex = 0;
++
++ FcPattern *pat = nullptr, *match;
++ FcResult result;
++
+ if (strcmp(basename, "timesi.ttf") == 0 ||
+ strcmp(basename, "FreeSerifItalic.otf") == 0) {
-+ SetTextFont(12);
++ pat = FcNameParse ((const FcChar8*) "freeserif:italic");
+ }
+ else if (strcmp(basename, "timesbd.ttf") == 0 ||
+ strcmp(basename, "FreeSerifBold.otf") == 0) {
-+ SetTextFont(22);
++ pat = FcNameParse ((const FcChar8*) "freeserif:bold");
+ }
+ else if (strcmp(basename, "timesbi.ttf") == 0 ||
+ strcmp(basename, "FreeSerifBoldItalic.otf") == 0) {
-+ SetTextFont(32);
++ pat = FcNameParse ((const FcChar8*) "freeserif:bold:italic");
+ }
+ else if (strcmp(basename, "arial.ttf") == 0 ||
+ strcmp(basename, "FreeSans.otf") == 0) {
-+ SetTextFont(42);
++ pat = FcNameParse ((const FcChar8*) "freesans");
+ }
+ else if (strcmp(basename, "ariali.ttf") == 0 ||
+ strcmp(basename, "FreeSansOblique.otf") == 0) {
-+ SetTextFont(52);
++ pat = FcNameParse ((const FcChar8*) "freesans:italic");
+ }
+ else if (strcmp(basename, "arialbd.ttf") == 0 ||
+ strcmp(basename, "FreeSansBold.otf") == 0) {
-+ SetTextFont(62);
++ pat = FcNameParse ((const FcChar8*) "freesans:bold");
+ }
+ else if (strcmp(basename, "arialbi.ttf") == 0 ||
+ strcmp(basename, "FreeSansBoldOblique.otf") == 0) {
-+ SetTextFont(72);
++ pat = FcNameParse ((const FcChar8*) "freesans:bold:italic");
+ }
+ else if (strcmp(basename, "cour.ttf") == 0 ||
+ strcmp(basename, "FreeMono.otf") == 0) {
-+ SetTextFont(82);
++ pat = FcNameParse ((const FcChar8*) "freemono");
+ }
+ else if (strcmp(basename, "couri.ttf") == 0 ||
+ strcmp(basename, "FreeMonoOblique.otf") == 0) {
-+ SetTextFont(92);
++ pat = FcNameParse ((const FcChar8*) "freemono:italic");
+ }
+ else if (strcmp(basename, "courbd.ttf") == 0 ||
+ strcmp(basename, "FreeMonoBold.otf") == 0) {
-+ SetTextFont(102);
++ pat = FcNameParse ((const FcChar8*) "freemono:bold");
+ }
+ else if (strcmp(basename, "courbi.ttf") == 0 ||
+ strcmp(basename, "FreeMonoBoldOblique.otf") == 0) {
-+ SetTextFont(112);
++ pat = FcNameParse ((const FcChar8*) "freemono:bold:italic");
+ }
+ else if (strcmp(basename, "symbol.ttf") == 0) {
-+ if (italic)
-+ SetTextFont(152);
-+ else
-+ SetTextFont(122);
++ pat = FcNameParse ((const FcChar8*) "standardsymbolsps");
++ italic &= 2;
+ }
+ else if (strcmp(basename, "times.ttf") == 0 ||
+ strcmp(basename, "FreeSerif.otf") == 0) {
-+ SetTextFont(132);
++ pat = FcNameParse ((const FcChar8*) "freeserif");
+ }
+ else if (strcmp(basename, "wingding.ttf") == 0) {
-+ SetTextFont(142);
++ pat = FcNameParse ((const FcChar8*) "dingbats");
++ italic &= 2;
+ }
+ else if (strcmp(basename, "STIXGeneral.otf") == 0) {
-+ SetTextFont(162);
++ pat = FcNameParse ((const FcChar8*) "stixgeneral");
+ }
+ else if (strcmp(basename, "STIXGeneralItalic.otf") == 0) {
-+ SetTextFont(172);
++ pat = FcNameParse ((const FcChar8*) "stixgeneral:italic");
+ }
+ else if (strcmp(basename, "STIXGeneralBol.otf") == 0) {
-+ SetTextFont(182);
++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold");
+ }
+ else if (strcmp(basename, "STIXGeneralBolIta.otf") == 0) {
-+ SetTextFont(192);
++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold:italic");
+ }
+ else if (strcmp(basename, "STIXSiz1Sym.otf") == 0) {
-+ SetTextFont(202);
++ pat = FcNameParse ((const FcChar8*) "stixsize1");
+ }
+ else if (strcmp(basename, "STIXSiz1SymBol.otf") == 0) {
-+ SetTextFont(212);
++ pat = FcNameParse ((const FcChar8*) "stixsize1:bold");
+ }
+ else if (strcmp(basename, "STIXSiz2Sym.otf") == 0) {
-+ SetTextFont(222);
++ pat = FcNameParse ((const FcChar8*) "stixsize2");
+ }
+ else if (strcmp(basename, "STIXSiz2SymBol.otf") == 0) {
-+ SetTextFont(232);
++ pat = FcNameParse ((const FcChar8*) "stixsize2:bold");
+ }
+ else if (strcmp(basename, "STIXSiz3Sym.otf") == 0) {
-+ SetTextFont(242);
++ pat = FcNameParse ((const FcChar8*) "stixsize3");
+ }
+ else if (strcmp(basename, "STIXSiz3SymBol.otf") == 0) {
-+ SetTextFont(252);
++ pat = FcNameParse ((const FcChar8*) "stixsize3:bold");
+ }
+ else if (strcmp(basename, "STIXSiz4Sym.otf") == 0) {
-+ SetTextFont(262);
++ pat = FcNameParse ((const FcChar8*) "stixsize4");
+ }
+ else if (strcmp(basename, "STIXSiz4SymBol.otf") == 0) {
-+ SetTextFont(272);
++ pat = FcNameParse ((const FcChar8*) "stixsize4:bold");
+ }
+ else if (strcmp(basename, "STIXSiz5Sym.otf") == 0) {
-+ SetTextFont(282);
++ pat = FcNameParse ((const FcChar8*) "stixsize5");
+ }
+ else if (strcmp(basename, "DroidSansFallback.ttf") == 0) {
-+ SetTextFont(292);
++ pat = FcNameParse ((const FcChar8*) "droidsansfallback:charset=4e00 0410");
+ }
-+ else {
-+ Error("TTF::SetTextFont", "font %s not known to ROOT", basename);
-+ if (fgFontCount) {
-+ Warning("TTF::SetTextFont", "using default font");
-+ fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
-+ return 0;
-+ } else {
-+ return 1;
-+ }
++ else if (strcmp(basename, "BlackChancery.ttf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "urwchanceryl");
++ }
++ else if (gSystem->AccessPathName(fontname, kReadPermission) != 0) {
++ // Font name is not a file - usae as pattern
++ pat = FcNameParse ((const FcChar8*) fontname);
+ }
+
-+ return 0;
-+}
-+
-+//______________________________________________________________________________
-+void TTF::SetTextFont(Font_t fontnumber)
-+{
-+ int fontid = fontnumber / 10;
-+ if (fontid < 0 || fontid > 31) fontid = 0;
-+
-+ Int_t italic = 0;
-+ if (fontid==15) italic = 1;
++ if (pat) {
++ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
++ FcDefaultSubstitute (pat);
++ match = FcFontMatch (nullptr, pat, &result);
++ if (match) {
++ const char *ttfnt;
++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfnt);
++ ttfont = StrDup(ttfnt);
++ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex);
++ FcPatternDestroy (match);
++ }
++ FcPatternDestroy (pat);
++ }
+
-+ if (!fgInit) Init();
++ if (!ttfont) ttfont = StrDup(fontname);
+
-+ if (fontid == 0) {
-+ fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
-+ return;
-+ }
++ basename = gSystem->BaseName(ttfont);
+
// check if font is in cache
int i;
@@ -450,30 +414,28 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
- return 0;
- }
- }
-+ if (fgFontID[i] == fontid) {
++ if (!strcmp(fgFontName[i], basename) &&
++ (fgFontIdx[i] == ttindex) &&
++ (fgFontIta[i] == italic)) {
+ fgCurFontIdx = i;
-+ return;
++ delete [] ttfont;
++ return 0;
}
}
-@@ -409,151 +541,215 @@
- if (fgFontCount >= kTTMaxFonts) {
- Error("TTF::SetTextFont", "too many fonts opened (increase kTTMaxFont = %d)",
+@@ -411,28 +546,13 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
kTTMaxFonts);
-- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
-+ Warning("TTF::SetTextFont", "using default font");
+ Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
-- return 0;
-+ return;
++ delete [] ttfont;
+ return 0;
}
- // try to load font (font must be in Root.TTFontPath resource)
- const char *ttpath = gEnv->GetValue("Root.TTFontPath",
- TROOT::GetTTFFontDir());
- char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission);
-+ char *ttfont = nullptr;
-+ int ttindex = 0;
-
+-
- if (!ttfont) {
- Error("TTF::SetTextFont", "font file %s not found in path", fontname);
- if (fgFontCount) {
@@ -483,180 +445,8 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
- } else {
- return 1;
- }
-+ FcPattern *pat, *match;
-+ FcCharSet *set = nullptr;
-+ FcResult result;
-+
-+ pat = FcPatternCreate ();
-+
-+ switch (fontid) {
-+ case 1:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 2:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 3:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 4:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 5:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 6:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 7:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 8:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 9:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 10:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 11:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 12:
-+ case 15:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 13:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 14:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 16:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 17:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 18:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 19:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 20:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 21:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 22:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 23:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 24:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 25:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 26:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 27:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 28:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize5");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 29:
-+ case 30:
-+ case 31:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"droidsansfallback");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ set = FcCharSetCreate ();
-+ FcCharSetAddChar (set, 0x0410); // Cyrillic
-+ FcCharSetAddChar (set, 0x4e00); // CJK
-+ FcPatternAddCharSet (pat, FC_CHARSET, set);
-+ break;
-+ default:
-+ Error("TTF::SetTextFont", "font %i not known to ROOT", fontid);
-+ FcPatternDestroy (pat);
-+ Warning("TTF::SetTextFont", "using default font");
-+ fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
-+ return;
-+ break;
- }
-
-+ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
-+ FcDefaultSubstitute (pat);
-+ match = FcFontMatch (nullptr, pat, &result);
-+ char *ttfnt;
-+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt);
-+ ttfont = StrDup (ttfnt);
-+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex);
-+ FcPatternDestroy (match);
-+ FcPatternDestroy (pat);
-+ if (set) FcCharSetDestroy (set);
-+
+- }
+-
FT_Face tface = (FT_Face) 0;
- if (FT_New_Face(fgLibrary, ttfont, 0, &tface)) {
@@ -664,64 +454,34 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
Error("TTF::SetTextFont", "error loading font %s", ttfont);
delete [] ttfont;
if (tface) FT_Done_Face(tface);
-- if (fgFontCount) {
-- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
-- fgCurFontIdx = 0;
-- return 0;
-- } else {
-- return 1;
-- }
-+ Warning("TTF::SetTextFont", "using default font");
-+ fgCurFontIdx = 0;
-+ return;
- }
-
+@@ -448,19 +568,20 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
delete [] ttfont;
-- fgFontName[fgFontCount] = StrDup(basename);
-+ fgFontID[fgFontCount] = fontid;
+ fgFontName[fgFontCount] = StrDup(basename);
++ fgFontIdx[fgFontCount] = ttindex;
++ fgFontIta[fgFontCount] = italic;
fgCurFontIdx = fgFontCount;
fgFace[fgCurFontIdx] = tface;
fgCharMap[fgCurFontIdx] = (FT_CharMap) 0;
fgFontCount++;
- if (italic) {
+- if (italic) {
- fgSymbItaFontIdx = fgCurFontIdx;
++ if ((italic & 1) != 0) {
FT_Matrix slantMat;
slantMat.xx = (1 << 16);
slantMat.xy = ((1 << 16) >> 2);
slantMat.yx = 0;
slantMat.yy = (1 << 16);
- FT_Set_Transform( fgFace[fgSymbItaFontIdx], &slantMat, NULL );
-- }
--
-- return 0;
--}
--
--////////////////////////////////////////////////////////////////////////////////
--/// Set specified font.
--/// List of the currently supported fonts (screen and PostScript)
--///
--/// | Font ID | X11 | TTF |
--/// |---------|---------------------------|------------------|
--/// | 1 | times-medium-i-normal | timesi.ttf |
--/// | 2 | times-bold-r-normal | timesbd.ttf |
--/// | 3 | times-bold-i-normal | timesbi.ttf |
--/// | 4 | helvetica-medium-r-normal | arial.ttf |
--/// | 5 | helvetica-medium-o-normal | ariali.ttf |
--/// | 6 | helvetica-bold-r-normal | arialbd.ttf |
--/// | 7 | helvetica-bold-o-normal | arialbi.ttf |
--/// | 8 | courier-medium-r-normal | cour.ttf |
--/// | 9 | courier-medium-o-normal | couri.ttf |
--/// | 10 | courier-bold-r-normal | courbd.ttf |
--/// | 11 | courier-bold-o-normal | courbi.ttf |
--/// | 12 | symbol-medium-r-normal | symbol.ttf |
--/// | 13 | times-medium-r-normal | times.ttf |
--/// | 14 | | wingding.ttf |
--/// | 15 | symbol oblique is emulated from symbol.ttf | |
--
--void TTF::SetTextFont(Font_t fontnumber)
--{
++ FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, nullptr );
+ }
+
+ return 0;
+@@ -489,70 +610,50 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
+
+ void TTF::SetTextFont(Font_t fontnumber)
+ {
- // Added by cholm for use of DFSG - fonts - based on Kevins fix.
- // Table of Microsoft and (for non-MSFT operating systems) backup
- // FreeFont TTF fonts.
@@ -758,14 +518,47 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
- { "Root.TTFont.ME", "DroidSansFallback.ttf" },
- { "Root.TTFont.CJKMing", "DroidSansFallback.ttf" },
- { "Root.TTFont.CJKGothic", "DroidSansFallback.ttf" }
-- };
--
++ static const char *fonttable[] = {
++ "freesans:bold",
++ "freeserif:italic",
++ "freeserif:bold",
++ "freeserif:bold:italic",
++ "freesans",
++ "freesans:italic",
++ "freesans:bold",
++ "freesans:bold:italic",
++ "freemono",
++ "freemono:italic",
++ "freemono:bold",
++ "freemono:bold:italic",
++ "standardsymbolsps",
++ "freeserif",
++ "dingbats",
++ "standardsymbolsps",
++ "stixgeneral",
++ "stixgeneral:italic",
++ "stixgeneral:bold",
++ "stixgeneral:bold:italic",
++ "stixsize1",
++ "stixsize1:bold",
++ "stixsize2",
++ "stixsize2:bold",
++ "stixsize3",
++ "stixsize3:bold",
++ "stixsize4",
++ "stixsize4:bold",
++ "stixsize5",
++ "droidsansfallback:charset=4e00 0410",
++ "droidsansfallback:charset=4e00 0410",
++ "droidsansfallback:charset=4e00 0410"
+ };
+
- static int fontset = -1;
- int thisset = fontset;
-
-- int fontid = fontnumber / 10;
-- if (fontid < 0 || fontid > 31) fontid = 0;
--
+ int fontid = fontnumber / 10;
+ if (fontid < 0 || fontid > 31) fontid = 0;
+
- if (thisset == -1) {
- // try to load font (font must be in Root.TTFontPath resource)
- // to see which fontset we have available
@@ -779,21 +572,26 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/
- // try backup free font
- thisset = 1;
- }
-+ FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, nullptr );
- }
-- Int_t italic = 0;
+- }
+ Int_t italic = 0;
- if (fontid==15) italic = 1;
- int ret = SetTextFont(gEnv->GetValue(fonttable[fontid][thisset], fonttable[fontid][1]), italic);
- // Do not define font set is we're loading the symbol.ttf - it's
- // the same in both cases.
- if (ret == 0 && fontid != 12) fontset = thisset;
++ if (fontid==12) italic = 2;
++ if (fontid==14) italic = 2;
++ if (fontid==15) italic = 3;
++
++ SetTextFont(fonttable[fontid], italic);
}
////////////////////////////////////////////////////////////////////////////////
-diff -ur root-6.28.00.orig/graf2d/postscript/CMakeLists.txt root-6.28.00/graf2d/postscript/CMakeLists.txt
---- root-6.28.00.orig/graf2d/postscript/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/postscript/CMakeLists.txt 2023-02-04 12:47:19.863760238 +0100
-@@ -27,6 +27,7 @@
+diff --git a/graf2d/postscript/CMakeLists.txt b/graf2d/postscript/CMakeLists.txt
+index eb091bbb39..a05023a3f4 100644
+--- a/graf2d/postscript/CMakeLists.txt
++++ b/graf2d/postscript/CMakeLists.txt
+@@ -27,6 +27,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Postscript
LIBRARIES
ZLIB::ZLIB
mathtext
@@ -801,10 +599,11 @@ diff -ur root-6.28.00.orig/graf2d/postscript/CMakeLists.txt root-6.28.00/graf2d/
DEPENDENCIES
Graf
)
-diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/graf2d/postscript/src/TPostScript.cxx
---- root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf2d/postscript/src/TPostScript.cxx 2023-02-04 12:47:19.864760240 +0100
-@@ -234,6 +234,7 @@
+diff --git a/graf2d/postscript/src/TPostScript.cxx b/graf2d/postscript/src/TPostScript.cxx
+index 09ea7ffa9c..180fd5e3c1 100644
+--- a/graf2d/postscript/src/TPostScript.cxx
++++ b/graf2d/postscript/src/TPostScript.cxx
+@@ -234,6 +234,7 @@ To change the color model use `gStyle->SetColorModelPS(c)`.
#include <cctype>
#include <cwchar>
#include <fstream>
@@ -812,7 +611,7 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr
#include "strlcpy.h"
#include "snprintf.h"
-@@ -1585,56 +1586,179 @@
+@@ -1585,56 +1586,60 @@ Bool_t TPostScript::FontEmbedType42(const char *filename)
void TPostScript::FontEmbed(void)
{
@@ -849,8 +648,41 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr
- { "Root.TTFont.ME", "DroidSansFallback.ttf" },
- { "Root.TTFont.CJKMing", "DroidSansFallback.ttf" },
- { "Root.TTFont.CJKCothic", "DroidSansFallback.ttf" }
-- };
--
++ static const char *fonttable[] = {
++ "freesans:bold",
++ "freeserif:italic",
++ "freeserif:bold",
++ "freeserif:bold:italic",
++ "freesans",
++ "freesans:italic",
++ "freesans:bold",
++ "freesans:bold:italic",
++ "freemono",
++ "freemono:italic",
++ "freemono:bold",
++ "freemono:bold:italic",
++ "standardsymbolsps",
++ "freeserif",
++ "dingbats",
++ "standardsymbolsps",
++ "stixgeneral",
++ "stixgeneral:italic",
++ "stixgeneral:bold",
++ "stixgeneral:bold:italic",
++ "stixsize1",
++ "stixsize1:bold",
++ "stixsize2",
++ "stixsize2:bold",
++ "stixsize3",
++ "stixsize3:bold",
++ "stixsize4",
++ "stixsize4:bold",
++ "stixsize5",
++ "droidsansfallback:charset=4e00 0410",
++ "droidsansfallback:charset=4e00 0410",
++ "droidsansfallback:charset=4e00 0410"
+ };
+
PrintStr("%%IncludeResource: ProcSet (FontSetInit)@");
- // try to load font (font must be in Root.TTFontPath resource)
@@ -862,182 +694,28 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr
- const char *filename = gEnv->GetValue(
- fonttable[fontid][0], fonttable[fontid][1]);
- char *ttfont = gSystem->Which(ttpath, filename, kReadPermission);
-+
+ char *ttfont = nullptr;
+
+ FcPattern *pat, *match;
-+ FcCharSet *set = nullptr;
+ FcResult result;
+
-+ pat = FcPatternCreate ();
-+
-+ switch (fontid) {
-+ case 1:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 2:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 3:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 4:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 5:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 6:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 7:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 8:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 9:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 10:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 11:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 12:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 13:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 14:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 16:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 17:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 18:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 19:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 20:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 21:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 22:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 23:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 24:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 25:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 26:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 27:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 28:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize5");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 29:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"droidsansfallback");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ set = FcCharSetCreate ();
-+ FcCharSetAddChar (set, 0x0410); // Cyrillic
-+ FcCharSetAddChar (set, 0x4e00); // CJK
-+ FcPatternAddCharSet (pat, FC_CHARSET, set);
-+ break;
-+ }
++ pat = FcNameParse ((const FcChar8*) fonttable[fontid]);
+
+ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
+ FcDefaultSubstitute (pat);
+ match = FcFontMatch (nullptr, pat, &result);
-+ char *ttfnt;
-+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt);
-+ ttfont = StrDup(ttfnt);
-+ FcPatternDestroy (match);
-+ FcPatternDestroy (pat);
-+ if (set) FcCharSetDestroy (set);
++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfont);
+
if (!ttfont) {
- Error("TPostScript::FontEmbed",
- "font %d (filename `%s') not found in path",
- fontid, filename);
-+ Error("TPostScript::FontEmbed", "font %d not found in path",
++ Error("TPostScript::FontEmbed", "font %d not found",
+ fontid);
} else {
if (FontEmbedType2(ttfont)) {
// nothing
-@@ -1643,9 +1767,8 @@
+@@ -1643,12 +1648,13 @@ void TPostScript::FontEmbed(void)
} else if(FontEmbedType42(ttfont)) {
// nothing
} else {
@@ -1047,9 +725,15 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr
+ Error("TPostScript::FontEmbed", "failed to embed font %d)",
+ fontid);
}
- delete [] ttfont;
+- delete [] ttfont;
}
-@@ -2837,10 +2960,10 @@
++
++ FcPatternDestroy (match);
++ FcPatternDestroy (pat);
+ }
+ }
+ PrintStr("%%IncludeResource: font Times-Roman@");
+@@ -2837,10 +2843,10 @@ void TPostScript::Text(Double_t xx, Double_t yy, const wchar_t *chars)
{ "Root.PSFont.9", "/FreeMonoOblique" },
{ "Root.PSFont.10", "/FreeMonoBold" },
{ "Root.PSFont.11", "/FreeMonoBoldOblique" },
@@ -1063,10 +747,11 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr
{ "Root.PSFont.STIXGen", "/STIXGeneral" },
{ "Root.PSFont.STIXGenIt", "/STIXGeneral-Italic" },
{ "Root.PSFont.STIXGenBd", "/STIXGeneral-Bold" },
-diff -ur root-6.28.00.orig/graf3d/gl/CMakeLists.txt root-6.28.00/graf3d/gl/CMakeLists.txt
---- root-6.28.00.orig/graf3d/gl/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf3d/gl/CMakeLists.txt 2023-02-04 12:47:19.867760247 +0100
-@@ -208,6 +208,7 @@
+diff --git a/graf3d/gl/CMakeLists.txt b/graf3d/gl/CMakeLists.txt
+index a874da9e1d..5454469606 100644
+--- a/graf3d/gl/CMakeLists.txt
++++ b/graf3d/gl/CMakeLists.txt
+@@ -208,6 +208,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RGL
${GL2PS_LIBRARIES}
${X11_LIBRARIES}
RGlew
@@ -1074,9 +759,10 @@ diff -ur root-6.28.00.orig/graf3d/gl/CMakeLists.txt root-6.28.00/graf3d/gl/CMake
DEPENDENCIES
Hist
Gui
-diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/gl/src/TGLFontManager.cxx
---- root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf3d/gl/src/TGLFontManager.cxx 2023-02-04 12:47:19.867760247 +0100
+diff --git a/graf3d/gl/src/TGLFontManager.cxx b/graf3d/gl/src/TGLFontManager.cxx
+index 776e9d286f..c4134c5980 100644
+--- a/graf3d/gl/src/TGLFontManager.cxx
++++ b/graf3d/gl/src/TGLFontManager.cxx
@@ -36,6 +36,7 @@
# include "FTGLBitmapFont.h"
#endif
@@ -1085,16 +771,7 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/
/** \class TGLFont
\ingroup opengl
-@@ -419,7 +420,7 @@
- ClassImp(TGLFontManager);
-
- TObjArray TGLFontManager::fgFontFileArray;
--Int_t TGLFontManager::fgExtendedFontStart;
-+Int_t TGLFontManager::fgExtendedFontStart = 0;
- TGLFontManager::FontSizeVec_t TGLFontManager::fgFontSizeArray;
- Bool_t TGLFontManager::fgStaticInitDone = kFALSE;
-
-@@ -450,17 +451,175 @@
+@@ -450,16 +451,120 @@ void TGLFontManager::RegisterFont(Int_t sizeIn, Int_t fileID, TGLFont::EMode mod
FontMap_i it = fFontMap.find(TGLFont(size, fileID, mode));
if (it == fFontMap.end())
{
@@ -1107,234 +784,127 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/
- ((TObjString*)fgFontFileArray[fileID])->String());
- file = fp;
- delete [] fp;
-+ char *file = nullptr;
-+ int ttindex = 0;
++ TString file;
+
-+ FcPattern *pat, *match;
-+ FcCharSet *set = nullptr;
-+ FcResult result;
++ TString fontname = fileID < fgExtendedFontStart ?
++ ((TObjString*)fgFontFileArray[fileID])->String() + ".ttf" :
++ ((TObjString*)fgFontFileArray[fileID])->String();
+
-+ pat = FcPatternCreate ();
++ FcPattern *pat = nullptr, *match;
++ FcResult result;
+
-+ switch (fileID) {
-+ case 0:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 1:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 2:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 3:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 4:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 5:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 6:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 7:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 8:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 9:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 10:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 11:
-+ case 14:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 12:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 13:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 15:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 16:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 17:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 18:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 19:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 20:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 21:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 22:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 23:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 24:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 25:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 26:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 27:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize5");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 28:
-+ case 29:
-+ case 30:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"droidsansfallback");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ set = FcCharSetCreate ();
-+ FcCharSetAddChar (set, 0x0410); // Cyrillic
-+ FcCharSetAddChar (set, 0x4e00); // CJK
-+ FcPatternAddCharSet (pat, FC_CHARSET, set);
++ if (strcmp(fontname, "timesi.ttf") == 0 ||
++ strcmp(fontname, "FreeSerifItalic.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freeserif:italic");
++ }
++ else if (strcmp(fontname, "timesbd.ttf") == 0 ||
++ strcmp(fontname, "FreeSerifBold.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freeserif:bold");
++ }
++ else if (strcmp(fontname, "timesbi.ttf") == 0 ||
++ strcmp(fontname, "FreeSerifBoldItalic.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freeserif:bold:italic");
++ }
++ else if (strcmp(fontname, "arial.ttf") == 0 ||
++ strcmp(fontname, "FreeSans.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freesans");
++ }
++ else if (strcmp(fontname, "ariali.ttf") == 0 ||
++ strcmp(fontname, "FreeSansOblique.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freesans:italic");
++ }
++ else if (strcmp(fontname, "arialbd.ttf") == 0 ||
++ strcmp(fontname, "FreeSansBold.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freesans:bold");
++ }
++ else if (strcmp(fontname, "arialbi.ttf") == 0 ||
++ strcmp(fontname, "FreeSansBoldOblique.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freesans:bold:italic");
++ }
++ else if (strcmp(fontname, "cour.ttf") == 0 ||
++ strcmp(fontname, "FreeMono.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freemono");
++ }
++ else if (strcmp(fontname, "couri.ttf") == 0 ||
++ strcmp(fontname, "FreeMonoOblique.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freemono:italic");
++ }
++ else if (strcmp(fontname, "courbd.ttf") == 0 ||
++ strcmp(fontname, "FreeMonoBold.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freemono:bold");
++ }
++ else if (strcmp(fontname, "courbi.ttf") == 0 ||
++ strcmp(fontname, "FreeMonoBoldOblique.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freemono:bold:italic");
++ }
++ else if (strcmp(fontname, "symbol.ttf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "standardsymbolsps");
++ }
++ else if (strcmp(fontname, "times.ttf") == 0 ||
++ strcmp(fontname, "FreeSerif.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "freeserif");
}
-
++ else if (strcmp(fontname, "wingding.ttf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "dingbats");
++ }
++ else if (strcmp(fontname, "STIXGeneral.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixgeneral");
++ }
++ else if (strcmp(fontname, "STIXGeneralItalic.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixgeneral:italic");
++ }
++ else if (strcmp(fontname, "STIXGeneralBol.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold");
++ }
++ else if (strcmp(fontname, "STIXGeneralBolIta.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold:italic");
++ }
++ else if (strcmp(fontname, "STIXSiz1Sym.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize1");
++ }
++ else if (strcmp(fontname, "STIXSiz1SymBol.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize1:bold");
++ }
++ else if (strcmp(fontname, "STIXSiz2Sym.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize2");
++ }
++ else if (strcmp(fontname, "STIXSiz2SymBol.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize2:bold");
++ }
++ else if (strcmp(fontname, "STIXSiz3Sym.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize3");
++ }
++ else if (strcmp(fontname, "STIXSiz3SymBol.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize3:bold");
++ }
++ else if (strcmp(fontname, "STIXSiz4Sym.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize4");
++ }
++ else if (strcmp(fontname, "STIXSiz4SymBol.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize4:bold");
++ }
++ else if (strcmp(fontname, "STIXSiz5Sym.otf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "stixsize5");
++ }
++ else if (strcmp(fontname, "DroidSansFallback.ttf") == 0) {
++ pat = FcNameParse ((const FcChar8*) "droidsansfallback:charset=4e00 0410");
++ }
++
+ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
+ FcDefaultSubstitute (pat);
+ match = FcFontMatch (nullptr, pat, &result);
+ char *ttfnt;
-+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt);
-+ file = StrDup (ttfnt);
-+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex);
++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfnt);
++ file = ttfnt;
+ FcPatternDestroy (match);
+ FcPatternDestroy (pat);
-+ if (set) FcCharSetDestroy (set);
-+
+
FTFont* ftfont = 0;
switch (mode)
- {
-@@ -484,10 +643,14 @@
- ftfont = new FTGLTextureFont(file);
- break;
- default:
-+ delete [] file;
- Error("TGLFontManager::RegisterFont", "invalid FTGL type");
- return;
- break;
- }
-+
-+ delete [] file;
-+
- ftfont->FaceSize(size);
- const TGLFont &mf = fFontMap.insert(std::make_pair(TGLFont(size, fileID, mode, ftfont, 0), 1)).first->first;
- out.CopyAttributes(mf);
-@@ -570,8 +733,6 @@
- {
- if (fgStaticInitDone == kFALSE) InitStatics();
-
-- assert(fgExtendedFontStart > 0 && "GetExtendedFontStartIndex, invalid index");
--
- return fgExtendedFontStart;
- }
-
-@@ -641,28 +802,6 @@
- fgFontFileArray.Add(new TObjString("wingding")); // 140
- fgFontFileArray.Add(new TObjString("symbol")); // 150
-
-- fgExtendedFontStart = fgFontFileArray.GetEntries();
-- //"Extended" fonts for gl-pad.
-- //fgPadFontStart + ...
-- fgFontFileArray.Add(new TObjString("FreeSerifItalic.otf")); // 10 (160)
-- fgFontFileArray.Add(new TObjString("FreeSerifBold.otf")); // 20 (170)
-- fgFontFileArray.Add(new TObjString("FreeSerifBoldItalic.otf")); // 30
--
-- fgFontFileArray.Add(new TObjString("FreeSans.otf")); // 40
-- fgFontFileArray.Add(new TObjString("FreeSansOblique.otf")); // 50
-- fgFontFileArray.Add(new TObjString("FreeSansBold.otf")); // 60
-- fgFontFileArray.Add(new TObjString("FreeSansBoldOblique.otf")); // 70
--
-- fgFontFileArray.Add(new TObjString("FreeMono.otf")); // 80
-- fgFontFileArray.Add(new TObjString("FreeMonoOblique.otf")); // 90
-- fgFontFileArray.Add(new TObjString("FreeMonoBold.otf")); // 100
-- fgFontFileArray.Add(new TObjString("FreeMonoBoldOblique.otf")); // 110
--
-- fgFontFileArray.Add(new TObjString("symbol.ttf")); // 120
-- fgFontFileArray.Add(new TObjString("FreeSerif.otf")); // 130
-- fgFontFileArray.Add(new TObjString("wingding.ttf")); // 140
-- fgFontFileArray.Add(new TObjString("symbol.ttf")); // 150
--
- fgFontFileArray.Add(new TObjString("STIXGeneral.otf")); // 200
- fgFontFileArray.Add(new TObjString("STIXGeneralItalic.otf")); // 210
- fgFontFileArray.Add(new TObjString("STIXGeneralBol.otf")); // 220
-diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/TGLText.cxx
---- root-6.28.00.orig/graf3d/gl/src/TGLText.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/graf3d/gl/src/TGLText.cxx 2023-02-04 12:47:19.868760250 +0100
+diff --git a/graf3d/gl/src/TGLText.cxx b/graf3d/gl/src/TGLText.cxx
+index f84f5193d2..8a672c787c 100644
+--- a/graf3d/gl/src/TGLText.cxx
++++ b/graf3d/gl/src/TGLText.cxx
@@ -32,6 +32,8 @@
# include "FTGLBitmapFont.h"
#endif
@@ -1344,7 +914,7 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/
#define FTGL_BITMAP 0
#define FTGL_PIXMAP 1
#define FTGL_OUTLINE 2
-@@ -176,27 +178,92 @@
+@@ -176,27 +178,35 @@ void TGLText::SetGLTextFont(Font_t fontnumber)
{
int fontid = fontnumber / 10;
@@ -1369,96 +939,39 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/
- const char *ttpath = gEnv->GetValue("Root.TTFontPath",
- TROOT::GetTTFFontDir());
- char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission);
-+ FcPattern *pat, *match;
-+ FcResult result;
++ static const char *fonttable[] = {
++ "freesans:bold",
++ "freeserif:italic",
++ "freeserif:bold",
++ "freeserif:bold:italic",
++ "freesans",
++ "freesans:italic",
++ "freesans:bold",
++ "freesans:bold:italic",
++ "freemono",
++ "freemono:italic",
++ "freemono:bold",
++ "freemono:bold:italic",
++ "standardsymbolsps",
++ "freeserif",
++ "dingbats",
++ };
++
+ char *ttfont;
-+ int ttindex;
+
-+ pat = FcPatternCreate ();
++ FcPattern *pat, *match;
++ FcResult result;
+
-+ switch (fontid) {
-+ case 1:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 2:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 3:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 4:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 5:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 0:
-+ case 6:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 7:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 8:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 9:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 10:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 11:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ break;
-+ case 12:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 13:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ case 14:
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ break;
-+ }
++ pat = FcNameParse ((const FcChar8*) fonttable[fontid]);
+
+ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
+ FcDefaultSubstitute (pat);
+ match = FcFontMatch (nullptr, pat, &result);
-+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfont);
-+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex);
++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfont);
if (fGLTextFont) delete fGLTextFont;
-@@ -204,7 +271,9 @@
+@@ -204,7 +214,9 @@ void TGLText::SetGLTextFont(Font_t fontnumber)
fGLTextFont = new FTGLPolygonFont(ttfont);
@@ -1469,10 +982,11 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/
Error("SetGLTextFont","Cannot set FTGL::FaceSize");
- delete [] ttfont;
}
-diff -ur root-6.28.00.orig/gui/gui/src/TGApplication.cxx root-6.28.00/gui/gui/src/TGApplication.cxx
---- root-6.28.00.orig/gui/gui/src/TGApplication.cxx 2023-02-03 15:34:27.000000000 +0100
-+++ root-6.28.00/gui/gui/src/TGApplication.cxx 2023-02-04 12:47:19.868760250 +0100
-@@ -81,20 +81,12 @@
+diff --git a/gui/gui/src/TGApplication.cxx b/gui/gui/src/TGApplication.cxx
+index 72d7dbbf95..73a44fdd7f 100644
+--- a/gui/gui/src/TGApplication.cxx
++++ b/gui/gui/src/TGApplication.cxx
+@@ -81,20 +81,12 @@ TGApplication::TGApplication(const char *appClassName,
gROOT->SetBatch(kFALSE);
if (strcmp(appClassName, "proofserv")) {
@@ -1494,3 +1008,6 @@ diff -ur root-6.28.00.orig/gui/gui/src/TGApplication.cxx root-6.28.00/gui/gui/sr
}
// Create the canvas colors early so they are allocated before
+--
+2.45.0
+
diff --git a/root.spec b/root.spec
index 207b1f5..bfe8824 100644
--- a/root.spec
+++ b/root.spec
@@ -41,13 +41,23 @@
%global bundlejson 0
%endif
+%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8
+%ifarch %{ix86} %{arm}
+%global pandas 0
+%else
+%global pandas 1
+%endif
+%else
+%global pandas 0
+%endif
+
# Do not generate autoprovides for Python modules
%global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$
Name: root
Version: 6.30.06
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Numerical data analysis framework
License: LGPL-2.1-or-later
@@ -201,7 +211,7 @@ BuildRequires: zeromq-devel >= 4.3.5
BuildRequires: cppzmq-devel
%endif
%endif
-%if (0%{?fedora} && 0%{?__isa_bits} == 64) || 0%{?rhel} == 8
+%if %{pandas}
BuildRequires: python%{python3_pkgversion}-pandas
%endif
BuildRequires: python%{python3_pkgversion}-rcssmin
@@ -2594,7 +2604,7 @@ tutorial-pyroot-pyroot004_NumbaDeclare-py|\
pyunittests-pyroot-numbadeclare|\
test-webgui-ping"
-%if (0%{?fedora} && 0%{?__isa_bits} != 64) || 0%{?rhel} == 8
+%if ! %{pandas}
# - test-import-pandas
# - tutorial-dataframe-df026_AsNumpyArrays-py
# - tutorial-roofit-rf409_NumPyPandasToRooFit-py
@@ -2820,7 +2830,7 @@ RSqliteDS.Davix:\
TChainParsing.RemoteGlob:\
TFile.ReadWithoutGlobalRegistrationNet:\
TFile.ReadWithoutGlobalRegistrationWeb \
-%if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 )
+%if ! %{pandas}
ROOTTEST_IGNORE_PANDAS_PY3=1 \
%endif
ROOTTEST_IGNORE_NUMBA_PY3=1 \
@@ -3734,6 +3744,10 @@ fi
%endif
%changelog
+* Wed May 15 2024 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.30.06-5
+- Rebuilt for libarrow.so.1601
+- Improved fontconfig support
+
* Sun Apr 28 2024 Benjamin A. Beasley <code(a)musicinmybrain.net> - 6.30.06-4
- Do not test with Pandas on 32-bit architectures
commit 0f2b684662cd83ea098314b4a50741ab93dc99b6
Author: Benjamin A. Beasley <code(a)musicinmybrain.net>
Date: Mon Feb 19 13:49:35 2024 -0500
Do not test with Pandas on 32-bit architectures
https://bugzilla.redhat.com/show_bug.cgi?id=2263999
diff --git a/root.spec b/root.spec
index 3aba984..207b1f5 100644
--- a/root.spec
+++ b/root.spec
@@ -47,7 +47,7 @@
Name: root
Version: 6.30.06
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Numerical data analysis framework
License: LGPL-2.1-or-later
@@ -201,7 +201,7 @@ BuildRequires: zeromq-devel >= 4.3.5
BuildRequires: cppzmq-devel
%endif
%endif
-%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8
+%if (0%{?fedora} && 0%{?__isa_bits} == 64) || 0%{?rhel} == 8
BuildRequires: python%{python3_pkgversion}-pandas
%endif
BuildRequires: python%{python3_pkgversion}-rcssmin
@@ -2594,7 +2594,7 @@ tutorial-pyroot-pyroot004_NumbaDeclare-py|\
pyunittests-pyroot-numbadeclare|\
test-webgui-ping"
-%if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 )
+%if (0%{?fedora} && 0%{?__isa_bits} != 64) || 0%{?rhel} == 8
# - test-import-pandas
# - tutorial-dataframe-df026_AsNumpyArrays-py
# - tutorial-roofit-rf409_NumPyPandasToRooFit-py
@@ -3734,6 +3734,9 @@ fi
%endif
%changelog
+* Sun Apr 28 2024 Benjamin A. Beasley <code(a)musicinmybrain.net> - 6.30.06-4
+- Do not test with Pandas on 32-bit architectures
+
* Thu Apr 25 2024 Iñaki Úcar <iucar(a)fedoraproject.org> - 6.30.06-3
- R-maint-sig mass rebuild
commit 518c033b52372bc24f8c996740dc9f45e5217df6
Author: Iñaki Úcar <iucar(a)fedoraproject.org>
Date: Thu Apr 25 16:16:49 2024 +0200
R-maint-sig mass rebuild
diff --git a/root.spec b/root.spec
index e5fd7eb..3aba984 100644
--- a/root.spec
+++ b/root.spec
@@ -47,7 +47,7 @@
Name: root
Version: 6.30.06
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Numerical data analysis framework
License: LGPL-2.1-or-later
@@ -3734,6 +3734,9 @@ fi
%endif
%changelog
+* Thu Apr 25 2024 Iñaki Úcar <iucar(a)fedoraproject.org> - 6.30.06-3
+- R-maint-sig mass rebuild
+
* Tue Apr 23 2024 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.30.06-2
- Rebuilt for libarrow.so.1600
commit fbaff99ab697b5c5d0db6a5bf87e6ca22fdf0fab
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Tue Apr 23 09:53:13 2024 +0200
Rebuilt for libarrow.so.1600
diff --git a/root.spec b/root.spec
index 9632e82..e5fd7eb 100644
--- a/root.spec
+++ b/root.spec
@@ -47,7 +47,7 @@
Name: root
Version: 6.30.06
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Numerical data analysis framework
License: LGPL-2.1-or-later
@@ -3734,6 +3734,9 @@ fi
%endif
%changelog
+* Tue Apr 23 2024 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.30.06-2
+- Rebuilt for libarrow.so.1600
+
* Fri Apr 05 2024 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.30.06-1
- Update to 6.30.06
2 weeks, 3 days
Architecture specific change in rpms/freecell-solver.git
by githook-noreply@fedoraproject.org
The package rpms/freecell-solver.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/freecell-solver.git/commit/?id=81....
Change:
+%ifnarch %{valgrind_arches}
Thanks.
Full change:
============
commit 81cfda8db9ab9c236fe006d3756af01e09e5162c
Author: Shlomi Fish <shlomif(a)shlomifish.org>
Date: Sun Jun 9 10:28:37 2024 +0300
[FTFBS] fix build on f40 (port from rawhide branch)
diff --git a/freecell-solver.spec b/freecell-solver.spec
index 2220171..12c81a9 100644
--- a/freecell-solver.spec
+++ b/freecell-solver.spec
@@ -50,7 +50,9 @@ BuildRequires: perl(Test::Data::Split::Backend::Hash)
BuildRequires: perl(Test::Data::Split::Backend::ValidateHash)
BuildRequires: perl(Test::Differences)
BuildRequires: perl(Test::More)
+%ifarch %{valgrind_arches}
BuildRequires: perl(Test::RunValgrind)
+%endif
BuildRequires: perl(Test::TrailingSpace)
BuildRequires: perl(Test::Trap)
BuildRequires: perl(warnings)
@@ -69,7 +71,9 @@ BuildRequires: python3dist(pycotap)
Requires: %{libname}%{?_isa} = %{version}-%{release}
# BuildRequires: tap-devel
BuildRequires: the_silver_searcher
+%ifarch %{valgrind_arches}
BuildRequires: valgrind
+%endif
%description
The Freecell Solver package contains the fc-solve executable which is
@@ -156,6 +160,9 @@ Freecell Solver from within your programs.
%cmake_build
%check
+%ifnarch %{valgrind_arches}
+export FCS_TEST_WITHOUT_VALGRIND=1
+%endif
%__rm -f t/t/py-flake8.t t/t/tidyall.t
src="`pwd`"
cd "%{__cmake_builddir}"
@@ -169,12 +176,29 @@ src="%{buildroot}/%{_bindir}/$bn"
mkdir -p "$dest"
%__perl -0777 -p -e 's=\A#!/usr/bin/env python3\r?\n==' < "$src" > "$dest"/"$bn"
rm -f "$src"
+fn="%{buildroot}/%{_docdir}/%{name}/INSTALL"
+rm -f "${fn}"
chmod a-x "$dest/$bn"
+dir="%{buildroot}/%{_datadir}/freecell-solver/presets"
+chmod a+x "${dir}"/*.sh
+dir="%{buildroot}/%{_mandir}/man6"
+mkdir -p "${dir}"
+for prog in "depth-dbm-fc-solver" ; do
+ printf ".so man6/%s\\n" "dbm-fc-solver" > "${dir}/${prog}.6"
+done
+
+for prog in "freecell-solver-fc-pro-range-solve" "freecell-solver-multi-thread-solve" ; do
+ printf ".so man6/%s\\n" "freecell-solver-range-parallel-solve" > "${dir}/${prog}.6"
+done
# Delete static libraries
find %{buildroot} -name *.a -delete
%changelog
+* Sun Jun 09 2024 Shlomi Fish <shlomif(a)shlomifish.org> 6.8.0-7
+- Add man-pages , *.sh files permissions , and other rpmlint warnings silencing.
+- Port from the rawhide branch [FTFBS]
+
* Tue Jan 30 2024 Shlomi Fish <shlomif(a)shlomifish.org> 6.8.0-7
- Add fc-solve-ptr-type.patch to fix GCC errors [FTFBS]
2 weeks, 3 days
Architecture specific change in rpms/proxysql.git
by githook-noreply@fedoraproject.org
The package rpms/proxysql.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/proxysql.git/commit/?id=07656d380....
Change:
+ExcludeArch: %{power64} s390x %{ix86}
Thanks.
Full change:
============
commit 07656d3801de81712796a5e76c47cc2b60768df3
Author: Igor Raits <igor(a)gooddata.com>
Date: Sat May 18 20:25:59 2024 +0200
Disable i686 builds
Builds are failing and we do not have 32bit as a real architecture anyway.
diff --git a/proxysql.spec b/proxysql.spec
index def1b2e..3c7cb4c 100644
--- a/proxysql.spec
+++ b/proxysql.spec
@@ -44,7 +44,7 @@ Suggests: mariadb, community-mysql
# Update 8/2021
# Support for arm64 has been added.
-ExcludeArch: %{power64} s390x
+ExcludeArch: %{power64} s390x %{ix86}
Provides: bundled(jemalloc) = 5.2.0
Provides: bundled(mariadb-connector-c) = 3.3.8
commit 3e6e0608e658c7298930566e1291d129ccc54cc9
Author: Igor Raits <igor(a)gooddata.com>
Date: Sat May 18 19:48:17 2024 +0200
Fix build on i686/aarch64
diff --git a/0001-Unbundle-libconfig-libdaemon-sqlite3-pcre-lz3-curl-e.patch b/0001-Unbundle-libconfig-libdaemon-sqlite3-pcre-lz3-curl-e.patch
index 092cc41..239bd8b 100644
--- a/0001-Unbundle-libconfig-libdaemon-sqlite3-pcre-lz3-curl-e.patch
+++ b/0001-Unbundle-libconfig-libdaemon-sqlite3-pcre-lz3-curl-e.patch
@@ -1,7 +1,7 @@
From dc0e4b61bcb023162fd6a47d238052ffe3f91bb4 Mon Sep 17 00:00:00 2001
From: Igor Raits <igor.raits(a)gmail.com>
Date: Sat, 18 May 2024 17:10:10 +0200
-Subject: [PATCH 1/4] Unbundle libconfig, libdaemon, sqlite3, pcre, lz3, curl,
+Subject: [PATCH 1/6] Unbundle libconfig, libdaemon, sqlite3, pcre, lz3, curl,
ev and libssl
---
diff --git a/0002-Enable-tcp_fastopen-in-bundled-libhttpserver.patch b/0002-Enable-tcp_fastopen-in-bundled-libhttpserver.patch
index 4548b2b..ed6b968 100644
--- a/0002-Enable-tcp_fastopen-in-bundled-libhttpserver.patch
+++ b/0002-Enable-tcp_fastopen-in-bundled-libhttpserver.patch
@@ -1,7 +1,7 @@
From 82ec7ef1bae92649090e38e9132eef8ae432cc59 Mon Sep 17 00:00:00 2001
From: Igor Raits <igor.raits(a)gmail.com>
Date: Sat, 18 May 2024 17:12:43 +0200
-Subject: [PATCH 2/4] Enable tcp_fastopen in bundled libhttpserver
+Subject: [PATCH 2/6] Enable tcp_fastopen in bundled libhttpserver
We have kernel 3.6+ for years and the condition is wrong.
---
diff --git a/0003-Simplify-systemd-services.patch b/0003-Simplify-systemd-services.patch
index 0356814..abeefb3 100644
--- a/0003-Simplify-systemd-services.patch
+++ b/0003-Simplify-systemd-services.patch
@@ -1,7 +1,7 @@
From 7d8c8e212df56fb4027e6a08063a6fec196dbfa8 Mon Sep 17 00:00:00 2001
From: Igor Raits <igor.raits(a)gmail.com>
Date: Sat, 18 May 2024 17:17:50 +0200
-Subject: [PATCH 3/4] Simplify systemd services
+Subject: [PATCH 3/6] Simplify systemd services
---
systemd/system/proxysql-initial.service | 6 +++---
diff --git a/0004-Apply-fPIC-properly-in-re2-build.patch b/0004-Apply-fPIC-properly-in-re2-build.patch
index 53c6b3e..520c2f9 100644
--- a/0004-Apply-fPIC-properly-in-re2-build.patch
+++ b/0004-Apply-fPIC-properly-in-re2-build.patch
@@ -1,7 +1,7 @@
From 7a7487f3d913c9c0e902e1f22a93e63e15753968 Mon Sep 17 00:00:00 2001
From: Igor Raits <igor.raits(a)gmail.com>
Date: Sat, 18 May 2024 17:46:37 +0200
-Subject: [PATCH 4/4] Apply -fPIC properly in re2 build
+Subject: [PATCH 4/6] Apply -fPIC properly in re2 build
Otherwise %configure overrides CXXFLAGS that does NOT include -fPIC and
the compilation fails.
diff --git a/0005-Fix-clickhouse-cpp-build-on-i686-aarch64.patch b/0005-Fix-clickhouse-cpp-build-on-i686-aarch64.patch
new file mode 100644
index 0000000..82035b5
--- /dev/null
+++ b/0005-Fix-clickhouse-cpp-build-on-i686-aarch64.patch
@@ -0,0 +1,61 @@
+From b785e95c5619da6a9a8f8c533e1cd6da4275a98c Mon Sep 17 00:00:00 2001
+From: Igor Raits <igor.raits(a)gmail.com>
+Date: Sat, 18 May 2024 19:47:23 +0200
+Subject: [PATCH 5/6] Fix clickhouse-cpp build on i686/aarch64
+
+---
+ deps/Makefile | 1 +
+ ...eout-and-send_timeout-initialization.patch | 29 +++++++++++++++++++
+ 2 files changed, 30 insertions(+)
+ create mode 100644 deps/clickhouse-cpp/0001-fix-recv_timeout-and-send_timeout-initialization.patch
+
+diff --git a/deps/Makefile b/deps/Makefile
+index 05144023..703b3edd 100644
+--- a/deps/Makefile
++++ b/deps/Makefile
+@@ -121,6 +121,7 @@ clickhouse-cpp/clickhouse-cpp/clickhouse/libclickhouse-cpp-lib-static.a:
+ cd clickhouse-cpp && ln -fsT clickhouse-cpp-2.3.0 clickhouse-cpp
+ cd clickhouse-cpp && tar -zxf v2.3.0.tar.gz && sync
+ cd clickhouse-cpp/clickhouse-cpp && patch clickhouse/base/wire_format.h < ../wire_format.patch
++ patch -d clickhouse-cpp/clickhouse-cpp -p1 -i ../0001-fix-recv_timeout-and-send_timeout-initialization.patch
+ cd clickhouse-cpp/clickhouse-cpp && cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .
+ cd clickhouse-cpp/clickhouse-cpp && CC=${CC} CXX=${CXX} ${MAKE}
+
+diff --git a/deps/clickhouse-cpp/0001-fix-recv_timeout-and-send_timeout-initialization.patch b/deps/clickhouse-cpp/0001-fix-recv_timeout-and-send_timeout-initialization.patch
+new file mode 100644
+index 00000000..f1dc8359
+--- /dev/null
++++ b/deps/clickhouse-cpp/0001-fix-recv_timeout-and-send_timeout-initialization.patch
+@@ -0,0 +1,29 @@
++From cfb12800e698a0e7273a9cb007d0d1658c1689f2 Mon Sep 17 00:00:00 2001
++From: Jia Yue Hua <3423893+jiayuehua(a)users.noreply.github.com>
++Date: Tue, 3 Oct 2023 15:24:35 +0800
++Subject: [PATCH] fix recv_timeout and send_timeout initialization
++
++---
++ clickhouse/base/socket.cpp | 4 ++--
++ 1 file changed, 2 insertions(+), 2 deletions(-)
++
++diff --git a/clickhouse/base/socket.cpp b/clickhouse/base/socket.cpp
++index 28be7b6..3c86629 100644
++--- a/clickhouse/base/socket.cpp
+++++ b/clickhouse/base/socket.cpp
++@@ -129,10 +129,10 @@ void SetNonBlock(SOCKET fd, bool value) {
++
++ void SetTimeout(SOCKET fd, const SocketTimeoutParams& timeout_params) {
++ #if defined(_unix_)
++- timeval recv_timeout{ timeout_params.recv_timeout.count() / 1000, static_cast<int>(timeout_params.recv_timeout.count() % 1000 * 1000) };
+++ timeval recv_timeout{ static_cast<time_t>(timeout_params.recv_timeout.count() / 1000), static_cast<suseconds_t>(timeout_params.recv_timeout.count() % 1000 * 1000) };
++ auto recv_ret = setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &recv_timeout, sizeof(recv_timeout));
++
++- timeval send_timeout{ timeout_params.send_timeout.count() / 1000, static_cast<int>(timeout_params.send_timeout.count() % 1000 * 1000) };
+++ timeval send_timeout{ static_cast<time_t>(timeout_params.send_timeout.count() / 1000), static_cast<suseconds_t>(timeout_params.send_timeout.count() % 1000 * 1000) };
++ auto send_ret = setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &send_timeout, sizeof(send_timeout));
++
++ if (recv_ret == -1 || send_ret == -1) {
++--
++2.45.0
++
+--
+2.45.0
+
diff --git a/0006-Fix-coredumper-build.patch b/0006-Fix-coredumper-build.patch
new file mode 100644
index 0000000..c98d7af
--- /dev/null
+++ b/0006-Fix-coredumper-build.patch
@@ -0,0 +1,56 @@
+From c9f4bbee05cdcb920e69428017993ffbabab6039 Mon Sep 17 00:00:00 2001
+From: Igor Raits <igor.raits(a)gmail.com>
+Date: Sat, 18 May 2024 19:59:16 +0200
+Subject: [PATCH 6/6] Fix coredumper build
+
+---
+ deps/Makefile | 1 +
+ .../0001-Include-unistd.h-for-getpid.patch | 24 +++++++++++++++++++
+ 2 files changed, 25 insertions(+)
+ create mode 100644 deps/coredumper/0001-Include-unistd.h-for-getpid.patch
+
+diff --git a/deps/Makefile b/deps/Makefile
+index 703b3edd..b83008d7 100644
+--- a/deps/Makefile
++++ b/deps/Makefile
+@@ -93,6 +93,7 @@ libhttpserver: libhttpserver/libhttpserver/build/src/.libs/libhttpserver.a
+ coredumper/coredumper/src/libcoredumper.a:
+ cd coredumper && rm -rf coredumper-*/ || true
+ cd coredumper && tar -zxf coredumper-*.tar.gz
++ patch -d coredumper/coredumper -p1 -i ../0001-Include-unistd.h-for-getpid.patch
+ cd coredumper/coredumper && cmake . -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Debug
+ cd coredumper/coredumper && CC=${CC} CXX=${CXX} ${MAKE}
+ coredumper: coredumper/coredumper/src/libcoredumper.a
+diff --git a/deps/coredumper/0001-Include-unistd.h-for-getpid.patch b/deps/coredumper/0001-Include-unistd.h-for-getpid.patch
+new file mode 100644
+index 00000000..386bf4be
+--- /dev/null
++++ b/deps/coredumper/0001-Include-unistd.h-for-getpid.patch
+@@ -0,0 +1,24 @@
++From cb0b6bcde64b3d108f5f9adb429af57890e0bcee Mon Sep 17 00:00:00 2001
++From: Igor Raits <igor.raits(a)gmail.com>
++Date: Sat, 18 May 2024 19:57:19 +0200
++Subject: [PATCH] Include unistd.h for getpid()
++
++---
++ src/thread_lister.c | 1 +
++ 1 file changed, 1 insertion(+)
++
++diff --git a/src/thread_lister.c b/src/thread_lister.c
++index 15fedac..48cb4e4 100644
++--- a/src/thread_lister.c
+++++ b/src/thread_lister.c
++@@ -34,6 +34,7 @@
++ #include "thread_lister.h"
++
++ #include <stdio.h> /* needed for NULL on some powerpc platforms (?!) */
+++#include <unistd.h> /* getpid() */
++ #include <sys/prctl.h>
++
++ #include "linuxthreads.h"
++--
++2.45.0
++
+--
+2.45.0
+
diff --git a/proxysql.spec b/proxysql.spec
index 3ceb0ed..def1b2e 100644
--- a/proxysql.spec
+++ b/proxysql.spec
@@ -5,11 +5,11 @@ Release: 1%{?dist}
# Proxysql Google group for free community support: https://groups.google.com/g/proxysql
URL: https://proxysql.com/
# GPL-3.0-or-later
+# deps/coredumper: BSD-3-Clause
# deps/jemalloc: BSD-2-Clause
# deps/mariadb-connector-c: LGPL-2.1-or-later
# deps/prometheus-cpp: MIT
# deps/re2: BSD-3-Clause
-# deps/coredumper: BSD-3-Clause
License: GPL-3.0-or-later AND LGPL-2.1-or-later AND BSD-3-Clause AND BSD-2-Clause AND MIT
BuildRequires: make, automake
@@ -85,6 +85,8 @@ MySQL and forks (like Percona Server and MariaDB).
0002-Enable-tcp_fastopen-in-bundled-libhttpserver.patch
0003-Simplify-systemd-services.patch
0004-Apply-fPIC-properly-in-re2-build.patch
+0005-Fix-clickhouse-cpp-build-on-i686-aarch64.patch
+0006-Fix-coredumper-build.patch
%prep
%autosetup -p1
commit 15babf3d485a1e2a5d1ad23327389189b5ce71ed
Author: Igor Raits <igor(a)gooddata.com>
Date: Sat May 18 18:17:14 2024 +0200
fixup! Update to 2.6.2
diff --git a/proxysql.spec b/proxysql.spec
index 79247b5..3ceb0ed 100644
--- a/proxysql.spec
+++ b/proxysql.spec
@@ -85,7 +85,6 @@ MySQL and forks (like Percona Server and MariaDB).
0002-Enable-tcp_fastopen-in-bundled-libhttpserver.patch
0003-Simplify-systemd-services.patch
0004-Apply-fPIC-properly-in-re2-build.patch
-0005-fixup-Unbundle-libconfig-libdaemon-sqlite3-pcre-lz3-.patch
%prep
%autosetup -p1
commit f01e23939ba2d9073d0f8ab1458d6b7f236dafaf
Author: Igor Raits <igor(a)gooddata.com>
Date: Sat May 18 17:19:22 2024 +0200
fixup! Update to 2.6.2
diff --git a/0004-Apply-fPIC-properly-in-re2-build.patch b/0004-Apply-fPIC-properly-in-re2-build.patch
new file mode 100644
index 0000000..53c6b3e
--- /dev/null
+++ b/0004-Apply-fPIC-properly-in-re2-build.patch
@@ -0,0 +1,29 @@
+From 7a7487f3d913c9c0e902e1f22a93e63e15753968 Mon Sep 17 00:00:00 2001
+From: Igor Raits <igor.raits(a)gmail.com>
+Date: Sat, 18 May 2024 17:46:37 +0200
+Subject: [PATCH 4/4] Apply -fPIC properly in re2 build
+
+Otherwise %configure overrides CXXFLAGS that does NOT include -fPIC and
+the compilation fails.
+---
+ deps/Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/deps/Makefile b/deps/Makefile
+index 23c4f894..05144023 100644
+--- a/deps/Makefile
++++ b/deps/Makefile
+@@ -211,8 +211,9 @@ ifeq ($(SYS_KERN),Darwin)
+ cd re2/re2 && sed -i '' -e 's/-O3 -g/-O3 -g -${STDCPP} -fPIC -DMEMORY_SANITIZER -DRE2_ON_VALGRIND /' Makefile
+ # cd re2/re2 && sed -i '' -e 's/RE2_CXXFLAGS?=-std=c++11 /RE2_CXXFLAGS?=-std=c++11 -fPIC /' Makefile
+ else
+- cd re2/re2 && sed -i -e 's/-O3 -g/-O3 -g ${STDCPP} -fPIC -DMEMORY_SANITIZER -DRE2_ON_VALGRIND /' Makefile
++# cd re2/re2 && sed -i -e 's/-O3 -g/-O3 -g ${STDCPP} -fPIC -DMEMORY_SANITIZER -DRE2_ON_VALGRIND /' Makefile
+ # cd re2/re2 && sed -i -e 's/RE2_CXXFLAGS?=-std=c++11 /RE2_CXXFLAGS?=-std=c++11 -fPIC /' Makefile
++ sed -i -e '/^RE2_CXXFLAGS?=/ s/$$/ -fPIC -DMEMORY_SANITIZER -DRE2_ON_VALGRIND /' re2/re2/Makefile
+ endif
+ cd re2/re2 && CC=${CC} CXX=${CXX} ${MAKE}
+
+--
+2.45.0
+
commit a5182eb2b48441fc4c76b76b42d3badbac1c58f1
Author: Igor Raits <igor(a)gooddata.com>
Date: Sat May 18 17:19:22 2024 +0200
Update to 2.6.2
diff --git a/0001-Unbundle-libconfig-libdaemon-sqlite3-pcre-lz3-curl-e.patch b/0001-Unbundle-libconfig-libdaemon-sqlite3-pcre-lz3-curl-e.patch
new file mode 100644
index 0000000..092cc41
--- /dev/null
+++ b/0001-Unbundle-libconfig-libdaemon-sqlite3-pcre-lz3-curl-e.patch
@@ -0,0 +1,375 @@
+From dc0e4b61bcb023162fd6a47d238052ffe3f91bb4 Mon Sep 17 00:00:00 2001
+From: Igor Raits <igor.raits(a)gmail.com>
+Date: Sat, 18 May 2024 17:10:10 +0200
+Subject: [PATCH 1/4] Unbundle libconfig, libdaemon, sqlite3, pcre, lz3, curl,
+ ev and libssl
+
+---
+ deps/Makefile | 100 ++------------------------------------------------
+ lib/Makefile | 22 ++---------
+ src/Makefile | 47 +++---------------------
+ 3 files changed, 12 insertions(+), 157 deletions(-)
+
+diff --git a/deps/Makefile b/deps/Makefile
+index 7e4235dc..7d1a76fe 100644
+--- a/deps/Makefile
++++ b/deps/Makefile
+@@ -38,7 +38,7 @@ endif
+ STDCPP := -std=c++$(shell echo $(CPLUSPLUS) | cut -c3-4) -DCXX$(shell echo $(CPLUSPLUS) | cut -c3-4)
+
+
+-targets := libconfig libdaemon jemalloc mariadb_client re2 sqlite3 pcre lz4 cityhash microhttpd curl ev libssl libhttpserver libinjection prometheus-cpp
++targets := jemalloc mariadb_client re2 cityhash microhttpd libhttpserver libinjection prometheus-cpp
+ ifeq ($(SYS_KERN),Linux)
+ targets += coredumper
+ endif
+@@ -70,19 +70,6 @@ endif
+ libinjection: libinjection/libinjection/src/libinjection.a
+
+
+-libssl/openssl/libssl.a:
+- cd libssl && rm -rf openssl-openssl-*/ openssl-3*/ || true
+- cd libssl && tar -zxf openssl-*.tar.gz
+- cd libssl && ./verify-bio_st-match.sh
+-# cd libssl/openssl && patch crypto/ec/curve448/curve448.c < ../curve448.c-multiplication-overflow.patch
+-# cd libssl/openssl && patch crypto/asn1/a_time.c < ../a_time.c-multiplication-overflow.patch
+- cd libssl/openssl && ./config no-ssl3 no-tests
+- cd libssl/openssl && CC=${CC} CXX=${CXX} ${MAKE}
+- cd libssl/openssl && ln -fsT . lib # curl wants this path
+-
+-libssl: libssl/openssl/libssl.a
+-
+-
+ libhttpserver/libhttpserver/build/src/.libs/libhttpserver.a: libmicrohttpd/libmicrohttpd/src/microhttpd/.libs/libmicrohttpd.a re2/re2/obj/libre2.a
+ cd libhttpserver && rm -rf libhttpserver-*/ || true
+ cd libhttpserver && tar -zxf libhttpserver-*.tar.gz
+@@ -102,16 +89,6 @@ endif
+ libhttpserver: libhttpserver/libhttpserver/build/src/.libs/libhttpserver.a
+
+
+-libev/libev/.libs/libev.a:
+- cd libev && rm -rf libev-*/ || true
+- cd libev && tar -zxf libev-*.tar.gz
+- cd libev/libev && patch ev.c < ../ev.c-multiplication-overflow.patch
+- cd libev/libev && ./configure
+- cd libev/libev && CC=${CC} CXX=${CXX} ${MAKE}
+-
+-ev: libev/libev/.libs/libev.a
+-
+-
+ coredumper/coredumper/src/libcoredumper.a:
+ cd coredumper && rm -rf coredumper-*/ || true
+ cd coredumper && tar -zxf coredumper-*.tar.gz
+@@ -119,18 +96,6 @@ coredumper/coredumper/src/libcoredumper.a:
+ cd coredumper/coredumper && CC=${CC} CXX=${CXX} ${MAKE}
+ coredumper: coredumper/coredumper/src/libcoredumper.a
+
+-curl/curl/lib/.libs/libcurl.a: libssl/openssl/libssl.a
+- cd curl && rm -rf curl-*/ || true
+- cd curl && tar -zxf curl-*.tar.gz
+-# cd curl/curl && ./configure --disable-debug --disable-ftp --disable-ldap --disable-ldaps --disable-rtsp --disable-proxy --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smb --disable-smtp --disable-gopher --disable-manual --disable-ipv6 --disable-sspi --disable-crypto-auth --disable-ntlm-wb --disable-tls-srp --without-nghttp2 --without-libidn2 --without-libssh2 --without-brotli --with-ssl=$(shell pwd)/../../libssl/openssl/ && CC=${CC} CXX=${CXX} ${MAKE}
+- cd curl/curl && autoreconf -fi
+-ifeq ($(SYS_KERN),Darwin)
+- cd curl/curl && patch configure < ../configure.patch
+-endif
+- cd curl/curl && CFLAGS=-fPIC ./configure --disable-debug --disable-ftp --disable-ldap --disable-ldaps --disable-rtsp --disable-proxy --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smb --disable-smtp --disable-gopher --disable-manual --disable-ipv6 --disable-sspi --disable-ntlm-wb --disable-tls-srp --without-nghttp2 --without-libidn2 --without-libssh2 --without-brotli --without-librtmp --without-libpsl --without-zstd --with-ssl=$(shell pwd)/libssl/openssl/ --enable-shared=yes && LD_LIBRARY_PATH=$(shell pwd)/libssl/openssl CC=${CC} CXX=${CXX} ${MAKE}
+-
+-curl: curl/curl/lib/.libs/libcurl.a
+-
+
+ libmicrohttpd/libmicrohttpd/src/microhttpd/.libs/libmicrohttpd.a:
+ cd libmicrohttpd && rm -rf libmicrohttpd-*/ || true
+@@ -150,14 +115,6 @@ cityhash/cityhash/src/.libs/libcityhash.a:
+ cityhash: cityhash/cityhash/src/.libs/libcityhash.a
+
+
+-lz4/lz4/lib/liblz4.a:
+- cd lz4 && rm -rf lz4-*/ || true
+- cd lz4 && tar -zxf lz4-*.tar.gz
+- cd lz4/lz4 && CC=${CC} CXX=${CXX} ${MAKE}
+-
+-lz4: lz4/lz4/lib/liblz4.a
+-
+-
+ clickhouse-cpp/clickhouse-cpp/clickhouse/libclickhouse-cpp-lib-static.a:
+ cd clickhouse-cpp && rm -rf clickhouse-cpp-*/ || true
+ cd clickhouse-cpp && ln -fsT clickhouse-cpp-2.3.0 clickhouse-cpp
+@@ -169,16 +126,6 @@ clickhouse-cpp/clickhouse-cpp/clickhouse/libclickhouse-cpp-lib-static.a:
+ clickhouse-cpp: clickhouse-cpp/clickhouse-cpp/clickhouse/libclickhouse-cpp-lib-static.a
+
+
+-libdaemon/libdaemon/libdaemon/.libs/libdaemon.a:
+- cd libdaemon && rm -rf libdaemon-*/ || true
+- cd libdaemon && tar -zxf libdaemon-0.14.tar.gz
+- cd libdaemon/libdaemon && patch -p0 < ../daemon_fork_umask.patch
+- cd libdaemon/libdaemon && cp ../config.guess . && chmod +x config.guess && cp ../config.sub . && chmod +x config.sub && ./configure --disable-examples
+- cd libdaemon/libdaemon && CC=${CC} CXX=${CXX} ${MAKE}
+-
+-libdaemon: libdaemon/libdaemon/libdaemon/.libs/libdaemon.a
+-
+-
+ jemalloc/jemalloc/lib/libjemalloc.a:
+ cd jemalloc && rm -rf jemalloc-*/ || true
+ cd jemalloc && tar --no-same-owner -jxf jemalloc-5.2.0.tar.bz2
+@@ -191,11 +138,11 @@ jemalloc/jemalloc/lib/libjemalloc.a:
+ jemalloc: jemalloc/jemalloc/lib/libjemalloc.a
+
+
+-mariadb-client-library/mariadb_client/libmariadb/libmariadbclient.a: libssl/openssl/libssl.a
++mariadb-client-library/mariadb_client/libmariadb/libmariadbclient.a:
+ cd mariadb-client-library && rm -rf mariadb-connector-c-*/ || true
+ cd mariadb-client-library && tar -zxf mariadb-connector-c-3.3.8-src.tar.gz
+ cd mariadb-client-library/mariadb_client && patch -p0 < ../plugin_auth_CMakeLists.txt.patch
+- cd mariadb-client-library/mariadb_client && cmake . -Wno-dev -DOPENSSL_ROOT_DIR=$(shell pwd)/libssl/openssl/ -DOPENSSL_LIBRARIES=$(shell pwd)/libssl/openssl/ -DICONV_LIBRARIES=$(brew --prefix libiconv)/lib -DICONV_INCLUDE=$(brew --prefix libiconv)/include .
++ cd mariadb-client-library/mariadb_client && cmake . -Wno-dev -DOPENSSL_ROOT_DIR=/usr/include/openssl -DOPENSSL_LIBRARIES=/usr/bin
+ ifeq ($(PROXYDEBUG),1)
+ cd mariadb-client-library/mariadb_client && patch -p0 < ../ma_context.h.patch
+ else ifeq ($(USEVALGRIND),1)
+@@ -240,27 +187,6 @@ endif
+ mariadb_client: mariadb-client-library/mariadb_client/libmariadb/libmariadbclient.a
+
+
+-sqlite3/sqlite3/sqlite3.o:
+- cd sqlite3 && rm -rf sqlite-amalgamation-*/ || true
+- cd sqlite3 && tar -zxf sqlite-amalgamation-*.tar.gz
+- cd sqlite3/sqlite3 && patch -p1 < ../from_unixtime.patch
+- cd sqlite3/sqlite3 && patch sqlite3.c < ../sqlite3.c-multiplication-overflow.patch
+- cd sqlite3/sqlite3 && patch -p0 < ../sqlite3_pass_exts.patch
+- cd sqlite3/sqlite3 && ${CC} ${MYCFLAGS} -fPIC -c -o sqlite3.o sqlite3.c -DSQLITE_ENABLE_MEMORY_MANAGEMENT -DSQLITE_ENABLE_JSON1 -DSQLITE_DLL=1
+- cd sqlite3/sqlite3 && ${CC} -shared -o libsqlite3.so sqlite3.o
+-
+-sqlite3: sqlite3/sqlite3/sqlite3.o
+-
+-
+-libconfig/libconfig/lib/.libs/libconfig++.a:
+- cd libconfig && rm -rf libconfig-*/ || true
+- cd libconfig && tar -zxf libconfig-*.tar.gz
+- cd libconfig/libconfig && ./configure --disable-examples
+- cd libconfig/libconfig && CC=${CC} CXX=${CXX} ${MAKE}
+-
+-libconfig: libconfig/libconfig/lib/.libs/libconfig++.a
+-
+-
+ prometheus-cpp/prometheus-cpp/lib/libprometheus-cpp-core.a:
+ cd prometheus-cpp && rm -rf prometheus-cpp-*/ || true
+ cd prometheus-cpp && tar -zxf prometheus-cpp-*.tar.gz
+@@ -292,41 +218,21 @@ endif
+ re2: re2/re2/obj/libre2.a
+
+
+-pcre/pcre/.libs/libpcre.a:
+- cd pcre && rm -rf pcre-*/ || true
+- cd pcre && tar -zxf pcre-*.tar.gz
+- cd pcre/pcre && patch pcretest.c < ../pcretest.c-multiplication-overflow.patch
+- cd pcre/pcre && ./configure
+- cd pcre/pcre && CC=${CC} CXX=${CXX} ${MAKE}
+-
+-pcre: pcre/pcre/.libs/libpcre.a
+-
+-
+ ### clean targets
+
+ cleanpart:
+ cd mariadb-client-library && rm -rf mariadb-connector-c-*/ || true
+ cd jemalloc && rm -rf jemalloc-*/ || true
+- cd sqlite3 && rm -rf sqlite-amalgamation-*/ || true
+ .PHONY: cleanpart
+
+ cleanall:
+ cd libinjection && rm -rf libinjection-*/ || true
+ cd libhttpserver && rm -rf libhttpserver-*/ || true
+- cd libdaemon && rm -rf libdaemon-*/ || true
+ cd jemalloc && rm -rf jemalloc-*/ || true
+ cd mariadb-client-library && rm -rf mariadb-connector-c-*/ || true
+- cd libconfig && rm -rf libconfig-*/ || true
+ cd re2 && rm -rf re2-*/ || true
+- cd pcre && rm -rf pcre-*/ || true
+- cd sqlite3 && rm -rf sqlite-amalgamation-*/ || true
+ cd clickhouse-cpp/ && rm -rf clickhouse-cpp-* || true
+- cd lz4 && rm -rf lz4-*/ || true
+ cd libmicrohttpd && rm -rf libmicrohttpd-*/ || true
+- cd curl && rm -rf curl-*/ || true
+- cd libev && rm -rf libev-*/ || true
+- cd libssl && rm -rf openssl-openssl-*/ openssl-3*/ || true
+- cd libconfig && rm -rf libconfig-*/ || true
+ cd prometheus-cpp && rm -rf prometheus-cpp-*/ || true
+ cd cityhash && rm -rf cityhash-*/ || true
+ cd coredumper && rm -rf coredumper-*/ || true
+diff --git a/lib/Makefile b/lib/Makefile
+index b94dd2fc..65973de8 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -17,19 +17,12 @@ MARIADB_IDIR := $(MARIADB_PATH)/include
+ JEMALLOC_PATH := $(DEPS_PATH)/jemalloc/jemalloc
+ JEMALLOC_IDIR := $(JEMALLOC_PATH)/include/jemalloc
+
+-LIBCONFIG_PATH := $(DEPS_PATH)/libconfig/libconfig
+-LIBCONFIG_IDIR := -I$(LIBCONFIG_PATH)/lib
+-
+ #INJECTION_PATH := $(DEPS_PATH)/libinjection
+ #INJECTION_IDIR := $(INJECTION_PATH)
+
+ RE2_PATH := $(DEPS_PATH)/re2/re2
+ RE2_IDIR := $(RE2_PATH)
+
+-PCRE_PATH := $(DEPS_PATH)/pcre/pcre
+-
+-SQLITE3_DIR := $(DEPS_PATH)/sqlite3/sqlite3
+-
+ CLICKHOUSE_CPP_DIR := $(DEPS_PATH)/clickhouse-cpp/clickhouse-cpp
+
+ LIBINJECTION_DIR := $(DEPS_PATH)/libinjection/libinjection
+@@ -44,15 +37,6 @@ MICROHTTPD_IDIR := -I$(MICROHTTPD_DIR) -I$(MICROHTTPD_DIR)/src/include
+ COREDUMPER_DIR := $(DEPS_PATH)/coredumper/coredumper
+ COREDUMPER_IDIR := $(COREDUMPER_DIR)/include
+
+-CURL_DIR := $(DEPS_PATH)/curl/curl
+-CURL_IDIR := $(CURL_DIR)/include
+-
+-SSL_DIR := $(DEPS_PATH)/libssl/openssl/
+-SSL_IDIR := $(SSL_DIR)/include
+-
+-EV_DIR := $(DEPS_PATH)/libev/libev/
+-EV_IDIR := $(EV_DIR)
+-
+ PROMETHEUS_PATH := $(DEPS_PATH)/prometheus-cpp/prometheus-cpp
+ PROMETHEUS_IDIR := $(PROMETHEUS_PATH)/pull/include -I$(PROMETHEUS_PATH)/core/include
+ PROMETHEUS_LDIR := $(PROMETHEUS_PATH)/lib
+@@ -60,7 +44,7 @@ PROMETHEUS_LDIR := $(PROMETHEUS_PATH)/lib
+
+ IDIR := ../include
+
+-IDIRS := -I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(RE2_IDIR) -I$(SQLITE3_DIR) -I$(PCRE_PATH) -I/usr/local/include -I$(CLICKHOUSE_CPP_DIR) -I$(CLICKHOUSE_CPP_DIR)/contrib/ $(MICROHTTPD_IDIR) $(LIBHTTPSERVER_IDIR) $(LIBINJECTION_IDIR) -I$(CURL_IDIR) -I$(EV_DIR) -I$(SSL_IDIR) -I$(PROMETHEUS_IDIR)
++IDIRS := -I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) -I$(RE2_IDIR) -I/usr/local/include -I$(CLICKHOUSE_CPP_DIR) -I$(CLICKHOUSE_CPP_DIR)/contrib/ $(MICROHTTPD_IDIR) $(LIBHTTPSERVER_IDIR) $(LIBINJECTION_IDIR) -I$(PROMETHEUS_IDIR)
+ ifeq ($(UNAME_S),Linux)
+ IDIRS += -I$(COREDUMPER_IDIR)
+ endif
+@@ -137,8 +121,8 @@ HEADERS := ../include/*.h ../include/*.hpp
+ $(ODIR)/%.oo: %.cpp $(HEADERS)
+ $(CXX) -fPIC -c -o $@ $< $(MYCXXFLAGS) $(CXXFLAGS)
+
+-libproxysql.a: $(ODIR) $(OBJ) $(OBJ_CXX) $(SQLITE3_DIR)/sqlite3.o
+- ar rcs $@ $(OBJ) $(OBJ_CXX) $(SQLITE3_DIR)/sqlite3.o
++libproxysql.a: $(ODIR) $(OBJ) $(OBJ_CXX)
++ ar rcs $@ $(OBJ) $(OBJ_CXX)
+
+ $(ODIR):
+ mkdir $(ODIR)
+diff --git a/src/Makefile b/src/Makefile
+index 0d2e577c..bff22a1f 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -22,18 +22,10 @@ MARIADB_PATH := $(DEPS_PATH)/mariadb-client-library/mariadb_client
+ MARIADB_IDIR := $(MARIADB_PATH)/include
+ MARIADB_LDIR := $(MARIADB_PATH)/libmariadb
+
+-LIBDAEMON_PATH := $(DEPS_PATH)/libdaemon/libdaemon
+-LIBDAEMON_IDIR := $(LIBDAEMON_PATH)
+-LIBDAEMON_LDIR := $(LIBDAEMON_PATH)/libdaemon/.libs
+-
+ JEMALLOC_PATH := $(DEPS_PATH)/jemalloc/jemalloc
+ JEMALLOC_IDIR := $(JEMALLOC_PATH)/include/jemalloc
+ JEMALLOC_LDIR := $(JEMALLOC_PATH)/lib
+
+-LIBCONFIG_PATH := $(DEPS_PATH)/libconfig/libconfig
+-LIBCONFIG_IDIR := $(LIBCONFIG_PATH)/lib
+-LIBCONFIG_LDIR := $(LIBCONFIG_PATH)/lib/.libs
+-
+ PROMETHEUS_PATH := $(DEPS_PATH)/prometheus-cpp/prometheus-cpp
+ PROMETHEUS_IDIR := $(PROMETHEUS_PATH)/pull/include -I$(PROMETHEUS_PATH)/core/include
+ PROMETHEUS_LDIR := $(PROMETHEUS_PATH)/lib
+@@ -42,20 +34,9 @@ RE2_PATH := $(DEPS_PATH)/re2/re2
+ RE2_IDIR := $(RE2_PATH)
+ RE2_LDIR := $(RE2_PATH)/obj
+
+-PCRE_PATH := $(DEPS_PATH)/pcre/pcre
+-PCRE_IDIR := $(PCRE_PATH)
+-PCRE_LDIR := $(PCRE_PATH)/.libs
+-
+-SQLITE3_PATH := $(DEPS_PATH)/sqlite3/sqlite3
+-SQLITE3_IDIR := $(SQLITE3_PATH)
+-SQLITE3_LDIR := $(SQLITE3_PATH)
+-
+ CITYHASH_PATH := $(DEPS_PATH)/cityhash/cityhash
+ CITYHASH_LDIR := $(CITYHASH_PATH)/src/.libs
+
+-LZ4_PATH := $(DEPS_PATH)/lz4/lz4
+-LZ4_LDIR := $(LZ4_PATH)/lib
+-
+ CLICKHOUSE_CPP_PATH := $(DEPS_PATH)/clickhouse-cpp/clickhouse-cpp
+ CLICKHOUSE_CPP_CDIR := $(CLICKHOUSE_CPP_PATH)/contrib
+ CLICKHOUSE_CPP_IDIR := $(CLICKHOUSE_CPP_PATH)
+@@ -77,21 +58,9 @@ COREDUMPER_PATH := $(DEPS_PATH)/coredumper/coredumper
+ COREDUMPER_IDIR := $(COREDUMPER_PATH)/include
+ COREDUMPER_LDIR := $(COREDUMPER_PATH)/src
+
+-CURL_PATH := $(DEPS_PATH)/curl/curl
+-CURL_IDIR := $(CURL_PATH)/include
+-CURL_LDIR := $(CURL_PATH)/lib/.libs
+-
+-SSL_PATH := $(DEPS_PATH)/libssl/openssl/
+-SSL_IDIR := $(SSL_PATH)/include
+-SSL_LDIR := $(SSL_PATH)
+-
+-EV_PATH := $(DEPS_PATH)/libev/libev/
+-EV_IDIR := $(EV_PATH)
+-EV_LDIR := $(EV_PATH)/.libs
+-
+
+-IDIRS := -I$(PROXYSQL_IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) -I$(LIBCONFIG_IDIR) -I$(LIBDAEMON_IDIR) -I$(RE2_IDIR) -L$(PCRE_IDIR) -I$(MICROHTTPD_IDIR) -I$(LIBHTTPSERVER_IDIR) -I$(LIBINJECTION_IDIR) -I$(CURL_IDIR) -I$(EV_IDIR) -I$(SSL_IDIR) -I$(PROMETHEUS_IDIR) -I$(SQLITE3_IDIR) -I$(CLICKHOUSE_CPP_IDIR) -I$(CLICKHOUSE_CPP_CDIR) -I$(0)
+-LDIRS := -L$(PROXYSQL_LDIR) -L$(JEMALLOC_LDIR) -L$(MARIADB_LDIR) -L$(LIBCONFIG_LDIR) -L$(LIBDAEMON_LDIR) -L$(RE2_LDIR) -L$(PCRE_LDIR) -L$(MICROHTTPD_LDIR) -L$(LIBHTTPSERVER_LDIR) -L$(LIBINJECTION_LDIR) -L$(CURL_LDIR) -L$(EV_LDIR) -L$(SSL_LDIR) -L$(PROMETHEUS_LDIR)
++IDIRS := -I$(PROXYSQL_IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) -I$(RE2_IDIR) -I$(MICROHTTPD_IDIR) -I$(LIBHTTPSERVER_IDIR) -I$(LIBINJECTION_IDIR) -I$(PROMETHEUS_IDIR) -I$(CLICKHOUSE_CPP_IDIR) -I$(CLICKHOUSE_CPP_CDIR) -I$(0)
++LDIRS := -L$(PROXYSQL_LDIR) -L$(JEMALLOC_LDIR) -L$(MARIADB_LDIR) -L$(RE2_LDIR) -L$(MICROHTTPD_LDIR) -L$(LIBHTTPSERVER_LDIR) -L$(LIBINJECTION_LDIR) -L$(PROMETHEUS_LDIR)
+
+
+ UNAME_S := $(shell uname -s)
+@@ -156,7 +125,7 @@ endif
+ MYCXXFLAGS += $(IDIRS) $(OPTZ) $(DEBUG) $(PSQLCH) -DGITVERSION=\"$(GIT_VERSION)\" $(WGCOV) $(WASAN)
+
+
+-STATICMYLIBS := -Wl,-Bstatic -lconfig -lproxysql -ldaemon -lconfig++ -lre2 -lpcrecpp -lpcre -lmariadbclient -lhttpserver -lmicrohttpd -linjection -lcurl -lssl -lcrypto -lev
++STATICMYLIBS := -Wl,-Bstatic -lproxysql -lre2 -lmariadbclient -lhttpserver -lmicrohttpd -linjection
+ ifneq ($(NOJEMALLOC),1)
+ STATICMYLIBS += -ljemalloc
+ endif
+@@ -168,9 +137,7 @@ MYLIBS := -Wl,--export-dynamic $(STATICMYLIBS) -Wl,-Bdynamic -lgnutls -lpthread
+ ifeq ($(UNAME_S),Darwin)
+ MYLIBS :=-lre2 -lmariadbclient -lpthread -lm -lz -liconv -lgnutls -lprometheus-cpp-pull -lprometheus-cpp-core -luuid
+ else
+- CURL_DIR := $(DEPS_PATH)/curl/curl
+- IDIRS += -L$(CURL_DIR)/include
+- LDIRS += -L$(CURL_DIR)/lib/.libs
++ MYLIBS += -lconfig -ldaemon -lconfig++ -lpcrecpp -lpcre -lcurl -lssl -lcrypto -lev
+ endif
+ ifeq ($(UNAME_S),Linux)
+ MYLIBS += -ldl
+@@ -182,7 +149,7 @@ ifeq ($(CENTOSVER),6)
+ MYLIBS += -lgcrypt
+ endif
+
+-LIBPROXYSQLAR := $(PROXYSQL_LDIR)/libproxysql.a
++LIBPROXYSQLAR := $(PROXYSQL_LDIR)/libproxysql.a -lsqlite3
+ ifeq ($(UNAME_S),Darwin)
+ LIBPROXYSQLAR += $(JEMALLOC_LDIR)/libjemalloc.a
+ LIBPROXYSQLAR += $(MICROHTTPD_LDIR)/libmicrohttpd.a
+@@ -197,8 +164,6 @@ ifeq ($(UNAME_S),Darwin)
+ LIBPROXYSQLAR += $(LIBINJECTION_LDIR)/libinjection.a
+ LIBPROXYSQLAR += $(EV_LDIR)/libev.a
+ endif
+-LIBPROXYSQLAR += $(SSL_LDIR)/libssl.a
+-LIBPROXYSQLAR += $(SSL_LDIR)/libcrypto.a
+ LIBPROXYSQLAR += $(CITYHASH_LDIR)/libcityhash.a
+
+ ODIR := obj
+@@ -213,7 +178,7 @@ $(ODIR)/%.o: %.cpp
+
+ $(EXECUTABLE): $(ODIR) $(OBJ) $(LIBPROXYSQLAR)
+ ifeq ($(PROXYSQLCLICKHOUSE),1)
+- $(CXX) -o $@ $(OBJ) $(CLANGFIX) $(LIBPROXYSQLAR) $(CLICKHOUSE_CPP_LDIR)/libclickhouse-cpp-lib-static.a $(LZ4_LDIR)/liblz4.a $(MYCXXFLAGS) $(CXXFLAGS) $(LDIRS) $(LIBS) $(MYLIBS)
++ $(CXX) -o $@ $(OBJ) $(CLANGFIX) $(LIBPROXYSQLAR) $(CLICKHOUSE_CPP_LDIR)/libclickhouse-cpp-lib-static.a -llz4 $(MYCXXFLAGS) $(CXXFLAGS) $(LDIRS) $(LIBS) $(MYLIBS)
+ else
+ $(CXX) -o $@ $(OBJ) $(CLANGFIX) $(LIBPROXYSQLAR) $(MYCXXFLAGS) $(CXXFLAGS) $(LDIRS) $(LIBS) $(MYLIBS)
+ endif
+--
+2.45.0
+
diff --git a/0001-Unbundle-system-deps.patch b/0001-Unbundle-system-deps.patch
deleted file mode 100644
index 8dab0b0..0000000
--- a/0001-Unbundle-system-deps.patch
+++ /dev/null
@@ -1,333 +0,0 @@
-From cb885f178e1b18109f9ce1de20f5f59cd6c6e4e5 Mon Sep 17 00:00:00 2001
-From: Igor Raits <igor.raits(a)gmail.com>
-Date: Sat, 26 Nov 2022 08:25:04 +0100
-Subject: [PATCH 1/3] Unbundle system deps
-
----
- deps/Makefile | 77 +++------------------------------------------------
- lib/Makefile | 30 ++------------------
- src/Makefile | 44 ++++-------------------------
- 3 files changed, 13 insertions(+), 138 deletions(-)
-
-diff --git a/deps/Makefile b/deps/Makefile
-index 38191244..88b2eadf 100644
---- a/deps/Makefile
-+++ b/deps/Makefile
-@@ -57,9 +57,9 @@ endif
-
- PROXYSQLCLICKHOUSE := $(shell echo $(PROXYSQLCLICKHOUSE))
- ifeq ($(PROXYSQLCLICKHOUSE),1)
--default: libconfig libdaemon jemalloc mariadb_client re2 sqlite3 pcre clickhouse-cpp lz4 cityhash microhttpd curl ev libssl libhttpserver libinjection prometheus-cpp
-+default: jemalloc mariadb_client re2 clickhouse-cpp cityhash microhttpd libhttpserver libinjection prometheus-cpp
- else
--default: libconfig libdaemon jemalloc mariadb_client re2 sqlite3 pcre cityhash microhttpd curl ev libssl libhttpserver libinjection prometheus-cpp
-+default: jemalloc mariadb_client re2 cityhash microhttpd libhttpserver libinjection prometheus-cpp
- endif
- .PHONY: default
-
-@@ -79,16 +79,6 @@ endif
- cd libinjection/libinjection && CC=${CC} CXX=${CXX} ${MAKE}
- libinjection: libinjection/libinjection/src/libinjection.a
-
--libssl/openssl/libssl.a:
-- cd libssl && rm -rf openssl-openssl-*/ openssl-3*/ || true
-- cd libssl && tar -zxf openssl-*.tar.gz
--# cd libssl/openssl && patch crypto/ec/curve448/curve448.c < ../curve448.c-multiplication-overflow.patch
--# cd libssl/openssl && patch crypto/asn1/a_time.c < ../a_time.c-multiplication-overflow.patch
-- cd libssl/openssl && ./config no-ssl3 no-tests
-- cd libssl/openssl && CC=${CC} CXX=${CXX} ${MAKE}
-- cd libssl/openssl && ln -s . lib # curl wants this path
--libssl: libssl/openssl/libssl.a
--
- MIN_VERSION := 4.9.0
- GCC_VERSION := $(shell gcc -dumpversion)
- SORTED_VERSIONS := $(shell echo -e "$(GCC_VERSION)\n$(MIN_VERSION)" | sort -V)
-@@ -123,22 +113,6 @@ endif
- cd libhttpserver/libhttpserver/build && CC=${CC} CXX=${CXX} ${MAKE}
- libhttpserver: libhttpserver/libhttpserver/build/src/.libs/libhttpserver.a
-
--libev/libev/.libs/libev.a:
-- cd libev && rm -rf libev-*/ || true
-- cd libev && tar -zxf libev-4.24.tar.gz
-- cd libev/libev && patch ev.c < ../ev.c-multiplication-overflow.patch
-- cd libev/libev && ./configure
-- cd libev/libev && CC=${CC} CXX=${CXX} ${MAKE}
--ev: libev/libev/.libs/libev.a
--
--curl/curl/lib/.libs/libcurl.a: libssl/openssl/libssl.a
-- cd curl && rm -rf curl-*/ || true
-- cd curl && tar -zxf curl-*.tar.gz
-- #cd curl/curl && ./configure --disable-debug --disable-ftp --disable-ldap --disable-ldaps --disable-rtsp --disable-proxy --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smb --disable-smtp --disable-gopher --disable-manual --disable-ipv6 --disable-sspi --disable-crypto-auth --disable-ntlm-wb --disable-tls-srp --without-nghttp2 --without-libidn2 --without-libssh2 --without-brotli --with-ssl=$(shell pwd)/../../libssl/openssl/ && CC=${CC} CXX=${CXX} ${MAKE}
-- cd curl/curl && patch configure < ../configure.patch
-- cd curl/curl && CFLAGS=-fPIC ./configure --disable-debug --disable-ftp --disable-ldap --disable-ldaps --disable-rtsp --disable-proxy --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smb --disable-smtp --disable-gopher --disable-manual --disable-ipv6 --disable-sspi --disable-ntlm-wb --disable-tls-srp --without-nghttp2 --without-libidn2 --without-libssh2 --without-brotli --without-librtmp --without-libpsl --without-zstd --with-ssl=$(shell pwd)/libssl/openssl/ --enable-shared=no && CC=${CC} CXX=${CXX} ${MAKE}
--curl: curl/curl/lib/.libs/libcurl.a
--
- libmicrohttpd/libmicrohttpd/src/microhttpd/.libs/libmicrohttpd.a:
- cd libmicrohttpd && rm -rf libmicrohttpd-*/ || true
- cd libmicrohttpd && rm -f libmicrohttpd || true
-@@ -162,13 +136,6 @@ cityhash/cityhash/src/.libs/libcityhash.a:
- cd cityhash/cityhash && cp ../config.guess . && chmod +x config.guess && cp ../config.sub . && chmod +x config.sub && ./configure && CC=${CC} CXX=${CXX} ${MAKE}
- cityhash: cityhash/cityhash/src/.libs/libcityhash.a
-
--lz4/lz4/liblz4.a:
-- cd lz4 && rm -rf lz4-*/ || true
-- cd lz4 && tar -zxf lz4-1.7.5.tar.gz
-- cd lz4/lz4 && CC=${CC} CXX=${CXX} ${MAKE}
--lz4: lz4/lz4/liblz4.a
--
--
- clickhouse-cpp/clickhouse-cpp/clickhouse/libclickhouse-cpp-lib-static.a:
- ifeq ($(IS_CXX17), 1)
- echo ">>> Clickhouse CXX17"
-@@ -187,15 +154,6 @@ endif
-
- clickhouse-cpp: clickhouse-cpp/clickhouse-cpp/clickhouse/libclickhouse-cpp-lib-static.a
-
--
--libdaemon/libdaemon/libdaemon/.libs/libdaemon.a:
-- cd libdaemon && rm -rf libdaemon-*/ || true
-- cd libdaemon && tar -zxf libdaemon-0.14.tar.gz
-- cd libdaemon/libdaemon && cp ../config.guess . && chmod +x config.guess && cp ../config.sub . && chmod +x config.sub && ./configure --disable-examples
-- cd libdaemon/libdaemon && CC=${CC} CXX=${CXX} ${MAKE}
--
--libdaemon: libdaemon/libdaemon/libdaemon/.libs/libdaemon.a
--
- jemalloc/jemalloc/lib/libjemalloc.a:
- cd jemalloc && rm -rf jemalloc-*/ || true
- cd jemalloc && tar --no-same-owner -jxf jemalloc-5.2.0.tar.bz2
-@@ -209,12 +167,12 @@ jemalloc: jemalloc/jemalloc/lib/libjemalloc.a
-
- WITHASAN := $(shell echo $(WITHASAN))
-
--mariadb-client-library/mariadb_client/libmariadb/libmariadbclient.a: libssl/openssl/libssl.a
-+mariadb-client-library/mariadb_client/libmariadb/libmariadbclient.a:
- cd mariadb-client-library && rm -rf mariadb-connector-c-*/ || true
- cd mariadb-client-library && tar -zxf mariadb-connector-c-3.1.9-src.tar.gz
- cd mariadb-client-library/mariadb_client && patch ./plugins/auth/CMakeLists.txt < ../plugin_auth_CMakeLists.txt.patch
- cd mariadb-client-library/mariadb_client && patch -p0 < ../ConnectorName.patch
-- cd mariadb-client-library/mariadb_client && cmake . -Wno-dev -DOPENSSL_ROOT_DIR=$(shell pwd)/libssl/openssl/ -DOPENSSL_LIBRARIES=$(shell pwd)/libssl/openssl/ -DICONV_LIBRARIES=$(brew --prefix libiconv)/lib -DICONV_INCLUDE=$(brew --prefix libiconv)/include .
-+ cd mariadb-client-library/mariadb_client && cmake . -Wno-dev -DOPENSSL_ROOT_DIR=/usr/include/openssl -DOPENSSL_LIBRARIES=/usr/bin .
- ifeq ($(PROXYDEBUG),1)
- cd mariadb-client-library/mariadb_client && patch include/ma_context.h < ../ma_context.h.patch
- else ifeq ($(USEVALGRIND),1)
-@@ -252,25 +210,6 @@ endif
-
- mariadb_client: mariadb-client-library/mariadb_client/libmariadb/libmariadbclient.a
-
--
--sqlite3/sqlite3/sqlite3.o:
-- cd sqlite3 && rm -rf sqlite-amalgamation-*/ || true
-- cd sqlite3 && tar -zxf sqlite-amalgamation-3190200.tar.gz
-- cd sqlite3/sqlite3 && patch sqlite3.c < ../from_unixtime.patch
-- cd sqlite3/sqlite3 && patch sqlite3.c < ../sqlite3.c-multiplication-overflow.patch
-- cd sqlite3/sqlite3 && ${CC} ${MYCFLAGS} -fPIC -c -o sqlite3.o sqlite3.c -DSQLITE_ENABLE_MEMORY_MANAGEMENT -DSQLITE_ENABLE_JSON1 -DSQLITE_DLL=1
-- cd sqlite3/sqlite3 && ${CC} -shared -o libsqlite3.so sqlite3.o
--
--sqlite3: sqlite3/sqlite3/sqlite3.o
--
--libconfig/libconfig/lib/.libs/libconfig++.a:
-- cd libconfig && rm -rf libconfig-*/ || true
-- cd libconfig && tar -zxf libconfig-1.7.2.tar.gz
-- cd libconfig/libconfig && ./configure --disable-examples
-- cd libconfig/libconfig && CC=${CC} CXX=${CXX} ${MAKE}
--
--libconfig: libconfig/libconfig/lib/.libs/libconfig++.a
--
- prometheus-cpp/prometheus-cpp/lib/libprometheus-cpp-core.a:
- cd prometheus-cpp && rm -rf prometheus-cpp-*/ || true
- cd prometheus-cpp && tar -zxf v0.9.0.tar.gz
-@@ -300,14 +239,6 @@ endif
-
- re2: re2/re2/obj/libre2.a
-
--pcre/pcre/.libs/libpcre.a:
-- cd pcre && rm -rf pcre-*/ || true
-- cd pcre && tar -zxf pcre-8.44.tar.gz
-- cd pcre/pcre && patch pcretest.c < ../pcretest.c-multiplication-overflow.patch
-- cd pcre/pcre && ./configure
-- cd pcre/pcre && CC=${CC} CXX=${CXX} ${MAKE}
--pcre: pcre/pcre/.libs/libpcre.a
--
- cleanpart:
- cd mariadb-client-library && rm -rf mariadb-connector-c-*/ || true
- cd jemalloc && rm -rf jemalloc-*/ || true
-diff --git a/lib/Makefile b/lib/Makefile
-index fa820d8a..76220924 100644
---- a/lib/Makefile
-+++ b/lib/Makefile
-@@ -1,13 +1,6 @@
- #!/bin/make -f
-
-
--ifndef GIT_VERSION
-- GIT_VERSION := $(shell git describe --long --abbrev=7)
--ifndef GIT_VERSION
-- $(error GIT_VERSION is not set)
--endif
--endif
--
- DEPS_PATH=../deps
-
-
-@@ -17,19 +10,12 @@ MARIADB_IDIR=$(MARIADB_PATH)/include
- JEMALLOC_PATH=$(DEPS_PATH)/jemalloc/jemalloc
- JEMALLOC_IDIR=$(JEMALLOC_PATH)/include/jemalloc
-
--LIBCONFIG_PATH=$(DEPS_PATH)/libconfig/libconfig
--LIBCONFIG_IDIR=-I$(LIBCONFIG_PATH)/lib
--
- #INJECTION_PATH=$(DEPS_PATH)/libinjection
- #INJECTION_IDIR=$(INJECTION_PATH)
-
- RE2_PATH=$(DEPS_PATH)/re2/re2
- RE2_IDIR=$(RE2_PATH)
-
--PCRE_PATH=$(DEPS_PATH)/pcre/pcre
--
--SQLITE3_DIR=$(DEPS_PATH)/sqlite3/sqlite3
--
- CLICKHOUSE_CPP_DIR=$(DEPS_PATH)/clickhouse-cpp/clickhouse-cpp
-
- LIBINJECTION_DIR=$(DEPS_PATH)/libinjection/libinjection
-@@ -41,23 +27,13 @@ LIBHTTPSERVER_IDIR=-I$(LIBHTTPSERVER_DIR)/src
- MICROHTTPD_DIR=$(DEPS_PATH)/libmicrohttpd/libmicrohttpd
- MICROHTTPD_IDIR=-I$(MICROHTTPD_DIR) -I$(MICROHTTPD_DIR)/src/include
-
--CURL_DIR=$(DEPS_PATH)/curl/curl
--CURL_IDIR=-I$(CURL_DIR)/include
--
--SSL_DIR=$(DEPS_PATH)/libssl/openssl/
--SSL_IDIR=$(SSL_DIR)/include
--
--
--EV_DIR=$(DEPS_PATH)/libev/libev/
--EV_IDIR=$(EV_DIR)
--
- PROMETHEUS_PATH=$(DEPS_PATH)/prometheus-cpp/prometheus-cpp
- PROMETHEUS_IDIR=$(PROMETHEUS_PATH)/pull/include -I$(PROMETHEUS_PATH)/core/include
- PROMETHEUS_LDIR=$(PROMETHEUS_PATH)/lib
-
- IDIR=../include
-
--IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(RE2_IDIR) -I$(SQLITE3_DIR) -I$(PCRE_PATH) -I/usr/local/include -I$(CLICKHOUSE_CPP_DIR) -I$(CLICKHOUSE_CPP_DIR)/contrib/ $(MICROHTTPD_IDIR) $(LIBHTTPSERVER_IDIR) $(LIBINJECTION_IDIR) $(CURL_IDIR) -I$(EV_DIR) -I$(SSL_IDIR) -I$(PROMETHEUS_IDIR)
-+IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) -I$(RE2_IDIR) -I/usr/local/include -I$(CLICKHOUSE_CPP_DIR) -I$(CLICKHOUSE_CPP_DIR)/contrib/ $(MICROHTTPD_IDIR) $(LIBHTTPSERVER_IDIR) $(LIBINJECTION_IDIR) -I$(PROMETHEUS_IDIR)
-
- LDIRS=-L$(JEMALLOC_PATH)/lib -L$(RE2_PATH)/obj -L$(INJECTION_PATH) -L$(PROMETHEUS_LDIR)
-
-@@ -150,8 +126,8 @@ HEADERS = ../include/*.h ../include/*.hpp
- $(ODIR)/%.oo: %.cpp $(HEADERS)
- $(CXX) -fPIC -c -o $@ $< $(MYCXXFLAGS) $(CXXFLAGS)
-
--libproxysql.a: $(ODIR) $(OBJ) $(OBJ_CXX) $(SQLITE3_DIR)/sqlite3.o
-- ar rcs $@ $(OBJ) $(OBJ_CXX) $(SQLITE3_DIR)/sqlite3.o
-+libproxysql.a: $(ODIR) $(OBJ) $(OBJ_CXX) $(RE2_PATH)/obj/libre2.a
-+ ar rcs $@ $(OBJ) $(OBJ_CXX) $(RE2_PATH)/obj/libre2.a
-
- $(ODIR):
- mkdir $(ODIR)
-diff --git a/src/Makefile b/src/Makefile
-index b4161590..9fca775f 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -21,18 +21,10 @@ MARIADB_IDIR=$(MARIADB_PATH)/include
- MARIADB_LDIR=$(MARIADB_PATH)/libmariadb
-
-
--DAEMONPATH=$(DEPS_PATH)/libdaemon/libdaemon
--DAEMONPATH_IDIR=$(DAEMONPATH)
--DAEMONPATH_LDIR=$(DAEMONPATH)/libdaemon/.libs
--
- JEMALLOC_PATH=$(DEPS_PATH)/jemalloc/jemalloc
- JEMALLOC_IDIR=$(JEMALLOC_PATH)/include/jemalloc
- JEMALLOC_LDIR=$(JEMALLOC_PATH)/lib
-
--LIBCONFIG_PATH=$(DEPS_PATH)/libconfig/libconfig
--LIBCONFIG_IDIR=-I$(LIBCONFIG_PATH)/lib
--LIBCONFIG_LDIR=-L$(LIBCONFIG_PATH)/lib/.libs
--
- PROMETHEUS_PATH=$(DEPS_PATH)/prometheus-cpp/prometheus-cpp
- PROMETHEUS_IDIR=$(PROMETHEUS_PATH)/pull/include -I$(PROMETHEUS_PATH)/core/include
- PROMETHEUS_LDIR=$(PROMETHEUS_PATH)/lib
-@@ -40,15 +32,8 @@ PROMETHEUS_LDIR=$(PROMETHEUS_PATH)/lib
- RE2_PATH=$(DEPS_PATH)/re2/re2
- RE2_IDIR=$(RE2_PATH)
-
--PCRE_PATH=$(DEPS_PATH)/pcre/pcre
--PCRE_LDIR=$(PCRE_PATH)/.libs
--
--SQLITE3_DIR=$(DEPS_PATH)/sqlite3/sqlite3
--
--
- CLICKHOUSE_CPP_DIR=$(DEPS_PATH)/clickhouse-cpp/clickhouse-cpp
- CITYHASH_DIR=$(DEPS_PATH)/cityhash/cityhash/src/.libs
--LZ4_DIR=$(DEPS_PATH)/lz4/lz4
-
- CLICKHOUSE_CPP_DIR=$(DEPS_PATH)/clickhouse-cpp/clickhouse-cpp
-
-@@ -64,23 +49,10 @@ MICROHTTPD_DIR=$(DEPS_PATH)/libmicrohttpd/libmicrohttpd/src
- MICROHTTPD_IDIR=$(MICROHTTPD_DIR)/include
- MICROHTTPD_LDIR=$(MICROHTTPD_DIR)/microhttpd/.libs
-
--CURL_DIR=$(DEPS_PATH)/curl/curl
--CURL_IDIR=$(CURL_DIR)/include
--CURL_LDIR=$(CURL_DIR)/lib/.libs
--
--SSL_DIR=$(DEPS_PATH)/libssl/openssl/
--SSL_IDIR=$(SSL_DIR)/include
--SSL_LDIR=$(SSL_DIR)
--
--
--EV_DIR=$(DEPS_PATH)/libev/libev/
--EV_IDIR=$(EV_DIR)
--EV_LDIR=$(EV_DIR)/.libs
--
- IDIR=../include
- LDIR=../lib
--IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(DAEMONPATH_IDIR) -I$(SQLITE3_DIR) -I$(CLICKHOUSE_CPP_DIR) -I$(CLICKHOUSE_CPP_DIR)/contrib/ -I$(MICROHTTPD_IDIR) -I$(LIBHTTPSERVER_IDIR) -I$(LIBINJECTION_IDIR) -I$(CURL_IDIR) -I$(EV_IDIR) -I$(SSL_IDIR) -I$(RE2_IDIR) -I$(PROMETHEUS_IDIR)
--LDIRS=-L$(LDIR) -L$(JEMALLOC_LDIR) $(LIBCONFIG_LDIR) -L$(RE2_PATH)/obj -L$(MARIADB_LDIR) -L$(DAEMONPATH_LDIR) -L$(PCRE_LDIR) -L$(MICROHTTPD_LDIR) -L$(LIBHTTPSERVER_LDIR) -L$(LIBINJECTION_LDIR) -L$(CURL_LDIR) -L$(EV_LDIR) -L$(SSL_LDIR) -L$(PROMETHEUS_LDIR)
-+IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) -I$(CLICKHOUSE_CPP_DIR) -I$(CLICKHOUSE_CPP_DIR)/contrib/ -I$(MICROHTTPD_IDIR) -I$(LIBHTTPSERVER_IDIR) -I$(LIBINJECTION_IDIR) -I$(RE2_IDIR) -I$(PROMETHEUS_IDIR)
-+LDIRS=-L$(LDIR) -L$(JEMALLOC_LDIR) -L$(RE2_PATH)/obj -L$(MARIADB_LDIR) -L$(MICROHTTPD_LDIR) -L$(LIBHTTPSERVER_LDIR) -L$(LIBINJECTION_LDIR) -L$(PROMETHEUS_LDIR)
-
- UNAME_S := $(shell uname -s)
-
-@@ -154,17 +126,13 @@ endif
-
- NOJEMALLOC := $(shell echo $(NOJEMALLOC))
- ifeq ($(NOJEMALLOC),1)
--MYLIBS=-Wl,--export-dynamic -Wl,-Bstatic -lconfig -lproxysql -ldaemon -lconfig++ -lre2 -lpcrecpp -lpcre -lmariadbclient -lhttpserver -lmicrohttpd -linjection -lcurl -lssl -lcrypto -lev -Wl,-Bdynamic -lgnutls -lpthread -lm -lz -lrt -lprometheus-cpp-pull -lprometheus-cpp-core -luuid $(EXTRALINK)
-+MYLIBS=-Wl,--export-dynamic -Wl,-Bstatic -lproxysql -lre2 -lmariadbclient -lhttpserver -lmicrohttpd -linjection -Wl,-Bdynamic -lgnutls -lpthread -lm -lz -lconfig -ldaemon -lconfig++ -lpcrecpp -lpcre -lcurl -lssl -lcrypto -lev -lsqlite3 -lrt -lprometheus-cpp-pull -lprometheus-cpp-core -luuid $(EXTRALINK)
- else
--MYLIBS=-Wl,--export-dynamic -Wl,-Bstatic -lconfig -lproxysql -ldaemon -ljemalloc -lconfig++ -lre2 -lpcrecpp -lpcre -lmariadbclient -lhttpserver -lmicrohttpd -linjection -lcurl -lssl -lcrypto -lev -Wl,-Bdynamic -lgnutls -lpthread -lm -lz -lrt -lprometheus-cpp-pull -lprometheus-cpp-core -luuid $(EXTRALINK)
-+MYLIBS=-Wl,--export-dynamic -Wl,-Bstatic -lproxysql -ljemalloc -lre2 -lmariadbclient -lhttpserver -lmicrohttpd -linjection -Wl,-Bdynamic -lgnutls -lpthread -lm -lz -lconfig -ldaemon -lconfig++ -lpcrecpp -lpcre -lcurl -lssl -lcrypto -lev -lsqlite3 -lrt -lprometheus-cpp-pull -lprometheus-cpp-core -luuid $(EXTRALINK)
- endif
-
- ifeq ($(UNAME_S),Darwin)
- MYLIBS=-lre2 -lmariadbclient -lpthread -lm -lz -liconv -lgnutls -lprometheus-cpp-pull -lprometheus-cpp-core -luuid
--else
-- CURL_DIR=$(DEPS_PATH)/curl/curl
-- IDIRS+= -L$(CURL_DIR)/include
-- LDIRS+= -L$(CURL_DIR)/lib/.libs
- endif
- ifeq ($(UNAME_S),Linux)
- MYLIBS+= -ldl
-@@ -181,7 +149,7 @@ ifeq ($(UNAME_S),Darwin)
- LIBPROXYSQLAR=$(LDIR)/libproxysql.a ../deps/jemalloc/jemalloc/lib/libjemalloc.a ../deps/libmicrohttpd/libmicrohttpd/src/microhttpd/.libs/libmicrohttpd.a ../deps/libhttpserver/libhttpserver/build/src/.libs/libhttpserver.a ../deps/pcre/pcre/.libs/libpcre.a ../deps/pcre/pcre/.libs/libpcrecpp.a ../deps/libdaemon/libdaemon/libdaemon/.libs/libdaemon.a ../deps/libconfig/libconfig/lib/.libs/libconfig++.a ../deps/libconfig/libconfig/lib/.libs/libconfig.a ../deps/curl/curl/lib/.libs/libcurl.a ../deps/sqlite3/sqlite3/sqlite3.o ../deps/libinjection/libinjection/src/libinjection.a ../deps/libhttpserver/libhttpserver/build/src/.libs/libhttpserver.a ../deps/libev/libev-4.24/.libs/libev.a
- endif
-
--LIBPROXYSQLAR+= $(SSL_LDIR)/libssl.a $(SSL_LDIR)/libcrypto.a $(CITYHASH_DIR)/libcityhash.a
-+LIBPROXYSQLAR+= $(CITYHASH_DIR)/libcityhash.a
- ODIR= obj
-
- EXECUTABLE=proxysql
-@@ -194,7 +162,7 @@ $(ODIR)/%.o: %.cpp
-
- $(EXECUTABLE): $(ODIR) $(OBJ) $(LIBPROXYSQLAR)
- ifeq ($(PROXYSQLCLICKHOUSE),1)
-- $(CXX) -o $@ $(OBJ) $(LIBPROXYSQLAR) $(CLICKHOUSE_CPP_DIR)/clickhouse/libclickhouse-cpp-lib-static.a $(LZ4_DIR)/liblz4.a $(MYCXXFLAGS) $(CXXFLAGS) $(LDIRS) $(LIBS) $(LDFLAGS) $(MYLIBS)
-+ $(CXX) -o $@ $(OBJ) $(LIBPROXYSQLAR) $(CLICKHOUSE_CPP_DIR)/clickhouse/libclickhouse-cpp-lib-static.a $(MYCXXFLAGS) $(CXXFLAGS) $(LDIRS) $(LIBS) $(LDFLAGS) $(MYLIBS)
- else
- $(CXX) -o $@ $(OBJ) $(LIBPROXYSQLAR) $(MYCXXFLAGS) $(CXXFLAGS) $(LDIRS) $(LIBS) $(LDFLAGS) $(MYLIBS)
- endif
---
-2.39.2
-
diff --git a/0002-Enable-tcp_fastopen-in-bundled-libhttpserver.patch b/0002-Enable-tcp_fastopen-in-bundled-libhttpserver.patch
index cf0e55b..4548b2b 100644
--- a/0002-Enable-tcp_fastopen-in-bundled-libhttpserver.patch
+++ b/0002-Enable-tcp_fastopen-in-bundled-libhttpserver.patch
@@ -1,7 +1,7 @@
-From aa367adb5a2d8daba278596bc227d9a338979d71 Mon Sep 17 00:00:00 2001
+From 82ec7ef1bae92649090e38e9132eef8ae432cc59 Mon Sep 17 00:00:00 2001
From: Igor Raits <igor.raits(a)gmail.com>
-Date: Sat, 26 Nov 2022 08:49:11 +0100
-Subject: [PATCH 2/3] Enable tcp_fastopen in bundled libhttpserver
+Date: Sat, 18 May 2024 17:12:43 +0200
+Subject: [PATCH 2/4] Enable tcp_fastopen in bundled libhttpserver
We have kernel 3.6+ for years and the condition is wrong.
---
@@ -9,17 +9,17 @@ We have kernel 3.6+ for years and the condition is wrong.
1 file changed, 1 insertion(+)
diff --git a/deps/Makefile b/deps/Makefile
-index 88b2eadf..5373ce11 100644
+index 7d1a76fe..23c4f894 100644
--- a/deps/Makefile
+++ b/deps/Makefile
-@@ -105,6 +105,7 @@ libhttpserver/libhttpserver/build/src/.libs/libhttpserver.a: libmicrohttpd/libmi
- #endif
- cd libhttpserver/libhttpserver && patch -p0 < ../final_val_post_process.patch
- cd libhttpserver/libhttpserver && patch -p0 < ../empty_uri_log_crash.patch
+@@ -79,6 +79,7 @@ libhttpserver/libhttpserver/build/src/.libs/libhttpserver.a: libmicrohttpd/libmi
+ cd libhttpserver/libhttpserver && patch -p1 < ../empty_uri_log_crash.patch
+ cd libhttpserver/libhttpserver && patch -p0 < ../expose_raw_url.patch
+ cd libhttpserver/libhttpserver && patch -p0 < ../replace_static_global_strings.patch
+ sed -i -e 's|is_fastopen_supported=no|is_fastopen_supported=yes|' libhttpserver/libhttpserver/configure.ac
ifeq ($(UNAME_S),FreeBSD)
sed -i -e 's/\/bin\/bash/\/usr\/local\/bin\/bash/' libhttpserver/libhttpserver/bootstrap
endif
--
-2.39.2
+2.45.0
diff --git a/0003-Simplify-proxysql.service.patch b/0003-Simplify-systemd-services.patch
similarity index 91%
rename from 0003-Simplify-proxysql.service.patch
rename to 0003-Simplify-systemd-services.patch
index 83e64f1..0356814 100644
--- a/0003-Simplify-proxysql.service.patch
+++ b/0003-Simplify-systemd-services.patch
@@ -1,7 +1,7 @@
-From 2a98a81492ebf058162585770e93b13c8cc493c8 Mon Sep 17 00:00:00 2001
+From 7d8c8e212df56fb4027e6a08063a6fec196dbfa8 Mon Sep 17 00:00:00 2001
From: Igor Raits <igor.raits(a)gmail.com>
-Date: Sat, 26 Nov 2022 17:24:42 +0100
-Subject: [PATCH 3/3] Simplify proxysql.service
+Date: Sat, 18 May 2024 17:17:50 +0200
+Subject: [PATCH 3/4] Simplify systemd services
---
systemd/system/proxysql-initial.service | 6 +++---
@@ -49,5 +49,5 @@ index 6506a57b..5154b1e6 100644
Group=proxysql
PermissionsStartOnly=true
--
-2.39.2
+2.45.0
diff --git a/proxysql.spec b/proxysql.spec
index 6aba218..79247b5 100644
--- a/proxysql.spec
+++ b/proxysql.spec
@@ -1,7 +1,7 @@
Summary: A high-performance MySQL proxy
Name: proxysql
-Version: 2.4.8
-Release: 4%{?dist}
+Version: 2.6.2
+Release: 1%{?dist}
# Proxysql Google group for free community support: https://groups.google.com/g/proxysql
URL: https://proxysql.com/
# GPL-3.0-or-later
@@ -9,6 +9,7 @@ URL: https://proxysql.com/
# deps/mariadb-connector-c: LGPL-2.1-or-later
# deps/prometheus-cpp: MIT
# deps/re2: BSD-3-Clause
+# deps/coredumper: BSD-3-Clause
License: GPL-3.0-or-later AND LGPL-2.1-or-later AND BSD-3-Clause AND BSD-2-Clause AND MIT
BuildRequires: make, automake
@@ -46,13 +47,15 @@ Suggests: mariadb, community-mysql
ExcludeArch: %{power64} s390x
Provides: bundled(jemalloc) = 5.2.0
-Provides: bundled(mariadb-connector-c) = 3.1.9
-Provides: bundled(re2) = 20200706
-Provides: bundled(clickhouse-cpp) = 2.1.0
-Provides: bundled(prometheus-cpp) = 0.9.0
+Provides: bundled(mariadb-connector-c) = 3.3.8
+Provides: bundled(re2) = 20221201
+Provides: bundled(clickhouse-cpp) = 2.3.0
+Provides: bundled(prometheus-cpp) = 1.1.0
+# The hash looks weird but it is still 1.1.1
Provides: bundled(cityhash) = 1.1.1
-Provides: bundled(libhttpserver) = 0.18.1
-Provides: bundled(libmicrohttpd) = 0.9.68
+Provides: bundled(libhttpserver) = 0.18.2
+Provides: bundled(libmicrohttpd) = 0.9.77
+Provides: bundled(coredumper) = 0^cb6cead
# There is inconsistency between name and URL of file and main unpacked source folder
Source0: https://github.com/sysown/proxysql/archive/refs/tags/v%{version}.tar.gz#/...
@@ -61,6 +64,10 @@ Source0: https://github.com/sysown/proxysql/archive/refs/tags/v%{version}.
# https://github.com/sysown/proxysql/issues/3564
Source1: proxysql.1
+%description
+ProxySQL is a high performance, high availability, protocol aware proxy for
+MySQL and forks (like Percona Server and MariaDB).
+
# The upstream code bundles multiple libraries: libconfig, libdaemon, sqlite3, re2,
# mariadb-connector-c, pcre, clickhouse-cpp, prometheus-cpp, lz4, cityhash, microhttpd, curl
# ev, coredumper, libssl and jemalloc.
@@ -70,14 +77,15 @@ Source1: proxysql.1
# being patched, more info here: https://bugzilla.redhat.com/show_bug.cgi?id=1457929).
# Other remaining libraries are not maintained in Fedora (clickhouse-cpp,
# cityhash, prometheus-cpp)
-
-Patch0001: 0001-Unbundle-system-deps.patch
-Patch0002: 0002-Enable-tcp_fastopen-in-bundled-libhttpserver.patch
-Patch0003: 0003-Simplify-proxysql.service.patch
-
-%description
-ProxySQL is a high performance, high availability, protocol aware proxy for
-MySQL and forks (like Percona Server and MariaDB).
+#
+# NOTE: libdaemon contains custom patch (since https://github.com/sysown/proxysql/pull/4291)
+# but I don't believe it is worth to bundle it just because of that.
+%patchlist
+0001-Unbundle-libconfig-libdaemon-sqlite3-pcre-lz3-curl-e.patch
+0002-Enable-tcp_fastopen-in-bundled-libhttpserver.patch
+0003-Simplify-systemd-services.patch
+0004-Apply-fPIC-properly-in-re2-build.patch
+0005-fixup-Unbundle-libconfig-libdaemon-sqlite3-pcre-lz3-.patch
%prep
%autosetup -p1
@@ -132,6 +140,9 @@ install -d -m 0755 %{buildroot}%{_sharedstatedir}/proxysql
%attr(-,proxysql,root) %config(noreplace) %{_sysconfdir}/proxysql.cnf
%changelog
+* Sat May 18 2024 Igor Raits <igor(a)gooddata.com> - 2.6.2-1
+- Update to 2.6.2
+
* Fri Jan 26 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.4.8-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/sources b/sources
index 3425849..a4ece72 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (proxysql-2.4.8.tar.gz) = d7a523d09ec9982b72caa66a1d814c64fb516e66c2ec3cba8f76663e3d989de2d6979015b40aeb46c14aef9b36ed05d4cdec86a1187a7f9fe550725b4c667249
+SHA512 (proxysql-2.6.2.tar.gz) = e9053e2aa72eec2a59b03bb5deb550efbd3b94dd75e32fec16d448614b4bae306d44be0e8844aa069d6a95eb94040a7704c4a33498be3da86d48a8da328a0aa0
2 weeks, 3 days
[Report] Packages Restricting Arches
by root
List of packages currently excluding arches (2259)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- 389-ds-base
ExcludeArch: i686
- 4ti2
ExcludeArch: %{ix86}
- 90-Second-Portraits
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le riscv64
- AcetoneISO
ExcludeArch: ppc %{power64} s390x
- Agda
ExcludeArch: %{ix86} armv7hl
- Agda-stdlib
ExcludeArch: armv7hl %{ix86}
- BareBonesBrowserLaunch
ExclusiveArch: %{java_arches} noarch
- CFR
ExclusiveArch: %{java_arches} noarch
- COPASI
ExcludeArch: %{ix86}
- CardManager
ExclusiveArch: %{java_arches} noarch
- CuraEngine
ExcludeArch: %{ix86}
- E
ExcludeArch: %{ix86}
- GAPDoc
ExcludeArch: %{ix86}
- GoldenCheetah
ExclusiveArch: %{qt5_qtwebengine_arches}
- GtkAda
ExclusiveArch: %{GPRbuild_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- HPCombi
ExclusiveArch: x86_64 %{arm64}
- IPAddress
ExclusiveArch: %{java_arches} noarch
- IQmol
ExcludeArch: %{ix86}
- JUnitParams
ExclusiveArch: %{java_arches} noarch
- L-function
ExcludeArch: %{ix86}
- LabPlot
ExcludeArch: sparc64 s390 s390x
- MUSIC
ExcludeArch: %{ix86}
- Macaulay2
ExcludeArch: %{ix86} ppc64le
- Maelstrom
ExcludeArch: %{ix86}
- Mars
ExclusiveArch: %{java_arches} noarch
- NiaAML-GUI
ExcludeArch: %{ix86}
- OpenColorIO
ExcludeArch: i686
ExclusiveArch: x86_64 ppc64le
- OpenImageIO
ExcludeArch: i686
ExclusiveArch: x86_64 ppc64le
- OpenMolcas
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- OpenStego
ExclusiveArch: %{java_arches} noarch
- Pencil2D
ExcludeArch: %{ix86}
- PragmARC
ExclusiveArch: %{GPRbuild_arches}
- ProDy
ExcludeArch: ppc64 s390x
- R-IRkernel
ExcludeArch: %{ix86}
- R-V8
ExclusiveArch: %{nodejs_arches}
- R-ape
ExcludeArch: %{ix86}
- R-igraph
ExcludeArch: %{ix86}
- R-kernlab
ExcludeArch: %{ix86} s390x
- R-rJava
ExclusiveArch: %{java_arches}
- Random123
ExcludeArch: mips64r2 mips32r2 s390
- RdRand
ExclusiveArch: %{ix86} x86_64
- RediSearch
ExclusiveArch: x86_64
- SLOF
ExclusiveArch: ppc64le
- Singular
ExcludeArch: %{ix86}
- TOPCOM
ExcludeArch: %{ix86}
- VulkanMemoryAllocator
ExcludeArch: %{ix86}
- WoeUSB
ExcludeArch: s390x
- YafaRay
ExclusiveArch: %{ix86} x86_64
- Zim
ExcludeArch: %{ix86}
- aardvark-dns
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- abiword
ExcludeArch: %{ix86}
- abrt-java-connector
ExcludeArch: %{ix86}
- accel-config
ExclusiveArch: %{ix86} x86_64
- acpica-tools
ExcludeArch: i686 armv7hl
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64 riscv64
- act
ExcludeArch: %{ix86}
- admeshgui
ExcludeArch: %{ix86}
- aemu
ExcludeArch: %{ix86} %{power64} s390x
- agenda
ExcludeArch: %{ix86}
- ahven
ExclusiveArch: %{GPRbuild_arches}
- algobox
ExclusiveArch: %{qt5_qtwebengine_arches}
- alienarena
ExcludeArch: s390x
- alizams
ExcludeArch: %{power64} %{ix86} s390x
- alt-ergo
ExcludeArch: %{ix86}
- american-fuzzy-lop
ExclusiveArch: x86_64
- amg4psblas
ExcludeArch: %{ix86}
- android-tools
ExcludeArch: ppc ppc64 s390x ppc64le
- anet
ExclusiveArch: %{GPRbuild_arches}
- ansible-collection-microsoft-sql
ExcludeArch: i686
- ant
ExclusiveArch: %{java_arches} noarch
- ant-antunit
ExclusiveArch: %{java_arches} noarch
- ant-contrib
ExclusiveArch: %{java_arches} noarch
- antlr
ExclusiveArch: %{java_arches}
- antlr3
ExclusiveArch: %{java_arches}
- antlr4-project
ExclusiveArch: %{java_arches}
- antlrworks
ExclusiveArch: %{java_arches} noarch
- aopalliance
ExclusiveArch: %{java_arches} noarch
- apache-commons-beanutils
ExclusiveArch: %{java_arches} noarch
- apache-commons-cli
ExclusiveArch: %{java_arches} noarch
- apache-commons-codec
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections4
ExclusiveArch: %{java_arches} noarch
- apache-commons-compress
ExclusiveArch: %{java_arches} noarch
- apache-commons-configuration
ExclusiveArch: %{java_arches} noarch
- apache-commons-digester
ExclusiveArch: %{java_arches} noarch
- apache-commons-exec
ExclusiveArch: %{java_arches} noarch
- apache-commons-io
ExclusiveArch: %{java_arches} noarch
- apache-commons-jexl
ExclusiveArch: %{java_arches} noarch
- apache-commons-jxpath
ExclusiveArch: %{java_arches} noarch
- apache-commons-lang3
ExclusiveArch: %{java_arches} noarch
- apache-commons-logging
ExclusiveArch: %{java_arches} noarch
- apache-commons-math
ExclusiveArch: %{java_arches} noarch
- apache-commons-modeler
ExclusiveArch: %{java_arches} noarch
- apache-commons-net
ExclusiveArch: %{java_arches} noarch
- apache-commons-parent
ExclusiveArch: %{java_arches} noarch
- apache-commons-pool
ExclusiveArch: %{java_arches} noarch
- apache-commons-vfs
ExclusiveArch: %{java_arches} noarch
- apache-ivy
ExclusiveArch: %{java_arches} noarch
- apache-logging-parent
ExclusiveArch: %{java_arches} noarch
- apache-parent
ExclusiveArch: %{java_arches} noarch
- apache-resource-bundles
ExclusiveArch: %{java_arches} noarch
- apache-sshd
ExclusiveArch: %{java_arches} noarch
- apiguardian
ExclusiveArch: %{java_arches} noarch
- apmd
ExclusiveArch: %{ix86}
- appeditor
ExcludeArch: %{ix86}
- appstream-generator
ExclusiveArch: %{ldc_arches}
- apricots
ExcludeArch: ppc64le aarch64
- apron
ExcludeArch: %{ix86}
- aqute-bnd
ExclusiveArch: %{java_arches} noarch
- arbor
ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
- arc-theme
ExcludeArch: %{ix86}
- args4j
ExclusiveArch: %{java_arches} noarch
- arianna
ExclusiveArch: %{qt6_qtwebengine_arches}
- arm-none-eabi-binutils-cs
ExcludeArch: %{ix86}
- arm-none-eabi-gcc-cs
ExcludeArch: %{ix86}
- arpwatch
ExcludeArch: %{ix86}
- asahi-installer
ExcludeArch: s390x
- asdcplib
ExcludeArch: %{ix86} %{arm}
- asmjit
ExclusiveArch: aarch64 x86_64
- assertj-core
ExclusiveArch: %{java_arches} noarch
- astromenace
ExcludeArch: ppc64 s390x
- astrometry-tycho2
ExcludeArch: s390x
- asv
ExcludeArch: %{ix86}
- atinject
ExclusiveArch: %{java_arches} noarch
- atlantik
ExcludeArch: %{ix86}
- atomic-queue
ExcludeArch: %{ix86}
- aubit4gl
ExcludeArch: i686 s390x ppc64le
- audacity
ExcludeArch: %{ix86} s390x
- audiocd-kio
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- aunit
ExclusiveArch: %{GPRbuild_arches}
- auryn
ExcludeArch: %{ix86}
- auto
ExclusiveArch: %{java_arches} noarch
- autolink-java
ExclusiveArch: noarch %{java_arches}
- avgtime
ExclusiveArch: %{ldc_arches}
- avr-gcc
ExcludeArch: %{ix86}
- aws
ExclusiveArch: %GPRbuild_arches
- aws-c-cal
ExcludeArch: s390x
- aws-c-common
ExcludeArch: s390x
- aws-c-compression
ExcludeArch: s390x
- aws-c-io
ExcludeArch: %{ix86}
ExcludeArch: s390x
- aws-c-sdkutils
ExcludeArch: s390x
- aws-checksums
ExcludeArch: s390x
- awscli2
ExcludeArch: s390x
- azove
ExcludeArch: %{ix86}
- azure-cli
ExclusiveArch: %{java_arches} noarch
- batik
ExclusiveArch: %{java_arches} noarch
- bcal
ExclusiveArch: x86_64 aarch64 ia64 ppc64 ppc64le s390x riscv64
- bcc
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl riscv64
- bcel
ExclusiveArch: %{java_arches} noarch
- bcftools
ExcludeArch: s390x
- bcm283x-firmware
ExclusiveArch: aarch64
- beansbinding
ExclusiveArch: %{java_arches} noarch
- bear
ExcludeArch: %{ix86}
- bear-factory
ExcludeArch: ppc64le
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips} riscv64
- beust-jcommander
ExclusiveArch: %{java_arches} noarch
- bibletime
ExclusiveArch: %{java_arches}
- bigloo
ExcludeArch: %{ix86}
- binaryen
ExcludeArch: ppc64 s390x
- binutils
ExcludeArch: aarch64-linux-gnu aarch64-redhat-linux
ExcludeArch: ppc64le-linux-gnu ppc64le-redhat-linux
ExcludeArch: s390x-linux-gnu s390x-redhat-linux
ExcludeArch: x86_64-linux-gnu x86_64-redhat-linux i686-linux-gnu i686-redhat-linux
- biosdevname
ExclusiveArch: %{ix86} x86_64
- biosig4c++
ExcludeArch: %{ix86}
- blake3
ExcludeArch: %{ix86}
- blender
ExcludeArch: %{ix86} %{arm}
- bless
ExclusiveArch: %mono_arches
- bliss
ExcludeArch: %{ix86}
- blueprint-compiler
ExcludeArch: s390x
- bluez-hcidump
ExcludeArch: s390 s390x
- bochs
ExcludeArch: s390x i686
- bodhi-server
ExclusiveArch: %{golang_arches_future}
- boinc-client
ExcludeArch: s390x
- bolzplatz2006
ExclusiveArch: %{java_arches}
- bootc
ExcludeArch: %{ix86}
- bottles
ExcludeArch: s390x
- bouncycastle
ExclusiveArch: %{java_arches} noarch
- bout++
ExcludeArch: %{ix86}
- bowtie
ExcludeArch: i686 armv7hl
- bowtie2
ExcludeArch: %{ix86} %{arm} s390x
- box64
ExclusiveArch: aarch64 riscv64 ppc64le x86_64
- boxes
ExcludeArch: %{ix86}
- bpftrace
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- brazil
ExclusiveArch: %{java_arches} noarch
- breakid
ExcludeArch: %{ix86}
- brewtarget
ExcludeArch: %{ix86}
- brial
ExcludeArch: %{ix86}
- bsf
ExclusiveArch: %{java_arches} noarch
- bsh
ExclusiveArch: %{java_arches} noarch
- build-helper-maven-plugin
ExclusiveArch: %{java_arches} noarch
- buildah
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- busybox
ExcludeArch: i686 s390x
- bwping
ExcludeArch: %{ix86}
- byebyebios
ExclusiveArch: x86_64
- byte-buddy
ExclusiveArch: %{java_arches} noarch
- byteman
ExclusiveArch: %{java_arches} noarch
- cachelib
ExclusiveArch: x86_64 aarch64 ppc64le
- caddy
ExclusiveArch: %{golang_arches}
ExclusiveArch: %{golang_arches_future}
- cadical
ExcludeArch: %{ix86}
- caffe
ExclusiveArch: x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64 aarch64 riscv64
- calceph
ExcludeArch: %{ix86}
- calibre
ExclusiveArch: aarch64 x86_64
- calligra
ExcludeArch: %{ix86}
- cambozola
ExclusiveArch: %{java_arches} noarch
- canl-java
ExclusiveArch: %{java_arches} noarch
- cantera
ExcludeArch: %{ix86}
- carat
ExcludeArch: %{ix86}
- casc
ExcludeArch: %{ix86}
- cataclysm-dda
ExcludeArch: i686
- catatonit
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- ccdciel
ExclusiveArch: %{fpc_arches}
ExcludeArch: %{ix86}
- ccluster
ExcludeArch: %{ix86}
- cdcollect
ExclusiveArch: %{mono_arches}
- cdi-api
ExclusiveArch: %{java_arches} noarch
- cdrdao
ExcludeArch: s390 s390x
- ceph
ExcludeArch: i686 armv7hl
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- ceres-solver
ExcludeArch: ppc64
- cfn-lint
ExcludeArch: %{ix86}
- cglib
ExclusiveArch: %{java_arches} noarch
- cgreen
ExcludeArch: s390x
- chatterino2
ExcludeArch: %{ix86}
- chatty
ExcludeArch: i686
- checkpointctl
ExclusiveArch: %{golang_arches_future}
- chromium
ExclusiveArch: x86_64
ExclusiveArch: x86_64 aarch64 ppc64le
ExclusiveArch: x86_64 aarch64
- cinnamon
ExcludeArch: %{ix86}
- cinnamon-control-center
ExcludeArch: %{ix86}
- cinnamon-desktop
ExcludeArch: %{ix86}
- cinnamon-menus
ExcludeArch: %{ix86}
- cinnamon-screensaver
ExcludeArch: %{ix86}
- cinnamon-session
ExcludeArch: %{ix86}
- cinnamon-settings-daemon
ExcludeArch: %{ix86}
- cjdns
ExclusiveArch: %{nodejs_arches}
- cjs
ExcludeArch: %{ix86}
- classloader-leak-test-framework
ExclusiveArch: %{java_arches} noarch
- classpathless-compiler
ExclusiveArch: %{java_arches} noarch
- cld2
ExcludeArch: ppc64 s390x
- clibs-list
ExcludeArch: %{ix86}
- clojure
ExclusiveArch: %{java_arches} noarch
- clojure-core-specs-alpha
ExclusiveArch: %{java_arches} noarch
- clojure-maven-plugin
ExclusiveArch: %{java_arches} noarch
- clojure-spec-alpha
ExclusiveArch: %{java_arches} noarch
- cloudcompare
ExcludeArch: %{ix86}
- clover2
ExcludeArch: armv7hl
- cmospwd
ExclusiveArch: %{ix86} x86_64
- cmrt
ExclusiveArch: %{ix86} x86_64 ia64
- coan
ExcludeArch: ppc64 s390x
- coccinelle
ExcludeArch: %{ix86}
- cocoalib
ExcludeArch: %{ix86}
- codeblocks
ExcludeArch: %{ix86}
- codehaus-parent
ExclusiveArch: %{java_arches} noarch
- cohomCalg
ExcludeArch: %{ix86}
- coin-or-Alps
ExcludeArch: %{ix86}
- coin-or-Bcp
ExcludeArch: %{ix86}
- coin-or-Bcps
ExcludeArch: %{ix86}
- coin-or-Blis
ExcludeArch: %{ix86}
- coin-or-Bonmin
ExcludeArch: %{ix86}
- coin-or-CoinMP
ExcludeArch: %{ix86}
- coin-or-Couenne
ExcludeArch: %{ix86}
- coin-or-Dip
ExcludeArch: %{ix86}
- coin-or-FlopC++
ExcludeArch: %{ix86}
- coin-or-HiGHS
ExcludeArch: %{ix86}
- coin-or-Ipopt
ExcludeArch: %{ix86}
- coin-or-OS
ExcludeArch: %{ix86}
- coin-or-SYMPHONY
ExcludeArch: %{ix86}
- coin-or-lemon
ExcludeArch: %{ix86}
- colorful
ExclusiveArch: %{fpc_arches}
- colossus
ExclusiveArch: %{java_arches} noarch
- compiz-plugins-experimental
ExcludeArch: s390 s390x
- conmon
ExclusiveArch: %{golang_arches_future}
- console-image-viewer
ExclusiveArch: %{java_arches} noarch
- containernetworking-plugins
ExclusiveArch: %{golang_arches}
- containers-common
ExclusiveArch: %{golang_arches} noarch
- contour-terminal
ExclusiveArch: x86_64 aarch64
- contractor
ExcludeArch: %{ix86}
- conu
ExcludeArch: ppc64
- coolreader
ExcludeArch: %{ix86}
- coq
ExclusiveArch: %{ocaml_native_compiler}
- corectrl
ExcludeArch: %{ix86}
- cortado
ExclusiveArch: %{java_arches} noarch
- cosmic-comp
ExcludeArch: %{ix86}
- coxeter
ExcludeArch: %{ix86}
- cp2k
ExcludeArch: s390x
- cpp-hocon
ExcludeArch: %{ix86}
- cpu-x
ExclusiveArch: i686 x86_64
- cpufetch
ExclusiveArch: %{arm} aarch64 x86_64 ppc ppc64 ppc64le
- cpuid
ExclusiveArch: %{ix86} x86_64
- cpuinfo
ExclusiveArch: x86_64 aarch64
- cqrlog
ExclusiveArch: %{fpc_arches}
- cramjam-cli
ExcludeArch: %{ix86}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- crash-gcore-command
ExclusiveArch: aarch64 ppc64le x86_64
- crash-trace-command
ExclusiveArch: aarch64 ppc64le s390x x86_64
- credentials-fetcher
ExclusiveArch: x86_64 aarch64 s390x
- crest
ExcludeArch: s390x
- cri-o
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- cri-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- crun
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le riscv64 s390x x86_64
- cryfs
ExcludeArch: i686
- cryptlib
ExclusiveArch: x86_64 aarch64 ppc64le
- crypto-policies
ExclusiveArch: %{java_arches} noarch
- cryptobone
ExclusiveArch: x86_64 ppc64le aarch64
- cryptominisat
ExcludeArch: %{ix86}
- csdp
ExcludeArch: %{ix86}
- csslint
ExclusiveArch: %{nodejs_arches} noarch
- cura
ExcludeArch: %{ix86}
- cura-fdm-materials
ExcludeArch: %{ix86}
- cvc5
ExcludeArch: %{ix86}
- cxsc
ExcludeArch: %{ix86}
- daggy
ExcludeArch: s390x
- dapl
ExcludeArch: s390, armv7hl
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExcludeArch: armv7hl i686 s390x
- dbus-parsec
ExcludeArch: ppc64le s390x
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- ddccontrol
ExcludeArch: s390 s390x
- ddcutil
ExcludeArch: s390 s390x
- ddd
ExcludeArch: %{ix86}
- ddnet
ExcludeArch: s390x
- decentxml
ExclusiveArch: %{java_arches} noarch
- deepin-daemon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- deepin-desktop-schemas
ExclusiveArch: %{go_arches}
- dhall
ExcludeArch: %{ix86}
- dhall-json
ExcludeArch: %{ix86}
- dialect
ExcludeArch: s390x
- diffoscope
ExcludeArch: %{ix86}
- dippi
ExcludeArch: %{ix86}
- directory-maven-plugin
ExclusiveArch: %{java_arches} noarch
- dirgra
ExclusiveArch: %{java_arches} noarch
- disruptor
ExclusiveArch: %{java_arches} noarch
- ditaa
ExclusiveArch: %{java_arches} noarch
- dl_poly
ExcludeArch: i686
- dlib
ExcludeArch: %{ix86} s390x
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: x86_64
- dnsdist
ExcludeArch: %{ix86} #1994125
ExcludeArch: armv7hl #1994125
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dogtag-pki
ExclusiveArch: %{java_arches}
ExcludeArch: i686
- dolfin
ExcludeArch: %{ix86}
- dolphin-emu
ExclusiveArch: x86_64 aarch64
- dom4j
ExclusiveArch: %{java_arches} noarch
- dosbox-staging
ExcludeArch: %{ix86}
- dotnet6.0
ExclusiveArch: aarch64 x86_64 s390x
ExclusiveArch: x86_64
- dotnet8.0
ExclusiveArch: aarch64 ppc64le s390x x86_64
- doublecmd
ExclusiveArch: %{ix86} x86_64
- dovecot
ExcludeArch: %{ix86}
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dragonbox
ExcludeArch: %{ix86}
- drat-trim
ExcludeArch: %{ix86}
- drat2er
ExcludeArch: %{ix86}
- dub
ExclusiveArch: %{ldc_arches}
- duperemove
ExcludeArch: %{ix86}
- dvdauthor
ExcludeArch: %{ix86}
- dvgrab
ExcludeArch: s390 s390x
- dxvk-native
ExclusiveArch: %{ix86} x86_64
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc64le aarch64
- e-antic
ExcludeArch: %{ix86}
- e00compr
ExcludeArch: %{ix86}
- e3
ExclusiveArch: %{ix86} x86_64
- easymock
ExclusiveArch: %{java_arches} noarch
- eccodes
ExcludeArch: i686
- ecj
ExclusiveArch: %{java_arches} noarch
- eclib
ExcludeArch: %{ix86}
- eclipse-swt
ExclusiveArch: %{java_arches}
- ecryptfs-utils
ExcludeArch: %{ix86}
- ed25519-java
ExclusiveArch: %{java_arches} noarch
- edac-utils
ExcludeArch: %{ix86}
- edflib
ExcludeArch: s390x %{ix86}
- edk2
ExclusiveArch: x86_64 aarch64 riscv64
- edwin-fonts
ExcludeArch: %{ix86}
- eegdev
ExcludeArch: %{ix86}
- eegview
ExcludeArch: %{ix86}
- efax
ExcludeArch: s390 s390x
- efibootmgr
ExclusiveArch: %{efi}
- efifs
ExclusiveArch: %{efi}
- efitools
ExclusiveArch: %{efi}
- efivar
ExclusiveArch: %{efi}
- electron-cash
ExcludeArch: %{ix86}
- electrum
ExcludeArch: %{ix86}
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 aarch64 %{arm} %{power64}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- emacs-common-proofgeneral
ExcludeArch: %{ix86}
- emacs-company-mode
ExcludeArch: %{ix86}
- emacs-iedit
ExcludeArch: %{ix86}
- emacs-slime
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- embree
ExclusiveArch: aarch64 x86_64
- embree3
ExclusiveArch: aarch64 x86_64
- enjarify
ExclusiveArch: %{java_arches} noarch
- enki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 riscv64
- eot-utils
ExcludeArch: %{ix86}
- ergo
ExcludeArch: %{ix86}
- eric
ExclusiveArch: %{qt6_qtwebengine_arches} noarch
- erlang-corba
ExclusiveArch: %{java_arches}
- esmi_ib_library
ExclusiveArch: x86_64
- espresso
ExcludeArch: s390x i686 armv7hl
- eth-tools
ExclusiveArch: x86_64
- exec-maven-plugin
ExclusiveArch: %{java_arches} noarch
- external-editor-revived
ExclusiveArch: %{rust_arches}
- extra-enforcer-rules
ExclusiveArch: %{java_arches} noarch
- f3d
ExcludeArch: %{ix86}
- fasterxml-oss-parent
ExclusiveArch: %{java_arches} noarch
- fb303
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- fbreader
ExcludeArch: %{ix86}
ExcludeArch: armv7hl
- fbthrift
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fcitx5-mozc
ExcludeArch: ppc ppc64 sparcv9 sparc64 s390x
- fcoe-utils
ExcludeArch: ppc s390
ExcludeArch: %{ix86}
- felix-parent
ExclusiveArch: %{java_arches} noarch
- felix-utils
ExclusiveArch: %{java_arches} noarch
- fernflower
ExclusiveArch: %{java_arches} noarch
- fes
ExclusiveArch: %{ix86} x86_64
- fido-device-onboard
ExcludeArch: %{ix86}
- filedrop
ExclusiveArch: %{java_arches} noarch
- filezilla
ExcludeArch: s390x
- firecracker
ExclusiveArch: aarch64 x86_64
- firefox
ExcludeArch: i686
- fishbowl
ExclusiveArch: %{java_arches} noarch
- fizz
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- flang
ExcludeArch: i686 s390x
- flashrom
ExcludeArch: s390 s390x
- flatbuffers
ExcludeArch: %{ix86}
- flatpak
ExcludeArch: %{ix86}
- flatpak-builder
ExcludeArch: %{ix86}
- flatpak-module-tools
ExcludeArch: i386 i686
- flexmark-java
ExclusiveArch: noarch %{java_arches}
- flickcurl
ExcludeArch: %{ix86}
- flint
ExcludeArch: %{ix86}
- flocq
ExclusiveArch: %{ocaml_native_compiler}
- floppy-support
ExcludeArch: %{arm} aarch64 s390x
- florist
ExclusiveArch: %{GPRbuild_arches}
- flterm
ExcludeArch: s390 s390x sparcv9
- fluent-bit
ExclusiveArch: x86_64 aarch64
- flute
ExclusiveArch: %{java_arches} noarch
- fmidi
ExcludeArch: %{ix86}
- folly
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- fop
ExclusiveArch: %{java_arches} noarch
- forge-parent
ExclusiveArch: %{java_arches} noarch
- fotocx
ExcludeArch: %{ix86}
- foxi
ExclusiveArch: x86_64 aarch64
- fpc
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64 ppc64le
- fprintd
ExcludeArch: s390 s390x
- fractal
ExcludeArch: %{ix86}
- fragments
ExcludeArch: %{ix86}
- frama-c
ExclusiveArch: %{ocaml_native_compiler}
- free42
ExcludeArch: %{ix86}
- freecol
ExclusiveArch: %{java_arches} noarch
- freedink
ExcludeArch: s390x
- freedink-dfarc
ExcludeArch: s390x
- freefem++
ExcludeArch: %{ix86}
- freemarker
ExclusiveArch: %{java_arches} noarch
- freerouting
ExclusiveArch: %{java_arches} noarch
- freetennis
ExcludeArch: sparc64 s390 s390x %{ix86}
- frescobaldi
ExclusiveArch: %{qt5_qtwebengine_arches}
- frysk
ExclusiveArch: x86_64 ppc64
- fuse-overlayfs
ExclusiveArch: %{arm64} ppc64le s390x x86_64 riscv64
- fusesource-pom
ExclusiveArch: %{java_arches} noarch
- fwts
ExclusiveArch: x86_64 %{arm} aarch64 s390x riscv64 %{power64}
- fwupd-efi
ExclusiveArch: x86_64 aarch64
- ga
ExcludeArch: %{ix86}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le riscv64
- galera
ExcludeArch: %{ix86}
- gambas3
ExcludeArch: i686
- gap
ExcludeArch: %{ix86}
- gap-pkg-ace
ExcludeArch: %{ix86}
- gap-pkg-aclib
ExcludeArch: %{ix86}
- gap-pkg-alnuth
ExcludeArch: %{ix86}
- gap-pkg-anupq
ExcludeArch: %{ix86}
- gap-pkg-atlasrep
ExcludeArch: %{ix86}
- gap-pkg-autodoc
ExcludeArch: %{ix86}
- gap-pkg-automata
ExcludeArch: %{ix86}
- gap-pkg-autpgrp
ExcludeArch: %{ix86}
- gap-pkg-browse
ExcludeArch: %{ix86}
- gap-pkg-caratinterface
ExcludeArch: %{ix86}
- gap-pkg-circle
ExcludeArch: %{ix86}
- gap-pkg-cohomolo
ExcludeArch: %{ix86}
- gap-pkg-congruence
ExcludeArch: %{ix86}
- gap-pkg-corelg
ExcludeArch: %{ix86}
- gap-pkg-crime
ExcludeArch: %{ix86}
- gap-pkg-crisp
ExcludeArch: %{ix86}
- gap-pkg-crypting
ExcludeArch: %{ix86}
- gap-pkg-cryst
ExcludeArch: %{ix86}
- gap-pkg-crystcat
ExcludeArch: %{ix86}
- gap-pkg-ctbllib
ExcludeArch: %{ix86}
- gap-pkg-curlinterface
ExcludeArch: %{ix86}
- gap-pkg-cvec
ExcludeArch: %{ix86}
- gap-pkg-datastructures
ExcludeArch: %{ix86}
- gap-pkg-design
ExcludeArch: %{ix86}
- gap-pkg-digraphs
ExcludeArch: %{ix86}
- gap-pkg-edim
ExcludeArch: %{ix86}
- gap-pkg-factint
ExcludeArch: %{ix86}
- gap-pkg-ferret
ExcludeArch: %{ix86}
- gap-pkg-fga
ExcludeArch: %{ix86}
- gap-pkg-fining
ExcludeArch: %{ix86}
- gap-pkg-float
ExcludeArch: %{ix86}
- gap-pkg-format
ExcludeArch: %{ix86}
- gap-pkg-forms
ExcludeArch: %{ix86}
- gap-pkg-fplsa
ExcludeArch: %{ix86}
- gap-pkg-fr
ExcludeArch: %{ix86}
- gap-pkg-francy
ExcludeArch: %{ix86}
- gap-pkg-gbnp
ExcludeArch: %{ix86}
- gap-pkg-genss
ExcludeArch: %{ix86}
- gap-pkg-grape
ExcludeArch: %{ix86}
- gap-pkg-groupoids
ExcludeArch: %{ix86}
- gap-pkg-grpconst
ExcludeArch: %{ix86}
- gap-pkg-guava
ExcludeArch: %{ix86}
- gap-pkg-hap
ExcludeArch: %{ix86}
- gap-pkg-hapcryst
ExcludeArch: %{ix86}
- gap-pkg-hecke
ExcludeArch: %{ix86}
- gap-pkg-images
ExcludeArch: %{ix86}
- gap-pkg-io
ExcludeArch: %{ix86}
- gap-pkg-irredsol
ExcludeArch: %{ix86}
- gap-pkg-json
ExcludeArch: %{ix86}
- gap-pkg-jupyterkernel
ExcludeArch: %{ix86}
- gap-pkg-jupyterviz
ExcludeArch: %{ix86}
- gap-pkg-laguna
ExcludeArch: %{ix86}
- gap-pkg-liealgdb
ExcludeArch: %{ix86}
- gap-pkg-liepring
ExcludeArch: %{ix86}
- gap-pkg-liering
ExcludeArch: %{ix86}
- gap-pkg-loops
ExcludeArch: %{ix86}
- gap-pkg-lpres
ExcludeArch: %{ix86}
- gap-pkg-mapclass
ExcludeArch: %{ix86}
- gap-pkg-nautytracesinterface
ExcludeArch: %{ix86}
- gap-pkg-nq
ExcludeArch: %{ix86}
- gap-pkg-openmath
ExcludeArch: %{ix86}
- gap-pkg-orb
ExcludeArch: %{ix86}
- gap-pkg-permut
ExcludeArch: %{ix86}
- gap-pkg-polenta
ExcludeArch: %{ix86}
- gap-pkg-polycyclic
ExcludeArch: %{ix86}
- gap-pkg-polymaking
ExcludeArch: %{ix86}
- gap-pkg-primgrp
ExcludeArch: %{ix86}
- gap-pkg-profiling
ExcludeArch: %{ix86}
- gap-pkg-qpa
ExcludeArch: %{ix86}
- gap-pkg-quagroup
ExcludeArch: %{ix86}
- gap-pkg-radiroot
ExcludeArch: %{ix86}
- gap-pkg-recog
ExcludeArch: %{ix86}
- gap-pkg-repsn
ExcludeArch: %{ix86}
- gap-pkg-resclasses
ExcludeArch: %{ix86}
- gap-pkg-scscp
ExcludeArch: %{ix86}
- gap-pkg-semigroups
ExcludeArch: %{ix86}
- gap-pkg-singular
ExcludeArch: %{ix86}
- gap-pkg-sla
ExcludeArch: %{ix86}
- gap-pkg-smallgrp
ExcludeArch: %{ix86}
- gap-pkg-smallsemi
ExcludeArch: %{ix86}
- gap-pkg-sonata
ExcludeArch: %{ix86}
- gap-pkg-sophus
ExcludeArch: %{ix86}
- gap-pkg-spinsym
ExcludeArch: %{ix86}
- gap-pkg-standardff
ExcludeArch: %{ix86}
- gap-pkg-tomlib
ExcludeArch: %{ix86}
- gap-pkg-toric
ExcludeArch: %{ix86}
- gap-pkg-transgrp
ExcludeArch: %{ix86}
- gap-pkg-utils
ExcludeArch: %{ix86}
- gap-pkg-uuid
ExcludeArch: %{ix86}
- gap-pkg-xmod
ExcludeArch: %{ix86}
- gap-pkg-zeromqinterface
ExcludeArch: %{ix86}
- gappa
ExcludeArch: %{ix86}
- gappalib-coq
ExclusiveArch: %{ocaml_native_compiler}
- gauche
ExcludeArch: armv7hl
- gbrainy
ExclusiveArch: %mono_arches
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- gdl
ExcludeArch: %{ix86}
- gearhead1
ExclusiveArch: %{fpc_arches}
- gearhead2
ExclusiveArch: %{fpc_arches}
- gearmand
ExcludeArch: ppc
- geeqie
ExcludeArch: %{ix86}
- gfan
ExcludeArch: %{ix86}
- gfs2-utils
ExcludeArch: %{ix86}
- gfxstream
ExcludeArch: %{ix86} %{power64} s390x
- ghc
ExcludeArch: armv7hl
- ghc-cborg
ExcludeArch: %{ix86}
- ghc-cborg-json
ExcludeArch: %{ix86}
- ghc-gi-gtk
ExcludeArch: armv7hl
- ghc-serialise
ExcludeArch: %{ix86}
- ghc9.10
ExcludeArch: armv7hl
- ghc9.2
ExcludeArch: armv7hl
- ghc9.4
ExcludeArch: armv7hl
- ghc9.6
ExcludeArch: armv7hl
- ghc9.8
ExcludeArch: armv7hl
- ghdl
ExclusiveArch: %{GNAT_arches}
ExcludeArch: armv7hl %{ix86}
- ghostwriter
ExclusiveArch: %{qt6_qtwebengine_arches}
- gimp-fourier-plugin
ExcludeArch: %{ix86}
- gio-sharp
ExclusiveArch: %mono_arches
- gir-to-d
ExclusiveArch: %{ldc_arches}
- git-lfs
ExcludeArch: %{ix86}
- git-octopus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- gitqlient
ExclusiveArch: %{qt5_qtwebengine_arches}
- giver
ExclusiveArch: %{mono_arches}
- gkeyfile-sharp
ExclusiveArch: %mono_arches
- gkrellm-wifi
ExcludeArch: s390 s390x
- glava
ExcludeArch: %{ix86}
- glibd
ExclusiveArch: %{ldc_arches}
- gloo
ExcludeArch: i686
- glycin-loaders
ExcludeArch: %{ix86}
- gmsh
ExcludeArch: %{ix86}
- gmult
ExcludeArch: %{ix86}
- gn
ExcludeArch: %{ix86}
- gnatcoll
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-bindings
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-db
ExclusiveArch: %{GPRbuild_arches}
- gnofract4d
ExcludeArch: %{ix86}
- gnome-applets
ExcludeArch: %{ix86}
- gnome-bluetooth
ExcludeArch: s390 s390x
- gnome-bluetooth3.34
ExcludeArch: s390 s390x
- gnome-boxes
ExclusiveArch: x86_64
- gnome-chemistry-utils
ExcludeArch: %{ix86}
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- gnome-flashback
ExcludeArch: %{ix86}
- gnome-hexgl
ExcludeArch: i686
- gnome-initial-setup
ExcludeArch: %{ix86}
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-monitor-config
ExcludeArch: %{ix86}
- gnome-panel
ExcludeArch: %{ix86}
- gnome-rdp
ExclusiveArch: %{mono_arches}
ExcludeArch: %{ix86}
- gnome-session
ExcludeArch: %{ix86}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-shell
ExcludeArch: %{ix86}
- gnome-software
ExcludeArch: %{ix86}
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnome-terminal
ExcludeArch: %{ix86}
- gnu-efi
ExclusiveArch: %{efi}
- gnucash
ExcludeArch: %{ix86}
ExcludeArch: ppc64 s390x
- gnumeric
ExcludeArch: %{ix86}
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godot
ExcludeArch: s390x
- godot3
ExcludeArch: ppc64 ppc64le s390x
- goffice
ExcludeArch: %{ix86}
- golang
ExclusiveArch: %{golang_arches}
- golang-entgo-ent
ExcludeArch: %{arm32} %{ix86}
- golang-github-ebitengine-purego
ExcludeArch: ppc64le s390x
- golang-github-elliotchance-orderedmap
ExcludeArch: aarch64
ExcludeArch: ppc64le
ExcludeArch: s390x
- golang-github-facebookincubator-nvdtools
ExcludeArch: i686 armv7hl
- golang-github-google-goterm
ExcludeArch: ppc64le s390x
- golang-helm-3
ExcludeArch: armv7hl aarch64
- golang-tinygo-x-llvm
ExcludeArch: %{ix86}
- goldendict-ng
ExclusiveArch: aarch64 x86_64
- google-compute-engine-guest-configs
ExcludeArch: %{ix86}
- google-cpu_features
ExcludeArch: s390x
- google-gson
ExclusiveArch: %{java_arches} noarch
- google-guest-agent
ExcludeArch: ppc64le s390x
- google-guice
ExclusiveArch: %{java_arches} noarch
- google-osconfig-agent
ExcludeArch: ppc64le s390x
- gotcha
ExcludeArch: %{ix86}
- gotun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: x86_64
- gource
ExcludeArch: ppc64le
- goverlay
ExclusiveArch: %{fpc_arches}
- gpaste
ExcludeArch: %{ix86}
- gpaw
ExcludeArch: ppc64
ExcludeArch: %{ix86}
- gperftools
ExcludeArch: s390
- gprbuild
ExclusiveArch: %{GPRbuild_arches}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha aarch64
- gr-air-modes
ExcludeArch: %{ix86}
- grafana
ExclusiveArch: %{grafana_arches}
- grafana-pcp
ExclusiveArch: %{grafanapcp_arches}
- greenboot
ExcludeArch: s390x
- gretl
ExcludeArch: %{ix86}
- gromacs
ExcludeArch: i686 armv7hl s390x
- grub-customizer
ExcludeArch: s390 s390x %{arm}
- grub2
ExcludeArch: s390 s390x %{ix86}
- grub2-breeze-theme
ExcludeArch: s390 s390x %{arm}
- grubby
ExcludeArch: %{ix86}
- gsequencer
ExcludeArch: i686
- gthree
ExcludeArch: i686
- gthumb
ExcludeArch: s390x
- gtk-sharp-beans
ExclusiveArch: %mono_arches
- gtk-sharp2
ExclusiveArch: %mono_arches
- gtk-sharp3
ExclusiveArch: %{mono_arches}
- gtkd
ExclusiveArch: %{ldc_arches}
- gtkhash
ExcludeArch: %{ix86}
- gtkwave
ExcludeArch: s390x
- guava
ExclusiveArch: %{java_arches} noarch
- gudev-sharp
ExclusiveArch: %mono_arches
- guestfs-tools
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- gvisor-tap-vsock
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- hamcrest
ExclusiveArch: %{java_arches} noarch
- harec
ExclusiveArch: x86_64 aarch64 riscv64
- harmonyseq
ExcludeArch: %{ix86}
- harvey
ExcludeArch: %{ix86}
- hashcat
ExcludeArch: ppc64 s390x
- hawtjni
ExclusiveArch: %{java_arches} noarch
- haxe
ExcludeArch: %{ix86}
- hcloud
ExcludeArch: %{ix86}
- heaptrack
ExcludeArch: s390 s390x
- hedgewars
ExclusiveArch: %{fpc_arches}
ExcludeArch: ppc64le
- helix
ExcludeArch: %{ix86}
- hevea
ExcludeArch: %{ix86}
- hibernate-jpa-2.0-api
ExclusiveArch: %{java_arches} noarch
- hid4java
ExclusiveArch: %{java_arches} noarch
- highfive
ExcludeArch: %{ix86}
- hipblas
ExclusiveArch: x86_64
- hipcub
ExclusiveArch: x86_64
- hipfft
ExclusiveArch: x86_64
- hipify
ExclusiveArch: x86_64
- hiprand
ExclusiveArch: x86_64
- hipsolver
ExclusiveArch: x86_64
- hipsparse
ExclusiveArch: x86_64
- hmmer
ExcludeArch: aarch64 ppc64le s390x
- honggfuzz
ExcludeArch: %{arm} %{power64} s390 s390x
- howl
ExcludeArch: ppc64le s390x
ExcludeArch: %{ix86}
- hpx
ExcludeArch: i686
- hsakmt
ExclusiveArch: x86_64 aarch64 ppc64le
- httpcomponents-client
ExclusiveArch: %{java_arches} noarch
- httpcomponents-core
ExclusiveArch: %{java_arches} noarch
- httpcomponents-project
ExclusiveArch: %{java_arches} noarch
- hydrapaper
ExcludeArch: s390x
- hyperhdr
ExcludeArch: %{ix86}
- hyperrogue
ExcludeArch: armv7hl
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64 aarch64
- hyprcursor
ExcludeArch: %{ix86}
- hypridle
ExcludeArch: %{ix86}
- hyprland
ExcludeArch: %{ix86}
- hyprlang
ExcludeArch: %{ix86}
- hyprlock
ExcludeArch: %{ix86}
- hyprpaper
ExcludeArch: %{ix86}
- hyprwayland-scanner
ExcludeArch: %{ix86}
- i2c-tools
ExcludeArch: s390 s390x
- ibsim
ExcludeArch: s390 %{arm}
- ibus-typing-booster
ExcludeArch: ppc64 s390x
- icecat
ExcludeArch: %{ix86} %{arm}
- icedtea-web
ExclusiveArch: %{java_arches}
- icu4j
ExclusiveArch: %{java_arches} noarch
- ignition
ExcludeArch: %{ix86}
- iir1
ExcludeArch: %{ix86}
- ike-scan
ExcludeArch: %{ix86}
- ilua
ExcludeArch: %{ix86}
- imagej
ExclusiveArch: %{java_arches} noarch
- imhex
ExclusiveArch: x86_64 %{arm64}
- iml
ExcludeArch: %{ix86}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indi-3rdparty-drivers
ExcludeArch: %{ix86}
- indi-3rdparty-libraries
ExcludeArch: %{ix86}
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cm-compiler
ExclusiveArch: i686 x86_64
- intel-cmt-cat
ExclusiveArch: x86_64
- intel-compute-runtime
ExclusiveArch: x86_64
- intel-gmmlib
ExcludeArch: s390x ppc64le
- intel-igc
ExclusiveArch: x86_64
- intel-ipp-crypto-mb
ExclusiveArch: x86_64
- intel-ipsec-mb
ExclusiveArch: x86_64
- intel-lpmd
ExclusiveArch: x86_64
- intel-media-driver-free
ExclusiveArch: i686 x86_64
- intel-mediasdk
ExclusiveArch: x86_64
- intel-metee
ExclusiveArch: x86_64
- intel-undervolt
ExclusiveArch: i386 x86_64
- intel-vpl-gpu-rt
ExclusiveArch: x86_64
- ioport
ExclusiveArch: %{ix86} x86_64
- ipe
ExcludeArch: %{ix86}
- ipmctl
ExclusiveArch: x86_64
- irda-utils
ExcludeArch: s390 s390x
- irqbalance
ExcludeArch: s390 s390x
- isa-l
ExcludeArch: %{ix86}
- ispc
ExclusiveArch: x86_64 aarch64
- iucode-tool
ExclusiveArch: %{ix86} x86_64
- iyfct
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- jFormatString
ExclusiveArch: %{java_arches} noarch
- jack-mixer
ExcludeArch: armv7hl
ExcludeArch: i686
- jackson-annotations
ExclusiveArch: %{java_arches} noarch
- jackson-bom
ExclusiveArch: %{java_arches} noarch
- jackson-core
ExclusiveArch: %{java_arches} noarch
- jackson-databind
ExclusiveArch: %{java_arches} noarch
- jackson-jaxrs-providers
ExclusiveArch: %{java_arches} noarch
- jackson-modules-base
ExclusiveArch: %{java_arches} noarch
- jackson-parent
ExclusiveArch: %{java_arches} noarch
- jacoco
ExclusiveArch: %{java_arches} noarch
- jacop
ExclusiveArch: %{java_arches} noarch
- jakarta-activation
ExclusiveArch: %{java_arches} noarch
- jakarta-activation1
ExclusiveArch: %{java_arches} noarch
- jakarta-annotations
ExclusiveArch: %{java_arches} noarch
- jakarta-el
ExclusiveArch: %{java_arches} noarch
- jakarta-interceptors
ExclusiveArch: %{java_arches} noarch
- jakarta-json
ExclusiveArch: %{java_arches} noarch
- jakarta-mail
ExclusiveArch: %{java_arches} noarch
- jakarta-mail1
ExclusiveArch: %{java_arches} noarch
- jakarta-oro
ExclusiveArch: %{java_arches} noarch
- jakarta-saaj
ExclusiveArch: %{java_arches} noarch
- jakarta-server-pages
ExclusiveArch: %{java_arches} noarch
- jakarta-servlet
ExclusiveArch: %{java_arches} noarch
- jakarta-xml-ws
ExclusiveArch: %{java_arches} noarch
- janino
ExclusiveArch: %{java_arches} noarch
- jansi
ExclusiveArch: %{java_arches}
- jansi-native
ExclusiveArch: %{java_arches}
- jansi1
ExclusiveArch: %{java_arches} noarch
- java-1.8.0-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-1.8.0-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-11-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-11-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-17-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-17-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-21-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-21-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-diff-utils
ExclusiveArch: %{java_arches} noarch
- java-dirq
ExclusiveArch: %{java_arches} noarch
- java-jd-decompiler
ExclusiveArch: %{java_arches} noarch
- java-latest-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-latest-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-runtime-decompiler
ExclusiveArch: %{java_arches} noarch
- java-scrypt
ExclusiveArch: %{java_arches} noarch
- java_cup
ExclusiveArch: %{java_arches} noarch
- javacc
ExclusiveArch: %{java_arches} noarch
- javacc-maven-plugin
ExclusiveArch: %{java_arches} noarch
- javaewah
ExclusiveArch: %{java_arches} noarch
- javapackages-bootstrap
ExclusiveArch: %{java_arches}
- javaparser
ExclusiveArch: %{java_arches} noarch
- javapoet
ExclusiveArch: %{java_arches} noarch
- javassist
ExclusiveArch: %{java_arches} noarch
- jaxb
ExclusiveArch: %{java_arches} noarch
- jaxb-api
ExclusiveArch: %{java_arches} noarch
- jaxb-api2
ExclusiveArch: %{java_arches} noarch
- jaxb-dtd-parser
ExclusiveArch: %{java_arches} noarch
- jaxb-fi
ExclusiveArch: %{java_arches} noarch
- jaxb-istack-commons
ExclusiveArch: %{java_arches} noarch
- jaxb-stax-ex
ExclusiveArch: %{java_arches} noarch
- jaxen
ExclusiveArch: %{java_arches} noarch
- jblas
ExcludeArch: %{ix86}
- jboss-jaxrs-2.0-api
ExclusiveArch: %{java_arches} noarch
- jboss-logging
ExclusiveArch: %{java_arches} noarch
- jboss-logging-tools
ExclusiveArch: %{java_arches} noarch
- jboss-parent
ExclusiveArch: %{java_arches} noarch
- jchardet
ExclusiveArch: %{java_arches} noarch
- jcip-annotations
ExclusiveArch: %{java_arches} noarch
- jctools
ExclusiveArch: %{java_arches} noarch
- jcuber
ExclusiveArch: %{java_arches} noarch
- jdeparser
ExclusiveArch: %{java_arches} noarch
- jdepend
ExclusiveArch: %{java_arches} noarch
- jdependency
ExclusiveArch: %{java_arches} noarch
- jdom
ExclusiveArch: %{java_arches} noarch
- jdom2
ExclusiveArch: %{java_arches} noarch
- jedit
ExclusiveArch: %{java_arches} noarch
- jericho-html
ExclusiveArch: %{java_arches} noarch
- jetbrains-annotations
ExclusiveArch: noarch %{java_arches}
- jetty
ExclusiveArch: %{java_arches} noarch
- jflex
ExclusiveArch: %{java_arches} noarch
- jfreechart
ExclusiveArch: %{java_arches} noarch
- jgit
ExclusiveArch: %{java_arches} noarch
- jglobus
ExclusiveArch: %{java_arches} noarch
- jgoodies-common
ExclusiveArch: %{java_arches} noarch
- jgoodies-forms
ExclusiveArch: %{java_arches} noarch
- jgoodies-looks
ExclusiveArch: %{java_arches} noarch
- jigawatts
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- jline
ExclusiveArch: %{java_arches}
- jline2
ExclusiveArch: %{java_arches} noarch
- jmock
ExclusiveArch: %{java_arches} noarch
- jmol
ExclusiveArch: %{java_arches} noarch
- jna
ExclusiveArch: %{java_arches}
- jneuroml-core
ExclusiveArch: %{java_arches} noarch
- jni-inchi
ExclusiveArch: %{java_arches}
- jo
ExcludeArch: %{ix86}
- jol
ExclusiveArch: %{java_arches} noarch
- jolokia-jvm-agent
ExclusiveArch: %{java_arches} noarch
- jopt-simple
ExclusiveArch: %{java_arches} noarch
- jorbis
ExclusiveArch: %{java_arches} noarch
- jowl
ExclusiveArch: %{nodejs_arches} noarch
- jpanoramamaker
ExclusiveArch: %{java_arches} noarch
- jpilot
ExcludeArch: s390, s390x
- jpilot-backup
ExcludeArch: s390 s390x
- jsch
ExclusiveArch: %{java_arches} noarch
- jsch-agent-proxy
ExclusiveArch: %{java_arches} noarch
- json_simple
ExclusiveArch: %{java_arches} noarch
- jsoup
ExclusiveArch: %{java_arches} noarch
- jsr-305
ExclusiveArch: %{java_arches} noarch
- jss
ExclusiveArch: %{java_arches}
ExcludeArch: i686
- jssc
ExclusiveArch: %{java_arches}
- jtidy
ExclusiveArch: %{java_arches} noarch
- julia
ExclusiveArch: x86_64
- junit
ExclusiveArch: %{java_arches} noarch
- junit5
ExclusiveArch: %{java_arches} noarch
- juniversalchardet
ExclusiveArch: %{java_arches} noarch
- jzlib
ExclusiveArch: %{java_arches} noarch
- kaffeine
ExcludeArch: %{ix86}
- kaidan
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- kata-containers
ExcludeArch: %{arm} %{ix86} s390 s390x
ExcludeArch: ppc64le
- kawa
ExcludeArch: i686
- kchmviewer
ExclusiveArch: %{qt5_qtwebengine_arches}
- kcm_wacomtablet
ExcludeArch: s390 s390x
- kcov
ExcludeArch: s390 s390x
- kdenlive
ExcludeArch: %{ix86}
- keepass
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- keepassxc
ExcludeArch: s390x
- kernel
ExclusiveArch: noarch x86_64 s390x aarch64 ppc64le
ExclusiveArch: noarch i386 i686 x86_64 s390x aarch64 ppc64le
- kernelshark
ExcludeArch: %{ix86} %{arm}
- keydb
ExcludeArch: %{ix86}
- keylime-agent-rust
ExclusiveArch: %{rust_arches}
- kf5-akonadi-search
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kblog
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarcore
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarutils
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kitinerary
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-ktnef
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-libkdcraw
ExclusiveArch: x86_64 ppc64le %{arm}
- khelpcenter
ExclusiveArch: %{qt6_qtwebengine_arches}
- kicad
ExclusiveArch: x86_64 aarch64 ppc64le
- kissat
ExcludeArch: %{ix86}
- kitty
ExcludeArch: %{ix86}
- kiwix-desktop
ExclusiveArch: %{qt5_qtwebengine_arches}
- knot-resolver
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- kokkos
ExcludeArch: i686 armv7hl
- kpilot
ExcludeArch: s390 s390x
- krita
ExcludeArch: %{ix86}
- ksensors
ExcludeArch: s390 s390x
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm}
- ladspa-autotalent-plugins
ExcludeArch: %{ix86}
- laf-plugin
ExclusiveArch: %{java_arches} noarch
- latte-integrale
ExcludeArch: %{ix86}
- lazarus
ExclusiveArch: %{fpc_arches}
- lazpaint
ExclusiveArch: %{fpc_arches}
- lcd4linux
ExcludeArch: s390 s390x
- ldapjdk
ExclusiveArch: %{java_arches} noarch
- ldc
ExclusiveArch: %{ldc_arches} ppc64le
- ledmon
ExcludeArch: %{ix86}
- leland-fonts
ExcludeArch: %{ix86}
- lfortran
ExclusiveArch: x86_64
- lfsc
ExcludeArch: %{ix86}
- lib3mf
ExcludeArch: %{ix86}
- libCombine
ExcludeArch: %{ix86}
- libaiff
ExcludeArch: %{ix86}
- libarcus
ExcludeArch: %{ix86}
- libarrow
ExcludeArch: %{ix86} %{arm}
- libavc1394
ExcludeArch: s390 s390x
- libbase
ExclusiveArch: %{java_arches} noarch
- libcamera
ExcludeArch: s390x ppc64le
- libcamera-apps
ExcludeArch: %{power64} s390x
- libcint
ExcludeArch: %{power64}
ExcludeArch: x86_64
- libcircle
ExcludeArch: %{ix86}
- libcpuid
ExcludeArch: aarch64 %arm ppc64le ppc64 s390x
- libcrystalhd
ExcludeArch: s390 s390x
- libcxx
ExcludeArch: ppc64 ppc64le
- libdc1394
ExcludeArch: s390 s390x
- libdfp
ExclusiveArch: ppc ppc64 ppc64le s390 s390x x86_64
- libdigidocpp
ExcludeArch: %{ix86}
- libdispatch
ExclusiveArch: x86_64 aarch64 ppc64le
- libffado
ExcludeArch: s390 s390x
- libfilezilla
ExcludeArch: s390x
- libfonts
ExclusiveArch: %{java_arches} noarch
- libformula
ExclusiveArch: %{java_arches} noarch
- libfprint
ExcludeArch: s390 s390x
- libguestfs
ExcludeArch: %{ix86}
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- libhomfly
ExcludeArch: %{ix86}
- libibcommon
ExcludeArch: s390 s390x
- libica
ExclusiveArch: s390 s390x
- libiec61883
ExcludeArch: s390 s390x
- libinsane
ExcludeArch: %{ix86}
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libkrun
ExclusiveArch: x86_64 aarch64
- libkrunfw
ExclusiveArch: x86_64 aarch64
- liblayout
ExclusiveArch: %{java_arches} noarch
- libldac
ExcludeArch: s390x
- libloader
ExclusiveArch: %{java_arches} noarch
- libnuml
ExcludeArch: %{ix86}
- libnxz
ExclusiveArch: ppc64le
- libobjc2
ExcludeArch: armv7hl i686 ppc64le s390x
- libocxl
ExclusiveArch: ppc64le
- libomp17
ExcludeArch: s390x
- libopenshot
ExcludeArch: ppc64le
- libopenshot-audio
ExcludeArch: ppc64le
- liborc
ExcludeArch: i686 armv7hl
- libpoly
ExcludeArch: %{ix86}
- libpsm2
ExclusiveArch: x86_64
- libquentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- libraw1394
ExcludeArch: s390 s390x
- libreoffice
ExcludeArch: %{ix86}
- libreoffice-TexMaths
ExclusiveArch: %{java_arches}
ExcludeArch: aarch64 s390x
- librepository
ExclusiveArch: %{java_arches} noarch
- libretro-desmume2015
ExclusiveArch: i686 x86_64
- libretro-pcsx-rearmed
ExcludeArch: armv7hl
- librtas
ExclusiveArch: %{power64}
- libsavitar
ExcludeArch: %{ix86}
- libsedml
ExcludeArch: %{ix86}
- libsemigroups
ExcludeArch: %{ix86}
- libserializer
ExclusiveArch: %{java_arches} noarch
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 %{ix86}
- libsonata
ExcludeArch: %{ix86}
- libstoragemgmt
ExcludeArch: %{ix86}
- libtracecmd
ExcludeArch: %{ix86} %{arm}
- libunibreak
ExcludeArch: %{ix86}
- libunicode
ExclusiveArch: x86_64 aarch64
- libunifex
ExcludeArch: i686
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} s390x %{ix86} x86_64 riscv64
- libva-intel-hybrid-driver
ExclusiveArch: %{ix86} x86_64 ia64
- libva-nvidia-driver
ExclusiveArch: %{x86_64} %{ix86} %{arm64} ppc64le
- libvirt-java
ExclusiveArch: %{java_arches} noarch
- libvma
ExclusiveArch: x86_64 ppc64le ppc64 aarch64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: %{power64}
- libvpl
ExclusiveArch: x86_64
- libvpl-tools
ExclusiveArch: x86_64
- libx86
ExcludeArch: ppc %{power64} s390 s390x %{sparc} aarch64 armv7hl
- libxsmm
ExclusiveArch: x86_64
- libzdnn
ExclusiveArch: s390x
- libzfcphbaapi
ExclusiveArch: s390 s390x
- libzpc
ExclusiveArch: s390x
- liferea
ExcludeArch: %{ix86}
- linbox
ExcludeArch: %{ix86}
- linux-system-roles
ExcludeArch: i686
- liquidctl
ExcludeArch: s390 s390x
- lite-xl
ExcludeArch: %{ix86}
- llama-cpp
ExclusiveArch: x86_64 aarch64
- lld13
ExcludeArch: s390x
- lld15
ExcludeArch: s390x
- lld16
ExcludeArch: s390x
- lld17
ExcludeArch: s390x
- llhttp
ExclusiveArch: %{nodejs_arches}
- llvm-bolt
ExcludeArch: s390x ppc64le i686
- log4j
ExclusiveArch: %{java_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- loguru
ExcludeArch: %{ix86}
- loupe
ExcludeArch: %{ix86}
- love
ExcludeArch: ppc ppc64 s390x
- lrmi
ExclusiveArch: %{ix86}
- lsp-plugins
ExcludeArch: %{ix86}
- lsvpd
ExclusiveArch: %{power64}
- luajit
ExcludeArch: riscv64 ppc64 ppc64le
- lucene
ExclusiveArch: %{java_arches} noarch
- luckybackup
ExcludeArch: %{ix86}
- lujavrite
ExclusiveArch: %{java_arches}
- luminance-hdr
ExcludeArch: %{ix86}
- lusol
ExcludeArch: %{ix86}
- luxcorerender
ExclusiveArch: x86_64
- lzfse
ExcludeArch: s390x
- m4rie
ExcludeArch: %{ix86}
- mactel-boot
ExclusiveArch: x86_64
- magicmirror
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-airnow
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-onthisday
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-singlestock
ExclusiveArch: %{nodejs_arches} noarch
- makemusic-finale-fonts
ExcludeArch: %{ix86}
- mame
ExcludeArch: %{arm} %{ix86}
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- mapnik
ExcludeArch: ppc ppc64 s390 s390x
- marcsabatella-campania-fonts
ExcludeArch: %{ix86}
- mariadb-java-client
ExclusiveArch: %{java_arches} noarch
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- mate-applets
ExcludeArch: i386 i686
- matrix-synapse
ExclusiveArch: %{rust_arches}
- maven
ExclusiveArch: %{java_arches} noarch
- maven-antrun-plugin
ExclusiveArch: %{java_arches} noarch
- maven-archetype
ExclusiveArch: %{java_arches} noarch
- maven-archiver
ExclusiveArch: %{java_arches} noarch
- maven-artifact-transfer
ExclusiveArch: %{java_arches} noarch
- maven-assembly-plugin
ExclusiveArch: %{java_arches} noarch
- maven-bundle-plugin
ExclusiveArch: %{java_arches} noarch
- maven-clean-plugin
ExclusiveArch: %{java_arches} noarch
- maven-common-artifact-filters
ExclusiveArch: %{java_arches} noarch
- maven-compiler-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-analyzer
ExclusiveArch: %{java_arches} noarch
- maven-dependency-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-tree
ExclusiveArch: %{java_arches} noarch
- maven-doxia
ExclusiveArch: %{java_arches} noarch
- maven-doxia-sitetools
ExclusiveArch: %{java_arches} noarch
- maven-enforcer
ExclusiveArch: %{java_arches} noarch
- maven-file-management
ExclusiveArch: %{java_arches} noarch
- maven-filtering
ExclusiveArch: %{java_arches} noarch
- maven-invoker
ExclusiveArch: %{java_arches} noarch
- maven-invoker-plugin
ExclusiveArch: %{java_arches} noarch
- maven-jar-plugin
ExclusiveArch: %{java_arches} noarch
- maven-mapping
ExclusiveArch: %{java_arches} noarch
- maven-native
ExclusiveArch: %{java_arches} noarch
- maven-parent
ExclusiveArch: %{java_arches} noarch
- maven-patch-plugin
ExclusiveArch: %{java_arches} noarch
- maven-plugin-testing
ExclusiveArch: %{java_arches} noarch
- maven-plugin-tools
ExclusiveArch: %{java_arches} noarch
- maven-remote-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-reporting-api
ExclusiveArch: %{java_arches} noarch
- maven-reporting-impl
ExclusiveArch: %{java_arches} noarch
- maven-resolver
ExclusiveArch: %{java_arches} noarch
- maven-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-script-interpreter
ExclusiveArch: %{java_arches} noarch
- maven-shade-plugin
ExclusiveArch: %{java_arches} noarch
- maven-shared-incremental
ExclusiveArch: %{java_arches} noarch
- maven-shared-io
ExclusiveArch: %{java_arches} noarch
- maven-shared-utils
ExclusiveArch: %{java_arches} noarch
- maven-source-plugin
ExclusiveArch: %{java_arches} noarch
- maven-surefire
ExclusiveArch: %{java_arches} noarch
- maven-verifier
ExclusiveArch: %{java_arches} noarch
- maven-verifier-plugin
ExclusiveArch: %{java_arches} noarch
- maven-wagon
ExclusiveArch: %{java_arches} noarch
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mbpfan
ExclusiveArch: x86_64
- mcelog
ExclusiveArch: i686 x86_64
- mcqd
ExcludeArch: %{ix86}
- mcrouter
ExclusiveArch: x86_64 aarch64 ppc64le
- mecab-java
ExclusiveArch: %java_arches
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
- mellowplayer
ExclusiveArch: %{qt5_qtwebengine_arches}
- memkind
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
- memtest86+
ExclusiveArch: x86_64 %{ix86}
- merkuro
ExclusiveArch: %{qt6_qtwebengine_arches}
- meshlab
ExclusiveArch: aarch64 x86_64
ExcludeArch: %{ix86}
- metamath
ExcludeArch: %{ix86}
- mfem
ExcludeArch: %{ix86}
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} x86_64 riscv64
- miglayout
ExclusiveArch: %{java_arches} noarch
- mine_detector
ExclusiveArch: %{GPRbuild_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-libidn2
ExclusiveArch: %{ix86} x86_64 %{arm}
- mingw-qt6-qtlocation
ExcludeArch: s390x
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- miopen
ExclusiveArch: x86_64
- mirrormanager2
ExcludeArch: %{ix86}
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mlir
ExcludeArch: i686
- mlir17
ExcludeArch: i686
- mlpack
ExcludeArch: %{ix86}
ExcludeArch: s390
- mmapper
ExcludeArch: %{ix86}
- mmlib
ExcludeArch: %{ix86}
- mmtests
ExcludeArch: s390x
- moby-engine
ExclusiveArch: %{golang_arches}
- mockito
ExclusiveArch: %{java_arches} noarch
- mod_gnutls
ExcludeArch: %{ix86} %{arm}
- mod_mono
ExclusiveArch: %mono_arches
- mod_proxy_cluster
ExcludeArch: i686 i386
- modello
ExclusiveArch: %{java_arches} noarch
- moditect
ExclusiveArch: %{java_arches} noarch
- module-build-service
ExclusiveArch: %{ix86} x86_64 noarch
- modulemaker-maven-plugin
ExclusiveArch: %{java_arches} noarch
- mojo-executor
ExclusiveArch: %{java_arches} noarch
- mojo-parent
ExclusiveArch: %{java_arches} noarch
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64 %{arm}
- mold
ExcludeArch: %{ix86}
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monodevelop
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- moose
ExcludeArch: s390x
- morphio
ExcludeArch: %{ix86}
- mozc
ExcludeArch: ppc ppc64 sparcv9 sparc64 s390x
- mozilla-ublock-origin
ExcludeArch: ppc64 s390x
- mp
ExcludeArch: %{ix86}
- mpark-patterns
ExcludeArch: %{ix86}
- mpi4py
ExcludeArch: %{ix86}
- mpibash
ExcludeArch: %{ix86}
- mpsolve
ExcludeArch: %{ix86}
- mrchem
ExcludeArch: s390x
- mrcpp
ExcludeArch: s390x
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- msolve
ExcludeArch: %{ix86}
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mstflint
ExcludeArch: s390 s390x %{arm}
- msv
ExclusiveArch: %{java_arches} noarch
- mt32emu
ExcludeArch: %{ix86}
- muffin
ExcludeArch: %{ix86}
- mumble
ExcludeArch: %{ix86}
- mupen64plus
ExcludeArch: s390x
- musescore
ExcludeArch: %{ix86}
- musl
ExcludeArch: s390
- mvfst
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- mxparser
ExclusiveArch: %{java_arches} noarch
- mysql-connector-java
ExclusiveArch: %{java_arches} noarch
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- naev
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
ExcludeArch: %{ix86}
- naga
ExclusiveArch: %{java_arches} noarch
- nagios-plugins-check-updates
ExcludeArch: %{ix86}
- nant
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- nativejit
ExclusiveArch: x86_64
- nbc
ExclusiveArch: %{fpc_arches}
- nbdkit
ExcludeArch: i686
- ncl
ExcludeArch: %{ix86}
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- nekohtml
ExclusiveArch: %{java_arches} noarch
- nemo
ExcludeArch: %{ix86}
- nemo-extensions
ExcludeArch: %{ix86}
- nest
ExcludeArch: %{ix86}
- netatalk
ExcludeArch: aarch64 s390x
- netavark
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- netcdf-fortran
ExcludeArch: %{ix86}
- netdata
ExcludeArch: s390x
- netgen-mesher
ExcludeArch: %{ix86}
- neuron
ExcludeArch: mips64r2 mips32r2
ExcludeArch: %{ix86}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- nextcloud-client
ExcludeArch: %{ix86}
ExcludeArch: ppc64 ppc64le s390x
- nodejs-acorn-object-spread
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bash-language-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buble
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cjs-module-lexer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le riscv64 noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-linefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nodemon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-undici
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le riscv64 noarch
- nodejs18
ExclusiveArch: %{nodejs_arches}
- nodejs20
ExclusiveArch: %{nodejs_arches}
- nodejs22
ExclusiveArch: %{nodejs_arches}
- nom-tam-fits
ExclusiveArch: %{java_arches} noarch
- normaliz
ExcludeArch: %{ix86}
- not-ocamlfind
ExcludeArch: %{ix86}
- notejot
ExcludeArch: %{ix86}
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- ntfs2btrfs
ExcludeArch: ppc64 s390x
- nuget
ExclusiveArch: %{mono_arches}
- numactl
ExcludeArch: s390 %{arm}
- numatop
ExclusiveArch: x86_64 ppc64le
- numptyphysics
ExcludeArch: ppc64le
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- nut
ExcludeArch: s390 s390x
- nvml
ExclusiveArch: x86_64 ppc64le
- nwchem
ExcludeArch: %{ix86} s390x
ExcludeArch: s390x
- objectweb-asm
ExclusiveArch: %{java_arches} noarch
- objenesis
ExclusiveArch: %{java_arches} noarch
- obs-cef
ExclusiveArch: x86_64 aarch64
- obs-service-rust2rpm
ExclusiveArch: %{rust_arches} noarch
- obs-studio-plugin-vkcapture
ExcludeArch: s390x
- ocaml
ExcludeArch: %{ix86}
- ocaml-SDL
ExcludeArch: %{ix86}
- ocaml-alcotest
ExcludeArch: %{ix86}
- ocaml-astring
ExcludeArch: %{ix86}
- ocaml-atd
ExcludeArch: %{ix86}
- ocaml-augeas
ExcludeArch: %{ix86}
- ocaml-autoconf
ExcludeArch: %{ix86}
- ocaml-base
ExcludeArch: %{ix86}
- ocaml-base64
ExcludeArch: %{ix86}
- ocaml-benchmark
ExcludeArch: %{ix86}
- ocaml-bigarray-compat
ExcludeArch: %{ix86}
- ocaml-bin-prot
ExcludeArch: %{ix86}
- ocaml-biniou
ExcludeArch: %{ix86}
- ocaml-bisect-ppx
ExcludeArch: %{ix86}
- ocaml-bos
ExcludeArch: %{ix86}
- ocaml-cairo
ExcludeArch: %{ix86}
- ocaml-calendar
ExcludeArch: %{ix86}
- ocaml-camlbz2
ExcludeArch: %{ix86}
- ocaml-camlidl
ExcludeArch: %{ix86}
- ocaml-camlimages
ExcludeArch: %{ix86}
- ocaml-camlp-streams
ExcludeArch: %{ix86}
- ocaml-camlp5
ExcludeArch: %{ix86}
- ocaml-camlp5-buildscripts
ExcludeArch: %{ix86}
- ocaml-camomile
ExcludeArch: %{ix86}
- ocaml-cinaps
ExcludeArch: %{ix86}
- ocaml-cmdliner
ExcludeArch: %{ix86}
- ocaml-compiler-libs-janestreet
ExcludeArch: %{ix86}
- ocaml-cppo
ExcludeArch: %{ix86}
- ocaml-crunch
ExcludeArch: %{ix86}
- ocaml-cryptokit
ExcludeArch: %{ix86}
- ocaml-csexp
ExcludeArch: %{ix86}
- ocaml-csv
ExcludeArch: %{ix86}
- ocaml-ctypes
ExcludeArch: %{ix86}
- ocaml-cudf
ExcludeArch: %{ix86}
- ocaml-curl
ExcludeArch: %{ix86}
- ocaml-curses
ExcludeArch: %{ix86}
- ocaml-dbus
ExcludeArch: %{ix86}
- ocaml-dose3
ExcludeArch: %{ix86}
- ocaml-dune
ExcludeArch: %{ix86}
- ocaml-easy-format
ExcludeArch: %{ix86}
- ocaml-expat
ExcludeArch: %{ix86}
- ocaml-extlib
ExcludeArch: %{ix86}
- ocaml-facile
ExcludeArch: %{ix86}
- ocaml-fieldslib
ExcludeArch: %{ix86}
- ocaml-fileutils
ExcludeArch: %{ix86}
- ocaml-findlib
ExcludeArch: %{ix86}
- ocaml-fmt
ExcludeArch: %{ix86}
- ocaml-fpath
ExcludeArch: %{ix86}
- ocaml-gen
ExcludeArch: %{ix86}
- ocaml-gettext
ExcludeArch: %{ix86}
- ocaml-graphics
ExcludeArch: %{ix86}
- ocaml-gsl
ExcludeArch: %{arm} %{ix86}
- ocaml-integers
ExcludeArch: %{ix86}
- ocaml-jane-street-headers
ExcludeArch: %{ix86}
- ocaml-jst-config
ExcludeArch: %{ix86}
- ocaml-lablgl
ExcludeArch: %{ix86}
- ocaml-lablgtk
ExcludeArch: %{ix86}
- ocaml-lablgtk3
ExcludeArch: %{ix86}
- ocaml-labltk
ExcludeArch: %{ix86}
- ocaml-lacaml
ExcludeArch: %{ix86}
- ocaml-lambda-term
ExcludeArch: %{ix86}
- ocaml-libvirt
ExcludeArch: %{ix86}
- ocaml-logs
ExcludeArch: %{ix86}
- ocaml-luv
ExcludeArch: %{ix86}
- ocaml-lwt
ExcludeArch: %{ix86}
- ocaml-markup
ExcludeArch: %{ix86}
- ocaml-mccs
ExcludeArch: %{ix86}
- ocaml-mdx
ExcludeArch: %{ix86}
- ocaml-menhir
ExcludeArch: %{ix86}
- ocaml-merlin
ExcludeArch: %{ix86}
- ocaml-mew
ExcludeArch: %{ix86}
- ocaml-mew-vi
ExcludeArch: %{ix86}
- ocaml-mlgmpidl
ExcludeArch: %{ix86}
- ocaml-mlmpfr
ExcludeArch: %{ix86}
- ocaml-mtime
ExcludeArch: %{ix86}
- ocaml-mysql
ExcludeArch: %{ix86}
- ocaml-num
ExcludeArch: %{ix86}
- ocaml-obuild
ExcludeArch: %{ix86}
- ocaml-ocamlbuild
ExcludeArch: %{ix86}
- ocaml-ocamlgraph
ExcludeArch: %{ix86}
- ocaml-ocamlnet
ExcludeArch: %{ix86}
- ocaml-ocp-indent
ExcludeArch: %{ix86}
- ocaml-ocplib-endian
ExcludeArch: %{ix86}
- ocaml-ocplib-simplex
ExcludeArch: %{ix86}
- ocaml-octavius
ExcludeArch: %{ix86}
- ocaml-odoc
ExcludeArch: %{ix86}
- ocaml-omake
ExcludeArch: %{ix86}
- ocaml-opam-file-format
ExcludeArch: %{ix86}
- ocaml-ounit
ExcludeArch: %{ix86}
- ocaml-parmap
ExcludeArch: %{ix86}
- ocaml-parsexp
ExcludeArch: %{ix86}
- ocaml-pcre
ExcludeArch: %{ix86}
- ocaml-pcre2
ExcludeArch: %{ix86}
- ocaml-perl4caml
ExcludeArch: %{ix86}
- ocaml-postgresql
ExcludeArch: %{ix86}
- ocaml-pp
ExcludeArch: %{ix86}
- ocaml-ppx-assert
ExcludeArch: %{ix86}
- ocaml-ppx-base
ExcludeArch: %{ix86}
- ocaml-ppx-cold
ExcludeArch: %{ix86}
- ocaml-ppx-compare
ExcludeArch: %{ix86}
- ocaml-ppx-custom-printf
ExcludeArch: %{ix86}
- ocaml-ppx-derivers
ExcludeArch: %{ix86}
- ocaml-ppx-deriving
ExcludeArch: %{ix86}
- ocaml-ppx-deriving-yaml
ExcludeArch: %{ix86}
- ocaml-ppx-deriving-yojson
ExcludeArch: %{ix86}
- ocaml-ppx-enumerate
ExcludeArch: %{ix86}
- ocaml-ppx-expect
ExcludeArch: %{ix86}
- ocaml-ppx-fields-conv
ExcludeArch: %{ix86}
- ocaml-ppx-globalize
ExcludeArch: %{ix86}
- ocaml-ppx-hash
ExcludeArch: %{ix86}
- ocaml-ppx-here
ExcludeArch: %{ix86}
- ocaml-ppx-import
ExcludeArch: %{ix86}
- ocaml-ppx-inline-test
ExcludeArch: %{ix86}
- ocaml-ppx-js-style
ExcludeArch: %{ix86}
- ocaml-ppx-let
ExcludeArch: %{ix86}
- ocaml-ppx-optcomp
ExcludeArch: %{ix86}
- ocaml-ppx-sexp-conv
ExcludeArch: %{ix86}
- ocaml-ppx-stable-witness
ExcludeArch: %{ix86}
- ocaml-ppx-variants-conv
ExcludeArch: %{ix86}
- ocaml-ppxlib
ExcludeArch: %{ix86}
- ocaml-psmt2-frontend
ExcludeArch: %{ix86}
- ocaml-ptime
ExcludeArch: %{ix86}
- ocaml-ptmap
ExcludeArch: %{ix86}
- ocaml-pyml
ExcludeArch: %{ix86}
- ocaml-qcheck
ExcludeArch: %{ix86}
- ocaml-qtest
ExcludeArch: %{ix86}
- ocaml-re
ExcludeArch: %{ix86}
- ocaml-react
ExcludeArch: %{ix86}
- ocaml-res
ExcludeArch: %{ix86}
- ocaml-result
ExcludeArch: %{ix86}
- ocaml-rresult
ExcludeArch: %{ix86}
- ocaml-sedlex
ExcludeArch: %{ix86}
- ocaml-sexplib
ExcludeArch: %{ix86}
- ocaml-sexplib0
ExcludeArch: %{ix86}
- ocaml-sha
ExcludeArch: %{ix86}
- ocaml-sqlite
ExcludeArch: %{ix86}
- ocaml-ssl
ExcludeArch: %{ix86}
- ocaml-stdcompat
ExcludeArch: %{ix86}
- ocaml-stdio
ExcludeArch: %{ix86}
- ocaml-stdlib-random
ExcludeArch: %{ix86}
- ocaml-time-now
ExcludeArch: %{ix86}
- ocaml-topkg
ExcludeArch: %{ix86}
- ocaml-trie
ExcludeArch: %{ix86}
- ocaml-tyxml
ExcludeArch: %{ix86}
- ocaml-unionfind
ExcludeArch: %{ix86}
- ocaml-uucd
ExcludeArch: %{ix86}
- ocaml-uucp
ExcludeArch: %{ix86}
- ocaml-uunf
ExcludeArch: %{ix86}
- ocaml-uuseg
ExcludeArch: %{ix86}
- ocaml-uutf
ExcludeArch: %{ix86}
- ocaml-variantslib
ExcludeArch: %{ix86}
- ocaml-version
ExcludeArch: %{ix86}
- ocaml-xml-light
ExcludeArch: %{ix86}
- ocaml-xmlm
ExcludeArch: %{ix86}
- ocaml-xmlrpc-light
ExcludeArch: %{ix86}
- ocaml-yaml
ExcludeArch: %{ix86}
- ocaml-yojson
ExcludeArch: %{ix86}
- ocaml-zarith
ExcludeArch: %{ix86}
- ocaml-zed
ExcludeArch: %{ix86}
- ocaml-zip
ExcludeArch: %{ix86}
- ocaml-zmq
ExcludeArch: %{ix86}
- ocamlify
ExcludeArch: %{ix86}
- ocamlmod
ExcludeArch: %{ix86}
- oci-seccomp-bpf-hook
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl
ExclusiveArch: %{golang_arches_future}
- ocrmypdf
ExcludeArch: %{ix86}
- octave-communications
ExcludeArch: s390x
- octave-iso2mesh
ExcludeArch: armv7hl
- octave-signal
ExcludeArch: s390x
- oidc-agent
ExcludeArch: %{ix86}
- oidn
ExclusiveArch: x86_64
- oneVPL
ExclusiveArch: x86_64
- oneapi-level-zero
ExclusiveArch: x86_64
- onednn
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- onedrive
ExclusiveArch: %{ldc_arches}
- ongres-scram
ExclusiveArch: %{java_arches} noarch
- ongres-stringprep
ExclusiveArch: %{java_arches} noarch
- onnx
ExcludeArch: s390x
- onnxruntime
ExcludeArch: s390x %{arm} %{ix86}
- oomd
ExcludeArch: i686 armv7hl
- opae
ExclusiveArch: x86_64
- opal-prd
ExclusiveArch: ppc64le
- opam
ExcludeArch: %{ix86}
- open-vm-tools
ExclusiveArch: x86_64 aarch64
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: x86_64
- openblas
ExclusiveArch: %{openblas_arches}
- opencsg
ExcludeArch: %{ix86}
- opengrm-ngram
ExcludeArch: %{ix86}
- openjdk-asmtools
ExclusiveArch: %{java_arches} noarch
- openjdk-asmtools7
ExclusiveArch: %{java_arches} noarch
- openjfx
ExclusiveArch: %{java_arches}
- openjfx8
ExclusiveArch: x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openmeeg
ExcludeArch: s390x
- openmpi
ExcludeArch: %{ix86}
- openms
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- openni
ExclusiveArch: x86_64 %{arm}
- openni-primesense
ExclusiveArch: x86_64 %{arm}
- openobex
ExcludeArch: s390 s390x
- openoffice.org-diafilter
ExclusiveArch: %{java_arches}
- openpgl
ExclusiveArch: aarch64 x86_64
- openrgb
ExcludeArch: %{ix86}
- openscad
ExcludeArch: %{ix86}
- openshadinglanguage
ExcludeArch: %{ix86} %{arm}
- openshot
ExcludeArch: ppc64le
- opensm
ExcludeArch: s390 %{arm}
- openssl-ibmca
ExclusiveArch: s390 s390x
- openstack-java-sdk
ExclusiveArch: %{java_arches} noarch
- opentest4j
ExclusiveArch: %{java_arches} noarch
- opentype-sanitizer
ExcludeArch: %{ix86}
- openvdb
ExcludeArch: i686
- openvkl
ExclusiveArch: aarch64 x86_64
- openxr-simple-playground
ExcludeArch: %{ix86}
- optee_client
ExclusiveArch: aarch64
- optee_os
ExclusiveArch: aarch64
- options
ExclusiveArch: %{java_arches} noarch
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- os-autoinst
ExcludeArch: %{arm}
- osbuild-composer
ExcludeArch: i686 armv7hl
- osgi-annotation
ExclusiveArch: %{java_arches} noarch
- osgi-compendium
ExclusiveArch: %{java_arches} noarch
- osgi-core
ExclusiveArch: %{java_arches} noarch
- osm2pgsql
ExcludeArch: %{ix86}
- osslsigncode
ExcludeArch: i686
- ostree
ExcludeArch: %{ix86}
- otf2
ExcludeArch: i686 s390x
- oz
ExcludeArch: %{ix86}
- pacemaker
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64 %{arm}
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64
- pageedit
ExclusiveArch: %{qt5_qtwebengine_arches}
- paperwork
ExcludeArch: %{ix86}
- papi
ExcludeArch: s390 s390x
- papilo
ExcludeArch: %{ix86}
- paraview
ExcludeArch: %{ix86}
- pari-nftables
ExcludeArch: %{ix86}
- parlaylib
ExcludeArch: aarch64 s390x arm-hfp ppc64le i686
- parserng
ExclusiveArch: %{java_arches} noarch
- pasdoc
ExclusiveArch: %{fpc_arches}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcem
ExcludeArch: armv7hl i686 ppc64le s390x
- pcfi
ExclusiveArch: %{java_arches} noarch
- pcg-cpp
ExcludeArch: %{ix86}
- pcm
ExclusiveArch: %{ix86} x86_64
- pcp
ExcludeArch: %{ix86}
- pcp2pdf
ExcludeArch: %{ix86}
- pdbg
ExclusiveArch: ppc64le
- pdfarranger
ExcludeArch: %{ix86}
- pdfbox
ExclusiveArch: %{java_arches} noarch
- pdftk-java
ExclusiveArch: %{java_arches} noarch
- pdns
ExcludeArch: %{arm} %{ix86}
- pdns-recursor
ExcludeArch: %{arm} %{ix86}
- pdqsort
ExcludeArch: %{ix86}
- pengupop
ExcludeArch: s390x
- pentaho-libxml
ExclusiveArch: %{java_arches} noarch
- pentaho-reporting-flow-engine
ExclusiveArch: %{java_arches} noarch
- perftest
ExcludeArch: s390 %{arm}
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-LMDB_File
ExcludeArch: armv7hl i686
- perl-Math-Int128
ExcludeArch: %{arm32} %{ix86}
- perl-MaxMind-DB-Reader-XS
ExcludeArch: %{arm} %{ix86}
- perl-MongoDB
ExcludeArch: ppc %{sparc} s390
- perl-Net-Works
ExcludeArch: %{arm32} %{ix86}
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- perl-Task-Catalyst
ExcludeArch: %{ix86}
- perl-threads-lite
ExcludeArch: aarch64 ppc ppc64 ppc64le
- permlib
ExcludeArch: %{ix86}
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm} riscv64
- pesign-test-app
ExclusiveArch: x86_64
- petpvc
ExcludeArch: %{ix86}
- pf-bb-config
ExcludeArch: s390x
- pgadmin4
ExcludeArch: i686 armv7hl s390x ppc64le
- phd2
ExcludeArch: %{ix86}
- phosh
ExcludeArch: i686
- phosh-mobile-settings
ExcludeArch: i686
- php
ExcludeArch: %{ix86}
- php-ast
ExcludeArch: %{ix86}
- php-facedetect
ExcludeArch: %{ix86}
- php-geos
ExcludeArch: %{ix86}
- php-libvirt
ExcludeArch: %{ix86}
- php-maxminddb
ExcludeArch: %{ix86}
- php-pecl-amqp
ExcludeArch: %{ix86}
- php-pecl-apcu
ExcludeArch: %{ix86}
- php-pecl-apfd
ExcludeArch: %{ix86}
- php-pecl-dio
ExcludeArch: %{ix86}
- php-pecl-ds
ExcludeArch: %{ix86}
- php-pecl-event
ExcludeArch: %{ix86}
- php-pecl-fann
ExcludeArch: %{ix86}
- php-pecl-gearman
ExcludeArch: %{ix86}
- php-pecl-geoip
ExcludeArch: %{ix86}
- php-pecl-gmagick
ExcludeArch: %{ix86}
- php-pecl-http
ExcludeArch: %{ix86}
- php-pecl-igbinary
ExcludeArch: %{ix86}
- php-pecl-imagick
ExcludeArch: %{ix86}
- php-pecl-inotify
ExcludeArch: %{ix86}
- php-pecl-ip2location
ExcludeArch: %{ix86}
- php-pecl-json-post
ExcludeArch: %{ix86}
- php-pecl-krb5
ExcludeArch: %{ix86}
- php-pecl-lzf
ExcludeArch: %{ix86}
- php-pecl-mailparse
ExcludeArch: %{ix86}
- php-pecl-mcrypt
ExcludeArch: %{ix86}
- php-pecl-memcache
ExcludeArch: %{ix86}
- php-pecl-memcached
ExcludeArch: %{ix86}
- php-pecl-mongodb
ExcludeArch: %{ix86}
- php-pecl-msgpack
ExcludeArch: %{ix86}
- php-pecl-oauth
ExcludeArch: %{ix86}
- php-pecl-pcov
ExcludeArch: %{ix86}
- php-pecl-pq
ExcludeArch: %{ix86}
- php-pecl-raphf
ExcludeArch: %{ix86}
- php-pecl-redis5
ExcludeArch: %{ix86}
- php-pecl-rpminfo
ExcludeArch: %{ix86}
- php-pecl-rrd
ExcludeArch: %{ix86}
- php-pecl-selinux
ExcludeArch: %{ix86}
- php-pecl-ssdeep
ExcludeArch: %{ix86}
- php-pecl-ssh2
ExcludeArch: %{ix86}
- php-pecl-uopz
ExcludeArch: %{ix86}
- php-pecl-uuid
ExcludeArch: %{ix86}
- php-pecl-var-representation
ExcludeArch: %{ix86}
- php-pecl-xattr
ExcludeArch: %{ix86}
- php-pecl-xdebug3
ExcludeArch: %{ix86}
- php-pecl-xmldiff
ExcludeArch: %{ix86}
- php-pecl-xmlrpc
ExcludeArch: %{ix86}
- php-pecl-yac
ExcludeArch: %{ix86}
- php-pecl-zip
ExcludeArch: %{ix86}
- php-phpiredis
ExcludeArch: %{ix86}
- php-smbclient
ExcludeArch: %{ix86}
- php-zmq
ExcludeArch: %{ix86}
- php-zstd
ExcludeArch: %{ix86}
- picard
ExcludeArch: ppc64
- picocli
ExclusiveArch: %{java_arches} noarch
- pigeonascent
ExcludeArch: ppc64le
ExcludeArch: s390x
- pilot-link
ExcludeArch: s390 s390x
- pinta
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- pioneer
ExclusiveArch: %{ix86} x86_64
- pl
ExcludeArch: %{ix86}
- planets
ExcludeArch: %{ix86}
- plantri
ExcludeArch: %{ix86}
- plantuml
ExclusiveArch: %{java_arches} noarch
- plasma-dialer
ExclusiveArch: %{java_arches}
- plasma-disks
ExcludeArch: %{ix86}
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- plee-the-bear
ExcludeArch: %{power64}
- plexus-archiver
ExclusiveArch: %{java_arches} noarch
- plexus-build-api
ExclusiveArch: %{java_arches} noarch
- plexus-build-api0
ExclusiveArch: %{java_arches} noarch
- plexus-cipher
ExclusiveArch: %{java_arches} noarch
- plexus-classworlds
ExclusiveArch: %{java_arches} noarch
- plexus-compiler
ExclusiveArch: %{java_arches} noarch
- plexus-component-api
ExclusiveArch: %{java_arches} noarch
- plexus-components-pom
ExclusiveArch: %{java_arches} noarch
- plexus-containers
ExclusiveArch: %{java_arches} noarch
- plexus-i18n
ExclusiveArch: %{java_arches} noarch
- plexus-interpolation
ExclusiveArch: %{java_arches} noarch
- plexus-io
ExclusiveArch: %{java_arches} noarch
- plexus-languages
ExclusiveArch: %{java_arches} noarch
- plexus-pom
ExclusiveArch: %{java_arches} noarch
- plexus-resources
ExclusiveArch: %{java_arches} noarch
- plexus-sec-dispatcher
ExclusiveArch: %{java_arches} noarch
- plexus-testing
ExclusiveArch: %{java_arches} noarch
- plexus-utils
ExclusiveArch: %{java_arches} noarch
- plexus-velocity
ExclusiveArch: %{java_arches} noarch
- plexus-xml
ExclusiveArch: %{java_arches} noarch
- pmix
ExcludeArch: %{ix86}
- pngcheck
ExcludeArch: %{ix86}
- podman
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- polymake
ExcludeArch: %{ix86}
- polyml
ExcludeArch: %{ix86}
- poppler-sharp
ExclusiveArch: %mono_arches
- popub
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- postgresql-jdbc
ExclusiveArch: %{java_arches} noarch
- postgresql-pgpool-II
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
- powerpc-utils
ExclusiveArch: ppc %{power64}
- powerstat
ExclusiveArch: %{ix86} x86_64
- ppc64-diag
ExclusiveArch: ppc %{power64}
- ppl
ExcludeArch: %{ix86}
- pplite
ExcludeArch: %{ix86}
- prestopalette
ExcludeArch: i686
- printer-driver-brlaser
ExcludeArch: %{ix86}
- procdump
ExcludeArch: ppc64le
- procyon
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
- proguard
ExclusiveArch: %{java_arches} noarch
- prometheus-jmx-exporter
ExclusiveArch: %{java_arches} noarch
- prometheus-simpleclient-java
ExclusiveArch: %{java_arches} noarch
- prooftree
ExcludeArch: %{ix86}
- proxmark3
ExcludeArch: ppc64le s390x
- proxygen
ExclusiveArch: x86_64 aarch64 ppc64le
- proxysql
ExcludeArch: %{power64} s390x %{ix86}
- prrte
ExcludeArch: %{ix86}
- prusa-slicer
ExcludeArch: %{ix86}
- psblas3
ExcludeArch: %{ix86}
- pveclib
ExclusiveArch: ppc %{power64}
- pygrib
ExcludeArch: i686
ExcludeArch: armv7hl
- pygsl
ExcludeArch: %{ix86}
- pyosmium
ExcludeArch: %{ix86}
- pypy
ExcludeArch: %{ix86}
- pypy3.10
ExcludeArch: %{ix86}
- pypy3.9
ExcludeArch: %{ix86}
- pyqtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- python-ZEO
ExcludeArch: %{ix86}
- python-ZODB3
ExcludeArch: %{ix86}
- python-aioresponses
ExcludeArch: s390x
- python-annarchy
ExcludeArch: %{ix86} ppc64le
- python-ast-monitor
ExclusiveArch: %{qt6_qtwebengine_arches} noarch
- python-astroplan
ExcludeArch: %{ix86}
- python-astroscrappy
ExcludeArch: %{ix86}
- python-asyncmy
ExcludeArch: %{ix86}
- python-aws-sam-translator
ExcludeArch: %{ix86}
- python-awscrt
ExcludeArch: s390x
- python-bitstruct
ExcludeArch: s390x
- python-blosc2
ExcludeArch: %{ix86}
- python-bluepyopt
ExcludeArch: s390x %{ix86} %{power64}
- python-calcephpy
ExcludeArch: %{ix86}
- python-colorthief
ExcludeArch: %{ix86}
- python-compreffor
ExcludeArch: %{ix86}
- python-contextualbandits
ExcludeArch: %{ix86}
- python-cradox
ExcludeArch: i686 armv7hl
- python-cryptography
ExclusiveArch: %{rust_arches}
- python-cvxopt
ExcludeArch: %{ix86}
- python-cyipopt
ExcludeArch: %{ix86}
- python-dask
ExcludeArch: %{ix86}
- python-databases
ExcludeArch: %{ix86}
- python-devicely
ExcludeArch: s390x
- python-dijitso
ExcludeArch: i686
- python-dipy
ExcludeArch: %{ix86} s390x
- python-ducc0
ExcludeArch: %{ix86}
- python-earthpy
ExcludeArch: %{ix86}
- python-eccodes
ExcludeArch: i686
ExcludeArch: armv7hl
- python-efel
ExcludeArch: s390x
- python-elephant
ExcludeArch: s390x
ExcludeArch: %{ix86}
- python-ephyviewer
ExcludeArch: s390x %{ix86}
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x riscv64
- python-fastavro
ExcludeArch: %{arm32} %{ix86}
- python-folium
ExcludeArch: %{ix86}
- python-formulaic
ExcludeArch: %{ix86}
- python-fsleyes
ExcludeArch: %{ix86}
- python-fsleyes-props
ExcludeArch: %{ix86}
- python-fslpy
ExcludeArch: %{ix86}
- python-gbinder
ExcludeArch: %{ix86}
- python-giacpy
ExcludeArch: aarch64 %{power64} s390x
- python-graph-tool
ExcludeArch: %{ix86}
- python-hdfs
ExcludeArch: %{ix86}
- python-healpy
ExcludeArch: %{ix86} %{arm}
- python-heapdict
ExcludeArch: %{ix86}
- python-imagecodecs
ExcludeArch: %{ix86}
- python-img2pdf
ExcludeArch: s390x
- python-javaobj
ExclusiveArch: %{java_arches} noarch
- python-jnius
ExclusiveArch: %{java_arches}
ExclusiveArch: %{java_arches}
- python-json-minify
ExcludeArch: %{ix86}
- python-jupymake
ExcludeArch: %{ix86}
- python-jupyter-c-kernel
ExcludeArch: %{ix86}
- python-jupyter-kernel-singular
ExcludeArch: %{ix86}
- python-jupyter-polymake
ExcludeArch: %{ix86}
- python-jupyter-sphinx
ExcludeArch: %{ix86}
- python-jupytext
ExcludeArch: s390x
- python-lazy-ops
ExcludeArch: %{ix86}
- python-lfpy
ExcludeArch: mips64r2 mips32r2
ExcludeArch: %{power64} %{ix86} armv7hl
- python-llama-cpp-python
ExclusiveArch: x86_64 aarch64
- python-mapnik
ExcludeArch: ppc ppc64 s390 s390x
- python-missingno
ExcludeArch: %{ix86}
- python-mne
ExcludeArch: %{ix86}
- python-mne-bids
ExcludeArch: %{ix86}
- python-mplcairo
ExcludeArch: %{ix86}
- python-mplcursors
ExcludeArch: %{ix86}
- python-music21
ExcludeArch: %{ix86}
- python-ndindex
ExcludeArch: %{ix86}
- python-neatdend
ExcludeArch: %{ix86}
- python-neo
ExcludeArch: s390x
- python-netpyne
ExcludeArch: %{ix86}
- python-neurom
ExcludeArch: %{ix86}
- python-neurotune
ExcludeArch: %{ix86}
- python-nifti-mrs
ExcludeArch: %{ix86}
- python-nilearn
ExcludeArch: %{ix86}
- python-nipy
ExcludeArch: %{ix86}
- python-octave-kernel
ExcludeArch: %{ix86}
- python-openoffice
ExclusiveArch: noarch x86_64
- python-openpaperwork-core
ExcludeArch: %{ix86}
- python-openpaperwork-gtk
ExcludeArch: %{ix86}
- python-opentype-sanitizer
ExcludeArch: %{ix86}
- python-pandas
ExcludeArch: %{ix86}
- python-pandas-flavor
ExcludeArch: %{ix86}
- python-papermill
ExcludeArch: %{ix86}
- python-paperwork-backend
ExcludeArch: %{ix86}
- python-pari-jupyter
ExcludeArch: %{ix86}
- python-phyghtmap
ExcludeArch: %{ix86}
- python-pingouin
ExcludeArch: %{ix86}
- python-plotnine
ExcludeArch: %{ix86}
- python-pplpy
ExcludeArch: %{ix86}
- python-primecountpy
ExcludeArch: %{ix86}
- python-psycopg3
ExcludeArch: %{ix86}
- python-pyahocorasick
ExclusiveArch: x86_64 %{arm64} ppc64le riscv64
- python-pybids
ExcludeArch: %{ix86}
- python-pybv
ExcludeArch: %{ix86}
- python-pyedflib
ExcludeArch: s390x
- python-pyfastnoisesimd
ExcludeArch: %{ix86}
- python-pyfiglet
ExcludeArch: %{ix86}
- python-pykdtree
ExcludeArch: %{ix86}
- python-pyliblzfse
ExcludeArch: s390x
- python-pymapvbvd
ExcludeArch: s390x
- python-pymatreader
ExcludeArch: %{ix86}
ExcludeArch: s390x
- python-pynn
ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
- python-pyocr
ExcludeArch: %{ix86}
- python-pypet
ExcludeArch: %{ix86}
ExcludeArch: s390x
- python-pyphi
ExcludeArch: %{ix86} s390x
- python-pypillowfight
ExcludeArch: %{ix86}
- python-pyqt6-webengine
ExclusiveArch: %{qt6_qtwebengine_arches}
- python-pyriemann
ExcludeArch: %{ix86}
- python-pyroaring
ExcludeArch: %{ix86}
- python-pyscf
ExcludeArch: %{power64}
- python-pyshtools
ExcludeArch: %{ix86}
- python-pysingular
ExcludeArch: %{ix86}
- python-pyswarms
ExcludeArch: %{ix86}
- python-pyswip
ExcludeArch: %{ix86}
- python-pytest-arraydiff
ExcludeArch: %{ix86}
- python-pytest-tornado
ExcludeArch: %{ix86}
- python-python-fcl
ExcludeArch: %{ix86}
- python-pyunicorn
ExcludeArch: %{ix86}
- python-pyvat
ExcludeArch: %{ix86}
- python-ratinabox
ExcludeArch: %{ix86}
- python-recordclass
ExcludeArch: %{ix86}
- python-reproject
ExcludeArch: %{ix86}
- python-ruffus
ExcludeArch: %{ix86}
- python-scikit-learn
ExcludeArch: %{ix86}
- python-scikit-misc
ExcludeArch: %{ix86}
- python-sgp4
ExcludeArch: %{ix86}
- python-simplebayes
ExcludeArch: %{ix86}
- python-sklearn-genetic-opt
ExcludeArch: %{ix86}
- python-statsmodels
ExcludeArch: %{ix86}
- python-steps
ExcludeArch: %{ix86}
- python-tables
ExcludeArch: %{ix86}
- python-tdlib
ExcludeArch: %{ix86}
- python-tensile
ExclusiveArch: x86_64
- python-tensordict
ExclusiveArch: x86_64 aarch64
- python-tkrzw
ExcludeArch: i686
- python-torch
ExclusiveArch: x86_64 aarch64
- python-torchaudio
ExclusiveArch: x86_64 aarch64
- python-torchdata
ExclusiveArch: x86_64 aarch64
- python-torchtext
ExclusiveArch: x86_64 aarch64
- python-torchvision
ExclusiveArch: x86_64 aarch64
- python-traitsui
ExcludeArch: ppc64le
- python-trimesh
ExcludeArch: %{ix86}
- python-uranium
ExcludeArch: %{ix86}
- python-willow
ExcludeArch: %{ix86}
- python-xattr
ExcludeArch: %{ix86}
- python-xbout
ExcludeArch: %{ix86}
- python-xmp-toolkit
ExcludeArch: %{ix86}
- python-zeep
ExcludeArch: s390x
- python-zict
ExcludeArch: %{ix86}
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qalculate-qt
ExcludeArch: %{ix86}
- qatengine
ExclusiveArch: x86_64
- qatlib
ExcludeArch: %{arm} aarch64 %{power64} s390x i686
- qatzip
ExclusiveArch: x86_64
- qbe
ExclusiveArch: x86_64 aarch64 riscv64
- qbittorrent
ExcludeArch: %{ix86}
- qbs
ExcludeArch: i686
- qcas
ExcludeArch: aarch64 %{power64} s390x
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qdigidoc
ExcludeArch: %{ix86}
- qdox
ExclusiveArch: %{java_arches} noarch
- qemu-sanity-check
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- qevercloud
ExclusiveArch: %{qt5_qtwebengine_arches}
- qflipper
ExcludeArch: %{ix86}
- qmapshack
ExclusiveArch: %{qt5_qtwebengine_arches}
- qmplay2
ExcludeArch: %{ix86}
- qoauth
ExcludeArch: ppc64
- qownnotes
ExcludeArch: %{ix86}
- qpdfview
ExcludeArch: s390x
- qperf
ExcludeArch: %{arm}
- qsopt-ex
ExcludeArch: %{ix86}
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- qt6-qtquick3dphysics
ExclusiveArch: aarch64 i686 x86_64
- qt6-qtwebengine
ExclusiveArch: aarch64 x86_64
- qt6-qtwebview
ExclusiveArch: aarch64 x86_64
- qt6ct
ExcludeArch: s390x
- qtile
ExcludeArch: %{ix86}
- quantum-espresso
ExclusiveArch: x86_64 aarch64 %{power64}
- quentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- rEFInd
ExclusiveArch: %{efi}
ExcludeArch: %{arm32}
- rasdaemon
ExcludeArch: s390 s390x
- rccl
ExclusiveArch: x86_64
- rdma-core
ExcludeArch: %{arm}
- realtime-tests
ExcludeArch: %{arm}
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64 s390x
- redeclipse
ExcludeArch: %{ix86}
- redict
ExcludeArch: %{ix86}
- reflections
ExclusiveArch: %{java_arches} noarch
- reg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- regexp
ExclusiveArch: %{java_arches} noarch
- relaxng-datatype-java
ExclusiveArch: %{java_arches} noarch
- remake
ExcludeArch: %{ix86}
- renderdoc
ExclusiveArch: x86_64 aarch64
- replacer
ExclusiveArch: %{java_arches} noarch
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- rescene
ExclusiveArch: %{mono_arches}
- resteasy
ExclusiveArch: %{java_arches} noarch
- restool
ExclusiveArch: aarch64
- restsharp
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- retroarch
ExcludeArch: %{ix86}
ExcludeArch: s390x
- retsnoop
ExclusiveArch: %{rust_arches}
ExcludeArch: armv7hl
- rhino
ExclusiveArch: %{java_arches} noarch
ExcludeArch: %{ix86}
- rhythmbox
ExcludeArch: s390 s390x
- rhythmbox-alternative-toolbar
ExcludeArch: s390 s390x
- rhythmbox-ampache
ExcludeArch: s390 s390x
- river
ExclusiveArch: %{zig_arches}
- rkcommon
ExclusiveArch: x86_64 aarch64
- rocalution
ExclusiveArch: x86_64
- rocblas
ExclusiveArch: x86_64
- rocclr
ExclusiveArch: x86_64
- rocfft
ExclusiveArch: x86_64
- rocm-compilersupport
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-core
ExclusiveArch: x86_64
- rocm-rpm-macros
ExclusiveArch: x86_64
- rocm-runtime
ExclusiveArch: x86_64
- rocm-smi
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rocminfo
ExclusiveArch: x86_64
- rocprim
ExclusiveArch: x86_64
- rocrand
ExclusiveArch: x86_64
- rocsolver
ExclusiveArch: x86_64
- rocsparse
ExclusiveArch: x86_64
- rocthrust
ExclusiveArch: x86_64
- roctracer
ExclusiveArch: x86_64
- rpi-imager
ExcludeArch: s390x
- rpm-ostree
ExclusiveArch: %{rust_arches}
ExcludeArch: %{ix86}
- rpy
ExcludeArch: %{ix86}
- rr
ExclusiveArch: %{ix86} x86_64 aarch64
- rssguard
ExclusiveArch: %{qt6_qtwebengine_arches}
- rstudio
ExclusiveArch: %{java_arches}
- rsyntaxtextarea
ExclusiveArch: %{java_arches} noarch
- rubiks
ExcludeArch: %{ix86}
- rubygem-childprocess
ExclusiveArch: %{ix86} x86_64 noarch
- ruff
ExcludeArch: %{ix86}
- ruff-lsp
ExcludeArch: %{ix86}
- runc
ExclusiveArch: %{golang_arches_future}
- rundoc
ExclusiveArch: %{java_arches} noarch
- rust
ExclusiveArch: %{rust_arches}
- rust-bankstown-lv2
ExcludeArch: ppc64le s390x
- rust-below
ExcludeArch: %{arm32} %{ix86}
- rust-below-btrfs
ExcludeArch: %{arm32} %{ix86}
- rust-below-config
ExcludeArch: %{arm32} %{ix86}
- rust-below-dump
ExcludeArch: %{arm32} %{ix86}
- rust-below-ethtool
ExcludeArch: %{arm32} %{ix86}
- rust-below-model
ExcludeArch: %{arm32} %{ix86}
- rust-below-render
ExcludeArch: %{arm32} %{ix86}
- rust-below-store
ExcludeArch: %{arm32} %{ix86}
- rust-below-view
ExcludeArch: %{arm32} %{ix86}
- rust-cgroupfs
ExcludeArch: %{arm32} %{ix86}
- rust-compress-tools
ExclusiveArch: %{rust_arches}
- rust-crypto-auditing-agent
ExcludeArch: i386 i686
- rust-ct-logs
ExcludeArch: ppc64le s390x
- rust-ctr
ExclusiveArch: %{rust_arches}
- rust-dashmap4
ExclusiveArch: %{rust_arches}
- rust-deflate
ExclusiveArch: %{rust_arches}
- rust-deflate0.8
ExclusiveArch: %{rust_arches}
- rust-getch
ExclusiveArch: %{rust_arches}
- rust-gzip-header
ExclusiveArch: %{rust_arches}
- rust-hamming
ExclusiveArch: %{rust_arches}
- rust-hidapi
ExclusiveArch: %{rust_arches}
- rust-httparse
ExclusiveArch: %{rust_arches}
- rust-humantime-serde
ExclusiveArch: %{rust_arches}
- rust-hyperlocal
ExclusiveArch: %{rust_arches}
- rust-inflate
ExclusiveArch: %{rust_arches}
- rust-k9
ExclusiveArch: %{rust_arches}
- rust-krunvm
ExclusiveArch: x86_64 aarch64
- rust-kstring
ExclusiveArch: %{rust_arches}
- rust-kvm-bindings
ExcludeArch: %{ix86}
- rust-kvm-ioctls
ExclusiveArch: x86_64 aarch64
- rust-lebe
ExclusiveArch: %{rust_arches}
- rust-lv2
ExcludeArch: ppc64le s390x
- rust-lv2-atom
ExcludeArch: ppc64le s390x
- rust-lv2-core
ExcludeArch: ppc64le s390x
- rust-lv2-midi
ExcludeArch: ppc64le s390x
- rust-lv2-state
ExcludeArch: ppc64le s390x
- rust-lv2-sys
ExcludeArch: ppc64le s390x
- rust-lv2-time
ExcludeArch: ppc64le s390x
- rust-lv2-units
ExcludeArch: ppc64le s390x
- rust-lv2-urid
ExcludeArch: ppc64le s390x
- rust-lv2-worker
ExcludeArch: ppc64le s390x
- rust-msru
ExclusiveArch: x86_64
- rust-nanorand
ExclusiveArch: %{rust_arches}
- rust-netstat2
ExclusiveArch: %{rust_arches}
- rust-nu
ExcludeArch: %{ix86}
- rust-oci-spec
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
- rust-onig
ExclusiveArch: %{rust_arches}
- rust-openat-ext
ExclusiveArch: %{rust_arches}
- rust-os_type
ExclusiveArch: %{rust_arches}
- rust-pager
ExclusiveArch: %{rust_arches}
- rust-pathsearch
ExclusiveArch: %{rust_arches}
- rust-prefixdevname
ExcludeArch: %{ix86}
- rust-pretty-bytes
ExclusiveArch: %{rust_arches}
- rust-primal-bit
ExclusiveArch: %{rust_arches}
- rust-primal-check
ExclusiveArch: %{rust_arches}
- rust-primal-estimate
ExclusiveArch: %{rust_arches}
- rust-probe
ExcludeArch: ppc64le s390x
- rust-psl-types
ExclusiveArch: %{rust_arches}
- rust-psm
ExclusiveArch: %{rust_arches}
- rust-pwd
ExclusiveArch: %{rust_arches}
- rust-rand_core
ExclusiveArch: %{rust_arches}
- rust-resctrlfs
ExcludeArch: %{arm32} %{ix86}
- rust-schemafy_core
ExclusiveArch: %{rust_arches}
- rust-schemafy_lib
ExclusiveArch: %{rust_arches}
- rust-scx_layered
ExcludeArch: %{ix86}
- rust-scx_rustland
ExcludeArch: %{ix86}
- rust-scx_rusty
ExcludeArch: %{ix86}
- rust-scx_utils
ExcludeArch: %{ix86}
- rust-seahash
ExclusiveArch: %{rust_arches}
- rust-sequoia-octopus-librnp
ExcludeArch: %{ix86} %{arm} s390x
- rust-serde_yaml0.8
ExclusiveArch: %{rust_arches}
- rust-sev
ExclusiveArch: x86_64
- rust-sevctl
ExclusiveArch: x86_64
- rust-sinit
ExclusiveArch: %{rust_arches}
- rust-snphost
ExclusiveArch: x86_64
- rust-ssh-key-dir
ExclusiveArch: %{rust_arches}
- rust-stacker
ExclusiveArch: %{rust_arches}
- rust-structopt
ExclusiveArch: %{rust_arches}
- rust-tiny-dfr
ExcludeArch: %{ix86}
- rust-totp-lite
ExclusiveArch: %{rust_arches}
- rust-tower-layer
ExclusiveArch: %{rust_arches}
- rust-tpm2-policy
ExclusiveArch: %{rust_arches}
- rust-unicode-xid
ExclusiveArch: %{rust_arches}
- rust-uriparse
ExclusiveArch: %{rust_arches}
- rust-varlink_generator
ExclusiveArch: %{rust_arches}
- rust-varlink_parser
ExclusiveArch: %{rust_arches}
- rust-vhost-device-scmi
ExcludeArch: s390x
- rust-vhost-device-sound
ExcludeArch: %{ix86} s390x
- rust-virtio-bindings
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rust-virtio-queue
ExcludeArch: i686
- rust-vm-memory
ExcludeArch: %{ix86}
- rust-vmm-sys-util
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rust-vtparse
ExclusiveArch: %{rust_arches}
- rust-web-ext-native-messaging
ExclusiveArch: %{rust_arches}
- rust-wezterm-color-types
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic-derive
ExclusiveArch: %{rust_arches}
- rust-zbus1
ExclusiveArch: %{rust_arches}
- rust-zbus_macros1
ExclusiveArch: %{rust_arches}
- rust-zincati
ExcludeArch: armv7hl i686
- rust-zvariant2
ExclusiveArch: %{rust_arches}
- rust-zvariant_derive2
ExclusiveArch: %{rust_arches}
- rustup
ExclusiveArch: x86_64 aarch64
- rutabaga-gfx-ffi
ExclusiveArch: x86_64 aarch64
- s2n-tls
ExcludeArch: %{ix86}
ExcludeArch: s390x
- s390utils
ExcludeArch: %{ix86}
- sac
ExclusiveArch: %{java_arches} noarch
- safeint
ExcludeArch: %{ix86}
- safetyblanket
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- sandia-omega-h
ExcludeArch: %{ix86} s390x
- sat4j
ExclusiveArch: %{java_arches} noarch
- sayonara
ExcludeArch: %{ix86}
- sbcl
ExclusiveArch: %{ix86} x86_64 aarch64 %{power64}
- sbd
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
- sblim-cim-client
ExclusiveArch: %{java_arches} noarch
- sblim-cim-client2
ExclusiveArch: %{java_arches} noarch
- sbsigntools
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- scala
ExclusiveArch: %{java_arches} noarch
- scalasca
ExcludeArch: s390 s390x armv7hl i686
- scannotation
ExclusiveArch: %{java_arches} noarch
- scip
ExcludeArch: %{ix86}
- scorep
ExcludeArch: s390 s390x armv7hl i686
- scx_c_schedulers
ExcludeArch: %{ix86}
- sdljava
ExclusiveArch: %{java_arches}
- sdrangel
ExclusiveArch: %{qt5_qtwebengine_arches}
- sdsl-lite
ExclusiveArch: %{power64} x86_64 aarch64
- sdubby
ExclusiveArch: %{efi}
- seabios
ExclusiveArch: x86_64
- seadrive-gui
ExclusiveArch: %{qt5_qtwebengine_arches}
- seafile-client
ExclusiveArch: %{qt6_qtwebengine_arches}
- seamonkey
ExclusiveArch: x86_64
- sedutil
ExcludeArch: ppc ppc64 s390 s390x
- sentencepiece
ExcludeArch: s390x
- seqan3
ExclusiveArch: %{power64} x86_64 aarch64
- sequeler
ExcludeArch: %{ix86}
- sequence-library
ExclusiveArch: %{java_arches} noarch
- servicelog
ExclusiveArch: ppc %{power64}
- setserial
ExcludeArch: s390 s390x
- sfnt2woff-zopfli
ExcludeArch: %{ix86}
- sharedmeataxe
ExcludeArch: %{ix86}
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: %{efi}
ExcludeArch: %{ix86}
ExcludeArch: %{arm}
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- shim-unsigned-x64
ExclusiveArch: x86_64
- sigil
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- sigul
ExclusiveArch: x86_64
ExcludeArch: %{ix86}
- simdutf
ExcludeArch: s390 s390x
- singularity-ce
ExclusiveArch: %{go_arches}
ExcludeArch: %{ix86}
- sirocco
ExcludeArch: %{ix86}
- sisu
ExclusiveArch: %{java_arches} noarch
- sisu-mojos
ExclusiveArch: %{java_arches} noarch
- skanpage
ExclusiveArch: %{qt6_qtwebengine_arches}
- ski
ExcludeArch: %{ix86}
ExcludeArch: aarch64
- skopeo
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- skychart
ExclusiveArch: %{fpc_arches}
ExcludeArch: %{ix86}
- slapi-nis
ExcludeArch: %{ix86}
- sleef
ExcludeArch: %{ix86}
- slf4j
ExclusiveArch: %{java_arches} noarch
- slic3r
ExcludeArch: %{ix86}
ExcludeArch: ppc ppc64 s390 s390x %{ix86}
ExcludeArch: ppc ppc64 s390 s390x
- slick-greeter
ExcludeArch: %{ix86}
- slimdata
ExcludeArch: ppc64 ppc sparcv9 sparc64
- slirp4netns
ExclusiveArch: %{golang_arches_future}
- slurm
ExcludeArch: armv7hl
ExcludeArch: i686
- smartmontools
ExcludeArch: %{ix86}
- snakeyaml
ExclusiveArch: %{java_arches} noarch
- snapd
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm} aarch64 ppc64le s390x}
- snapshot
ExcludeArch: %{ix86}
- snip
ExclusiveArch: %{java_arches} noarch
- softnet-stat
ExclusiveArch: %{rust_arches}
- soplex
ExcludeArch: %{ix86}
- sound-juicer
ExcludeArch: s390 s390x
- soup-sharp
ExclusiveArch: %{mono_arches}
- sourcextractor++
ExcludeArch: %{ix86}
- spacebar
ExclusiveArch: %{java_arches}
- sparkleshare
ExclusiveArch: %{mono_arches}
ExcludeArch: %{ix86}
- spasm
ExcludeArch: %{ix86}
- spec-version-maven-plugin
ExclusiveArch: %{java_arches} noarch
- speed-dreams
ExcludeArch: s390x
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 riscv64
- spice-parent
ExclusiveArch: %{java_arches} noarch
- springlobby
ExclusiveArch: %{ix86} x86_64
- spyder
ExcludeArch: %{ix86}
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- squeekboard
ExclusiveArch: %{rust_arches}
ExcludeArch: ppc64le
ExcludeArch: s390x
- squirrel
ExcludeArch: %{ix86}
- startdde
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- stats-collect
ExclusiveArch: %{ix86} x86_64 noarch
- statsd
ExclusiveArch: %{nodejs_arches} noarch
- statserial
ExcludeArch: s390 s390x
- steinberg-bravura-fonts
ExcludeArch: %{ix86}
- steinberg-petaluma-fonts
ExcludeArch: %{ix86}
- stellarium
ExcludeArch: armv7hl
- stlsplit
ExcludeArch: %{ix86}
- stp
ExcludeArch: %{ix86}
- stratis-cli
ExclusiveArch: %{rust_arches} noarch
ExcludeArch: i686
- stratisd
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
- string-template-maven-plugin
ExclusiveArch: %{java_arches} noarch
- stringtemplate
ExclusiveArch: %{java_arches} noarch
- stringtemplate4
ExclusiveArch: %{java_arches} noarch
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- subscription-manager-cockpit
ExclusiveArch: %{nodejs_arches} noarch
- supercollider
ExclusiveArch: %{qt5_qtwebengine_arches}
- supermin
ExcludeArch: %{ix86}
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- supertux
ExcludeArch: s390x
- suricata
ExcludeArch: ppc64le i686
- svt-vp9
ExclusiveArch: x86_64
- swift-lang
ExclusiveArch: x86_64 aarch64
- swiftlint
ExclusiveArch: x86_64 aarch64
- swing-layout
ExclusiveArch: %{java_arches} noarch
- symfpu
ExcludeArch: %{ix86}
- symmetrica
ExcludeArch: %{ix86}
- sympol
ExcludeArch: %{ix86}
- sympow
ExcludeArch: %{ix86}
- synfig
ExcludeArch: ppc64le
- synfigstudio
ExcludeArch: ppc64le
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64le s390x
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- system-rules
ExclusiveArch: %{java_arches} noarch
- systemd-boot
ExclusiveArch: %efi
- t-digest
ExclusiveArch: %{java_arches} noarch
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tagsoup
ExclusiveArch: %{java_arches} noarch
- tarantool
ExclusiveArch: %{ix86} x86_64
- tboot
ExclusiveArch: %{ix86} x86_64
- tcmu-runner
ExcludeArch: i686 armv7hl
- tdlib
ExclusiveArch: x86_64 aarch64
- teem
ExcludeArch: %{ix86}
- templates_parser
ExclusiveArch: %GPRbuild_arches
- terminology
ExcludeArch: s390x
- terminus-fonts
ExcludeArch: %{grub2_exclude_arches}
- ternimal
ExclusiveArch: %{rust_arches}
- testcloud
ExclusiveArch: %{kernel_arches} noarch
- testng
ExclusiveArch: %{java_arches} noarch
- texlive
ExclusiveArch: %{java_arches} noarch
- texmaker
ExclusiveArch: %{qt6_qtwebengine_arches}
ExcludeArch: ppc64 ppc64le s390x
- thermald
ExclusiveArch: %{ix86} x86_64
- thunderbird
ExcludeArch: armv7hl
ExcludeArch: s390x
- tiled
ExcludeArch: %{ix86}
- tilix
ExclusiveArch: %{ldc_arches}
- tinygo
ExcludeArch: ppc64le s390x
ExcludeArch: %{ix86}
- tokodon
ExclusiveArch: %{qt6_qtwebengine_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tomcat
ExclusiveArch: %{java_arches} noarch
- tomcat-jakartaee-migration
ExclusiveArch: %{java_arches} noarch
- tomcat-native
ExclusiveArch: %{java_arches}
- tomcat-taglibs-parent
ExclusiveArch: %{java_arches} noarch
- torbrowser-launcher
ExclusiveArch: %{ix86} x86_64
- trace-cmd
ExcludeArch: %{ix86} %{arm}
- trafficserver
ExcludeArch: %{arm} %{ix86} s390x
- treelayout
ExclusiveArch: %{java_arches} noarch
- trilead-ssh2
ExclusiveArch: %{java_arches} noarch
- trojita
ExcludeArch: ppc64 ppc64le s390x
- trunk
ExcludeArch: %{ix86}
- truth
ExclusiveArch: %{java_arches} noarch
- tth
ExcludeArch: %{ix86}
- tuned-profiles-nfv-host-bin
ExclusiveArch: %{ix86} x86_64
- tuxguitar
ExcludeArch: s390 %{arm} %{ix86}
- tvtime
ExcludeArch: s390 s390x
- typescript
ExclusiveArch: %{nodejs_arches} noarch
- tzdata
ExcludeArch: i686
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- uboot-tools
ExcludeArch: s390x
- ucx
ExclusiveArch: aarch64 ppc64le x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
- ugrep
ExcludeArch: %{ix86}
- umr
ExclusiveArch: x86_64 aarch64 ppc64le
- unetbootin
ExclusiveArch: %{ix86} x86_64
- unicorn
ExcludeArch: s390x
- unison
ExcludeArch: %{ix86}
- univocity-parsers
ExclusiveArch: %{java_arches} noarch
- ursa-major
ExclusiveArch: noarch aarch64 ppc64le s390x x86_64
- usbip
ExcludeArch: s390x
- usd
ExclusiveArch: aarch64 x86_64
- usnic-tools
ExcludeArch: %{arm}
- utop
ExcludeArch: %{ix86}
- uwsgi
ExcludeArch: %{ix86}
- v-hacd
ExcludeArch: %{ix86}
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- vakzination
ExclusiveArch: %{java_arches}
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- valkey
ExcludeArch: %{ix86}
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vdo
ExcludeArch: %{ix86}
- vdr-tvscraper
ExcludeArch: armv7hl
- vecmath1.2
ExclusiveArch: %{java_arches} noarch
- vectorscan
ExcludeArch: s390x
- velocity
ExclusiveArch: %{java_arches} noarch
- viking
ExcludeArch: s390 s390x
- vim-go
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- vim-perl-support
ExcludeArch: %{ix86}
- vim-syntastic
ExclusiveArch: %{java_arches} noarch
- vinci
ExcludeArch: %{ix86}
- virt-p2v
ExclusiveArch: x86_64
- virt-top
ExcludeArch: %{ix86}
ExcludeArch: %{power64}
- virt-v2v
ExcludeArch: %{ix86}
ExclusiveArch: x86_64
- virtiofsd
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
- virtualbox-guest-additions
ExclusiveArch: i686 x86_64
- visidata
ExcludeArch: %{ix86}
- visualboyadvance-m
ExcludeArch: %{ix86}
- vkd3d
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- vkmark
ExcludeArch: s390x
- vmaf
ExclusiveArch: x86_64
- voms-api-java
ExclusiveArch: %{java_arches} noarch
- voms-clients-java
ExclusiveArch: %{java_arches} noarch
- votca
ExcludeArch: %{ix86}
- vrq
ExclusiveArch: %{ix86} x86_64
- wangle
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{ix86} x86_64 %{arm}
- warzone2100
ExcludeArch: %{ix86}
- wasmedge
ExclusiveArch: x86_64 aarch64
- watchman
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- wdt
ExclusiveArch: x86_64 aarch64 ppc64le
- webkit2-sharp
ExclusiveArch: %mono_arches
- weld-parent
ExclusiveArch: %{java_arches} noarch
- whatip
ExcludeArch: s390x
- whipper
ExcludeArch: s390x
- whisper-cpp
ExclusiveArch: x86_64 aarch64 ppc64le
- why3
ExclusiveArch: %{ocaml_native_compiler}
- widevine-installer
ExclusiveArch: aarch64
- wildcard
ExcludeArch: %{ix86} s390x
- wine
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86}
- wine-dxvk
ExclusiveArch: %{ix86} x86_64
- wine-mono
ExcludeArch: %{power64} s390x s390
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExcludeArch: ppc64 ppc64le
- wlmaker
ExcludeArch: %{ix86} ppc64le
- woff
ExcludeArch: %{ix86}
- workrave
ExcludeArch: %{ix86}
- ws-commons-util
ExclusiveArch: %{java_arches} noarch
- wsdl4j
ExclusiveArch: %{java_arches} noarch
- wult
ExclusiveArch: x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x2goclient
ExclusiveArch: x86_64
- x2gokdrive
ExcludeArch: %{ix86}
- x86-simd-sort
ExclusiveArch: x86_64
- xalan-j2
ExclusiveArch: %{java_arches} noarch
- xapps
ExcludeArch: %{ix86}
- xbean
ExclusiveArch: %{java_arches} noarch
- xbyak
ExclusiveArch: x86_64
- xbyak_aarch64
ExclusiveArch: aarch64
- xdg-desktop-portal
ExcludeArch: %{ix86}
- xdg-desktop-portal-gnome
ExcludeArch: %{ix86}
- xdg-desktop-portal-gtk
ExcludeArch: %{ix86}
- xdg-desktop-portal-hyprland
ExcludeArch: %{ix86}
- xe-guest-utilities-latest
ExclusiveArch: %{ix86} x86_64
- xed
ExcludeArch: %{ix86}
- xen
ExclusiveArch: x86_64 aarch64
- xephem
ExcludeArch: %{ix86}
- xerces-j2
ExclusiveArch: %{java_arches} noarch
- xeus
ExcludeArch: %{ix86}
- xeus-zmq
ExcludeArch: %{ix86}
- xfce4-sensors-plugin
ExcludeArch: s390 s390x
- xgap
ExcludeArch: %{ix86}
- xiphos
ExcludeArch: ppc64
- xml-commons-apis
ExclusiveArch: %{java_arches} noarch
- xml-commons-resolver
ExclusiveArch: %{java_arches} noarch
- xml-maven-plugin
ExclusiveArch: %{java_arches} noarch
- xmlada
ExclusiveArch: %{GPRbuild_arches}
- xmlgraphics-commons
ExclusiveArch: %{java_arches} noarch
- xmlpull
ExclusiveArch: %{java_arches} noarch
- xmlstreambuffer
ExclusiveArch: %{java_arches} noarch
- xmlunit
ExclusiveArch: %{java_arches} noarch
- xmvn
ExclusiveArch: %{java_arches} noarch
- xmvn-connector-ivy
ExclusiveArch: %{java_arches} noarch
- xmvn-generator
ExclusiveArch: %{java_arches}
- xnnpack
ExclusiveArch: x86_64 aarch64
- xnvme
ExcludeArch: %{ix86}
- xorg-x11-drv-amdgpu
ExcludeArch: s390 s390x
- xorg-x11-drv-armsoc
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-ati
ExcludeArch: s390 s390x
- xorg-x11-drv-fbdev
ExcludeArch: s390 s390x
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-nouveau
ExcludeArch: s390 s390x
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-qxl
ExcludeArch: s390 s390x
- xorg-x11-drv-synaptics
ExcludeArch: s390 s390x
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xreader
ExcludeArch: %{ix86}
- xrgears
ExcludeArch: %{ix86}
- xsensors
ExcludeArch: %{ix86}
- xsp
ExclusiveArch: %mono_arches
- xstream
ExclusiveArch: %{java_arches} noarch
- xtb
ExcludeArch: s390x
- xtensor-python
ExcludeArch: armv7hl ppc64le s390x
- xz-java
ExclusiveArch: %{java_arches} noarch
- yarnpkg
ExclusiveArch: %{nodejs_arches}
- yices
ExcludeArch: %{ix86}
- yle-dl
ExcludeArch: %{ix86}
- yosys
ExcludeArch: %{ix86}
ExcludeArch: s390x
- zcfan
ExclusiveArch: x86_64
- zeal
ExclusiveArch: aarch64 x86_64
- zenon
ExclusiveArch: %{ocaml_native_compiler}
- zeromq-ada
ExclusiveArch: %{GPRbuild_arches}
- zfs-fuse
ExcludeArch: s390 s390x aarch64
- zig
ExclusiveArch: %{zig_arches}
- zile
ExcludeArch: ppc64le
- zimpl
ExcludeArch: %{ix86}
- zlib-ada
ExclusiveArch: %{GPRbuild_arches}
- zola
ExclusiveArch: %{rust_arches}
- zstr
ExcludeArch: %{ix86}
- zxcvbn-c
ExcludeArch: %{ix86}
- zycore-c
ExcludeArch: s390x
- zydis
ExcludeArch: s390x
2 weeks, 3 days