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=50233814adafd....
Change:
+%ifarch %{ix86} %{arm}
Thanks.
Full change:
============
commit 50233814adafdb08adf09448357d94abd3882b92
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Mon Feb 19 13:48:39 2018 +0100
Update to 6.12.06
Drop patch root-Fix-constructing-the-GSL-MC-Integrator.patch (previously
backported)
diff --git a/root-Fix-constructing-the-GSL-MC-Integrator.patch
b/root-Fix-constructing-the-GSL-MC-Integrator.patch
deleted file mode 100644
index 8615550..0000000
--- a/root-Fix-constructing-the-GSL-MC-Integrator.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 0bed472bc529c6fa515793984808a4f6c24fc715 Mon Sep 17 00:00:00 2001
-From: moneta <lorenzo.moneta(a)cern.ch>
-Date: Mon, 15 Jan 2018 15:00:44 +0100
-Subject: [PATCH] Fix constructing the GSL MC Integrator. This fix the failure
- observed sometimes in math core-testIntegration. (Fix ROOT-9178)
-
----
- math/mathmore/src/GSLMCIntegrator.cxx | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/math/mathmore/src/GSLMCIntegrator.cxx
b/math/mathmore/src/GSLMCIntegrator.cxx
-index 25ad7b4eac..1c00146630 100644
---- a/math/mathmore/src/GSLMCIntegrator.cxx
-+++ b/math/mathmore/src/GSLMCIntegrator.cxx
-@@ -100,6 +100,7 @@ GSLMCIntegrator::GSLMCIntegrator(MCIntegration::Type type, double
absTol, double
- }
-
- GSLMCIntegrator::GSLMCIntegrator(const char * type, double absTol, double relTol,
unsigned int calls):
-+ fType(MCIntegration::kDEFAULT),
- fDim(0),
- fCalls(calls),
- fAbsTol(absTol),
-@@ -316,7 +317,8 @@ void GSLMCIntegrator::SetTypeName(const char * type)
- }
-
- // create the fWorkspace object
-- if (integType != fType) SetType(integType);
-+ // if it exists already with the same type it will not be re-created
-+ SetType(integType);
- }
-
-
---
-2.14.3
-
diff --git a/root-noinst.patch b/root-noinst.patch
index 4f3212f..88bdb67 100644
--- a/root-noinst.patch
+++ b/root-noinst.patch
@@ -29,7 +29,7 @@ index 2758edb08e1..d98ac3b6331 100644
+ROOT_LINKER_LIBRARY(minicern *.c *.f TYPE STATIC NOINSTALL)
target_link_libraries(minicern ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
- # Disable optimization since it some cases was causing crashes
+ # Disable optimization since it some cases was causing crashes.
From 9bd8d4e52fae5467867cbcf1810bc58a63b55a62 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
diff --git a/root.spec b/root.spec
index 577c43d..ddafd9f 100644
--- a/root.spec
+++ b/root.spec
@@ -31,9 +31,9 @@
%global __provides_exclude_from
^(%{python2_sitearch}|%{python3_sitearch})/libJupyROOT\\.so$
Name: root
-Version: 6.12.04
+Version: 6.12.06
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 4%{?dist}
+Release: 1%{?dist}
Summary: Numerical data analysis framework
License: LGPLv2+
@@ -92,27 +92,24 @@ Patch13: %{name}-memory-arm.patch
# Ensures content of doc package is the same on all architecture
# so that koji accepts it as a noarch package.
Patch14: %{name}-ppc64-doc.patch
-# Fix constructing the GSL MC Integrator
-# Backport from upstream git
-Patch15: %{name}-Fix-constructing-the-GSL-MC-Integrator.patch
# Check string is not empty before calling front()
# Backport from upstream git
-Patch16: %{name}-crash-fix.patch
+Patch15: %{name}-crash-fix.patch
# Adjust expected file size for ix32
# Backport from upstream git
-Patch17: %{name}-test-stress-32bit.patch
+Patch16: %{name}-test-stress-32bit.patch
# Fixes for failing tests due to new compiler flags
#
https://github.com/root-project/root/pull/1638
-Patch18: %{name}-test-fixes.patch
+Patch17: %{name}-test-fixes.patch
#
https://github.com/root-project/root/pull/1639
-Patch19: %{name}-out-of-bounds.patch
+Patch18: %{name}-out-of-bounds.patch
# Fix ~ alignment in doxygen markup
#
https://github.com/root-project/root/pull/1640
-Patch20: %{name}-doxygen-tilde.patch
+Patch19: %{name}-doxygen-tilde.patch
# Don't install intermediate static libs (mathtext and minicern)
# Don't add JupyROOT python extension to cmake exports
#
https://github.com/root-project/root/pull/1643
-Patch21: %{name}-noinst.patch
+Patch20: %{name}-noinst.patch
# s390x suffers from endian issues resulting in failing tests
# and broken documentation generation
@@ -225,7 +222,11 @@ BuildRequires: font(freesans)
BuildRequires: font(freeserif)
BuildRequires: font(freemono)
# Provides "symbol", "dingbats" and "chancery"
+%if %{?fedora}%{!?fedora:0} >= 27 || %{?rhel}%{!?rhel:0} >= 8
+BuildRequires: urw-base35-fonts
+%else
BuildRequires: urw-fonts
+%endif
# The root-fonts package provides Droid Sans Fallback for EPEL
%if %{?fedora}%{!?fedora:0} >= 11
BuildRequires: font(droidsansfallback)
@@ -349,7 +350,11 @@ Requires: font(freesans)
Requires: font(freeserif)
Requires: font(freemono)
# Provides "symbol", "dingbats" and "chancery"
+%if %{?fedora}%{!?fedora:0} >= 27 || %{?rhel}%{!?rhel:0} >= 8
+Requires: urw-base35-fonts
+%else
Requires: urw-fonts
+%endif
# The root-fonts package provides Droid Sans Fallback for EPEL
%if %{?fedora}%{!?fedora:0} >= 11
Requires: font(droidsansfallback)
@@ -1683,7 +1688,6 @@ Javascript and style files for the Jupyter ROOT Notebook.
%patch18 -p1
%patch19 -p1
%patch20 -p1
-%patch21 -p1
# Remove bundled sources in order to be sure they are not used
# * afterimage
@@ -2307,6 +2311,16 @@
excluded="${excluded}|test-stresshistogram|test-stressroostats|test-stresshistof
excluded="${excluded}|test-stresshistogram"
%endif
+# Test failing on 32 bit on Fedora <= 27
+#
https://sft.its.cern.ch/jira/browse/ROOT-9236
+#
https://sft.its.cern.ch/jira/browse/ROOT-9265
+# - gtest-tree-treeplayer-test-dataframe-snapshot
+%ifarch %{ix86} %{arm}
+%if %{?fedora}%{!?fedora:0} <= 27 && %{?rhel}%{!?rhel:0} <= 7
+excluded="${excluded}|gtest-tree-treeplayer-test-dataframe-snapshot"
+%endif
+%endif
+
make test ARGS="%{?_smp_mflags} --output-on-failure -E
\"${excluded}\""
popd
@@ -3388,6 +3402,11 @@ end
%{_datadir}/%{name}/notebook
%changelog
+* Sat Feb 17 2018 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.12.06-1
+- Update to 6.12.06
+- Drop patch root-Fix-constructing-the-GSL-MC-Integrator.patch (previously
+ backported)
+
* Fri Feb 16 2018 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.12.04-4
- Fix test failures found with new default compiler flags in Fedora 28
diff --git a/sources b/sources
index 498a567..da8883b 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (root-6.12.04.tar.xz) =
271cc151073f0b147f4e4f5030f71e3782723be1e5c36c431b85086e8280dbdab1fde22c4f5c26e5f8d821ed309d4b7db5e846ec383db84d64714d0c627c8c7a
+SHA512 (root-6.12.06.tar.xz) =
607644b5cd06fdab5e0899172156cbed92911de9d1eef2695cc79c5f41621a2d1167a6d14791c5b97c8d15dcb7d4d45952b3dcf4ffb096dc51bdeb3233b5467f
SHA512 (root-testfiles.tar.xz) =
f697afb666c1081f98cfe66fe21998c4eab86c25a3671ff71a4ac98610d70f70081d70b40029a0b788b39d87c542b5aa4e31d71f7be494f4774323ed20e9bccb
commit 18df0711fa8d1a276a3953d88810fd9b2ebe5f99
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Sat Feb 17 16:27:57 2018 +0100
Fix test failures found with new default compiler flags in Fedora 28
diff --git a/root-crash-fix.patch b/root-crash-fix.patch
new file mode 100644
index 0000000..ed64701
--- /dev/null
+++ b/root-crash-fix.patch
@@ -0,0 +1,26 @@
+From d055981def808c9c2175a8ca3f362b6ea006ebf3 Mon Sep 17 00:00:00 2001
+From: Bertrand Bellenot <bertrand.bellenot(a)cern.ch>
+Date: Thu, 8 Feb 2018 10:43:59 +0100
+Subject: [PATCH] Fix another potential crash on Windows
+
+On Windows, (as the standard says) calling front() on an empty std::vector causes an
undefined behaviour. One must check that the container contains something using empty()
before calling front()
+---
+ core/foundation/src/TClassEdit.cxx | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/core/foundation/src/TClassEdit.cxx b/core/foundation/src/TClassEdit.cxx
+index 38c8b1a5a2..954e40fcc5 100644
+--- a/core/foundation/src/TClassEdit.cxx
++++ b/core/foundation/src/TClassEdit.cxx
+@@ -1900,7 +1900,7 @@ public:
+ auto argsEnd = v.end();
+ auto argsBeginPlusOne = ++v.begin();
+ auto argPos = std::find_if(argsBeginPlusOne, argsEnd,
+- [](std::string& arg){return arg.front() ==
':';});
++ [](std::string& arg){return (!arg.empty() && arg.front() ==
':');});
+ if (argPos != argsEnd) {
+ const int lenght = clName.size();
+ int wedgeBalance = 0;
+--
+2.14.3
+
diff --git a/root-doxygen-tilde.patch b/root-doxygen-tilde.patch
new file mode 100644
index 0000000..bbae6d8
--- /dev/null
+++ b/root-doxygen-tilde.patch
@@ -0,0 +1,36 @@
+From 533f64b053c9fa72b456a7e351e17e354b94dcdc Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 15 Feb 2018 18:30:44 +0100
+Subject: [PATCH] Fix doxygen ~ alignment
+
+---
+ core/meta/src/TStatusBitsChecker.cxx | 2 +-
+ tree/treeplayer/src/TTreeReader.cxx | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/core/meta/src/TStatusBitsChecker.cxx b/core/meta/src/TStatusBitsChecker.cxx
+index 360d85d0c74..1661bd3646b 100644
+--- a/core/meta/src/TStatusBitsChecker.cxx
++++ b/core/meta/src/TStatusBitsChecker.cxx
+@@ -42,7 +42,7 @@
+ // used in TStreamerElement
+ kHasRange = TStreamerElement::kHasRange
+ };
+- ~~~ {.cpp}
++ ~~~ {.cpp}
+
+ Without the EStatusBitsDupExceptions enum you would see
+
+diff --git a/tree/treeplayer/src/TTreeReader.cxx b/tree/treeplayer/src/TTreeReader.cxx
+index d411fbdd967..e823797e523 100644
+--- a/tree/treeplayer/src/TTreeReader.cxx
++++ b/tree/treeplayer/src/TTreeReader.cxx
+@@ -235,7 +235,7 @@ void TTreeReader::Initialize()
+ /// If end <= begin, `end` is ignored (set to `-1`) and only `begin` is used.
+ /// Example:
+ ///
+-/// ~~~ {.cpp}
++/// ~~~ {.cpp}
+ /// reader.SetEntriesRange(3, 5);
+ /// while (reader.Next()) {
+ /// // Will load entries 3 and 4.
diff --git a/root-noinst.patch b/root-noinst.patch
new file mode 100644
index 0000000..4f3212f
--- /dev/null
+++ b/root-noinst.patch
@@ -0,0 +1,55 @@
+From 778e01575f6b75bed9843023baeb50b23aea5355 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Fri, 16 Feb 2018 19:06:14 +0100
+Subject: [PATCH 1/2] Don't install intermediate static libs (mathtext and
+ minicern)
+
+---
+ graf2d/mathtext/CMakeLists.txt | 2 +-
+ misc/minicern/CMakeLists.txt | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/graf2d/mathtext/CMakeLists.txt b/graf2d/mathtext/CMakeLists.txt
+index 5af6a282a34..e6cba7bcd35 100644
+--- a/graf2d/mathtext/CMakeLists.txt
++++ b/graf2d/mathtext/CMakeLists.txt
+@@ -1,2 +1,2 @@
+-ROOT_LINKER_LIBRARY(mathtext *.cxx TYPE STATIC)
++ROOT_LINKER_LIBRARY(mathtext *.cxx TYPE STATIC NOINSTALL)
+
+diff --git a/misc/minicern/CMakeLists.txt b/misc/minicern/CMakeLists.txt
+index 2758edb08e1..d98ac3b6331 100644
+--- a/misc/minicern/CMakeLists.txt
++++ b/misc/minicern/CMakeLists.txt
+@@ -3,7 +3,7 @@
+ ############################################################################
+
+ set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fPIC")
+-ROOT_LINKER_LIBRARY(minicern *.c *.f TYPE STATIC)
++ROOT_LINKER_LIBRARY(minicern *.c *.f TYPE STATIC NOINSTALL)
+ target_link_libraries(minicern ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
+
+ # Disable optimization since it some cases was causing crashes
+
+From 9bd8d4e52fae5467867cbcf1810bc58a63b55a62 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Fri, 16 Feb 2018 19:07:04 +0100
+Subject: [PATCH 2/2] Don't add JupyROOT python extension to cmake exports
+
+---
+ bindings/pyroot/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bindings/pyroot/CMakeLists.txt b/bindings/pyroot/CMakeLists.txt
+index 4dab1dfd2ab..5f621af9a2d 100644
+--- a/bindings/pyroot/CMakeLists.txt
++++ b/bindings/pyroot/CMakeLists.txt
+@@ -18,7 +18,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(PyROOT
+ DICTIONARY_OPTIONS "-writeEmptyRootPCM"
+ LIBRARIES Core Net Tree MathCore Rint ${PYTHON_LIBRARIES}
+ DEPENDENCIES Core MathCore Net Tree Rint)
+-ROOT_LINKER_LIBRARY(JupyROOT ../JupyROOT/src/*.cxx DEPENDENCIES Core)
++ROOT_LINKER_LIBRARY(JupyROOT ../JupyROOT/src/*.cxx DEPENDENCIES Core CMAKENOEXPORT)
+
+ if(MSVC)
+ add_custom_command(TARGET PyROOT POST_BUILD
diff --git a/root-out-of-bounds.patch b/root-out-of-bounds.patch
new file mode 100644
index 0000000..094139f
--- /dev/null
+++ b/root-out-of-bounds.patch
@@ -0,0 +1,25 @@
+From a770f03056e374fa7c1dbdc06aaff22107fc27a0 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 15 Feb 2018 18:29:00 +0100
+Subject: [PATCH] Protect against out-of-bounds access
+
+---
+ graf2d/gpad/src/TRatioPlot.cxx | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/graf2d/gpad/src/TRatioPlot.cxx b/graf2d/gpad/src/TRatioPlot.cxx
+index 107c0c90806..bf3415d7927 100644
+--- a/graf2d/gpad/src/TRatioPlot.cxx
++++ b/graf2d/gpad/src/TRatioPlot.cxx
+@@ -1074,9 +1074,9 @@ Int_t TRatioPlot::BuildLowerPlot()
+ ((TGraphAsymmErrors*)fRatioGraph)->SetPointError(ipoint,
fH1->GetBinWidth(i)/2., fH1->GetBinWidth(i)/2., 0.5, 0.5);
+
+ fConfidenceInterval1->SetPoint(ipoint, x, 0);
+- fConfidenceInterval1->SetPointError(ipoint, x, ci1[i] / error);
++ fConfidenceInterval1->SetPointError(ipoint, x, i < ci1.size() ? ci1[i]
/ error : 0);
+ fConfidenceInterval2->SetPoint(ipoint, x, 0);
+- fConfidenceInterval2->SetPointError(ipoint, x, ci2[i] / error);
++ fConfidenceInterval2->SetPointError(ipoint, x, i < ci2.size() ? ci2[i]
/ error : 0);
+
+ ++ipoint;
+
diff --git a/root-test-fixes.patch b/root-test-fixes.patch
new file mode 100644
index 0000000..f351525
--- /dev/null
+++ b/root-test-fixes.patch
@@ -0,0 +1,337 @@
+From 092d06fd403331bf082dd0d2d56718a9ee31efec Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 15 Feb 2018 18:12:41 +0100
+Subject: [PATCH 1/4] Don't call front() on empty containers
+
+---
+ math/mathcore/inc/Fit/FitData.h | 4 ++--
+ math/mathcore/inc/Math/WrappedParamFunction.h | 10 +++++-----
+ math/mathcore/src/BinData.cxx | 24 ++++++++++++------------
+ math/mathcore/src/FitData.cxx | 2 +-
+ 4 files changed, 20 insertions(+), 20 deletions(-)
+
+diff --git a/math/mathcore/inc/Fit/FitData.h b/math/mathcore/inc/Fit/FitData.h
+index cb8fa2f0be3..9579bde92bf 100644
+--- a/math/mathcore/inc/Fit/FitData.h
++++ b/math/mathcore/inc/Fit/FitData.h
+@@ -185,7 +185,7 @@ namespace ROOT {
+
+ for (unsigned int i = 0; i < fDim; i++) {
+ fCoords[i].resize(fMaxPoints + VectorPadding(fMaxPoints));
+- fCoordsPtr[i] = &fCoords[i].front();
++ fCoordsPtr[i] = fCoords[i].empty() ? NULL : &fCoords[i].front();
+ }
+
+ if (fpTmpCoordVector) {
+@@ -354,7 +354,7 @@ namespace ROOT {
+ unsigned padding = VectorPadding(fNPoints);
+ fCoords[i].resize(fNPoints + padding);
+ std::copy(fCoordsPtr[i], fCoordsPtr[i] + fNPoints + padding,
fCoords[i].begin());
+- fCoordsPtr[i] = &fCoords[i].front();
++ fCoordsPtr[i] = fCoords[i].empty() ? NULL : &fCoords[i].front();
+ }
+
+ fWrapped = false;
+diff --git a/math/mathcore/inc/Math/WrappedParamFunction.h
b/math/mathcore/inc/Math/WrappedParamFunction.h
+index 38b9af7639f..0c860672f9e 100644
+--- a/math/mathcore/inc/Math/WrappedParamFunction.h
++++ b/math/mathcore/inc/Math/WrappedParamFunction.h
+@@ -95,7 +95,7 @@ class WrappedParamFunction : public IParamMultiFunction {
+ }
+
+ const double * Parameters() const {
+- return &(fParams.front());
++ return fParams.empty() ? NULL : &fParams.front();
+ }
+
+ void SetParameters(const double * p) {
+@@ -172,7 +172,7 @@ class WrappedParamFunctionGen : public IParamMultiFunction {
+
+ /// clone the function
+ IMultiGenFunction * Clone() const {
+- return new WrappedParamFunctionGen(fFunc, fDim, fParams.size() ,
&fParams.front(), &fParIndices.front());
++ return new WrappedParamFunctionGen(fFunc, fDim, fParams.size(), fParams.empty() ?
NULL : &fParams.front(), fParIndices.empty() ? NULL : &fParIndices.front());
+ }
+
+ private:
+@@ -183,7 +183,7 @@ class WrappedParamFunctionGen : public IParamMultiFunction {
+ public:
+
+ const double * Parameters() const {
+- return &(fParams.front());
++ return fParams.empty() ? NULL : &fParams.front();
+ }
+
+ void SetParameters(const double * p) {
+@@ -227,7 +227,7 @@ class WrappedParamFunctionGen : public IParamMultiFunction {
+ // std::copy(fX.begin(), fX.end(), oi);
+ // std::cout << std::endl;
+
+- return (*fFunc)( &fX.front() );
++ return (*fFunc)( fX.empty() ? NULL : &fX.front() );
+ }
+
+
+@@ -264,7 +264,7 @@ class WrappedParamFunctionGen : public IParamMultiFunction {
+ // std::cout << this << std::endl;
+
+ // set parameter values in fX
+- SetParValues(npar, &fParams.front() );
++ SetParValues(npar, fParams.empty() ? NULL : &fParams.front());
+ for (unsigned int i = 0; i < npar; ++i) {
+ unsigned int j = fParIndices[i];
+ assert ( j < npar + fDim);
+diff --git a/math/mathcore/src/BinData.cxx b/math/mathcore/src/BinData.cxx
+index 16c9e375634..50a47169272 100644
+--- a/math/mathcore/src/BinData.cxx
++++ b/math/mathcore/src/BinData.cxx
+@@ -284,7 +284,7 @@ namespace ROOT {
+
+ for ( unsigned int i=0; i<fDim; i++ )
+ {
+- fCoordErrorsPtr[i] = &fCoordErrors[i].front();
++ fCoordErrorsPtr[i] = fCoordErrors[i].empty() ? NULL :
&fCoordErrors[i].front();
+ }
+ }
+
+@@ -371,7 +371,7 @@ namespace ROOT {
+ if ( kNoError == fErrorType )
+ {
+ fDataError.resize(fNPoints + FitData::VectorPadding(fNPoints));
+- fDataErrorPtr = &fDataError.front();
++ fDataErrorPtr = fDataError.empty() ? NULL : &fDataError.front();
+ }
+
+ for ( unsigned int i=0; i < fNPoints; i++ )
+@@ -659,7 +659,7 @@ namespace ROOT {
+ void BinData::InitDataVector ()
+ {
+ fData.resize(fMaxPoints + FitData::VectorPadding(fMaxPoints));
+- fDataPtr = &fData.front();
++ fDataPtr = fData.empty() ? NULL : &fData.front();
+ }
+
+ void BinData::InitializeErrors()
+@@ -698,7 +698,7 @@ namespace ROOT {
+ {
+ fCoordErrors[i].resize(fMaxPoints + FitData::VectorPadding(fMaxPoints));
+
+- fCoordErrorsPtr[i] = &fCoordErrors[i].front();
++ fCoordErrorsPtr[i] = fCoordErrors[i].empty() ? NULL :
&fCoordErrors[i].front();
+ }
+
+ fpTmpCoordErrorVector = new double[fDim];
+@@ -712,7 +712,7 @@ namespace ROOT {
+ if ( kValueError == fErrorType || kCoordError == fErrorType )
+ {
+ fDataError.resize(fMaxPoints + FitData::VectorPadding(fMaxPoints));
+- fDataErrorPtr = &fDataError.front();
++ fDataErrorPtr = fDataError.empty() ? NULL : &fDataError.front();
+
+ fDataErrorHigh.clear();
+ fDataErrorHighPtr = NULL;
+@@ -722,10 +722,10 @@ namespace ROOT {
+ else if ( fErrorType == kAsymError )
+ {
+ fDataErrorHigh.resize(fMaxPoints + FitData::VectorPadding(fMaxPoints));
+- fDataErrorHighPtr = &fDataErrorHigh.front();
++ fDataErrorHighPtr = fDataErrorHigh.empty() ? NULL :
&fDataErrorHigh.front();
+
+ fDataErrorLow.resize(fMaxPoints + FitData::VectorPadding(fMaxPoints));
+- fDataErrorLowPtr = &fDataErrorLow.front();
++ fDataErrorLowPtr = fDataErrorLow.empty() ? NULL : &fDataErrorLow.front();
+
+ fDataError.clear();
+ fDataErrorPtr = NULL;
+@@ -770,7 +770,7 @@ namespace ROOT {
+ unsigned vectorPadding = FitData::VectorPadding(fNPoints);
+ fData.resize(fNPoints + vectorPadding);
+ std::copy( fDataPtr, fDataPtr + fNPoints, fData.begin() );
+- fDataPtr = &fData.front();
++ fDataPtr = fData.empty() ? NULL : &fData.front();
+
+ for ( unsigned int i=0; i < fDim; i++ )
+ {
+@@ -785,7 +785,7 @@ namespace ROOT {
+
+ fDataError.resize(fNPoints + vectorPadding);
+ std::copy(fDataErrorPtr, fDataErrorPtr + fNPoints + vectorPadding,
fDataError.begin());
+- fDataErrorPtr = &fDataError.front();
++ fDataErrorPtr = fDataError.empty() ? NULL : &fDataError.front();
+ }
+
+ if ( kValueError == fErrorType )
+@@ -804,7 +804,7 @@ namespace ROOT {
+ assert( fCoordErrorsPtr[i] );
+ fCoordErrors[i].resize(fNPoints + vectorPadding);
+ std::copy(fCoordErrorsPtr[i], fCoordErrorsPtr[i] + fNPoints + vectorPadding,
fCoordErrors[i].begin());
+- fCoordErrorsPtr[i] = &fCoordErrors[i].front();
++ fCoordErrorsPtr[i] = fCoordErrors[i].empty() ? NULL :
&fCoordErrors[i].front();
+ }
+
+ if( kAsymError == fErrorType )
+@@ -817,8 +817,8 @@ namespace ROOT {
+ fDataErrorLow.resize(fNPoints + vectorPadding);
+ std::copy(fDataErrorHighPtr, fDataErrorHighPtr + fNPoints + vectorPadding,
fDataErrorHigh.begin());
+ std::copy(fDataErrorLowPtr, fDataErrorLowPtr + fNPoints + vectorPadding,
fDataErrorLow.begin());
+- fDataErrorHighPtr = &fDataErrorHigh.front();
+- fDataErrorLowPtr = &fDataErrorLow.front();
++ fDataErrorHighPtr = fDataErrorHigh.empty() ? NULL :
&fDataErrorHigh.front();
++ fDataErrorLowPtr = fDataErrorLow.empty() ? NULL : &fDataErrorLow.front();
+ }
+ }
+
+diff --git a/math/mathcore/src/FitData.cxx b/math/mathcore/src/FitData.cxx
+index 76c792dbe66..0b62e607534 100644
+--- a/math/mathcore/src/FitData.cxx
++++ b/math/mathcore/src/FitData.cxx
+@@ -231,7 +231,7 @@ namespace ROOT {
+ fCoordsPtr.resize(fDim);
+
+ for (unsigned int i = 0; i < fDim; i++) {
+- fCoordsPtr[i] = &fCoords[i].front();
++ fCoordsPtr[i] = fCoords[i].empty() ? NULL : &fCoords[i].front();
+ }
+ }
+
+
+From 711cb8598110b774ae7c206c0730b907e7650e2e Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 15 Feb 2018 18:18:35 +0100
+Subject: [PATCH 2/4] Call resize() when the size should be changed, reserve()
+ does not change the size
+
+---
+ math/mathcore/src/TKDTreeBinning.cxx | 2 +-
+ tree/tree/test/TBasket.cxx | 8 ++++----
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/math/mathcore/src/TKDTreeBinning.cxx b/math/mathcore/src/TKDTreeBinning.cxx
+index 09647958dc7..d0b06e1a99f 100644
+--- a/math/mathcore/src/TKDTreeBinning.cxx
++++ b/math/mathcore/src/TKDTreeBinning.cxx
+@@ -241,7 +241,7 @@ void TKDTreeBinning::SetTreeData() {
+
+ void TKDTreeBinning::SetBinsContent() {
+ // Sets the bins' content
+- fBinsContent.reserve(fNBins);
++ fBinsContent.resize(fNBins);
+ for (UInt_t i = 0; i < fNBins; ++i)
+ fBinsContent[i] = fDataBins->GetBucketSize();
+ if ( fDataSize % fNBins != 0 )
+diff --git a/tree/tree/test/TBasket.cxx b/tree/tree/test/TBasket.cxx
+index fba69bd68d0..90eb330f7ee 100644
+--- a/tree/tree/test/TBasket.cxx
++++ b/tree/tree/test/TBasket.cxx
+@@ -102,7 +102,7 @@ TEST(TBasket, CreateAndDestroy)
+ f->Close();
+
+ Long64_t maxsize = f->GetSize();
+- memBuffer.reserve(maxsize);
++ memBuffer.resize(maxsize);
+ f->CopyTo(&memBuffer[0], maxsize);
+
+ delete f;
+@@ -182,7 +182,7 @@ TEST(TBasket, TestUnsupportedIO)
+
+ std::vector<char> memBuffer;
+ Long64_t maxsize = f->GetSize();
+- memBuffer.reserve(maxsize);
++ memBuffer.resize(maxsize);
+ f->CopyTo(&memBuffer[0], maxsize);
+
+ TMemFile f2("tbasket_test.root", &memBuffer[0], maxsize,
"READ");
+@@ -230,7 +230,7 @@ TEST(TBasket, TestVarLengthArrays)
+ f->Close();
+ std::vector<char> memBuffer;
+ Long64_t maxsize = f->GetSize();
+- memBuffer.reserve(maxsize);
++ memBuffer.resize(maxsize);
+ f->CopyTo(&memBuffer[0], maxsize);
+
+ TMemFile f2("tbasket_test.root", &memBuffer[0], maxsize,
"READ");
+@@ -334,7 +334,7 @@ TEST(TBasket, TestSettingIOBits)
+ f->Close();
+ std::vector<char> memBuffer;
+ Long64_t maxsize = f->GetSize();
+- memBuffer.reserve(maxsize);
++ memBuffer.resize(maxsize);
+ f->CopyTo(&memBuffer[0], maxsize);
+
+ TMemFile f2("tbasket_test.root", &memBuffer[0], maxsize,
"READ");
+
+From 8dfcb54ca0457c2e8ae6102bb4a60ac60bd49004 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 15 Feb 2018 18:25:39 +0100
+Subject: [PATCH 3/4] operator[] with an argument that is out of range causes
+ undefined behavior
+
+---
+ math/mathcore/test/binarySearchTime.cxx | 5 ++---
+ math/mathmore/test/testPermute.cxx | 4 ++--
+ 2 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/math/mathcore/test/binarySearchTime.cxx
b/math/mathcore/test/binarySearchTime.cxx
+index c98017a0c55..0a611486489 100644
+--- a/math/mathcore/test/binarySearchTime.cxx
++++ b/math/mathcore/test/binarySearchTime.cxx
+@@ -58,9 +58,8 @@ template <typename T> bool testBinarySearch(const int n, double*
tTMath, double*
+ t.Start();
+ for (int j = 0; j < npass; ++j) {
+ for ( T elem = 0; elem < maxint; ++elem ) {
+- T* pind;
+- pind = std::lower_bound(&k[0], &k[n], elem);
+- Long_t index2 = (((pind != &(k[n])) && (*pind == elem)) ? (pind -
&k[0]): ( pind - &k[0] - 1));
++ auto pind = std::lower_bound(k.begin(), k.end(), elem);
++ Long_t index2 = (((pind != k.end()) && (*pind == elem)) ? (pind -
k.begin()) : (pind - k.begin() - 1));
+ s2+= index2;
+ }
+ }
+diff --git a/math/mathmore/test/testPermute.cxx b/math/mathmore/test/testPermute.cxx
+index b75609b9958..f2a49da2e4d 100644
+--- a/math/mathmore/test/testPermute.cxx
++++ b/math/mathmore/test/testPermute.cxx
+@@ -64,7 +64,7 @@ bool checkPermute()
+ //cout << original << vM << vS << endl;
+
+ while ( TMath::Permute(n, &vM[0]) ) {
+- std::next_permutation(&vS[0], &vS[n]);
++ std::next_permutation(vS.begin(), vS.end());
+ //cout << vM << vS << endl;
+ equals &= equal(vM.begin(), vM.end(), vS.begin());
+ }
+@@ -99,7 +99,7 @@ void permuteTime(const int n, double* tTMath, double* tStd)
+ t.Start();
+ for (int j = 0; j < npass; ++j) {
+ copy(original.begin(), original.end(), v.begin());
+- while ( std::next_permutation(&v[0], &v[n]) ) {}
++ while ( std::next_permutation(v.begin(), v.end()) ) {}
+ }
+ t.Stop();
+ *tStd = t.RealTime();
+
+From 80ba399340167f62368685e0bf03f9cb9a595954 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Thu, 15 Feb 2018 18:27:23 +0100
+Subject: [PATCH 4/4] cut-and-paste errors, I guess...
+
+---
+ math/mathcore/test/testkdTreeBinning.cxx | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/math/mathcore/test/testkdTreeBinning.cxx
b/math/mathcore/test/testkdTreeBinning.cxx
+index 233b083ee5f..193ff1bb3e2 100644
+--- a/math/mathcore/test/testkdTreeBinning.cxx
++++ b/math/mathcore/test/testkdTreeBinning.cxx
+@@ -82,9 +82,9 @@ void testkdTreeBinning() {
+ int ibinMax = kdBins->GetBinMaxDensity();
+
+ std::cout << "Bin with minimum density: " << ibinMin <<
" density = " << kdBins->GetBinDensity(ibinMin) << "
content = " << kdBins->GetBinContent(ibinMin) << std::endl;
+- std::cout << "Bin with maximum density: " << ibinMax <<
" density = " << kdBins->GetBinDensity(ibinMax) << "
content = " << kdBins->GetBinContent(ibinMin) << std::endl;
++ std::cout << "Bin with maximum density: " << ibinMax <<
" density = " << kdBins->GetBinDensity(ibinMax) << "
content = " << kdBins->GetBinContent(ibinMax) << std::endl;
+
+- if (kdBins->GetBinDensity(ibinMax) != DATASZ/NBINS)
++ if (kdBins->GetBinContent(ibinMax) != DATASZ/NBINS)
+ Error("testkdTreeBinning","Wrong bin content");
+
+ // order bins by density
diff --git a/root-test-stress-32bit.patch b/root-test-stress-32bit.patch
new file mode 100644
index 0000000..ce2d370
--- /dev/null
+++ b/root-test-stress-32bit.patch
@@ -0,0 +1,13 @@
+diff --git a/test/stress.cxx b/test/stress.cxx
+index 0f759ad7c2..7c3c9e1b04 100644
+--- a/test/stress.cxx
++++ b/test/stress.cxx
+@@ -385,7 +385,7 @@ void stress3()
+ Long64_t last = f.GetEND();
+ Float_t comp = f.GetCompressionFactor();
+ Bool_t OK = kTRUE;
+- constexpr Long64_t lastgood = 51651;
++ constexpr Long64_t lastgood = 51851;
+ constexpr Long64_t tolerance = 150;
+ if (last <lastgood-tolerance || last > lastgood+tolerance || comp <1.8 ||
comp > 2.4) OK = kFALSE;
+ if (OK) printf("OK\n");
diff --git a/root.spec b/root.spec
index fd25d06..577c43d 100644
--- a/root.spec
+++ b/root.spec
@@ -33,7 +33,7 @@
Name: root
Version: 6.12.04
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Numerical data analysis framework
License: LGPLv2+
@@ -95,6 +95,24 @@ Patch14: %{name}-ppc64-doc.patch
# Fix constructing the GSL MC Integrator
# Backport from upstream git
Patch15: %{name}-Fix-constructing-the-GSL-MC-Integrator.patch
+# Check string is not empty before calling front()
+# Backport from upstream git
+Patch16: %{name}-crash-fix.patch
+# Adjust expected file size for ix32
+# Backport from upstream git
+Patch17: %{name}-test-stress-32bit.patch
+# Fixes for failing tests due to new compiler flags
+#
https://github.com/root-project/root/pull/1638
+Patch18: %{name}-test-fixes.patch
+#
https://github.com/root-project/root/pull/1639
+Patch19: %{name}-out-of-bounds.patch
+# Fix ~ alignment in doxygen markup
+#
https://github.com/root-project/root/pull/1640
+Patch20: %{name}-doxygen-tilde.patch
+# Don't install intermediate static libs (mathtext and minicern)
+# Don't add JupyROOT python extension to cmake exports
+#
https://github.com/root-project/root/pull/1643
+Patch21: %{name}-noinst.patch
# s390x suffers from endian issues resulting in failing tests
# and broken documentation generation
@@ -1660,6 +1678,12 @@ Javascript and style files for the Jupyter ROOT Notebook.
%patch13 -p1
%patch14 -p1
%patch15 -p1
+%patch16 -p1
+%patch17 -p1
+%patch18 -p1
+%patch19 -p1
+%patch20 -p1
+%patch21 -p1
# Remove bundled sources in order to be sure they are not used
# * afterimage
@@ -2095,8 +2119,6 @@ rm %{buildroot}%{_datadir}/%{name}/proof/*.sample
rm -rf %{buildroot}%{_datadir}/%{name}/proof/utils
rm %{buildroot}%{_datadir}/%{name}/root.desktop
rm %{buildroot}%{_datadir}/%{name}/system.plugins-ios
-rm %{buildroot}%{_libdir}/%{name}/libmathtext.a
-rm %{buildroot}%{_libdir}/%{name}/libminicern.a
rm %{buildroot}%{_bindir}/setenvwrap.csh
rm %{buildroot}%{_bindir}/setxrd*
rm %{buildroot}%{_bindir}/thisroot*
@@ -2114,19 +2136,6 @@ rm %{buildroot}%{_pkgdocdir}/INSTALL
rm %{buildroot}%{_pkgdocdir}/README.ALIEN
rm %{buildroot}%{_pkgdocdir}/README.MONALISA
-# Remove references to deleted (or moved) files from cmake files
-for target in mathtext minicern JupyROOT; do
- sed -e "s/ ROOT::${target} / /" \
- -e "/Create imported target ROOT::${target}/,/^$/d" \
- -e "/set_target_properties(ROOT::${target}/,/^$/d" \
- -i %{buildroot}%{_datadir}/%{name}/cmake/ROOTConfig-targets.cmake
- sed -e "/Import target \"ROOT::${target}\"/,/^$/d" \
- -e "/APPEND _IMPORT_CHECK_TARGETS ROOT::${target}/,/^$/d" \
- -i %{buildroot}%{_datadir}/%{name}/cmake/ROOTConfig-targets-*.cmake
-done
-sed -e 's/;ROOT::minicern//' \
- -i %{buildroot}%{_datadir}/%{name}/cmake/ROOTConfig-targets-*.cmake
-
# Only used on Windows
rm %{buildroot}%{_datadir}/%{name}/macros/fileopen.C
@@ -2265,14 +2274,18 @@
excluded="test-stressIOPlugins-.*|tutorial-dataframe-tdf101_h1Analysis|tutorial-
# - mathcore-testMinim
# - minuit2-testMinimizer
# - test-minexam
-# - test-stressfit
+# - test-stressfit (but -interpreted works)
+# Tests failing on arm on Fedora <= 27
# - test-stressiterators-interpreted
# - tutorial-hist-sparsehist
# - tutorial-multicore-mt303_AsyncSimple
# - tutorial-multicore-mt304_AsyncNested
# - tutorial-multicore-mt305_TFuture
# - tutorial-r-*
-excluded="${excluded}|mathcore-testMinim|minuit2-testMinimizer|test-minexam|test-stressfit|test-stressiterators-interpreted|tutorial-hist-sparsehist|tutorial-multicore-mt303_AsyncSimple|tutorial-multicore-mt304_AsyncNested|tutorial-multicore-mt305_TFuture|tutorial-r-.*"
+excluded="${excluded}|mathcore-testMinim|minuit2-testMinimizer|test-minexam|test-stressfit"
+%if %{?fedora}%{!?fedora:0} <= 27 && %{?rhel}%{!?rhel:0} <= 7
+excluded="${excluded}|test-stressiterators-interpreted|tutorial-hist-sparsehist|tutorial-multicore-mt303_AsyncSimple|tutorial-multicore-mt304_AsyncNested|tutorial-multicore-mt305_TFuture|tutorial-r-.*"
+%endif
%endif
%ifarch ppc64
@@ -3375,6 +3388,9 @@ end
%{_datadir}/%{name}/notebook
%changelog
+* Fri Feb 16 2018 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.12.04-4
+- Fix test failures found with new default compiler flags in Fedora 28
+
* Fri Feb 09 2018 Fedora Release Engineering <releng(a)fedoraproject.org> -
6.12.04-3
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
commit 00ff963ffce40493dbbb04bddfe97cc71629df71
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Feb 9 13:14:41 2018 +0000
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/root.spec b/root.spec
index 80e6882..fd25d06 100644
--- a/root.spec
+++ b/root.spec
@@ -33,7 +33,7 @@
Name: root
Version: 6.12.04
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Numerical data analysis framework
License: LGPLv2+
@@ -3375,6 +3375,9 @@ end
%{_datadir}/%{name}/notebook
%changelog
+* Fri Feb 09 2018 Fedora Release Engineering <releng(a)fedoraproject.org> -
6.12.04-3
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
* Sat Jan 20 2018 Björn Esser <besser82(a)fedoraproject.org> - 6.12.04-2
- Rebuilt for switch to libxcrypt
commit 44fa7637ff4f7e91abf050953d7efc15f67eb219
Author: Björn Esser <besser82(a)fedoraproject.org>
Date: Sat Jan 20 23:07:48 2018 +0100
Rebuilt for switch to libxcrypt
diff --git a/root.spec b/root.spec
index b784230..80e6882 100644
--- a/root.spec
+++ b/root.spec
@@ -33,7 +33,7 @@
Name: root
Version: 6.12.04
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Numerical data analysis framework
License: LGPLv2+
@@ -3375,6 +3375,9 @@ end
%{_datadir}/%{name}/notebook
%changelog
+* Sat Jan 20 2018 Björn Esser <besser82(a)fedoraproject.org> - 6.12.04-2
+- Rebuilt for switch to libxcrypt
+
* Tue Dec 19 2017 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.12.04-1
- Update to 6.12.04
- Drop patches accepted upstream