root: 6.08.02 -> 6.09.02

This also fixes breakage on darwin due to LLVM4.0 migration.

I had to enable opengl because otherwise macOS build is broken.
See root commit 23f8871c7 ('Do not include OpenGL directly but use our
TGLIncludes for that purpose.')

I've enabled xml because TUnfold depends on it.
This commit is contained in:
Dmitry Kalinkin 2017-04-25 23:28:13 -04:00
parent 5dd731b801
commit be9c0e8b7e
No known key found for this signature in database
GPG key ID: 5157B3EC8B2CA333
4 changed files with 218 additions and 10 deletions

View file

@ -0,0 +1,200 @@
diff --git a/core/base/inc/ROOT/StringConv.hxx b/core/base/inc/ROOT/StringConv.hxx
index 629fc18..4efa54a 100644
--- a/core/base/inc/ROOT/StringConv.hxx
+++ b/core/base/inc/ROOT/StringConv.hxx
@@ -89,7 +89,7 @@ EFromHumanReadableSize FromHumanReadableSize(std::string_view str, T &value)
size_t size = str.size();
size_t cur;
// Parse leading numeric factor
- const double coeff = stod(str, &cur);
+ const double coeff = stod(static_cast<std::string>(str), &cur);
// Skip any intermediate white space
while (cur<size && isspace(str[cur])) ++cur;
diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx
index d71cb74..076facb 100644
--- a/core/metacling/src/TCling.cxx
+++ b/core/metacling/src/TCling.cxx
@@ -756,7 +756,7 @@ int TCling_GenerateDictionary(const std::vector<std::string> &classes,
gSystem->PrependPathName(dirbase, header);
dir = gSystem->DirName(dir);
}
- fileContent += TString("#include \"") + header + "\"\n";
+ fileContent += (TString("#include \"") + header + "\"\n").Data();
}
}
for (it = fwdDecls.begin(); it != fwdDecls.end(); ++it) {
@@ -1061,7 +1061,7 @@ TCling::TCling(const char *name, const char *title)
ROOT::TMetaUtils::SetPathsForRelocatability(clingArgsStorage);
// Add -I early so ASTReader can find the headers.
- std::string interpInclude(TROOT::GetEtcDir());
+ std::string interpInclude(TROOT::GetEtcDir().Data());
clingArgsStorage.push_back("-I" + interpInclude);
// Add include path to etc/cling. FIXME: This is a short term solution. The
@@ -1070,7 +1070,7 @@ TCling::TCling(const char *name, const char *title)
clingArgsStorage.push_back("-I" + interpInclude + "/cling");
// Add the root include directory and etc/ to list searched by default.
- clingArgsStorage.push_back(std::string("-I" + TROOT::GetIncludeDir()));
+ clingArgsStorage.push_back(std::string(("-I" + TROOT::GetIncludeDir()).Data()));
// Add the current path to the include path
// TCling::AddIncludePath(".");
diff --git a/hist/hist/src/TFormula.cxx b/hist/hist/src/TFormula.cxx
index abf3929..e7dad98 100644
--- a/hist/hist/src/TFormula.cxx
+++ b/hist/hist/src/TFormula.cxx
@@ -1677,7 +1677,7 @@ void TFormula::ProcessFormula(TString &formula)
if(fun.fName.Contains("::")) // add support for nested namespaces
{
// look for last occurence of "::"
- std::string name(fun.fName);
+ std::string name(fun.fName.Data());
size_t index = name.rfind("::");
assert(index != std::string::npos);
TString className = fun.fName(0,fun.fName(0,index).Length());
@@ -1869,7 +1869,7 @@ void TFormula::ProcessFormula(TString &formula)
// save copy of inputFormula in a std::strig for the unordered map
// and also formula is same as FClingInput typically and it will be modified
- std::string inputFormula = std::string(formula);
+ std::string inputFormula = std::string(formula.Data());
// valid input formula - try to put into Cling
diff --git a/main/src/nbmain.cxx b/main/src/nbmain.cxx
index 55d4f2f..8490149 100644
--- a/main/src/nbmain.cxx
+++ b/main/src/nbmain.cxx
@@ -173,9 +173,9 @@ static bool CreateStamp(string dest)
int main()
{
- string rootbin(TROOT::GetBinDir());
- string rootlib(TROOT::GetLibDir());
- string rootetc(TROOT::GetEtcDir());
+ string rootbin(TROOT::GetBinDir().Data());
+ string rootlib(TROOT::GetLibDir().Data());
+ string rootetc(TROOT::GetEtcDir().Data());
// If needed, install ROOT notebook files in the user's home directory
#ifdef WIN32
diff --git a/math/minuit/src/TMinuitMinimizer.cxx b/math/minuit/src/TMinuitMinimizer.cxx
index 4e2082a..18215c0 100644
--- a/math/minuit/src/TMinuitMinimizer.cxx
+++ b/math/minuit/src/TMinuitMinimizer.cxx
@@ -454,7 +454,7 @@ std::string TMinuitMinimizer::VariableName(unsigned int ivar) const {
// return the variable name
if (!CheckMinuitInstance()) return std::string();
if (!CheckVarIndex(ivar)) return std::string();
- return std::string(fMinuit->fCpnam[ivar]);
+ return std::string(fMinuit->fCpnam[ivar].Data());
}
int TMinuitMinimizer::VariableIndex(const std::string & ) const {
diff --git a/tmva/tmva/src/Factory.cxx b/tmva/tmva/src/Factory.cxx
index 36060ef..a1bbe34 100644
--- a/tmva/tmva/src/Factory.cxx
+++ b/tmva/tmva/src/Factory.cxx
@@ -390,7 +390,7 @@ TMVA::MethodBase* TMVA::Factory::BookMethod( TMVA::DataLoader *loader, TString t
// initialize methods
IMethod* im;
if (!boostNum) {
- im = ClassifierFactory::Instance().Create( std::string(theMethodName),
+ im = ClassifierFactory::Instance().Create( std::string(theMethodName.Data()),
fJobName,
methodTitle,
loader->DefaultDataSetInfo(),
@@ -933,7 +933,7 @@ void TMVA::Factory::TrainAllMethods()
// recreate
m = dynamic_cast<MethodBase*>( ClassifierFactory::Instance()
- .Create( std::string(Types::Instance().GetMethodName(methodType)),
+ .Create( std::string(Types::Instance().GetMethodName(methodType).Data()),
dataSetInfo, weightfile ) );
if( m->GetMethodType() == Types::kCategory ){
MethodCategory *methCat = (dynamic_cast<MethodCategory*>(m));
diff --git a/tmva/tmva/src/MethodBoost.cxx b/tmva/tmva/src/MethodBoost.cxx
index 1349e5d..2125ab3 100644
--- a/tmva/tmva/src/MethodBoost.cxx
+++ b/tmva/tmva/src/MethodBoost.cxx
@@ -389,7 +389,7 @@ void TMVA::MethodBoost::Train()
// the first classifier shows the option string output, the rest not
if (fCurrentMethodIdx>0) TMVA::MsgLogger::InhibitOutput();
- IMethod* method = ClassifierFactory::Instance().Create(std::string(fBoostedMethodName),
+ IMethod* method = ClassifierFactory::Instance().Create(std::string(fBoostedMethodName.Data()),
GetJobName(),
Form("%s_B%04i", fBoostedMethodTitle.Data(),fCurrentMethodIdx),
DataInfo(),
diff --git a/tmva/tmva/src/MethodCategory.cxx b/tmva/tmva/src/MethodCategory.cxx
index c2cbe80..d278cca 100644
--- a/tmva/tmva/src/MethodCategory.cxx
+++ b/tmva/tmva/src/MethodCategory.cxx
@@ -147,7 +147,7 @@ TMVA::IMethod* TMVA::MethodCategory::AddMethod( const TCut& theCut,
const TString& theTitle,
const TString& theOptions )
{
- std::string addedMethodName = std::string(Types::Instance().GetMethodName(theMethod));
+ std::string addedMethodName = std::string(Types::Instance().GetMethodName(theMethod).Data());
Log() << kINFO << "Adding sub-classifier: " << addedMethodName << "::" << theTitle << Endl;
diff --git a/tmva/tmva/src/MethodCompositeBase.cxx b/tmva/tmva/src/MethodCompositeBase.cxx
index 98fa5da..96bd9a3 100644
--- a/tmva/tmva/src/MethodCompositeBase.cxx
+++ b/tmva/tmva/src/MethodCompositeBase.cxx
@@ -194,7 +194,7 @@ void TMVA::MethodCompositeBase::ReadWeightsFromXML( void* wghtnode )
((TMVA::MethodBoost*)this)->BookMethod( Types::Instance().GetMethodType( methodTypeName), methodName, optionString );
}
fMethods.push_back(ClassifierFactory::Instance().Create(
- std::string(methodTypeName),jobName, methodName,DataInfo(),optionString));
+ std::string(methodTypeName.Data()),jobName, methodName,DataInfo(),optionString));
fMethodWeight.push_back(methodWeight);
MethodBase* meth = dynamic_cast<MethodBase*>(fMethods.back());
@@ -259,7 +259,7 @@ void TMVA::MethodCompositeBase::ReadWeightsFromStream( std::istream& istr )
((TMVA::MethodBoost*)this)->BookMethod( Types::Instance().GetMethodType( methodName), methodTitle, optionString );
}
else methodTitle=Form("%s (%04i)",GetMethodName().Data(),fCurrentMethodIdx);
- fMethods.push_back(ClassifierFactory::Instance().Create( std::string(methodName), jobName,
+ fMethods.push_back(ClassifierFactory::Instance().Create( std::string(methodName.Data()), jobName,
methodTitle,DataInfo(), optionString) );
fMethodWeight.push_back( methodWeight );
if(MethodBase* m = dynamic_cast<MethodBase*>(fMethods.back()) )
diff --git a/tmva/tmva/src/Reader.cxx b/tmva/tmva/src/Reader.cxx
index 94a8b28..0b67867 100644
--- a/tmva/tmva/src/Reader.cxx
+++ b/tmva/tmva/src/Reader.cxx
@@ -401,7 +401,7 @@ TMVA::IMethod* TMVA::Reader::BookMVA( const TString& methodTag, const TString& w
TMVA::IMethod* TMVA::Reader::BookMVA( TMVA::Types::EMVA methodType, const TString& weightfile )
{
- IMethod* im = ClassifierFactory::Instance().Create(std::string(Types::Instance().GetMethodName( methodType )),
+ IMethod* im = ClassifierFactory::Instance().Create(std::string(Types::Instance().GetMethodName( methodType ).Data()),
DataInfo(), weightfile );
MethodBase *method = (dynamic_cast<MethodBase*>(im));
@@ -440,7 +440,7 @@ TMVA::IMethod* TMVA::Reader::BookMVA( TMVA::Types::EMVA methodType, const char*
#if ROOT_VERSION_CODE >= ROOT_VERSION(5,26,00)
// books MVA method from weightfile
- IMethod* im = ClassifierFactory::Instance().Create(std::string(Types::Instance().GetMethodName( methodType )),
+ IMethod* im = ClassifierFactory::Instance().Create(std::string(Types::Instance().GetMethodName( methodType ).Data()),
DataInfo(), "" );
MethodBase *method = (dynamic_cast<MethodBase*>(im));
diff -aru a/core/base/inc/TString.h b/core/base/inc/TString.h
--- a/core/base/inc/TString.h
+++ b/core/base/inc/TString.h
@@ -106,7 +106,7 @@
char operator[](Ssiz_t i) const; // Index with bounds checking
operator std::string_view() const { return std::string_view(Data(),fExtent); }
- operator std::string() const { return std::string_view(Data(),fExtent).to_string(); }
+ operator std::string() const { return static_cast<std::string>(std::string_view(Data(),fExtent)); }
const char *Data() const;
Ssiz_t Length() const { return fExtent; }

View file

@ -1,18 +1,19 @@
{ stdenv, fetchurl, fetchpatch, cmake, pcre, pkgconfig, python2
, libX11, libXpm, libXft, libXext, zlib, lzma, gsl, Cocoa }:
, libX11, libXpm, libXft, libXext, mesa, zlib, libxml2, lzma, gsl
, Cocoa, OpenGL }:
stdenv.mkDerivation rec {
name = "root-${version}";
version = "6.08.02";
version = "6.09.02";
src = fetchurl {
url = "https://root.cern.ch/download/root_v${version}.source.tar.gz";
sha256 = "0530v1r4rvds52hgb13f00l3phhn76z6vii550mwv8bj3sl5070k";
sha256 = "0fc6b0l7bw66cyckxs4ikvyzcv1zlfx88205jx153smdhih0jj2k";
};
buildInputs = [ cmake pcre pkgconfig python2 zlib lzma gsl ]
++ stdenv.lib.optionals (!stdenv.isDarwin) [ libX11 libXpm libXft libXext ]
++ stdenv.lib.optionals (stdenv.isDarwin) [ Cocoa ]
buildInputs = [ cmake pcre pkgconfig python2 zlib libxml2 lzma gsl ]
++ stdenv.lib.optionals (!stdenv.isDarwin) [ libX11 libXpm libXft libXext mesa ]
++ stdenv.lib.optionals (stdenv.isDarwin) [ Cocoa OpenGL ]
;
patches = [
@ -20,6 +21,13 @@ stdenv.mkDerivation rec {
# this prevents thisroot.sh from setting $p, which interferes with stdenv setup
./thisroot.patch
# https://sft.its.cern.ch/jira/browse/ROOT-8728
(fetchpatch {
url = "https://sft.its.cern.ch/jira/secure/attachment/20025/0001-std-string_view-has-no-more-to_string.patch";
sha256 = "0ngyk960xfrcsj4vhr1ax8h85fx0g1cfycxi3k35a6ych2zmyg8q";
})
./ROOT-8728-extra.patch
];
preConfigure = ''
@ -47,7 +55,7 @@ stdenv.mkDerivation rec {
"-Dmonalisa=OFF"
"-Dmysql=OFF"
"-Dodbc=OFF"
"-Dopengl=OFF"
"-Dopengl=ON"
"-Doracle=OFF"
"-Dpgsql=OFF"
"-Dpythia6=OFF"
@ -55,7 +63,7 @@ stdenv.mkDerivation rec {
"-Drfio=OFF"
"-Dsqlite=OFF"
"-Dssl=OFF"
"-Dxml=OFF"
"-Dxml=ON"
"-Dxrootd=OFF"
]
++ stdenv.lib.optional (stdenv.cc.libc != null) "-DC_INCLUDE_DIRS=${stdenv.lib.getDev stdenv.cc.libc}/include";

View file

@ -25,7 +25,7 @@ diff --git a/cmake/modules/SetUpMacOS.cmake b/cmake/modules/SetUpMacOS.cmake
- COMMAND cut -d . -f 2
- OUTPUT_VARIABLE MACOSX_MINOR OUTPUT_STRIP_TRAILING_WHITESPACE)
-
- if(MACOSX_VERSION VERSION_GREATER 10.7 AND ${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
- if(MACOSX_VERSION VERSION_GREATER 10.7 AND ${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
set(libcxx ON CACHE BOOL "Build using libc++" FORCE)
- endif()

View file

@ -17789,7 +17789,7 @@ with pkgs;
megam = callPackage ../applications/science/misc/megam { };
root = callPackage ../applications/science/misc/root {
inherit (darwin.apple_sdk.frameworks) Cocoa;
inherit (darwin.apple_sdk.frameworks) Cocoa OpenGL;
};
simgrid = callPackage ../applications/science/misc/simgrid { };