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=50233814adafdb08....
Change: +%ifarch %{ix86} %{arm}
Thanks.
Full change: ============
commit 50233814adafdb08adf09448357d94abd3882b92 Author: Mattias Ellert mattias.ellert@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@fedoraproject.org - 6.12.04-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
commit 00ff963ffce40493dbbb04bddfe97cc71629df71 Author: Fedora Release Engineering releng@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@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@fedoraproject.org - 6.12.04-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + * Sat Jan 20 2018 Björn Esser besser82@fedoraproject.org - 6.12.04-2 - Rebuilt for switch to libxcrypt
commit 44fa7637ff4f7e91abf050953d7efc15f67eb219 Author: Björn Esser besser82@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@fedoraproject.org - 6.12.04-2 +- Rebuilt for switch to libxcrypt + * Tue Dec 19 2017 Mattias Ellert mattias.ellert@physics.uu.se - 6.12.04-1 - Update to 6.12.04 - Drop patches accepted upstream