From 7236b9af3ce2af0763375f1f93dac43731e5dad1 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Jun 16 2017 08:45:49 +0000 Subject: Update to 6.10.00 Drop patches accepted upstream Drop previously backported patches New sub-package: root-unfold Dropped sub-package: root-vdt --- diff --git a/root-32bit.patch b/root-32bit.patch deleted file mode 100644 index 75a9eae..0000000 --- a/root-32bit.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/math/mathmore/test/testSpecFunc.cxx b/math/mathmore/test/testSpecFunc.cxx -index d768160..8c223ee 100644 ---- a/math/mathmore/test/testSpecFunc.cxx -+++ b/math/mathmore/test/testSpecFunc.cxx -@@ -186,7 +186,7 @@ int testSpecFunc() { - - iret |= compare("hyperg(8, -8, 1, 0.5) ", hyperg(8, -8, 1, 0.5), 0.13671875); - -- iret |= compare("laguerre(4, 1.) ", laguerre(4, 1.), -0.6250); // need to find more precise value -+ iret |= compare("laguerre(4, 1.) ", laguerre(4, 1.), -0.6250, 4); // need to find more precise value - - iret |= compare("legendre(10, -0.5) ", legendre(10, -0.5), -0.1882286071777345); - -diff --git a/test/stressMathCore.cxx b/test/stressMathCore.cxx -index 1006dd1..b862f36 100644 ---- a/test/stressMathCore.cxx -+++ b/test/stressMathCore.cxx -@@ -1117,7 +1117,7 @@ int testVector(int ngen, bool testio=false) { - - s1 = a.testOperations(v1); a.print(VecType::name()+" operations"); - scale = Dim*20; -- if (Dim==3 && VecType::name() == "RhoEtaPhiVector") scale *= 10; // for problem with RhoEtaPhi -+ if (Dim==3 && VecType::name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi - if (Dim==4 && VecType::name() == "PtEtaPhiMVector") scale *= 10; - #if defined (R__LINUX) && !defined(R__B64) - // problem of precision on linux 32 diff --git a/root-Quantiles.patch b/root-Quantiles.patch deleted file mode 100644 index 580314a..0000000 --- a/root-Quantiles.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/math/mathcore/src/TMath.cxx b/math/mathcore/src/TMath.cxx -index 942bb55..72618fc 100644 ---- a/math/mathcore/src/TMath.cxx -+++ b/math/mathcore/src/TMath.cxx -@@ -1210,7 +1210,9 @@ void TMath::Quantiles(Int_t n, Int_t nprob, Double_t *x, Double_t *quantiles, Do - else - nppm = n*prob[i]; // use m = 0 - -- j = TMath::FloorNint(nppm); -+ // be careful with machine precision -+ double eps = 4 * TMath::Limits::Epsilon(); -+ j = TMath::FloorNint(nppm + eps); - - // LM : fix for numerical problems if nppm is actually equal to j, but results different for numerical error - // g in the paper is nppm -j diff --git a/root-TPad-WaitPrimitive.patch b/root-TPad-WaitPrimitive.patch deleted file mode 100644 index ca329e3..0000000 --- a/root-TPad-WaitPrimitive.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/graf2d/gpad/src/TPad.cxx b/graf2d/gpad/src/TPad.cxx -index 2b2b5b8..6efeec5 100644 ---- a/graf2d/gpad/src/TPad.cxx -+++ b/graf2d/gpad/src/TPad.cxx -@@ -6312,6 +6312,8 @@ void TPad::UseCurrentStyle() - - TObject *TPad::WaitPrimitive(const char *pname, const char *emode) - { -+ if (!gPad) return 0; -+ - if (strlen(emode)) gROOT->SetEditorMode(emode); - if (gROOT->GetEditorMode() == 0 && strlen(pname) > 2) gROOT->SetEditorMode(&pname[1]); - -@@ -6323,7 +6325,7 @@ TObject *TPad::WaitPrimitive(const char *pname, const char *emode) - Bool_t hasname = strlen(pname) > 0; - if (!pname[0] && !emode[0]) testlast = kTRUE; - if (testlast) gROOT->SetEditorMode(); -- while (!gSystem->ProcessEvents()) { -+ while (!gSystem->ProcessEvents() && gPad) { - if (gROOT->GetEditorMode() == 0) { - if (hasname) { - obj = FindObject(pname); diff --git a/root-aarch64.patch b/root-aarch64.patch deleted file mode 100644 index 268f37b..0000000 --- a/root-aarch64.patch +++ /dev/null @@ -1,196 +0,0 @@ -diff --git a/interpreter/llvm/src/include/llvm/Object/ELFObjectFile.h b/interpreter/llvm/src/include/llvm/Object/ELFObjectFile.h -index 6dcd2d4..bafbd36 100644 ---- a/interpreter/llvm/src/include/llvm/Object/ELFObjectFile.h -+++ b/interpreter/llvm/src/include/llvm/Object/ELFObjectFile.h -@@ -905,7 +905,7 @@ unsigned ELFObjectFile::getArch() const { - case ELF::EM_X86_64: - return Triple::x86_64; - case ELF::EM_AARCH64: -- return Triple::aarch64; -+ return IsLittleEndian ? Triple::aarch64 : Triple::aarch64_be; - case ELF::EM_ARM: - return Triple::arm; - case ELF::EM_AVR: -diff --git a/interpreter/llvm/src/include/llvm/Object/RelocVisitor.h b/interpreter/llvm/src/include/llvm/Object/RelocVisitor.h -index 5e0df98..b59e8ec 100644 ---- a/interpreter/llvm/src/include/llvm/Object/RelocVisitor.h -+++ b/interpreter/llvm/src/include/llvm/Object/RelocVisitor.h -@@ -86,6 +86,7 @@ private: - return RelocToApply(); - } - case Triple::aarch64: -+ case Triple::aarch64_be: - switch (RelocType) { - case llvm::ELF::R_AARCH64_ABS32: - return visitELF_AARCH64_ABS32(R, Value); -diff --git a/interpreter/llvm/src/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp b/interpreter/llvm/src/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp -index f2a46b8..9e306bb 100644 ---- a/interpreter/llvm/src/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp -+++ b/interpreter/llvm/src/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp -@@ -309,6 +309,8 @@ void RuntimeDyldELF::resolveAArch64Relocation(const SectionEntry &Section, - uint32_t *TargetPtr = - reinterpret_cast(Section.getAddressWithOffset(Offset)); - uint64_t FinalAddress = Section.getLoadAddressWithOffset(Offset); -+ // Data should use target endian. Code should always use little endian. -+ bool isBE = Arch == Triple::aarch64_be; - - DEBUG(dbgs() << "resolveAArch64Relocation, LocalAddress: 0x" - << format("%llx", Section.getAddressWithOffset(Offset)) -@@ -324,14 +326,22 @@ void RuntimeDyldELF::resolveAArch64Relocation(const SectionEntry &Section, - case ELF::R_AARCH64_ABS64: { - uint64_t *TargetPtr = - reinterpret_cast(Section.getAddressWithOffset(Offset)); -- *TargetPtr = Value + Addend; -+ if (isBE) -+ support::ubig64_t::ref{TargetPtr} = Value + Addend; -+ else -+ support::ulittle64_t::ref{TargetPtr} = Value + Addend; - break; - } - case ELF::R_AARCH64_PREL32: { - uint64_t Result = Value + Addend - FinalAddress; - assert(static_cast(Result) >= INT32_MIN && - static_cast(Result) <= UINT32_MAX); -- *TargetPtr = static_cast(Result & 0xffffffffU); -+ if (isBE) -+ support::ubig32_t::ref{TargetPtr} = -+ static_cast(Result & 0xffffffffU); -+ else -+ support::ulittle32_t::ref{TargetPtr} = -+ static_cast(Result & 0xffffffffU); - break; - } - case ELF::R_AARCH64_CALL26: // fallthrough -@@ -339,6 +349,7 @@ void RuntimeDyldELF::resolveAArch64Relocation(const SectionEntry &Section, - // Operation: S+A-P. Set Call or B immediate value to bits fff_fffc of the - // calculation. - uint64_t BranchImm = Value + Addend - FinalAddress; -+ uint32_t TargetValue = support::ulittle32_t::ref{TargetPtr}; - - // "Check that -2^27 <= result < 2^27". - assert(isInt<28>(BranchImm)); -@@ -352,91 +363,105 @@ void RuntimeDyldELF::resolveAArch64Relocation(const SectionEntry &Section, - } - case ELF::R_AARCH64_MOVW_UABS_G3: { - uint64_t Result = Value + Addend; -+ uint32_t TargetValue = support::ulittle32_t::ref{TargetPtr}; - - // AArch64 code is emitted with .rela relocations. The data already in any - // bits affected by the relocation on entry is garbage. -- *TargetPtr &= 0xffe0001fU; -+ TargetValue &= 0xffe0001fU; - // Immediate goes in bits 20:5 of MOVZ/MOVK instruction -- *TargetPtr |= Result >> (48 - 5); -+ TargetValue |= ((Result & 0xffff000000000000ULL) >> (48 - 5)); - // Shift must be "lsl #48", in bits 22:21 -- assert((*TargetPtr >> 21 & 0x3) == 3 && "invalid shift for relocation"); -+ assert((TargetValue >> 21 & 0x3) == 3 && "invalid shift for relocation"); -+ support::ulittle32_t::ref{TargetPtr} = TargetValue; - break; - } - case ELF::R_AARCH64_MOVW_UABS_G2_NC: { - uint64_t Result = Value + Addend; -+ uint32_t TargetValue = support::ulittle32_t::ref{TargetPtr}; - - // AArch64 code is emitted with .rela relocations. The data already in any - // bits affected by the relocation on entry is garbage. -- *TargetPtr &= 0xffe0001fU; -+ TargetValue &= 0xffe0001fU; - // Immediate goes in bits 20:5 of MOVZ/MOVK instruction -- *TargetPtr |= ((Result & 0xffff00000000ULL) >> (32 - 5)); -+ TargetValue |= ((Result & 0xffff00000000ULL) >> (32 - 5)); - // Shift must be "lsl #32", in bits 22:21 -- assert((*TargetPtr >> 21 & 0x3) == 2 && "invalid shift for relocation"); -+ assert((TargetValue >> 21 & 0x3) == 2 && "invalid shift for relocation"); -+ support::ulittle32_t::ref{TargetPtr} = TargetValue; - break; - } - case ELF::R_AARCH64_MOVW_UABS_G1_NC: { - uint64_t Result = Value + Addend; -+ uint32_t TargetValue = support::ulittle32_t::ref{TargetPtr}; - - // AArch64 code is emitted with .rela relocations. The data already in any - // bits affected by the relocation on entry is garbage. -- *TargetPtr &= 0xffe0001fU; -+ TargetValue &= 0xffe0001fU; - // Immediate goes in bits 20:5 of MOVZ/MOVK instruction -- *TargetPtr |= ((Result & 0xffff0000U) >> (16 - 5)); -+ TargetValue |= ((Result & 0xffff0000U) >> (16 - 5)); - // Shift must be "lsl #16", in bits 22:2 -- assert((*TargetPtr >> 21 & 0x3) == 1 && "invalid shift for relocation"); -+ assert((TargetValue >> 21 & 0x3) == 1 && "invalid shift for relocation"); -+ support::ulittle32_t::ref{TargetPtr} = TargetValue; - break; - } - case ELF::R_AARCH64_MOVW_UABS_G0_NC: { - uint64_t Result = Value + Addend; -+ uint32_t TargetValue = support::ulittle32_t::ref{TargetPtr}; - - // AArch64 code is emitted with .rela relocations. The data already in any - // bits affected by the relocation on entry is garbage. -- *TargetPtr &= 0xffe0001fU; -+ TargetValue &= 0xffe0001fU; - // Immediate goes in bits 20:5 of MOVZ/MOVK instruction -- *TargetPtr |= ((Result & 0xffffU) << 5); -+ TargetValue |= ((Result & 0xffffU) << 5); - // Shift must be "lsl #0", in bits 22:21. -- assert((*TargetPtr >> 21 & 0x3) == 0 && "invalid shift for relocation"); -+ assert((TargetValue >> 21 & 0x3) == 0 && "invalid shift for relocation"); -+ support::ulittle32_t::ref{TargetPtr} = TargetValue; - break; - } - case ELF::R_AARCH64_ADR_PREL_PG_HI21: { - // Operation: Page(S+A) - Page(P) - uint64_t Result = - ((Value + Addend) & ~0xfffULL) - (FinalAddress & ~0xfffULL); -+ uint32_t TargetValue = support::ulittle32_t::ref{TargetPtr}; - - // Check that -2^32 <= X < 2^32 - assert(isInt<33>(Result) && "overflow check failed for relocation"); - - // AArch64 code is emitted with .rela relocations. The data already in any - // bits affected by the relocation on entry is garbage. -- *TargetPtr &= 0x9f00001fU; -+ TargetValue &= 0x9f00001fU; - // Immediate goes in bits 30:29 + 5:23 of ADRP instruction, taken - // from bits 32:12 of X. -- *TargetPtr |= ((Result & 0x3000U) << (29 - 12)); -- *TargetPtr |= ((Result & 0x1ffffc000ULL) >> (14 - 5)); -+ TargetValue |= ((Result & 0x3000U) << (29 - 12)); -+ TargetValue |= ((Result & 0x1ffffc000ULL) >> (14 - 5)); -+ support::ulittle32_t::ref{TargetPtr} = TargetValue; - break; - } - case ELF::R_AARCH64_LDST32_ABS_LO12_NC: { - // Operation: S + A - uint64_t Result = Value + Addend; -+ uint32_t TargetValue = support::ulittle32_t::ref{TargetPtr}; - - // AArch64 code is emitted with .rela relocations. The data already in any - // bits affected by the relocation on entry is garbage. -- *TargetPtr &= 0xffc003ffU; -+ TargetValue &= 0xffc003ffU; - // Immediate goes in bits 21:10 of LD/ST instruction, taken - // from bits 11:2 of X -- *TargetPtr |= ((Result & 0xffc) << (10 - 2)); -+ TargetValue |= ((Result & 0xffc) << (10 - 2)); -+ support::ulittle32_t::ref{TargetPtr} = TargetValue; - break; - } - case ELF::R_AARCH64_LDST64_ABS_LO12_NC: { - // Operation: S + A - uint64_t Result = Value + Addend; -+ uint32_t TargetValue = support::ulittle32_t::ref{TargetPtr}; - - // AArch64 code is emitted with .rela relocations. The data already in any - // bits affected by the relocation on entry is garbage. -- *TargetPtr &= 0xffc003ffU; -+ TargetValue &= 0xffc003ffU; - // Immediate goes in bits 21:10 of LD/ST instruction, taken - // from bits 11:3 of X -- *TargetPtr |= ((Result & 0xff8) << (10 - 3)); -+ TargetValue |= ((Result & 0xff8) << (10 - 3)); -+ support::ulittle32_t::ref{TargetPtr} = TargetValue; - break; - } - } diff --git a/root-cache-test.patch b/root-cache-test.patch deleted file mode 100644 index 3af6575..0000000 --- a/root-cache-test.patch +++ /dev/null @@ -1,321 +0,0 @@ -diff --git a/hist/histpainter/src/THistPainter.cxx b/hist/histpainter/src/THistPainter.cxx -index 778381a..e9701c6 100644 ---- a/hist/histpainter/src/THistPainter.cxx -+++ b/hist/histpainter/src/THistPainter.cxx -@@ -2264,8 +2264,8 @@ Begin_Macro(source) - Double_t lat2 = 50; - TH2Poly *p = new TH2Poly("USA","USA Population",lon1,lon2,lat1,lat2); - -- TFile *f; -- f = TFile::Open("http://root.cern.ch/files/usa.root"); -+ TFile::SetCacheFileDir("."); -+ TFile *f = TFile::Open("http://root.cern.ch/files/usa.root", "CACHEREAD"); - - TMultiGraph *mg; - TKey *key; -diff --git a/test/stressGraphics.cxx b/test/stressGraphics.cxx -index c734bf6..a95b226 100644 ---- a/test/stressGraphics.cxx -+++ b/test/stressGraphics.cxx -@@ -1984,7 +1984,8 @@ void th2poly() - Double_t lat2 = 50; - TH2Poly *p = new TH2Poly("USA","USA Population",lon1,lon2,lat1,lat2); - -- TFile *f = TFile::Open("http://root.cern.ch/files/usa.root"); -+ TFile::SetCacheFileDir("."); -+ TFile *f = TFile::Open("http://root.cern.ch/files/usa.root", "CACHEREAD"); - - if (!f) { - printf("Cannot access usa.root. Is internet working ?\n"); -diff --git a/test/stressHistogram.cxx b/test/stressHistogram.cxx -index 25f2c59..f6a3c67 100644 ---- a/test/stressHistogram.cxx -+++ b/test/stressHistogram.cxx -@@ -10167,7 +10167,8 @@ int stressHistogram() - refFile = TFile::Open(refFileName, "RECREATE"); - } - else { -- refFile = TFile::Open(refFileName); -+ TFile::SetCacheFileDir("."); -+ refFile = TFile::Open(refFileName, "CACHEREAD"); - } - - if ( refFile != 0 ) { -diff --git a/test/stressRooFit.cxx b/test/stressRooFit.cxx -index 8256069..fe2a3e1 100644 ---- a/test/stressRooFit.cxx -+++ b/test/stressRooFit.cxx -@@ -78,10 +78,11 @@ Int_t stressRooFit(const char* refFile, Bool_t writeRef, Int_t doVerbose, Int_t - cout << "stressRooFit ERROR: reference file must be local file in writing mode" << endl ; - return 1; - } -- fref = new TWebFile(refFile) ; -+ TFile::SetCacheFileDir("."); -+ fref = TFile::Open(refFile,"CACHEREAD") ; - //std::cout << "using WEB file " << refFile << std::endl; - } else { -- fref = new TFile(refFile,writeRef?"RECREATE":"") ; -+ fref = TFile::Open(refFile,writeRef?"RECREATE":"") ; - //std::cout << "using file " << refFile << std::endl; - } - if (fref->IsZombie()) { -diff --git a/test/stressTMVA.cxx b/test/stressTMVA.cxx -index 23f522c..128024a 100644 ---- a/test/stressTMVA.cxx -+++ b/test/stressTMVA.cxx -@@ -2020,21 +2020,15 @@ void MethodUnitTestWithROCLimits::run() - dataloader->AddVariable( _VariableNames->at(3), "Variable 4", "units", 'F' ); - - TFile* input(0); -- - FileStat_t stat; - -- TString fname = "../tmva/test/data/toy_sigbkg.root"; //tmva_example.root"; -- const char *fcname = gSystem->ExpandPathName("$ROOTSYS/tmva/test/data/toy_sigbkg.root"); -+ TString fname = "./tmva_class_example.root"; - if(!gSystem->GetPathInfo(fname,stat)) { - input = TFile::Open( fname ); -- } else if(!gSystem->GetPathInfo("../"+fname,stat)) { -- input = TFile::Open( "../"+fname ); -- } else if(fcname && !gSystem->GetPathInfo(fcname,stat)) { -- input = TFile::Open( fcname ); - } else { -- input = TFile::Open( "http://root.cern.ch/files/tmva_class_example.root" ); -+ TFile::SetCacheFileDir("."); -+ input = TFile::Open("http://root.cern.ch/files/tmva_class_example.root", "CACHEREAD"); - } -- delete [] fcname; - if (input == NULL) { - cerr << "broken/inaccessible input file" << endl; - } -@@ -2451,14 +2445,12 @@ void RegressionUnitTestWithDeviation::run() - TFile* input(0); - FileStat_t stat; - -- // FIXME:: give the filename of the sample somewhere else? -- TString fname = "../tmva/test/tmva_reg_example.root"; -+ TString fname = "./tmva_reg_example.root"; - if(!gSystem->GetPathInfo(fname,stat)) { - input = TFile::Open( fname ); -- } else if(!gSystem->GetPathInfo("../"+fname,stat)) { -- input = TFile::Open( "../"+fname ); - } else { -- input = TFile::Open( "http://root.cern.ch/files/tmva_reg_example.root" ); -+ TFile::SetCacheFileDir("."); -+ input = TFile::Open("http://root.cern.ch/files/tmva_reg_example.root", "CACHEREAD"); - } - if (input == NULL) { - cerr << "broken/inaccessible input file" << endl; -diff --git a/tmva/pymva/test/Classification.C b/tmva/pymva/test/Classification.C -index 71987a7..d5c8c6e 100644 ---- a/tmva/pymva/test/Classification.C -+++ b/tmva/pymva/test/Classification.C -@@ -27,23 +27,26 @@ void Classification() - TMVA::Factory *factory = new TMVA::Factory("TMVAClassification", outputFile, - "!V:!Silent:Color:DrawProgressBar:Transformations=I;D;P;G,D:AnalysisType=Classification"); - -- - factory->AddVariable("myvar1 := var1+var2", 'F'); - factory->AddVariable("myvar2 := var1-var2", "Expression 2", "", 'F'); - factory->AddVariable("var3", "Variable 3", "units", 'F'); - factory->AddVariable("var4", "Variable 4", "units", 'F'); -- -- - factory->AddSpectator("spec1 := var1*2", "Spectator 1", "units", 'F'); - factory->AddSpectator("spec2 := var1*3", "Spectator 2", "units", 'F'); - -- -+ TFile *input(0); - TString fname = "./tmva_class_example.root"; -- -- if (gSystem->AccessPathName(fname)) // file does not exist in local directory -- gSystem->Exec("curl -O http://root.cern.ch/files/tmva_class_example.root"); -- -- TFile *input = TFile::Open(fname); -+ if (!gSystem->AccessPathName( fname )) { -+ input = TFile::Open( fname ); // check if file in local directory exists -+ } -+ else { -+ TFile::SetCacheFileDir("."); -+ input = TFile::Open("http://root.cern.ch/files/tmva_class_example.root", "CACHEREAD"); -+ } -+ if (!input) { -+ std::cout << "ERROR: could not open data file" << std::endl; -+ exit(1); -+ } - - std::cout << "--- TMVAClassification : Using input file: " << input->GetName() << std::endl; - -diff --git a/tmva/rmva/test/Classification.C b/tmva/rmva/test/Classification.C -index 5a2668f..fba8505 100644 ---- a/tmva/rmva/test/Classification.C -+++ b/tmva/rmva/test/Classification.C -@@ -36,12 +36,19 @@ void Classification() - factory->AddSpectator("spec1 := var1*2", "Spectator 1", "units", 'F'); - factory->AddSpectator("spec2 := var1*3", "Spectator 2", "units", 'F'); - -+ TFile *input(0); - TString fname = "./tmva_class_example.root"; -- -- if (gSystem->AccessPathName(fname)) // file does not exist in local directory -- gSystem->Exec("curl -O http://root.cern.ch/files/tmva_class_example.root"); -- -- TFile *input = TFile::Open(fname); -+ if (!gSystem->AccessPathName( fname )) { -+ input = TFile::Open( fname ); // check if file in local directory exists -+ } -+ else { -+ TFile::SetCacheFileDir("."); -+ input = TFile::Open("http://root.cern.ch/files/tmva_class_example.root", "CACHEREAD"); -+ } -+ if (!input) { -+ std::cout << "ERROR: could not open data file" << std::endl; -+ exit(1); -+ } - - std::cout << "--- TMVAClassification : Using input file: " << input->GetName() << std::endl; - -diff --git a/tutorials/hist/th2polyUSA.C b/tutorials/hist/th2polyUSA.C -index 5dc69fe..f7adef0 100644 ---- a/tutorials/hist/th2polyUSA.C -+++ b/tutorials/hist/th2polyUSA.C -@@ -49,8 +49,8 @@ void th2polyUSA() - Double_t lat2 = 50; - TH2Poly *p = new TH2Poly("USA","USA Population",lon1,lon2,lat1,lat2); - -- TFile *f; -- f = TFile::Open("http://root.cern.ch/files/usa.root"); -+ TFile::SetCacheFileDir("."); -+ TFile *f = TFile::Open("http://root.cern.ch/files/usa.root", "CACHEREAD"); - - if (!f) { - printf("Cannot access usa.root. Is internet working ?\n"); -diff --git a/tutorials/tmva/TMVAClassification.C b/tutorials/tmva/TMVAClassification.C -index ee2056f..1602cab 100644 ---- a/tutorials/tmva/TMVAClassification.C -+++ b/tutorials/tmva/TMVAClassification.C -@@ -164,13 +164,19 @@ int TMVAClassification( TString myMethodList = "" ) - - // Read training and test data - // (it is also possible to use ASCII format as input -> see TMVA Users Guide) -+ TFile *input(0); - TString fname = "./tmva_class_example.root"; -- -- if (gSystem->AccessPathName( fname )) // file does not exist in local directory -- gSystem->Exec("curl -O http://root.cern.ch/files/tmva_class_example.root"); -- -- TFile *input = TFile::Open( fname ); -- -+ if (!gSystem->AccessPathName( fname )) { -+ input = TFile::Open( fname ); // check if file in local directory exists -+ } -+ else { -+ TFile::SetCacheFileDir("."); -+ input = TFile::Open("http://root.cern.ch/files/tmva_class_example.root", "CACHEREAD"); -+ } -+ if (!input) { -+ std::cout << "ERROR: could not open data file" << std::endl; -+ exit(1); -+ } - std::cout << "--- TMVAClassification : Using input file: " << input->GetName() << std::endl; - - // Register the training and test trees -diff --git a/tutorials/tmva/TMVAClassificationApplication.C b/tutorials/tmva/TMVAClassificationApplication.C -index 255e187..b03b472 100644 ---- a/tutorials/tmva/TMVAClassificationApplication.C -+++ b/tutorials/tmva/TMVAClassificationApplication.C -@@ -232,12 +232,14 @@ void TMVAClassificationApplication( TString myMethodList = "" ) - // we'll later on use only the "signal" events for the test in this example. - // - TFile *input(0); -- TString fname = "./tmva_example.root"; -- if (!gSystem->AccessPathName( fname )) -+ TString fname = "./tmva_class_example.root"; -+ if (!gSystem->AccessPathName( fname )) { - input = TFile::Open( fname ); // check if file in local directory exists -- else -- input = TFile::Open( "http://root.cern.ch/files/tmva_class_example.root" ); // if not: download from ROOT server -- -+ } -+ else { -+ TFile::SetCacheFileDir("."); -+ input = TFile::Open("http://root.cern.ch/files/tmva_class_example.root", "CACHEREAD"); // if not: download from ROOT server -+ } - if (!input) { - std::cout << "ERROR: could not open data file" << std::endl; - exit(1); -diff --git a/tutorials/tmva/TMVACrossValidation.C b/tutorials/tmva/TMVACrossValidation.C -index 1b85b98..b46004e 100644 ---- a/tutorials/tmva/TMVACrossValidation.C -+++ b/tutorials/tmva/TMVACrossValidation.C -@@ -26,10 +26,19 @@ void TMVACrossValidation() - TMVA::Tools::Instance(); - - // Load data -+ TFile *input(0); - TString fname = "./tmva_class_example.root"; -- if (gSystem->AccessPathName(fname)) -- gSystem->Exec("curl -O http://root.cern.ch/files/tmva_class_example.root"); -- TFile *input = TFile::Open(fname); -+ if (!gSystem->AccessPathName( fname )) { -+ input = TFile::Open( fname ); // check if file in local directory exists -+ } -+ else { -+ TFile::SetCacheFileDir("."); -+ input = TFile::Open("http://root.cern.ch/files/tmva_class_example.root", "CACHEREAD"); -+ } -+ if (!input) { -+ std::cout << "ERROR: could not open data file" << std::endl; -+ exit(1); -+ } - - TTree* signalTree = (TTree*)input->Get("TreeS"); - TTree* background = (TTree*)input->Get("TreeB"); -diff --git a/tutorials/tmva/TMVARegression.C b/tutorials/tmva/TMVARegression.C -index 850ff84..c94ce13 100644 ---- a/tutorials/tmva/TMVARegression.C -+++ b/tutorials/tmva/TMVARegression.C -@@ -166,11 +166,13 @@ void TMVARegression( TString myMethodList = "" ) - // load the signal and background event samples from ROOT trees - TFile *input(0); - TString fname = "./tmva_reg_example.root"; -- if (!gSystem->AccessPathName( fname )) -+ if (!gSystem->AccessPathName( fname )) { - input = TFile::Open( fname ); // check if file in local directory exists -- else -- input = TFile::Open( "http://root.cern.ch/files/tmva_reg_example.root" ); // if not: download from ROOT server -- -+ } -+ else { -+ TFile::SetCacheFileDir("."); -+ input = TFile::Open("http://root.cern.ch/files/tmva_reg_example.root", "CACHEREAD"); // if not: download from ROOT server -+ } - if (!input) { - std::cout << "ERROR: could not open data file" << std::endl; - exit(1); -diff --git a/tutorials/tmva/TMVARegressionApplication.C b/tutorials/tmva/TMVARegressionApplication.C -index 9ceefdf..8a8e62f 100644 ---- a/tutorials/tmva/TMVARegressionApplication.C -+++ b/tutorials/tmva/TMVARegressionApplication.C -@@ -128,16 +128,16 @@ void TMVARegressionApplication( TString myMethodList = "" ) - // Prepare input tree (this must be replaced by your data source) - // in this example, there is a toy tree with signal and one with background events - // we'll later on use only the "signal" events for the test in this example. -- // -+ // - TFile *input(0); - TString fname = "./tmva_reg_example.root"; - if (!gSystem->AccessPathName( fname )) { - input = TFile::Open( fname ); // check if file in local directory exists -- } -- else { -- input = TFile::Open( "http://root.cern.ch/files/tmva_reg_example.root" ); // if not: download from ROOT server - } -- -+ else { -+ TFile::SetCacheFileDir("."); -+ input = TFile::Open("http://root.cern.ch/files/tmva_reg_example.root", "CACHEREAD"); // if not: download from ROOT server -+ } - if (!input) { - std::cout << "ERROR: could not open data file" << std::endl; - exit(1); diff --git a/root-fontconfig.patch b/root-fontconfig.patch index ffa412c..56aa2bc 100644 --- a/root-fontconfig.patch +++ b/root-fontconfig.patch @@ -1,6 +1,6 @@ -diff -ur root-6.08.02.orig/core/base/src/TApplication.cxx root-6.08.02/core/base/src/TApplication.cxx ---- root-6.08.02.orig/core/base/src/TApplication.cxx 2016-12-06 12:46:10.308969599 +0100 -+++ root-6.08.02/core/base/src/TApplication.cxx 2016-12-06 12:54:51.662058443 +0100 +diff -ur root-6.10.00.orig/core/base/src/TApplication.cxx root-6.10.00/core/base/src/TApplication.cxx +--- root-6.10.00.orig/core/base/src/TApplication.cxx 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/core/base/src/TApplication.cxx 2017-06-14 22:22:40.348551723 +0200 @@ -273,18 +273,11 @@ LoadGraphicsLibs(); @@ -30,22 +30,22 @@ diff -ur root-6.08.02.orig/core/base/src/TApplication.cxx root-6.08.02/core/base // Create WM dependent application environment if (fAppImp) -diff -ur root-6.08.02.orig/graf2d/asimage/CMakeLists.txt root-6.08.02/graf2d/asimage/CMakeLists.txt ---- root-6.08.02.orig/graf2d/asimage/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/asimage/CMakeLists.txt 2016-12-06 12:54:51.691058115 +0100 +diff -ur root-6.10.00.orig/graf2d/asimage/CMakeLists.txt root-6.10.00/graf2d/asimage/CMakeLists.txt +--- root-6.10.00.orig/graf2d/asimage/CMakeLists.txt 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf2d/asimage/CMakeLists.txt 2017-06-14 22:22:40.367551513 +0200 @@ -13,7 +13,7 @@ ROOT_GENERATE_DICTIONARY(G__ASImage TASImage.h TASImagePlugin.h TASPluginGS.h MODULE ASImage LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM") ROOT_LINKER_LIBRARY(ASImage TASImage.cxx TASPluginGS.cxx G__ASImage.cxx - LIBRARIES Core ${AFTERIMAGE_LIBRARIES} ${FREETYPE_LIBRARIES} ${ASEXTRA_LIBRARIES} ${X11_LIBRARIES} + LIBRARIES Core ${AFTERIMAGE_LIBRARIES} ${FREETYPE_LIBRARIES} fontconfig ${ASEXTRA_LIBRARIES} ${X11_LIBRARIES} - ${ZLIB_LIBRARIES} DEPENDENCIES Graf) - if(builtin_afterimage) - ROOT_ADD_BUILTIN_DEPENDENCIES(ASImage AFTERIMAGE) -diff -ur root-6.08.02.orig/graf2d/asimage/Module.mk root-6.08.02/graf2d/asimage/Module.mk ---- root-6.08.02.orig/graf2d/asimage/Module.mk 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/asimage/Module.mk 2016-12-06 12:54:51.692058104 +0100 -@@ -226,7 +226,7 @@ + ${ZLIB_LIBRARIES} DEPENDENCIES Graf BUILTINS AFTERIMAGE) + + ROOT_GENERATE_DICTIONARY(G__ASImageGui TASPaletteEditor.h MODULE ASImageGui LINKDEF LinkDefGui.h OPTIONS "-writeEmptyRootPCM") +diff -ur root-6.10.00.orig/graf2d/asimage/Module.mk root-6.10.00/graf2d/asimage/Module.mk +--- root-6.10.00.orig/graf2d/asimage/Module.mk 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf2d/asimage/Module.mk 2017-06-14 22:22:40.367551513 +0200 +@@ -236,7 +236,7 @@ "$(SOFLAGS)" libASImage.$(SOEXT) $@ \ "$(ASIMAGEO) $(ASIMAGEDO)" \ "$(ASIMAGELIBEXTRA) $(ASTEPLIB) \ @@ -54,9 +54,9 @@ diff -ur root-6.08.02.orig/graf2d/asimage/Module.mk root-6.08.02/graf2d/asimage/ $(ASEXTRALIBDIR) $(ASEXTRALIB) $(ASNEEDX11LIBS)" $(call pcmrule,ASIMAGE) -diff -ur root-6.08.02.orig/graf2d/asimage/src/TASImage.cxx root-6.08.02/graf2d/asimage/src/TASImage.cxx ---- root-6.08.02.orig/graf2d/asimage/src/TASImage.cxx 2016-12-06 12:46:10.320969463 +0100 -+++ root-6.08.02/graf2d/asimage/src/TASImage.cxx 2016-12-06 12:54:51.693058093 +0100 +diff -ur root-6.10.00.orig/graf2d/asimage/src/TASImage.cxx root-6.10.00/graf2d/asimage/src/TASImage.cxx +--- root-6.10.00.orig/graf2d/asimage/src/TASImage.cxx 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf2d/asimage/src/TASImage.cxx 2017-06-14 22:22:40.368551502 +0200 @@ -110,6 +110,8 @@ # include } @@ -66,7 +66,7 @@ diff -ur root-6.08.02.orig/graf2d/asimage/src/TASImage.cxx root-6.08.02/graf2d/a // auxiliary functions for general polygon filling #include "TASPolyUtils.c" -@@ -2593,14 +2595,120 @@ +@@ -2596,14 +2598,120 @@ TString fn = font_name; fn.Strip(); @@ -194,7 +194,7 @@ diff -ur root-6.08.02.orig/graf2d/asimage/src/TASImage.cxx root-6.08.02/graf2d/a 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; -@@ -2624,14 +2732,11 @@ +@@ -2627,14 +2735,11 @@ return; } @@ -212,22 +212,21 @@ diff -ur root-6.08.02.orig/graf2d/asimage/src/TASImage.cxx root-6.08.02/graf2d/a } get_text_size(text, font, (ASText3DType)type, &width, &height); -diff -ur root-6.08.02.orig/graf2d/graf/CMakeLists.txt root-6.08.02/graf2d/graf/CMakeLists.txt ---- root-6.08.02.orig/graf2d/graf/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/graf/CMakeLists.txt 2016-12-06 12:54:51.693058093 +0100 -@@ -10,7 +10,7 @@ +diff -ur root-6.10.00.orig/graf2d/graf/CMakeLists.txt root-6.10.00/graf2d/graf/CMakeLists.txt +--- root-6.10.00.orig/graf2d/graf/CMakeLists.txt 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf2d/graf/CMakeLists.txt 2017-06-14 22:22:40.369551491 +0200 +@@ -8,6 +8,6 @@ include_directories(${FREETYPE_INCLUDE_DIRS}) --ROOT_LINKER_LIBRARY(${libname} *.cxx G__${libname}.cxx LIBRARIES ${FREETYPE_LIBRARIES} ${ZLIB_LIBRARIES} mathtext DEPENDENCIES Hist Matrix MathCore RIO) -+ROOT_LINKER_LIBRARY(${libname} *.cxx G__${libname}.cxx LIBRARIES ${FREETYPE_LIBRARIES} ${ZLIB_LIBRARIES} mathtext fontconfig DEPENDENCIES Hist Matrix MathCore RIO) +-ROOT_LINKER_LIBRARY(Graf *.cxx G__Graf.cxx LIBRARIES ${FREETYPE_LIBRARIES} ${ZLIB_LIBRARIES} mathtext DEPENDENCIES Hist Matrix MathCore RIO BUILTINS FREETYPE) ++ROOT_LINKER_LIBRARY(Graf *.cxx G__Graf.cxx LIBRARIES ${FREETYPE_LIBRARIES} ${ZLIB_LIBRARIES} mathtext fontconfig DEPENDENCIES Hist Matrix MathCore RIO BUILTINS FREETYPE) - if(builtin_freetype) - ROOT_ADD_BUILTIN_DEPENDENCIES(${libname} FREETYPE) -diff -ur root-6.08.02.orig/graf2d/graf/inc/TTF.h root-6.08.02/graf2d/graf/inc/TTF.h ---- root-6.08.02.orig/graf2d/graf/inc/TTF.h 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/graf/inc/TTF.h 2016-12-06 12:54:51.693058093 +0100 -@@ -78,9 +78,8 @@ + ROOT_INSTALL_HEADERS() +diff -ur root-6.10.00.orig/graf2d/graf/inc/TTF.h root-6.10.00/graf2d/graf/inc/TTF.h +--- root-6.10.00.orig/graf2d/graf/inc/TTF.h 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf2d/graf/inc/TTF.h 2017-06-14 22:22:40.369551491 +0200 +@@ -76,9 +76,8 @@ static FT_BBox fgCBox; ///< string control box static FT_CharMap fgCharMap[kTTMaxFonts]; ///< font character map static Int_t fgCurFontIdx; ///< current font index @@ -238,10 +237,10 @@ diff -ur root-6.08.02.orig/graf2d/graf/inc/TTF.h root-6.08.02/graf2d/graf/inc/TT 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.08.02.orig/graf2d/graf/Module.mk root-6.08.02/graf2d/graf/Module.mk ---- root-6.08.02.orig/graf2d/graf/Module.mk 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/graf/Module.mk 2016-12-06 12:54:51.693058093 +0100 -@@ -46,7 +46,7 @@ +diff -ur root-6.10.00.orig/graf2d/graf/Module.mk root-6.10.00/graf2d/graf/Module.mk +--- root-6.10.00.orig/graf2d/graf/Module.mk 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf2d/graf/Module.mk 2017-06-14 22:22:40.369551491 +0200 +@@ -58,7 +58,7 @@ @$(MAKELIB) $(PLATFORM) $(LD) "$(LDFLAGS)" \ "$(SOFLAGS)" libGraf.$(SOEXT) $@ \ "$(GRAFO) $(GRAFDO)" \ @@ -250,9 +249,9 @@ diff -ur root-6.08.02.orig/graf2d/graf/Module.mk root-6.08.02/graf2d/graf/Module $(call pcmrule,GRAF) $(noop) -diff -ur root-6.08.02.orig/graf2d/graf/src/TTF.cxx root-6.08.02/graf2d/graf/src/TTF.cxx ---- root-6.08.02.orig/graf2d/graf/src/TTF.cxx 2016-12-06 12:46:10.322969441 +0100 -+++ root-6.08.02/graf2d/graf/src/TTF.cxx 2016-12-06 12:54:51.700058013 +0100 +diff -ur root-6.10.00.orig/graf2d/graf/src/TTF.cxx root-6.10.00/graf2d/graf/src/TTF.cxx +--- root-6.10.00.orig/graf2d/graf/src/TTF.cxx 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf2d/graf/src/TTF.cxx 2017-06-14 22:22:40.370551479 +0200 @@ -25,6 +25,8 @@ #include "TMath.h" #include "TError.h" @@ -729,7 +728,7 @@ diff -ur root-6.08.02.orig/graf2d/graf/src/TTF.cxx root-6.08.02/graf2d/graf/src/ -/// |---------|---------------------------|------------------| -/// | 1 | times-medium-i-normal | timesi.ttf | -/// | 2 | times-bold-r-normal | timesbd.ttf | --/// | 3 | times-bold-i-normal | timesi.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 | @@ -813,9 +812,9 @@ diff -ur root-6.08.02.orig/graf2d/graf/src/TTF.cxx root-6.08.02/graf2d/graf/src/ } //////////////////////////////////////////////////////////////////////////////// -diff -ur root-6.08.02.orig/graf2d/postscript/CMakeLists.txt root-6.08.02/graf2d/postscript/CMakeLists.txt ---- root-6.08.02.orig/graf2d/postscript/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/postscript/CMakeLists.txt 2016-12-06 12:54:51.700058013 +0100 +diff -ur root-6.10.00.orig/graf2d/postscript/CMakeLists.txt root-6.10.00/graf2d/postscript/CMakeLists.txt +--- root-6.10.00.orig/graf2d/postscript/CMakeLists.txt 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf2d/postscript/CMakeLists.txt 2017-06-14 22:22:40.370551479 +0200 @@ -5,5 +5,5 @@ ROOT_GENERATE_DICTIONARY(G__PostScript *.h MODULE Postscript LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM") @@ -823,10 +822,10 @@ diff -ur root-6.08.02.orig/graf2d/postscript/CMakeLists.txt root-6.08.02/graf2d/ -ROOT_LINKER_LIBRARY(Postscript *.cxx G__PostScript.cxx LIBRARIES ${ZLIB_LIBRARIES} mathtext DEPENDENCIES Graf) +ROOT_LINKER_LIBRARY(Postscript *.cxx G__PostScript.cxx LIBRARIES ${ZLIB_LIBRARIES} mathtext fontconfig DEPENDENCIES Graf) ROOT_INSTALL_HEADERS() -diff -ur root-6.08.02.orig/graf2d/postscript/Module.mk root-6.08.02/graf2d/postscript/Module.mk ---- root-6.08.02.orig/graf2d/postscript/Module.mk 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/postscript/Module.mk 2016-12-06 12:54:51.700058013 +0100 -@@ -50,7 +50,7 @@ +diff -ur root-6.10.00.orig/graf2d/postscript/Module.mk root-6.10.00/graf2d/postscript/Module.mk +--- root-6.10.00.orig/graf2d/postscript/Module.mk 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf2d/postscript/Module.mk 2017-06-14 22:22:40.370551479 +0200 +@@ -59,7 +59,7 @@ @$(MAKELIB) $(PLATFORM) $(LD) "$(LDFLAGS)" \ "$(SOFLAGS)" libPostscript.$(SOEXT) $@ \ "$(POSTSCRIPTO) $(POSTSCRIPTDO)" \ @@ -835,9 +834,9 @@ diff -ur root-6.08.02.orig/graf2d/postscript/Module.mk root-6.08.02/graf2d/posts $(call pcmrule,POSTSCRIPT) $(noop) -diff -ur root-6.08.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.08.02/graf2d/postscript/src/TPostScript.cxx ---- root-6.08.02.orig/graf2d/postscript/src/TPostScript.cxx 2016-12-06 12:46:10.322969441 +0100 -+++ root-6.08.02/graf2d/postscript/src/TPostScript.cxx 2016-12-06 12:54:51.701058002 +0100 +diff -ur root-6.10.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.10.00/graf2d/postscript/src/TPostScript.cxx +--- root-6.10.00.orig/graf2d/postscript/src/TPostScript.cxx 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf2d/postscript/src/TPostScript.cxx 2017-06-14 22:22:40.371551468 +0200 @@ -229,6 +229,7 @@ #include #include @@ -846,7 +845,7 @@ diff -ur root-6.08.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.08.02/gr #include "Riostream.h" #include "Byteswap.h" -@@ -1529,56 +1530,179 @@ +@@ -1575,56 +1576,179 @@ void TPostScript::FontEmbed(void) { @@ -1071,7 +1070,7 @@ diff -ur root-6.08.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.08.02/gr } else { if (FontEmbedType2(ttfont)) { // nothing -@@ -1587,9 +1711,8 @@ +@@ -1633,9 +1757,8 @@ } else if(FontEmbedType42(ttfont)) { // nothing } else { @@ -1083,22 +1082,7 @@ diff -ur root-6.08.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.08.02/gr } delete [] ttfont; } -@@ -2548,10 +2671,10 @@ - { "Root.PSFont.5", "/Helvetica-Oblique" }, - { "Root.PSFont.6", "/Helvetica-Bold" }, - { "Root.PSFont.7", "/Helvetica-BoldOblique" }, -- { "Root.PSFont.8", "/Courrier" }, -- { "Root.PSFont.9", "/Courrier-Oblique" }, -- { "Root.PSFont.10", "/Courrier-Bold" }, -- { "Root.PSFont.11", "/Courrier-BoldOblique" }, -+ { "Root.PSFont.8", "/Courier" }, -+ { "Root.PSFont.9", "/Courier-Oblique" }, -+ { "Root.PSFont.10", "/Courier-Bold" }, -+ { "Root.PSFont.11", "/Courier-BoldOblique" }, - { "Root.PSFont.12", "/Symbol" }, - { "Root.PSFont.13", "/Times-Roman" }, - { "Root.PSFont.14", "/ZapfDingbats" }, -@@ -2757,10 +2880,10 @@ +@@ -2803,10 +2926,10 @@ { "Root.PSFont.9", "/FreeMonoOblique" }, { "Root.PSFont.10", "/FreeMonoBold" }, { "Root.PSFont.11", "/FreeMonoBoldOblique" }, @@ -1112,10 +1096,10 @@ diff -ur root-6.08.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.08.02/gr { "Root.PSFont.STIXGen", "/STIXGeneral" }, { "Root.PSFont.STIXGenIt", "/STIXGeneral-Italic" }, { "Root.PSFont.STIXGenBd", "/STIXGeneral-Bold" }, -diff -ur root-6.08.02.orig/graf3d/gl/CMakeLists.txt root-6.08.02/graf3d/gl/CMakeLists.txt ---- root-6.08.02.orig/graf3d/gl/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf3d/gl/CMakeLists.txt 2016-12-06 12:54:51.701058002 +0100 -@@ -43,6 +43,6 @@ +diff -ur root-6.10.00.orig/graf3d/gl/CMakeLists.txt root-6.10.00/graf3d/gl/CMakeLists.txt +--- root-6.10.00.orig/graf3d/gl/CMakeLists.txt 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf3d/gl/CMakeLists.txt 2017-06-14 22:22:40.371551468 +0200 +@@ -39,6 +39,6 @@ ROOT_GENERATE_DICTIONARY(G__GL ${headers} MODULE RGL LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM") @@ -1123,10 +1107,10 @@ diff -ur root-6.08.02.orig/graf3d/gl/CMakeLists.txt root-6.08.02/graf3d/gl/CMake +ROOT_LINKER_LIBRARY(RGL ${sources} G__GL.cxx LIBRARIES ${gllibs} ${GL2PS_LIBRARIES} GLEW ${FTGL_LIBRARIES} fontconfig DEPENDENCIES Hist Gui Ged) ROOT_INSTALL_HEADERS(${installoptions}) -diff -ur root-6.08.02.orig/graf3d/gl/Module.mk root-6.08.02/graf3d/gl/Module.mk ---- root-6.08.02.orig/graf3d/gl/Module.mk 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf3d/gl/Module.mk 2016-12-06 12:54:51.702057991 +0100 -@@ -86,7 +86,7 @@ +diff -ur root-6.10.00.orig/graf3d/gl/Module.mk root-6.10.00/graf3d/gl/Module.mk +--- root-6.10.00.orig/graf3d/gl/Module.mk 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf3d/gl/Module.mk 2017-06-14 22:22:40.371551468 +0200 +@@ -95,7 +95,7 @@ "$(SOFLAGS)" libRGL.$(SOEXT) $@ "$(GLO) $(GLO1) $(GLDO)" \ "$(GLLIBEXTRA) $(FTGLLIBDIR) $(FTGLLIBS) \ $(GL2PSLIBDIR) $(GL2PSLIB) \ @@ -1135,9 +1119,9 @@ diff -ur root-6.08.02.orig/graf3d/gl/Module.mk root-6.08.02/graf3d/gl/Module.mk $(call pcmrule,GL) $(noop) -diff -ur root-6.08.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.08.02/graf3d/gl/src/TGLFontManager.cxx ---- root-6.08.02.orig/graf3d/gl/src/TGLFontManager.cxx 2016-12-06 12:46:10.323969430 +0100 -+++ root-6.08.02/graf3d/gl/src/TGLFontManager.cxx 2016-12-06 12:54:51.702057991 +0100 +diff -ur root-6.10.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.10.00/graf3d/gl/src/TGLFontManager.cxx +--- root-6.10.00.orig/graf3d/gl/src/TGLFontManager.cxx 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf3d/gl/src/TGLFontManager.cxx 2017-06-14 22:22:40.371551468 +0200 @@ -37,6 +37,7 @@ # include "FTGLBitmapFont.h" #endif @@ -1393,9 +1377,9 @@ diff -ur root-6.08.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.08.02/graf3d/ 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.08.02.orig/graf3d/gl/src/TGLText.cxx root-6.08.02/graf3d/gl/src/TGLText.cxx ---- root-6.08.02.orig/graf3d/gl/src/TGLText.cxx 2016-12-06 12:46:10.323969430 +0100 -+++ root-6.08.02/graf3d/gl/src/TGLText.cxx 2016-12-06 12:54:51.702057991 +0100 +diff -ur root-6.10.00.orig/graf3d/gl/src/TGLText.cxx root-6.10.00/graf3d/gl/src/TGLText.cxx +--- root-6.10.00.orig/graf3d/gl/src/TGLText.cxx 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/graf3d/gl/src/TGLText.cxx 2017-06-14 22:22:40.372551457 +0200 @@ -34,6 +34,8 @@ # include "FTGLBitmapFont.h" #endif @@ -1530,9 +1514,9 @@ diff -ur root-6.08.02.orig/graf3d/gl/src/TGLText.cxx root-6.08.02/graf3d/gl/src/ Error("SetGLTextFont","Cannot set FTGL::FaceSize"); - delete [] ttfont; } -diff -ur root-6.08.02.orig/gui/gui/src/TGApplication.cxx root-6.08.02/gui/gui/src/TGApplication.cxx ---- root-6.08.02.orig/gui/gui/src/TGApplication.cxx 2016-12-06 12:46:10.324969418 +0100 -+++ root-6.08.02/gui/gui/src/TGApplication.cxx 2016-12-06 12:54:51.703057979 +0100 +diff -ur root-6.10.00.orig/gui/gui/src/TGApplication.cxx root-6.10.00/gui/gui/src/TGApplication.cxx +--- root-6.10.00.orig/gui/gui/src/TGApplication.cxx 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/gui/gui/src/TGApplication.cxx 2017-06-14 22:22:40.372551457 +0200 @@ -83,20 +83,12 @@ gROOT->SetBatch(kFALSE); diff --git a/root-format.patch b/root-format.patch deleted file mode 100644 index 789afd4..0000000 --- a/root-format.patch +++ /dev/null @@ -1,94 +0,0 @@ -diff --git a/net/globusauth/src/GlobusAuth.cxx b/net/globusauth/src/GlobusAuth.cxx -index 6e0a00a..0b778bf 100644 ---- a/net/globusauth/src/GlobusAuth.cxx -+++ b/net/globusauth/src/GlobusAuth.cxx -@@ -139,7 +139,7 @@ Int_t GlobusAuthenticate(TAuthenticate * tAuth, TString & user, - return -1; - } - if (gDebug > 3) -- Info("GlobusAuthenticate", " Credential Handle is 0x%x", -+ Info("GlobusAuthenticate", " Credential Handle is %p", - gGlbCredHandle); - - // Inquire credentials for subject name and convert it in human readable form ... -@@ -193,7 +193,7 @@ Int_t GlobusAuthenticate(TAuthenticate * tAuth, TString & user, - if (gDebug > 0) - Error("GlobusAuthenticate", - "Length of Issuer name not send correctly: bytes sent: %d (tot len: %d)", -- bsnd - 1, strlen(buf)); -+ bsnd - 1, (int) strlen(buf)); - return 0; - } - // Now we send it to the server daemon -@@ -240,7 +240,7 @@ Int_t GlobusAuthenticate(TAuthenticate * tAuth, TString & user, - "recv host subj: did not receive all the bytes" - " (recv: %d, due >%d)", brcv, retval); - Error("GlobusAuthenticate", "recv host subj: (%d) %s", -- strlen(host_subj), host_subj); -+ (int) strlen(host_subj), host_subj); - } - if (host_subj) delete[] host_subj; - return 0; -@@ -262,7 +262,7 @@ Int_t GlobusAuthenticate(TAuthenticate * tAuth, TString & user, - 0 ? (GSS_C_DELEG_FLAG | GSS_C_MUTUAL_FLAG) : GSS_C_MUTUAL_FLAG; - if (gDebug > 3) - Info("GlobusAuthenticate", -- " gssReqFlags: %p, GlbCredentials: %p", gssReqFlags, gGlbCredHandle); -+ " gssReqFlags: 0x%x, GlbCredentials: %p", gssReqFlags, gGlbCredHandle); - - // Now we are ready to start negotiating with the Server - if ((majStat = -@@ -417,7 +417,7 @@ int GlobusGetDelCred() - return 1; - } else if (gDebug > 3) - Info("GlobusGetDelCred:", -- "Globus Credentials successfully imported (0x%x)", -+ "Globus Credentials successfully imported (%p)", - gGlbDelCredHandle); - - if (credential) delete[] credential; -@@ -494,7 +494,7 @@ Int_t GlobusGetLocalEnv(Int_t *localEnv, TString protocol) - Info("GlobusGetLocalEnv", - "PROOF environment, called by the MASTER/SLAVE"); - Info("GlobusGetLocalEnv", -- "string with pointer to del cred is 0x%x", -+ "string with pointer to del cred is %p", - gGlbDelCredHandle); - } - *localEnv = 2; -@@ -542,7 +542,7 @@ Int_t GlobusGetLocalEnv(Int_t *localEnv, TString protocol) - Int_t GlobusNameFromCred(gss_cred_id_t cred, TString &subjName) - { - if (gDebug > 2) -- Info("GlobusNamesFromCred", "Enter: Handle: 0x%p", cred); -+ Info("GlobusNamesFromCred", "Enter: Handle: %p", cred); - - // Inquire credentials for Subject name and convert it in human readable form ... - OM_uint32 majStat = 0; -@@ -662,7 +662,7 @@ void GlobusCleanupShm() - if ((rc == EINVAL) || (rc == EIDRM)) { - if (gDebug > 3) - Info("GlobusCleanupShm:", -- "credentials shared memory segment %s" -+ "credentials shared memory segment " - "already marked as destroyed"); - } else { - Warning("GlobusCleanupShm:", -@@ -730,7 +730,7 @@ Int_t GlobusCheckSecContext(const char *subjName, gss_ctx_id_t ctx) - theName[nameBuffer.length]= '\0'; - if (gDebug > 2) - Info("GlobusCheckSecContext","with subject name: %s (%d)", -- theName, nameBuffer.length); -+ theName, (int) nameBuffer.length); - if (!strcmp(theName, subjName)) { - if (gDebug > 2) - Info("GlobusCheckSecContext", -@@ -1010,7 +1010,7 @@ Int_t GlobusIssuerName(TString &issuerName) - fn = Form("%s/.globus/usercert.pem",gSystem->HomeDirectory()); - if (gSystem->AccessPathName(fn, kReadPermission)) { - emsg += fn; -- Error("GlobusIssuerName", emsg.Data()); -+ Error("GlobusIssuerName", "%s", emsg.Data()); - return 1; - } - } diff --git a/root-fsf-addr.patch b/root-fsf-addr.patch deleted file mode 100644 index b06480d..0000000 --- a/root-fsf-addr.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/config/root-help.el.in b/config/root-help.el.in -index eab32de..8e6f8f9 100644 ---- a/config/root-help.el.in -+++ b/config/root-help.el.in -@@ -18,8 +18,8 @@ - ;; - ;; You should have received a copy of the GNU General Public License - ;; along with this program; if not, write to the Free Software --;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA --;; 02111-1307 USA -+;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -+;; 02110-1301, USA - ;; - ;; Author: Christian Holm Christensen - ;; Maintainer: Christian Holm Christensen diff --git a/root-global-name-not-defined.patch b/root-global-name-not-defined.patch deleted file mode 100644 index f682748..0000000 --- a/root-global-name-not-defined.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff --git a/tutorials/pyroot/zdemo.py b/tutorials/pyroot/zdemo.py -index 28db48f..603c7cb 100644 ---- a/tutorials/pyroot/zdemo.py -+++ b/tutorials/pyroot/zdemo.py -@@ -18,7 +18,6 @@ - - import ROOT - from array import array --from math import * - - NMAX = 20 - Z = array( 'f', [0.]*NMAX ) -@@ -31,6 +30,7 @@ saves = {} - - #_______________________________________________________________________________ - def hz_calc( ENERG, DENS, TGRAD, PTMIN, PTMAX, DELP ): -+ from math import sin, cos, sqrt - global NLOOP - global Z, HZ, PT, INVSIG - -@@ -104,9 +104,11 @@ def hz_calc( ENERG, DENS, TGRAD, PTMIN, PTMAX, DELP ): - - #_______________________________________________________________________________ - def zdemo(): -+ from array import array - global NLOOP - global Z, HZ, PT, INVSIG - global saves -+ global hz_calc - - # Create a new canvas. - c1 = ROOT.TCanvas( 'zdemo', 'Monte Carlo Study of Z scaling', 10, 40, 800, 600 ) diff --git a/root-hz.patch b/root-hz.patch deleted file mode 100644 index d9ea509..0000000 --- a/root-hz.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/tutorials/graphs/zdemo.C b/tutorials/graphs/zdemo.C -index 15257ce..0364123 100644 ---- a/tutorials/graphs/zdemo.C -+++ b/tutorials/graphs/zdemo.C -@@ -25,6 +25,10 @@ - #include "TGraph.h" - #include "TFrame.h" - -+#ifdef HZ -+#undef HZ -+#endif -+ - const Int_t NMAX = 20; - Int_t NLOOP; - Float_t Z[NMAX], HZ[NMAX], PT[NMAX], INVSIG[NMAX]; diff --git a/root-jupyroot-path.patch b/root-jupyroot-path.patch deleted file mode 100644 index e2f679a..0000000 --- a/root-jupyroot-path.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/bindings/pyroot/JupyROOT/handlers.py b/bindings/pyroot/JupyROOT/handlers.py -index 2181ad3..32c38eb 100644 ---- a/bindings/pyroot/JupyROOT/handlers.py -+++ b/bindings/pyroot/JupyROOT/handlers.py -@@ -12,8 +12,9 @@ from threading import Thread - from time import sleep as timeSleep - from resource import setrlimit, RLIMIT_STACK, RLIM_INFINITY - from sys import platform -+from os import path - --_lib = CDLL("libJupyROOT.so") -+_lib = CDLL(path.join(path.dirname(path.dirname(__file__)), 'libJupyROOT.so')) - - class IOHandler(object): - r'''Class used to capture output from C/C++ libraries. diff --git a/root-macro-scope.patch b/root-macro-scope.patch deleted file mode 100644 index 21bcb72..0000000 --- a/root-macro-scope.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff --git a/core/meta/src/TClingCallbacks.cxx b/core/meta/src/TClingCallbacks.cxx -index 85f39dd..2650f96 100644 ---- a/core/meta/src/TClingCallbacks.cxx -+++ b/core/meta/src/TClingCallbacks.cxx -@@ -552,16 +552,22 @@ bool TClingCallbacks::tryResolveAtRuntimeInternal(LookupResult &R, Scope *S) { - assert(TU && "Must not be null."); - - // DynamicLookup only happens inside wrapper functions: -- clang::DeclContext* WrapperDC = S->getEntity(); - clang::FunctionDecl* Wrapper = nullptr; -- while (true) { -- if (!WrapperDC || WrapperDC == TU) -+ Scope* Cursor = S; -+ do { -+ DeclContext* DCCursor = Cursor->getEntity(); -+ if (DCCursor == TU) - return false; -- Wrapper = dyn_cast(WrapperDC); -- if (Wrapper && utils::Analyze::IsWrapper(Wrapper)) -- break; -- WrapperDC = WrapperDC->getParent(); -- } -+ Wrapper = dyn_cast_or_null(DCCursor); -+ if (Wrapper) { -+ if (utils::Analyze::IsWrapper(Wrapper)) { -+ break; -+ } else { -+ // Can't have a function inside the wrapper: -+ return false; -+ } -+ } -+ } while ((Cursor = Cursor->getParent())); - - VarDecl* Result = VarDecl::Create(C, TU, Loc, Loc, II, C.DependentTy, - /*TypeSourceInfo*/0, SC_None); diff --git a/root-missing-includes.patch b/root-missing-includes.patch deleted file mode 100644 index b798c6a..0000000 --- a/root-missing-includes.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/tmva/tmva/inc/TMVA/DNN/DataLoader.h b/tmva/tmva/inc/TMVA/DNN/DataLoader.h -index a3a960f..bf4a922 100644 ---- a/tmva/tmva/inc/TMVA/DNN/DataLoader.h -+++ b/tmva/tmva/inc/TMVA/DNN/DataLoader.h -@@ -21,6 +21,7 @@ - #include "TMatrix.h" - #include - #include -+#include - - #include "TMVA/Event.h" - diff --git a/root-no-testdata.patch b/root-no-testdata.patch deleted file mode 100644 index 1157d56..0000000 --- a/root-no-testdata.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -ur root-6.06.02.orig/test/CMakeLists.txt root-6.06.02/test/CMakeLists.txt ---- root-6.06.02.orig/test/CMakeLists.txt 2016-03-03 10:36:03.000000000 +0100 -+++ root-6.06.02/test/CMakeLists.txt 2016-04-02 17:06:39.536489046 +0200 -@@ -239,13 +239,14 @@ - - #--stressProof------------------------------------------------------------------------------- - if(NOT WIN32) -- add_custom_target(TestData ALL COMMAND ${CMAKE_COMMAND} -DDST=${CMAKE_SOURCE_DIR}/files -P ${CMAKE_CURRENT_SOURCE_DIR}/rootDownloadData.cmake) -+ add_custom_target(TestData COMMAND ${CMAKE_COMMAND} -DDST=${CMAKE_SOURCE_DIR}/files -P ${CMAKE_CURRENT_SOURCE_DIR}/rootDownloadData.cmake) - ROOT_EXECUTABLE(stressProof stressProof.cxx LIBRARIES Proof ProofPlayer Hist) - ROOT_ADD_TEST(test-stressproof COMMAND stressProof lite:// - -h1 ${CMAKE_SOURCE_DIR}/files/h1 -event ${CMAKE_SOURCE_DIR}/files/event - -l /tmp/stressProof-%d.log -cleanlog -catlog -noprogress - ENVIRONMENT PATH=${CMAKE_BINARY_DIR}/bin:$ENV{PATH} -- FAILREGEX "FAILED|Error in") -+ FAILREGEX "FAILED|Error in" -+ DEPENDS TestData) - endif() - - #--testbits---------------------------------------------------------------------------------- diff --git a/root-python-install-path.patch b/root-python-install-path.patch deleted file mode 100644 index e0a02a2..0000000 --- a/root-python-install-path.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff --git a/bindings/pyroot/CMakeLists.txt b/bindings/pyroot/CMakeLists.txt -index c537bae..3a2118e 100644 ---- a/bindings/pyroot/CMakeLists.txt -+++ b/bindings/pyroot/CMakeLists.txt -@@ -36,8 +36,13 @@ endif() - file(GLOB pyfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.py) - foreach(pyfile ${pyfiles}) - install(FILES ${pyfile} DESTINATION ${runtimedir}) -- install(CODE "execute_process(COMMAND python -m py_compile \$ENV{DESTDIR}${runtimedir}/${pyfile})") -- install(CODE "execute_process(COMMAND python -O -m py_compile \$ENV{DESTDIR}${runtimedir}/${pyfile})") -+ if(IS_ABSOLUTE ${runtimedir}) -+ set(absruntimedir ${runtimedir}) -+ else() -+ set(absruntimedir ${CMAKE_INSTALL_PREFIX}/${runtimedir}) -+ endif() -+ install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m py_compile \$ENV{DESTDIR}${absruntimedir}/${pyfile})") -+ install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -O -m py_compile \$ENV{DESTDIR}${absruntimedir}/${pyfile})") - file(COPY ${pyfile} DESTINATION ${localruntimedir}) - endforeach() - -diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt -index 0f430c9..a431a2b 100644 ---- a/main/CMakeLists.txt -+++ b/main/CMakeLists.txt -@@ -43,7 +43,12 @@ if(python) - endforeach() - - install(FILES python/cmdLineUtils.py DESTINATION ${runtimedir}) -- install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m py_compile \$ENV{DESTDIR}${runtimedir}/cmdLineUtils.py)") -- install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -O -m py_compile \$ENV{DESTDIR}${runtimedir}/cmdLineUtils.py)") -+ if(IS_ABSOLUTE ${runtimedir}) -+ set(absruntimedir ${runtimedir}) -+ else() -+ set(absruntimedir ${CMAKE_INSTALL_PREFIX}/${runtimedir}) -+ endif() -+ install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m py_compile \$ENV{DESTDIR}${absruntimedir}/cmdLineUtils.py)") -+ install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -O -m py_compile \$ENV{DESTDIR}${absruntimedir}/cmdLineUtils.py)") - configure_file(python/cmdLineUtils.py ${localruntimedir}/cmdLineUtils.py @ONLY) - endif() diff --git a/root-python3-support.patch b/root-python3-support.patch deleted file mode 100644 index 3472599..0000000 --- a/root-python3-support.patch +++ /dev/null @@ -1,454 +0,0 @@ -diff --git a/bindings/pyroot/JsMVA/DataLoader.py b/bindings/pyroot/JsMVA/DataLoader.py -index 4f5d07e..fa738c0 100644 ---- a/bindings/pyroot/JsMVA/DataLoader.py -+++ b/bindings/pyroot/JsMVA/DataLoader.py -@@ -5,7 +5,12 @@ - - - from ROOT import TH1F, TMVA, TBufferJSON --import JPyInterface -+import sys -+if sys.version_info >= (3, 0): -+ from JsMVA import JPyInterface -+else: -+ import JPyInterface -+from JsMVA.Utils import xrange - import ROOT - - -diff --git a/bindings/pyroot/JsMVA/Factory.py b/bindings/pyroot/JsMVA/Factory.py -index 3afefbf..13fda56 100644 ---- a/bindings/pyroot/JsMVA/Factory.py -+++ b/bindings/pyroot/JsMVA/Factory.py -@@ -6,7 +6,12 @@ - - import ROOT - from ROOT import TMVA --import JPyInterface -+import sys -+if sys.version_info >= (3, 0): -+ from JsMVA import JPyInterface -+else: -+ import JPyInterface -+from JsMVA.Utils import xrange - from xml.etree.ElementTree import ElementTree - import json - from IPython.core.display import display, HTML, clear_output -@@ -681,7 +686,12 @@ def ChangeCallOriginal__init__(*args, **kwargs): - hasColor = False - args = list(args) - for arg_idx in xrange(len(args)): -- if isinstance(args[arg_idx], basestring) and args[arg_idx].find(":")!=-1: -+ # basestring==(str, unicode) in Python2, which translates to str in Python3 -+ if sys.version_info >= (3, 0): -+ is_string = isinstance(args[arg_idx], str) -+ else: -+ is_string = isinstance(args[arg_idx], basestring) -+ if is_string and args[arg_idx].find(":")!=-1: - if args[arg_idx].find("Color")!=-1: - hasColor = True - if args[arg_idx].find("!Color")==-1: -@@ -825,4 +835,4 @@ def DrawDNNWeights(fac, datasetName, methodName="DNN"): - button = widgets.Button(description="Draw", font_weight="bold", font_size="16") - button.on_click(drawWrapper) - box = widgets.HBox([selectLayer, button]) -- display(box) -\ No newline at end of file -+ display(box) -diff --git a/bindings/pyroot/JsMVA/JPyInterface.py b/bindings/pyroot/JsMVA/JPyInterface.py -index 51b32f1..068ab45 100644 ---- a/bindings/pyroot/JsMVA/JPyInterface.py -+++ b/bindings/pyroot/JsMVA/JPyInterface.py -@@ -8,10 +8,12 @@ - from IPython.core.display import display, HTML - from string import Template - import ROOT --import DataLoader --import Factory --import types --import OutputTransformer -+import sys -+if sys.version_info >= (3, 0): -+ from JsMVA import DataLoader, Factory -+else: -+ import DataLoader, Factory -+from JsMVA import OutputTransformer - - - ## Function inserter class -@@ -94,15 +96,15 @@ class functions: - else: - opt = "" - for key in kwargs: -- if type(kwargs[key]) == types.BooleanType: -+ if isinstance(kwargs[key], bool): - if kwargs[key] == True: - opt += key + ":" - else: - opt += "!" + key + ":" -- elif type(kwargs[key]) == types.ListType: -+ elif isinstance(kwargs[key], list): - ss = "" - for o in kwargs[key]: -- if type(o) == types.DictType: -+ if isinstance(o, dict): - sst = "" - for kk in o: - sst += kk + "=" + str(o[kk]) + "," -diff --git a/bindings/pyroot/JsMVA/JsMVAMagic.py b/bindings/pyroot/JsMVA/JsMVAMagic.py -index 436ea41..b2b1edf 100644 ---- a/bindings/pyroot/JsMVA/JsMVAMagic.py -+++ b/bindings/pyroot/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 JPyInterface import functions -+ from JsMVA.JPyInterface import functions - args = parse_argstring(self.jsmva, line) - if args.arg == 'on': - functions.register() -@@ -35,4 +35,4 @@ class JsMVAMagic(Magics): - - ## Function for registering the magic class - def load_ipython_extension(ipython): -- ipython.register_magics(JsMVAMagic) -\ No newline at end of file -+ ipython.register_magics(JsMVAMagic) -diff --git a/bindings/pyroot/JsMVA/OutputTransformer.py b/bindings/pyroot/JsMVA/OutputTransformer.py -index 81393a4..7cc10a5 100644 ---- a/bindings/pyroot/JsMVA/OutputTransformer.py -+++ b/bindings/pyroot/JsMVA/OutputTransformer.py -@@ -3,7 +3,8 @@ - # @author Attila Bagoly - # This class will transform the TMVA original output to HTML formated output. - --import DataLoader -+from JsMVA import DataLoader -+from JsMVA.Utils import xrange - import cgi - import re - -diff --git a/bindings/pyroot/JsMVA/Utils.py b/bindings/pyroot/JsMVA/Utils.py -new file mode 100644 -index 0000000..0abba09 ---- /dev/null -+++ b/bindings/pyroot/JsMVA/Utils.py -@@ -0,0 +1,10 @@ -+# -*- coding: utf-8 -*- -+# @package JsMVA.Utils -+# @author Enric Tejedor -+# Utilities module. -+ -+import sys -+if sys.version_info >= (3, 0): -+ xrange = range -+else: -+ xrange = xrange -diff --git a/bindings/pyroot/JupyROOT/__init__.py b/bindings/pyroot/JupyROOT/__init__.py -index 33e81da..e65acba 100644 ---- a/bindings/pyroot/JupyROOT/__init__.py -+++ b/bindings/pyroot/JupyROOT/__init__.py -@@ -1,4 +1,5 @@ --import JupyROOT.utils -+from JupyROOT import cppcompleter, utils - - if '__IPYTHON__' in __builtins__ and __IPYTHON__: -+ cppcompleter.load_ipython_extension(get_ipython()) - utils.iPythonize() -diff --git a/bindings/pyroot/JupyROOT/cppcompleter.py b/bindings/pyroot/JupyROOT/cppcompleter.py -index d76fef8..d451409 100644 ---- a/bindings/pyroot/JupyROOT/cppcompleter.py -+++ b/bindings/pyroot/JupyROOT/cppcompleter.py -@@ -5,7 +5,7 @@ - # Author: Enric Tejedor CERN - #----------------------------------------------------------------------------- - --import utils -+from JupyROOT import utils - import ROOT - - # Jit a wrapper for the ttabcom -@@ -35,7 +35,7 @@ class CppCompleter(object): - >>> comp = CppCompleter() - >>> comp.activate() - >>> for suggestion in comp._completeImpl("TH1"): -- ... print suggestion -+ ... print(suggestion) - TH1 - TH1C - TH1D -@@ -45,7 +45,7 @@ class CppCompleter(object): - TH1K - TH1S - >>> for suggestion in comp._completeImpl("TH2"): -- ... print suggestion -+ ... print(suggestion) - TH2 - TH2C - TH2D -@@ -58,20 +58,20 @@ class CppCompleter(object): - TH2S - >>> garbage = ROOT.gInterpreter.ProcessLine("TH1F* h") - >>> for suggestion in comp._completeImpl("h->GetA"): -- ... print suggestion -+ ... print(suggestion) - h->GetArray - h->GetAsymmetry - h->GetAt - h->GetAxisColor - >>> garbage = ROOT.gInterpreter.ProcessLine("TH1F aa") - >>> for suggestion in comp._completeImpl("aa.Add("): -- ... print suggestion.replace("\\t"," ") -+ ... print(suggestion.replace("\\t"," ")) - - Bool_t Add(TF1* h1, Double_t c1 = 1, Option_t* option = "") - Bool_t Add(const TH1* h, const TH1* h2, Double_t c1 = 1, Double_t c2 = 1) // *MENU* - Bool_t Add(const TH1* h1, Double_t c1 = 1) - >>> for suggestion in comp._completeImpl("TROOT::Is"): -- ... print suggestion -+ ... print(suggestion) - IsA - IsBatch - IsEqual -@@ -89,7 +89,7 @@ class CppCompleter(object): - IsZombie - >>> comp.deactivate() - >>> for suggestion in comp._completeImpl("TG"): -- ... print suggestion -+ ... print(suggestion) - ''' - - def __init__(self): -diff --git a/bindings/pyroot/JupyROOT/handlers.py b/bindings/pyroot/JupyROOT/handlers.py -index a46c404..2181ad3 100644 ---- a/bindings/pyroot/JupyROOT/handlers.py -+++ b/bindings/pyroot/JupyROOT/handlers.py -@@ -48,11 +48,18 @@ class IOHandler(object): - def EndCapture(self): - _lib.JupyROOTExecutorHandler_EndCapture() - -+ def Decode(self, obj): -+ import sys -+ if sys.version_info >= (3, 0): -+ return obj.decode('utf-8') -+ else: -+ return obj -+ - def GetStdout(self): -- return _lib.JupyROOTExecutorHandler_GetStdout() -+ return self.Decode(_lib.JupyROOTExecutorHandler_GetStdout()) - - def GetStderr(self): -- return _lib.JupyROOTExecutorHandler_GetStderr() -+ return self.Decode(_lib.JupyROOTExecutorHandler_GetStderr()) - - def GetStreamsDicts(self): - out = self.GetStdout() -@@ -65,7 +72,7 @@ class Runner(object): - ''' Asynchrously run functions - >>> import time - >>> def f(code): -- ... print code -+ ... print(code) - >>> r= Runner(f) - >>> r.Run("ss") - ss -@@ -73,16 +80,16 @@ class Runner(object): - ss - >>> def g(msg): - ... time.sleep(.5) -- ... print msg -+ ... print(msg) - >>> r= Runner(g) -- >>> r.AsyncRun("Asynchronous");print "Synchronous";time.sleep(1) -+ >>> r.AsyncRun("Asynchronous");print("Synchronous");time.sleep(1) - Synchronous - Asynchronous -- >>> r.AsyncRun("Asynchronous"); print r.HasFinished() -+ >>> r.AsyncRun("Asynchronous"); print(r.HasFinished()) - False - >>> time.sleep(1) - Asynchronous -- >>> print r.HasFinished() -+ >>> print(r.HasFinished()) - True - ''' - def __init__(self, function): -@@ -118,7 +125,7 @@ class JupyROOTDeclarer(Runner): - ''' Asynchrously execute declarations - >>> import ROOT - >>> d = JupyROOTDeclarer() -- >>> d.Run("int f(){return 3;}") -+ >>> d.Run("int f(){return 3;}".encode("utf-8")) - 1 - >>> ROOT.f() - 3 -@@ -130,7 +137,7 @@ class JupyROOTExecutor(Runner): - r''' Asynchrously execute process lines - >>> import ROOT - >>> d = JupyROOTExecutor() -- >>> d.Run('cout << "Here am I" << endl;') -+ >>> d.Run('cout << "Here am I" << endl;'.encode("utf-8")) - 1 - ''' - def __init__(self): -diff --git a/bindings/pyroot/JupyROOT/kernel/utils.py b/bindings/pyroot/JupyROOT/kernel/utils.py -index 300570c..db34847 100644 ---- a/bindings/pyroot/JupyROOT/kernel/utils.py -+++ b/bindings/pyroot/JupyROOT/kernel/utils.py -@@ -12,12 +12,12 @@ - import os - from glob import glob - -+import importlib -+ - from JupyROOT.handlers import IOHandler, JupyROOTDeclarer, JupyROOTExecutor - - import ROOT - --import __builtin__ -- - _ioHandler = None - _Executor = None - _Declarer = None -@@ -48,7 +48,7 @@ class MagicLoader(object): - if file != magics_path.replace("*.py","__init__.py"): - module_path="JupyROOT.kernel.magics."+file.split("/")[-1].replace(".py","") - try: -- module= __builtin__.__import__(module_path, globals(), locals(), ['register_magics'], -1) -+ module = importlib.import_module(module_path) - module.register_magics(kernel) - except ImportError: - raise Exception("Error importing Magic: %s"%module_path) -diff --git a/bindings/pyroot/JupyROOT/utils.py b/bindings/pyroot/JupyROOT/utils.py -index 6c41980..0a17e85 100644 ---- a/bindings/pyroot/JupyROOT/utils.py -+++ b/bindings/pyroot/JupyROOT/utils.py -@@ -14,7 +14,6 @@ import pty - import itertools - import re - import fnmatch --import handlers - import time - from hashlib import sha1 - from contextlib import contextmanager -@@ -24,7 +23,7 @@ from IPython.display import HTML - from IPython.core.extensions import ExtensionManager - import IPython.display - import ROOT --import cppcompleter -+from JupyROOT import handlers - - # We want iPython to take over the graphics - ROOT.gROOT.SetBatch() -@@ -200,7 +199,7 @@ def _codeToFilename(code): - >>> _codeToFilename("int f(i){return i*i;}") - 'dbf7e731.C' - ''' -- fileNameBase = sha1(code).hexdigest()[0:8] -+ fileNameBase = sha1(code.encode('utf-8')).hexdigest()[0:8] - return fileNameBase + ".C" - - def _dumpToUniqueFile(code): -@@ -250,6 +249,9 @@ class StreamCapture(object): - - self.asyncCapturer = handlers.Runner(self.syncCapture) - -+ self.isFirstPreExecute = True -+ self.isFirstPostExecute = True -+ - def syncCapture(self, defout = ''): - self.outString = defout - self.errString = defout -@@ -264,6 +266,9 @@ class StreamCapture(object): - time.sleep(waitTime) - - def pre_execute(self): -+ if self.isFirstPreExecute: -+ self.isFirstPreExecute = False -+ return 0 - # Unify C++ and Python outputs - self.nbOutStream = sys.stdout - sys.stdout = sys.__stdout__ -@@ -276,6 +281,10 @@ class StreamCapture(object): - self.asyncCapturer.AsyncRun('') - - def post_execute(self): -+ if self.isFirstPostExecute: -+ self.isFirstPostExecute = False -+ self.isFirstPreExecute = False -+ return 0 - self.flag = False - self.asyncCapturer.Wait() - self.ioHandler.Poll() -@@ -472,14 +481,13 @@ def setStyle(): - - captures = [] - --def loadExtensionsAndCapturers(): -+def loadMagicsAndCapturers(): - global captures - extNames = ["JupyROOT.magics." + name for name in ["cppmagic","jsrootmagic"]] - ip = get_ipython() - extMgr = ExtensionManager(ip) - for extName in extNames: - extMgr.load_extension(extName) -- cppcompleter.load_ipython_extension(ip) - captures.append(StreamCapture()) - captures.append(CaptureDrawnPrimitives()) - -@@ -498,7 +506,7 @@ def enableCppHighlighting(): - - def iPythonize(): - setStyle() -- loadExtensionsAndCapturers() -+ loadMagicsAndCapturers() - enableCppHighlighting() - enhanceROOTModule() - welcomeMsg() -diff --git a/bindings/pyroot/src/Converters.cxx b/bindings/pyroot/src/Converters.cxx -index 0926256..01f5526 100644 ---- a/bindings/pyroot/src/Converters.cxx -+++ b/bindings/pyroot/src/Converters.cxx -@@ -1537,6 +1537,7 @@ namespace { - // converter factories for ROOT types - typedef std::pair< const char*, ConverterFactory_t > NFp_t; - -+ // clang-format off - NFp_t factories_[] = { - // factories for built-ins - NFp_t( "bool", &CreateBoolConverter ), -@@ -1617,8 +1618,14 @@ namespace { - NFp_t( "void**", &CreateVoidPtrPtrConverter ), - NFp_t( "PyObject*", &CreatePyObjectConverter ), - NFp_t( "_object*", &CreatePyObjectConverter ), -- NFp_t( "FILE*", &CreateVoidArrayConverter ) -+ NFp_t( "FILE*", &CreateVoidArrayConverter ), -+ NFp_t( "Float16_t", &CreateFloatConverter ), -+ NFp_t( "const Float16_t&", &CreateConstFloatRefConverter ), -+ NFp_t( "Double32_t", &CreateDoubleConverter ), -+ NFp_t( "Double32_t&", &CreateDoubleRefConverter ), -+ NFp_t( "const Double32_t&", &CreateConstDoubleRefConverter ) - }; -+ // clang-format on - - struct InitConvFactories_t { - public: -diff --git a/bindings/pyroot/src/Executors.cxx b/bindings/pyroot/src/Executors.cxx -index 4056322..842e9f9 100644 ---- a/bindings/pyroot/src/Executors.cxx -+++ b/bindings/pyroot/src/Executors.cxx -@@ -840,8 +840,12 @@ namespace { - - NFp_t( "float", &CreateFloatExecutor ), - NFp_t( "float&", &CreateFloatRefExecutor ), -+ NFp_t( "Float16_t", &CreateFloatExecutor ), -+ NFp_t( "Float16_t&", &CreateFloatRefExecutor ), - NFp_t( "double", &CreateDoubleExecutor ), - NFp_t( "double&", &CreateDoubleRefExecutor ), -+ NFp_t( "Double32_t", &CreateDoubleExecutor ), -+ NFp_t( "Double32_t&", &CreateDoubleRefExecutor ), - NFp_t( "long double", &CreateLongDoubleExecutor ), // TODO: lost precision - NFp_t( "long double&", &CreateLongDoubleRefExecutor ), - NFp_t( "void", &CreateVoidExecutor ), diff --git a/root-rose-image.patch b/root-rose-image.patch deleted file mode 100644 index 0f13693..0000000 --- a/root-rose-image.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff --git a/tutorials/image/rose_image.C b/tutorials/image/rose_image.C -index 0614406..4e1b905 100644 ---- a/tutorials/image/rose_image.C -+++ b/tutorials/image/rose_image.C -@@ -20,7 +20,9 @@ TCanvas *c1; - - void rose_image() - { -- TImage *img = TImage::Open("$ROOTSYS/tutorials/image/rose512.jpg"); -+ TString dir = TROOT::GetTutorialDir(); -+ -+ TImage *img = TImage::Open(dir + "/image/rose512.jpg"); - - if (!img) { - printf("Could not create an image... exit\n"); -@@ -41,9 +43,9 @@ void rose_image() - - // draw text over image with foreground specified by pixmap - img->DrawText(250, 350, "goodbye cruel world ...", 24, 0, -- ar, TImage::kPlain, "fore.xpm"); -+ ar, TImage::kPlain, dir + "/image/fore.xpm"); - -- TImage *img2 = TImage::Open("mditestbg.xpm"); -+ TImage *img2 = TImage::Open(dir + "/image/mditestbg.xpm"); - - // tile image - img2->Tile(img->GetWidth(), img->GetHeight()); diff --git a/root-s390x.patch b/root-s390x.patch deleted file mode 100644 index 733061e..0000000 --- a/root-s390x.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/config/root-config.in b/config/root-config.in -index bdb90ad..1b4cdba 100755 ---- a/config/root-config.in -+++ b/config/root-config.in -@@ -247,6 +247,18 @@ linuxarm64) - auxcflags="${cxxversionflag} -fsigned-char" - auxlibs="-lm -ldl -rdynamic" - ;; -+linuxs390gcc) -+ # s390 (31 bit mode) Linux with gcc -+ auxcflags="${cxxversionflag} -m31 -fsigned-char" -+ auxldflags="-m31" -+ auxlibs="-lm -ldl -rdynamic" -+ ;; -+linuxs390xgcc) -+ # s390x (64 bit mode) Linux with gcc -+ auxcflags="${cxxversionflag} -m64 -fsigned-char" -+ auxldflags="-m64" -+ auxlibs="-lm -ldl -rdynamic" -+ ;; - freebsd) - # FreeBSD with libc5 - auxcflags="${cxxversionflag}" diff --git a/root-stressgraphics.patch b/root-stressgraphics.patch index eff695d..a36fead 100644 --- a/root-stressgraphics.patch +++ b/root-stressgraphics.patch @@ -1,13 +1,13 @@ diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref -index 7a58dc2..14560ce 100644 +index 0dbfe8c..4341c21 100644 --- a/test/stressGraphics.ref +++ b/test/stressGraphics.ref -@@ -36,7 +36,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# GIFRef# GIFErr# JPGRef# JP - 35 310239 6500 120909 500 38898 10400 62719 34100 45592 14000 317918 6500 - 36 344170 5000 153264 750 43638 6300 65828 31800 53934 6500 348704 5000 - 37 2128608 35000 794584 200 79412 3400 60580 9900 123159 3500 2156042 35000 -- 38 1456993 9000 853193 50000 54777 8600 38425 13500 91242 18100 1463263 7000 -+ 38 1456993 9000 853193 50000 54777 8600 38425 13500 91242 18100 1463263 7500 - 39 38312 200 56877 100 47205 3900 36524 11800 119641 8000 38121 200 - 40 15025 3000 29289 500 34091 1500 42525 11300 33336 3900 14787 4000 - 41 254604 5000 376027 7000 34608 5000 55666 30400 46534 6500 259594 7000 +@@ -8,7 +8,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# GIFRef# GIFErr# JPGRef# JP + 7 4980 50 13821 50 8215 310 16143 1300 12230 500 5011 70 + 8 5442 80 13415 50 9599 150 18430 700 12398 300 5469 80 + 9 9253 100 14310 50 9664 600 19851 2400 12199 900 9449 100 +- 10 8863 70 13539 100 14622 1100 24343 1100 23278 1700 8894 70 ++ 10 8863 70 13539 100 14622 1200 24343 1100 23278 1700 8894 70 + 11 12971 100 14377 50 20508 1300 34063 2000 32033 1200 12864 150 + 12 7674 100 13482 50 27519 2500 83557 3000 38505 4000 7720 150 + 13 5600 400 13242 300 9805 400 16881 400 15063 800 5638 400 diff --git a/root-template-files.patch b/root-template-files.patch deleted file mode 100644 index fcf91e6..0000000 --- a/root-template-files.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff --git a/tutorials/mlp/mlpHiggs.C b/tutorials/mlp/mlpHiggs.C -index 8c5743f..49d3ca2 100644 ---- a/tutorials/mlp/mlpHiggs.C -+++ b/tutorials/mlp/mlpHiggs.C -@@ -18,6 +18,8 @@ void mlpHiggs(Int_t ntrain=100) { - TFile *input = 0; - if (!gSystem->AccessPathName(fname)) { - input = TFile::Open(fname); -+ } else if (!gSystem->AccessPathName(Form("%s/mlp/%s", TROOT::GetTutorialDir().Data(), fname))) { -+ input = TFile::Open(Form("%s/mlp/%s", TROOT::GetTutorialDir().Data(), fname)); - } else { - printf("accessing %s file from http://root.cern.ch/files\n",fname); - input = TFile::Open(Form("http://root.cern.ch/files/%s",fname)); -diff --git a/tutorials/quadp/portfolio.C b/tutorials/quadp/portfolio.C -index 9f8bb8a..6c39446 100644 ---- a/tutorials/quadp/portfolio.C -+++ b/tutorials/quadp/portfolio.C -@@ -291,6 +291,8 @@ void portfolio() - TFile *f = 0; - if (!gSystem->AccessPathName(fname)) { - f = TFile::Open(fname); -+ } else if (!gSystem->AccessPathName(Form("%s/quadp/%s", TROOT::GetTutorialDir().Data(), fname))) { -+ f = TFile::Open(Form("%s/quadp/%s", TROOT::GetTutorialDir().Data(), fname)); - } else { - printf("accessing %s file from http://root.cern.ch/files\n",fname); - f = TFile::Open(Form("http://root.cern.ch/files/%s",fname)); -@@ -314,7 +316,7 @@ void portfolio() - for (Int_t j = 0; j <= i; j++) { - Double_t sum = 0.; - for (Int_t k = 0; k < nrData; k++) -- sum += (data[i][k]-r[i])*(data[j][k]-r[j]); -+ sum += (data[i][k]-r[i])*(data[j][k]-r[j]); - Covar(i,j) = Covar(j,i) = sum/nrData; - } - } diff --git a/root-test-install.patch b/root-test-install.patch deleted file mode 100644 index 84f782b..0000000 --- a/root-test-install.patch +++ /dev/null @@ -1,3828 +0,0 @@ -diff -Nur root-6.08.02.orig/bindings/pyroot/CMakeLists.txt root-6.08.02/bindings/pyroot/CMakeLists.txt ---- root-6.08.02.orig/bindings/pyroot/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/bindings/pyroot/CMakeLists.txt 2016-12-06 12:46:10.280969916 +0100 -@@ -36,18 +36,18 @@ - file(GLOB pyfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.py) - foreach(pyfile ${pyfiles}) - install(FILES ${pyfile} DESTINATION ${runtimedir}) -- install(CODE "execute_process(COMMAND python -m py_compile \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${runtimedir}/${pyfile} )") -- install(CODE "execute_process(COMMAND python -O -m py_compile \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${runtimedir}/${pyfile} )") -- file(COPY ${pyfile} DESTINATION ${CMAKE_BINARY_DIR}/${runtimedir}) -+ install(CODE "execute_process(COMMAND python -m py_compile \$ENV{DESTDIR}${runtimedir}/${pyfile})") -+ install(CODE "execute_process(COMMAND python -O -m py_compile \$ENV{DESTDIR}${runtimedir}/${pyfile})") -+ file(COPY ${pyfile} DESTINATION ${localruntimedir}) - endforeach() - --set( JupyROOTDirName "JupyROOT") -+set(JupyROOTDirName "JupyROOT") - install (DIRECTORY ${JupyROOTDirName} DESTINATION ${runtimedir}) --file(COPY ${JupyROOTDirName} DESTINATION ${CMAKE_BINARY_DIR}/${runtimedir}) -+file(COPY ${JupyROOTDirName} DESTINATION ${localruntimedir}) - - set( JsMVADirName "JsMVA") - install (DIRECTORY ${JsMVADirName} DESTINATION ${runtimedir}) --file(COPY ${JsMVADirName} DESTINATION ${CMAKE_BINARY_DIR}/${runtimedir}) -+file(COPY ${JsMVADirName} DESTINATION ${localruntimedir}) - - #---Install headers---------------------------------------------------------- - ROOT_INSTALL_HEADERS() -diff -Nur root-6.08.02.orig/bindings/pyroot/ROOT.py root-6.08.02/bindings/pyroot/ROOT.py ---- root-6.08.02.orig/bindings/pyroot/ROOT.py 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/bindings/pyroot/ROOT.py 2016-12-06 12:46:10.281969905 +0100 -@@ -516,7 +516,7 @@ - - # system logon, user logon, and local logon (skip Rint.Logon) - name = '.rootlogon.C' -- logons = [ os.path.join( str(self.gRootDir), 'etc', 'system' + name ), -+ logons = [ os.path.join( str(self.TROOT.GetEtcDir()), 'system' + name ), - os.path.expanduser( os.path.join( '~', name ) ) ] - if logons[-1] != os.path.join( os.getcwd(), name ): - logons.append( name ) -diff -Nur root-6.08.02.orig/cmake/modules/RootBuildOptions.cmake root-6.08.02/cmake/modules/RootBuildOptions.cmake ---- root-6.08.02.orig/cmake/modules/RootBuildOptions.cmake 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/cmake/modules/RootBuildOptions.cmake 2016-12-06 12:46:10.281969905 +0100 -@@ -234,7 +234,7 @@ - set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) # point to directories outside the build tree to the install RPATH - - # Check whether to add RPATH to the installation (the build tree always has the RPATH enabled) --if(rpath OR gnuinstall) -+if(rpath) - set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}) # install LIBDIR - set(CMAKE_SKIP_INSTALL_RPATH FALSE) # don't skip the full RPATH for the install tree - elseif(APPLE) -diff -Nur root-6.08.02.orig/cmake/modules/RootNewMacros.cmake root-6.08.02/cmake/modules/RootNewMacros.cmake ---- root-6.08.02.orig/cmake/modules/RootNewMacros.cmake 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/cmake/modules/RootNewMacros.cmake 2016-12-06 12:46:10.281969905 +0100 -@@ -19,6 +19,7 @@ - set(libprefix lib) - set(ld_library_path PATH) - set(libsuffix .dll) -+ set(localruntimedir ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - set(runtimedir ${CMAKE_INSTALL_BINDIR}) - elseif(APPLE) - set(ld_library_path DYLD_LIBRARY_PATH) -@@ -26,6 +27,7 @@ - set(scomment \#) - set(libprefix lib) - set(libsuffix .so) -+ set(localruntimedir ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) - set(runtimedir ${CMAKE_INSTALL_LIBDIR}) - else() - set(ld_library_path LD_LIBRARY_PATH) -@@ -33,6 +35,7 @@ - set(scomment \#) - set(libprefix lib) - set(libsuffix .so) -+ set(localruntimedir ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) - set(runtimedir ${CMAKE_INSTALL_LIBDIR}) - endif() - -@@ -325,7 +328,15 @@ - set(pcm_name) - else() - if(CMAKE_PROJECT_NAME STREQUAL ROOT) -- set(command rootcling -rootbuild) -+ if(gnuinstall) -+ if(WIN32) -+ set(command set ROOTIGNOREPREFIX=1 && $ -rootbuild) -+ else() -+ set(command ROOTIGNOREPREFIX=1 $ -rootbuild) -+ endif() -+ else() -+ set(command rootcling -rootbuild) -+ endif() - set(ROOTCINTDEP rootcling) - else() - set(command rootcling) -@@ -441,9 +452,6 @@ - if(TARGET G__${library}) - add_dependencies(${library} G__${library}) - endif() -- if(TARGET move_headers) -- add_dependencies(${library} move_headers) -- endif() - set_property(GLOBAL APPEND PROPERTY ROOT_EXPORTED_TARGETS ${library}) - set_target_properties(${library} PROPERTIES OUTPUT_NAME ${library_name}) - set_target_properties(${library} PROPERTIES LINK_INTERFACE_LIBRARIES "${ARG_DEPENDENCIES}") -@@ -484,9 +492,6 @@ - if(lib_srcs MATCHES "(^|/)(G__[^.]*)[.]cxx.*") - add_dependencies(${library} ${CMAKE_MATCH_2}) - endif() -- if(TARGET move_headers) -- add_dependencies(${library} move_headers) -- endif() - - #--- Only for building shared libraries - set_property(TARGET ${library} PROPERTY POSITION_INDEPENDENT_CODE 1) -@@ -532,9 +537,6 @@ - ROOT_GET_SOURCES(lib_srcs src ${ARG_UNPARSED_ARGUMENTS}) - include_directories(${CMAKE_BINARY_DIR}/include) - add_library( ${library} SHARED ${lib_srcs}) -- if(TARGET move_headers) -- add_dependencies(${library} move_headers) -- endif() - set_target_properties(${library} PROPERTIES ${ROOT_LIBRARY_PROPERTIES}) - # Do not add -Dname_EXPORTS to the command-line when building files in this - # target. Doing so is actively harmful for the modules build because it -@@ -617,6 +619,10 @@ - PATTERN ".svn" EXCLUDE - REGEX "LinkDef" EXCLUDE - ${ARG_OPTIONS}) -+ file(COPY ${d} DESTINATION ${CMAKE_BINARY_DIR}/include -+ PATTERN ".svn" EXCLUDE -+ REGEX "LinkDef" EXCLUDE -+ ${ARG_OPTIONS}) - set_property(GLOBAL APPEND PROPERTY ROOT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/${d}) - endforeach() - endfunction() -@@ -656,9 +662,6 @@ - if (ARG_ADDITIONAL_COMPILE_FLAGS) - set_target_properties(${executable} PROPERTIES COMPILE_FLAGS ${ARG_ADDITIONAL_COMPILE_FLAGS}) - endif() -- if(TARGET move_headers) -- add_dependencies(${executable} move_headers) -- endif() - - #----Installation details------------------------------------------------------ - if(NOT ARG_NOINSTALL AND CMAKE_RUNTIME_OUTPUT_DIRECTORY) -@@ -878,6 +881,9 @@ - set_property(TEST ${test} PROPERTY ENVIRONMENT ROOT_DIR=${CMAKE_BINARY_DIR}) - else() - add_test(NAME ${test} COMMAND ${_command}) -+ if (gnuinstall) -+ set_property(TEST ${test} PROPERTY ENVIRONMENT ROOTIGNOREPREFIX=1) -+ endif() - endif() - - #- Handle TIMOUT and DEPENDS arguments -diff -Nur root-6.08.02.orig/cmake/scripts/local_install.cmake root-6.08.02/cmake/scripts/local_install.cmake ---- root-6.08.02.orig/cmake/scripts/local_install.cmake 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/cmake/scripts/local_install.cmake 1970-01-01 01:00:00.000000000 +0100 -@@ -1,20 +0,0 @@ --# Arguments: --# PREFIX - Installation prefix --# COMPONENTS - Installation component -- --set(COMPONENTS ${COMPONENTS}) --set(ENV{DESTDIR} "") --foreach(component ${COMPONENTS}) -- execute_process( -- COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${PREFIX} -- -DCMAKE_INSTALL_COMPONENT=${component} -- -P cmake_install.cmake -- RESULT_VARIABLE result -- OUTPUT_QUIET -- ) -- -- if(result) -- set(msg "Local installation of ${component} failed: ${result}\n") -- message(FATAL_ERROR "${msg}") -- endif() --endforeach() -diff -Nur root-6.08.02.orig/CMakeLists.txt root-6.08.02/CMakeLists.txt ---- root-6.08.02.orig/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/CMakeLists.txt 2016-12-06 12:46:10.290969803 +0100 -@@ -91,7 +91,7 @@ - endif() - endforeach() - --#---Move (copy) the headers and other directories to binary tree--------------------------------- -+#---Move (copy) directories to binary tree------------------------------------------------------ - set(stamp_file ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/move_artifacts.stamp) - add_custom_command(OUTPUT ${stamp_file} - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/etc ${CMAKE_BINARY_DIR}/etc -@@ -119,11 +119,7 @@ - endif() - endforeach() - --add_custom_target(move_headers DEPENDS ${stamp_file} ${tutorial_files_builddir} -- COMMAND ${CMAKE_COMMAND} -DPREFIX=${CMAKE_BINARY_DIR} -- -DCOMPONENTS="headers" -- -P ${CMAKE_SOURCE_DIR}/cmake/scripts/local_install.cmake) --include_directories(${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}) -+add_custom_target(move_artifacts DEPENDS ${stamp_file} ${tutorial_files_builddir}) - - - #---Recurse into the given subdirectories. This does not actually cause another cmake executable -@@ -179,13 +175,23 @@ - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/build/unix/makepchinput.py ${CMAKE_SOURCE_DIR} . ${__clingetcpch} -- ${CMAKE_CXX_FLAGS_SEPARATE} - DEPENDS ${CMAKE_SOURCE_DIR}/build/unix/makepchinput.py ${__allFiles}) - --add_custom_command(OUTPUT etc/allDict.cxx.pch -- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/etc/dictpch/makepch.py etc/allDict.cxx.pch -I${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR} -- DEPENDS ${CMAKE_SOURCE_DIR}/etc/dictpch/makepch.py -- etc/dictpch/allLinkDefs.h -- etc/dictpch/allHeaders.h -- etc/dictpch/allCppflags.txt -- rootcling) -+if (WIN32) -+ add_custom_command(OUTPUT etc/allDict.cxx.pch -+ COMMAND set ROOTIGNOREPREFIX=1 && ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/etc/dictpch/makepch.py etc/allDict.cxx.pch -I${CMAKE_BINARY_DIR}/include -+ DEPENDS ${CMAKE_SOURCE_DIR}/etc/dictpch/makepch.py -+ etc/dictpch/allLinkDefs.h -+ etc/dictpch/allHeaders.h -+ etc/dictpch/allCppflags.txt -+ rootcling) -+else() -+ add_custom_command(OUTPUT etc/allDict.cxx.pch -+ COMMAND ROOTIGNOREPREFIX=1 ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/etc/dictpch/makepch.py etc/allDict.cxx.pch -I${CMAKE_BINARY_DIR}/include -+ DEPENDS ${CMAKE_SOURCE_DIR}/etc/dictpch/makepch.py -+ etc/dictpch/allLinkDefs.h -+ etc/dictpch/allHeaders.h -+ etc/dictpch/allCppflags.txt -+ rootcling) -+endif() - add_custom_target(onepcm ALL DEPENDS etc/allDict.cxx.pch) - set_source_files_properties(${__allFiles} PROPERTIES GENERATED TRUE) - add_dependencies(onepcm ${__allTargets}) -@@ -198,26 +204,27 @@ - DEPENDS build/unix/module.modulemap - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/build/unix/module.modulemap ${CMAKE_BINARY_DIR}/include/module.modulemap - ) -- add_dependencies(copymodulemap move_headers) - endif(cxxmodules) - - #---hsimple.root---------(use the executable for clearer dependencies and proper return code)--- --if(NOT gnuinstall) # TODO hsimple.root for gnuinstall -- add_custom_target(hsimple ALL DEPENDS tutorials/hsimple.root) -- add_dependencies(hsimple onepcm) -- if(WIN32) -- add_custom_command(OUTPUT tutorials/hsimple.root -- COMMAND set PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} && -- $ -l -q -b -n -x hsimple.C -e return -- WORKING_DIRECTORY tutorials DEPENDS root.exe Cling Hist Tree Gpad Graf HistPainter) -- else() -- add_custom_command(OUTPUT tutorials/hsimple.root -- COMMAND ${ld_library_path}=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}:$ENV{${ld_library_path}} -- $ -l -q -b -n -x hsimple.C -e return -- WORKING_DIRECTORY tutorials DEPENDS root.exe Cling Hist Tree Gpad Graf HistPainter) -- endif() -- install(FILES ${CMAKE_BINARY_DIR}/tutorials/hsimple.root DESTINATION ${CMAKE_INSTALL_TUTDIR} COMPONENT tests) -+add_custom_target(hsimple ALL DEPENDS tutorials/hsimple.root) -+add_dependencies(hsimple onepcm) -+if(WIN32) -+ add_custom_command(OUTPUT tutorials/hsimple.root -+ COMMAND set PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} && -+ set ROOTIGNOREPREFIX=1 && -+ $ -l -q -b -n -x hsimple.C -e return -+ WORKING_DIRECTORY tutorials -+ DEPENDS $ Cling Hist Tree Gpad Graf HistPainter move_artifacts) -+else() -+ add_custom_command(OUTPUT tutorials/hsimple.root -+ COMMAND ${ld_library_path}=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}:$ENV{${ld_library_path}} -+ ROOTIGNOREPREFIX=1 -+ $ -l -q -b -n -x hsimple.C -e return -+ WORKING_DIRECTORY tutorials -+ DEPENDS $ Cling Hist Tree Gpad Graf HistPainter move_artifacts) - endif() -+install(FILES ${CMAKE_BINARY_DIR}/tutorials/hsimple.root DESTINATION ${CMAKE_INSTALL_TUTDIR} COMPONENT tests) - - #---version-------------------------------------------------------------------------------------- - add_custom_target(version COMMAND ${CMAKE_SOURCE_DIR}/build/unix/makeversion.sh ${CMAKE_BINARY_DIR} -@@ -262,9 +269,6 @@ - #---Configure Testing using CTest---------------------------------------------------------------- - configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/CTestCustom.cmake ${CMAKE_BINARY_DIR} COPYONLY) - if(testing) -- if(gnuinstall) -- message(FATAL_ERROR "You cannot enable to run the tests in the build directory (testing=ON) and at the same time select a GNU style installation (gnuinstall=ON). This is because the code is built with the final installation location (CMAKE_INSTALL_PREFIX) for many ancillary files (tutorials, etc, icons, macros, etc.) and these are not available before installation. Tests can be run against the installation once is completed. See the instructions in the web") -- endif() - include(RootCTest) - if(roottest) - find_package(Git REQUIRED) -diff -Nur root-6.08.02.orig/config/RConfigure.in root-6.08.02/config/RConfigure.in ---- root-6.08.02.orig/config/RConfigure.in 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/config/RConfigure.in 2016-12-06 12:46:10.290969803 +0100 -@@ -14,10 +14,11 @@ - #define ROOTTUTDIR "@tutdir@" - #define ROOTSRCDIR "@srcdir@" - #define ROOTICONPATH "@iconpath@" --#define EXTRAICONPATH "@extraiconpath@" - #define TTFFONTDIR "@ttffontdir@" - #endif - -+#define EXTRAICONPATH "@extraiconpath@" -+ - #@setresuid@ R__HAS_SETRESUID /**/ - #@hasmathmore@ R__HAS_MATHMORE /**/ - #@haspthread@ R__HAS_PTHREAD /**/ -diff -Nur root-6.08.02.orig/config/rootrc.in root-6.08.02/config/rootrc.in ---- root-6.08.02.orig/config/rootrc.in 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/config/rootrc.in 2016-12-06 12:46:10.291969792 +0100 -@@ -9,24 +9,24 @@ - # and to PATH on Windows. - # Paths are different for Unix and Windows. The example shows the defaults - # for all ROOT applications for either Unix or Windows. --Unix.*.Root.DynamicPath: .:@libdir@: --WinNT.*.Root.DynamicPath: .;@bindir@; -+#Unix.*.Root.DynamicPath: .:@libdir@ -+#WinNT.*.Root.DynamicPath: .;@bindir@ - - # Path used to find macros. - # Paths are different for Unix and Windows. The example shows the defaults - # for all ROOT applications for either Unix or Windows. --Unix.*.Root.MacroPath: .:@macrodir@: --WinNT.*.Root.MacroPath: .;@macrodir@; -+#Unix.*.Root.MacroPath: .:@macrodir@ -+#WinNT.*.Root.MacroPath: .;@macrodir@ - - # Path used to find plugin macros. - # Paths are different for Unix and Windows. The example shows the defaults - # for all ROOT applications for either Unix or Windows. --Unix.*.Root.PluginPath: :@plugindir@: --WinNT.*.Root.PluginPath: ;@plugindir@; -+#Unix.*.Root.PluginPath: @plugindir@ -+#WinNT.*.Root.PluginPath: @plugindir@ - - # Path where to look for TrueType fonts. - Unix.*.Root.UseTTFonts: true --*.*.Root.TTFontPath: @ttffontdir@ -+#*.*.Root.TTFontPath: @ttffontdir@ - - # Use Net* API functions. - WinNT.UseNetAPI: true -@@ -222,7 +222,8 @@ - Gui.DocumentForegroundColor: black - Gui.TooltipBackgroundColor: LightYellow - Gui.TooltipForegroundColor: black --Gui.IconPath: $(HOME)/icons:@iconpath@:. -+#Unix.*.Gui.IconPath: .:$(HOME)/icons:@iconpath@:@extraiconpath@ -+#WinNT.*.Gui.IconPath: .;$(HOME)/icons;@iconpath@;@extraiconpath@ - Gui.MimeTypeFile: $(HOME)/.root.mimes - # If above does not exists defaults to this: - #Gui.MimeTypeFile: @etcdir@/root.mimes -diff -Nur root-6.08.02.orig/configure root-6.08.02/configure ---- root-6.08.02.orig/configure 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/configure 2016-12-06 12:46:10.307969611 +0100 -@@ -8229,6 +8229,7 @@ - -e "s|@bindir@|$bindir|" \ - -e "s|@etcdir@|$etcdir|" \ - -e "s|@ttffontdir@|$fontdir|" \ -+ -e "s|@extraiconpath@|$extraiconpath|" \ - -e "s|@iconpath@|$iconpath|" \ - -e "s|@hasxrd@|$hasxrd|" \ - -e "s|@hasnotxrd@|$hasnotxrd|" \ -diff -Nur root-6.08.02.orig/core/base/inc/TROOT.h root-6.08.02/core/base/inc/TROOT.h ---- root-6.08.02.orig/core/base/inc/TROOT.h 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/base/inc/TROOT.h 2016-12-06 12:46:10.307969611 +0100 -@@ -349,6 +349,21 @@ - static Int_t ConvertVersionInt2Code(Int_t v); - static Int_t RootVersionCode(); - static const char**&GetExtraInterpreterArgs(); -+ -+ static const TString& GetRootSys(); -+ static const TString& GetBinDir(); -+ static const TString& GetLibDir(); -+ static const TString& GetIncludeDir(); -+ static const TString& GetEtcDir(); -+ static const TString& GetDataDir(); -+ static const TString& GetDocDir(); -+ static const TString& GetMacroDir(); -+ static const TString& GetTutorialDir(); -+ static const TString& GetSourceDir(); -+ static const TString& GetIconPath(); -+ static const TString& GetTTFFontDir(); -+ -+ // Backward compatibility function - do not use for new code - static const char *GetTutorialsDir(); - - ClassDef(TROOT,0) //Top level (or root) structure for all classes -diff -Nur root-6.08.02.orig/core/base/src/TApplication.cxx root-6.08.02/core/base/src/TApplication.cxx ---- root-6.08.02.orig/core/base/src/TApplication.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/base/src/TApplication.cxx 2016-12-06 12:46:10.308969599 +0100 -@@ -276,11 +276,7 @@ - // mode and Root.UseTTFonts is true and Root.TTFontPath exists. Abort silently - // if libttf or libGX11TTF are not found in $ROOTSYS/lib or $ROOTSYS/ttf/lib. - const char *ttpath = gEnv->GetValue("Root.TTFontPath", --#ifdef TTFFONTDIR -- TTFFONTDIR); --#else -- "$(ROOTSYS)/fonts"); --#endif -+ TROOT::GetTTFFontDir()); - char *ttfont = gSystem->Which(ttpath, "arialbd.ttf", kReadPermission); - // Check for use of DFSG - fonts - if (!ttfont) -@@ -888,29 +884,19 @@ - Error("ProcessLine", "Cannot show demos in batch mode!"); - return 1; - } --#ifdef ROOTTUTDIR -- ProcessLine(".x " ROOTTUTDIR "/demos.C"); --#else -- ProcessLine(".x $(ROOTSYS)/tutorials/demos.C"); --#endif -+ ProcessLine(".x " + TROOT::GetTutorialDir() + "/demos.C"); - return 0; - } - - if (!strncmp(line, ".license", 8)) { --#ifdef ROOTDOCDIR -- return PrintFile(ROOTDOCDIR "/LICENSE"); --#else -- return PrintFile("$(ROOTSYS)/LICENSE"); --#endif -+ return PrintFile(TROOT::GetDocDir() + "/LICENSE"); - } - - if (!strncmp(line, ".credits", 8)) { --#ifdef ROOTDOCDIR -- return PrintFile(ROOTDOCDIR "/CREDITS"); --#else -- return PrintFile("$(ROOTSYS)/README/CREDITS"); --#endif -- -+ TString credits = TROOT::GetDocDir() + "/CREDITS"; -+ if (gSystem->AccessPathName(credits, kReadPermission)) -+ credits = TROOT::GetDocDir() + "/README/CREDITS"; -+ return PrintFile(credits); - } - - if (!strncmp(line, ".pwd", 4)) { -diff -Nur root-6.08.02.orig/core/base/src/TEnv.cxx root-6.08.02/core/base/src/TEnv.cxx ---- root-6.08.02.orig/core/base/src/TEnv.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/base/src/TEnv.cxx 2016-12-06 12:46:10.308969599 +0100 -@@ -401,21 +401,7 @@ - - TString sname = "system"; - sname += name; --#ifdef ROOTETCDIR -- char *s = gSystem->ConcatFileName(ROOTETCDIR, sname); --#else -- TString etc = gRootDir; --#ifdef WIN32 -- etc += "\\etc"; --#else -- etc += "/etc"; --#endif --#if defined(R__MACOSX) && (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) -- // on iOS etc does not exist and system resides in $ROOTSYS -- etc = gRootDir; --#endif -- char *s = gSystem->ConcatFileName(etc, sname); --#endif -+ char *s = gSystem->ConcatFileName(TROOT::GetEtcDir(), sname); - ReadFile(s, kEnvGlobal); - delete [] s; - if (!gSystem->Getenv("ROOTENV_NO_HOME")) { -@@ -685,17 +671,7 @@ - - TString sname = "system"; - sname += fRcName; --#ifdef ROOTETCDIR -- char *s = gSystem->ConcatFileName(ROOTETCDIR, sname); --#else -- TString etc = gRootDir; --#ifdef WIN32 -- etc += "\\etc"; --#else -- etc += "/etc"; --#endif -- char *s = gSystem->ConcatFileName(etc, sname); --#endif -+ char *s = gSystem->ConcatFileName(TROOT::GetEtcDir(), sname); - rootrcdir = s; - delete [] s; - } else if (level == kEnvUser) { -diff -Nur root-6.08.02.orig/core/base/src/TPluginManager.cxx root-6.08.02/core/base/src/TPluginManager.cxx ---- root-6.08.02.orig/core/base/src/TPluginManager.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/base/src/TPluginManager.cxx 2016-12-06 12:46:10.308969599 +0100 -@@ -470,6 +470,10 @@ - TPH__IsReadingDirs() = kTRUE; - - TString plugindirs = gEnv->GetValue("Root.PluginPath", (char*)0); -+ if (plugindirs.Length() == 0) { -+ plugindirs = "plugins"; -+ gSystem->PrependPathName(TROOT::GetEtcDir(), plugindirs); -+ } - #ifdef WIN32 - dirs = plugindirs.Tokenize(";"); - #else -diff -Nur root-6.08.02.orig/core/base/src/TROOT.cxx root-6.08.02/core/base/src/TROOT.cxx ---- root-6.08.02.orig/core/base/src/TROOT.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/base/src/TROOT.cxx 2016-12-06 12:46:10.309969588 +0100 -@@ -643,6 +643,22 @@ - // Initialize Operating System interface - InitSystem(); - -+ // Initialize static directory functions -+ GetRootSys(); -+ GetBinDir(); -+ GetLibDir(); -+ GetIncludeDir(); -+ GetEtcDir(); -+ GetDataDir(); -+ GetDocDir(); -+ GetMacroDir(); -+ GetTutorialDir(); -+ GetSourceDir(); -+ GetIconPath(); -+ GetTTFFontDir(); -+ -+ gRootDir = GetRootSys().Data(); -+ - TDirectory::Build(); - - // Initialize interface to CINT C++ interpreter -@@ -1876,21 +1892,9 @@ - "after the call to TROOT::InitInterpreter()!"); - } - -- const char *libcling = 0; -- char *libclingStorage = 0; --#ifdef ROOTLIBDIR -- libcling = ROOTLIBDIR "/libCling." --# ifdef R__WIN32 -- "dll"; --# else -- "so"; --# endif --#else -- libclingStorage = gSystem->DynamicPathName("libCling"); -- libcling = libclingStorage; --#endif -+ char *libcling = gSystem->DynamicPathName("libCling"); - gInterpreterLib = dlopen(libcling, RTLD_LAZY|RTLD_LOCAL); -- delete [] libclingStorage; -+ delete [] libcling; - - if (!gInterpreterLib) { - TString err = dlerror(); -@@ -2237,22 +2241,7 @@ - #endif - - TString gitinfo = "gitinfo.txt"; -- char *filename = 0; --#ifdef ROOTETCDIR -- filename = gSystem->ConcatFileName(ROOTETCDIR, gitinfo); --#else -- TString etc = gRootDir; --#ifdef WIN32 -- etc += "\\etc"; --#else -- etc += "/etc"; --#endif --#if defined(R__MACOSX) && (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) -- // on iOS etc does not exist and gitinfo resides in $ROOTSYS -- etc = gRootDir; --#endif -- filename = gSystem->ConcatFileName(etc, gitinfo); --#endif -+ char *filename = gSystem->ConcatFileName(TROOT::GetEtcDir(), gitinfo); - - FILE *fp = fopen(filename, "r"); - if (fp) { -@@ -2570,17 +2559,9 @@ - #endif - if (macroPath.Length() == 0) - #if !defined(R__WIN32) -- #ifdef ROOTMACRODIR -- macroPath = ".:" ROOTMACRODIR; -- #else -- macroPath = TString(".:") + gRootDir + "/macros"; -- #endif -+ macroPath = ".:" + TROOT::GetMacroDir(); - #else -- #ifdef ROOTMACRODIR -- macroPath = ".;" ROOTMACRODIR; -- #else -- macroPath = TString(".;") + gRootDir + "/macros"; -- #endif -+ macroPath = ".;" + TROOT::GetMacroDir(); - #endif - } - -@@ -2676,14 +2657,260 @@ - } - - //////////////////////////////////////////////////////////////////////////////// -+ -+#ifdef ROOTPREFIX -+static Bool_t IgnorePrefix() { -+ static Bool_t ignorePrefix = gSystem->Getenv("ROOTIGNOREPREFIX"); -+ return ignorePrefix; -+} -+#endif -+ -+//////////////////////////////////////////////////////////////////////////////// -+/// Get the rootsys directory in the installation. Static utility function. -+ -+const TString& TROOT::GetRootSys() { -+#ifdef ROOTPREFIX -+ if (IgnorePrefix()) { -+#endif -+ static TString rootsys; -+ if (rootsys.IsNull()) -+ rootsys = gSystem->Getenv("ROOTSYS"); -+ if (rootsys.IsNull()) -+ rootsys = gRootDir; -+ return rootsys; -+#ifdef ROOTPREFIX -+ } else { -+ const static TString rootsys = ROOTPREFIX; -+ return rootsys; -+ } -+#endif -+} -+ -+//////////////////////////////////////////////////////////////////////////////// -+/// Get the binary directory in the installation. Static utility function. -+ -+const TString& TROOT::GetBinDir() { -+#ifdef ROOTBINDIR -+ if (IgnorePrefix()) { -+#endif -+ static TString rootbindir; -+ if (rootbindir.IsNull()) { -+ rootbindir = "bin"; -+ gSystem->PrependPathName(GetRootSys(), rootbindir); -+ } -+ return rootbindir; -+#ifdef ROOTBINDIR -+ } else { -+ const static TString rootbindir = ROOTBINDIR; -+ return rootbindir; -+ } -+#endif -+} -+ -+//////////////////////////////////////////////////////////////////////////////// -+/// Get the library directory in the installation. Static utility function. -+ -+const TString& TROOT::GetLibDir() { -+#ifdef ROOTLIBDIR -+ if (IgnorePrefix()) { -+#endif -+ static TString rootlibdir; -+ if (rootlibdir.IsNull()) { -+ rootlibdir = "lib"; -+ gSystem->PrependPathName(GetRootSys(), rootlibdir); -+ } -+ return rootlibdir; -+#ifdef ROOTLIBDIR -+ } else { -+ const static TString rootlibdir = ROOTLIBDIR; -+ return rootlibdir; -+ } -+#endif -+} -+ -+//////////////////////////////////////////////////////////////////////////////// -+/// Get the include directory in the installation. Static utility function. -+ -+const TString& TROOT::GetIncludeDir() { -+#ifdef ROOTINCDIR -+ if (IgnorePrefix()) { -+#endif -+ static TString rootincdir; -+ if (rootincdir.IsNull()) { -+ rootincdir = "include"; -+ gSystem->PrependPathName(GetRootSys(), rootincdir); -+ } -+ return rootincdir; -+#ifdef ROOTINCDIR -+ } else { -+ const static TString rootincdir = ROOTINCDIR; -+ return rootincdir; -+ } -+#endif -+} -+ -+//////////////////////////////////////////////////////////////////////////////// -+/// Get the sysconfig directory in the installation. Static utility function. -+ -+const TString& TROOT::GetEtcDir() { -+#ifdef ROOTETCDIR -+ if (IgnorePrefix()) { -+#endif -+ static TString rootetcdir; -+ if (rootetcdir.IsNull()) { -+ rootetcdir = "etc"; -+ gSystem->PrependPathName(GetRootSys(), rootetcdir); -+ } -+ return rootetcdir; -+#ifdef ROOTETCDIR -+ } else { -+ const static TString rootetcdir = ROOTETCDIR; -+ return rootetcdir; -+ } -+#endif -+} -+ -+//////////////////////////////////////////////////////////////////////////////// -+/// Get the data directory in the installation. Static utility function. -+ -+const TString& TROOT::GetDataDir() { -+#ifdef ROOTDATADIR -+ if (IgnorePrefix()) { -+#endif -+ return GetRootSys(); -+#ifdef ROOTDATADIR -+ } else { -+ const static TString rootdatadir = ROOTDATADIR; -+ return rootdatadir; -+ } -+#endif -+} -+ -+//////////////////////////////////////////////////////////////////////////////// -+/// Get the documentation directory in the installation. Static utility function. -+ -+const TString& TROOT::GetDocDir() { -+#ifdef ROOTDOCDIR -+ if (IgnorePrefix()) { -+#endif -+ return GetRootSys(); -+#ifdef ROOTDOCDIR -+ } else { -+ const static TString rootdocdir = ROOTDOCDIR; -+ return rootdocdir; -+ } -+#endif -+} -+ -+//////////////////////////////////////////////////////////////////////////////// -+/// Get the macro directory in the installation. Static utility function. -+ -+const TString& TROOT::GetMacroDir() { -+#ifdef ROOTMACRODIR -+ if (IgnorePrefix()) { -+#endif -+ static TString rootmacrodir; -+ if (rootmacrodir.IsNull()) { -+ rootmacrodir = "macros"; -+ gSystem->PrependPathName(GetRootSys(), rootmacrodir); -+ } -+ return rootmacrodir; -+#ifdef ROOTMACRODIR -+ } else { -+ const static TString rootmacrodir = ROOTMACRODIR; -+ return rootmacrodir; -+ } -+#endif -+} -+ -+//////////////////////////////////////////////////////////////////////////////// - /// Get the tutorials directory in the installation. Static utility function. - --const char *TROOT::GetTutorialsDir() --{ -+const TString& TROOT::GetTutorialDir() { - #ifdef ROOTTUTDIR -- return ROOTTUTDIR; --#else -- static TString tutdir = TString(gRootDir) + "/tutorials"; -- return tutdir; -+ if (IgnorePrefix()) { -+#endif -+ static TString roottutdir; -+ if (roottutdir.IsNull()) { -+ roottutdir = "tutorials"; -+ gSystem->PrependPathName(GetRootSys(), roottutdir); -+ } -+ return roottutdir; -+#ifdef ROOTTUTDIR -+ } else { -+ const static TString roottutdir = ROOTTUTDIR; -+ return roottutdir; -+ } - #endif - } -+ -+//////////////////////////////////////////////////////////////////////////////// -+/// Get the source directory in the installation. Static utility function. -+ -+const TString& TROOT::GetSourceDir() { -+#ifdef ROOTSRCDIR -+ if (IgnorePrefix()) { -+#endif -+ static TString rootsrcdir; -+ if (rootsrcdir.IsNull()) { -+ rootsrcdir = "src"; -+ gSystem->PrependPathName(GetRootSys(), rootsrcdir); -+ } -+ return rootsrcdir; -+#ifdef ROOTSRCDIR -+ } else { -+ const static TString rootsrcdir = ROOTSRCDIR; -+ return rootsrcdir; -+ } -+#endif -+} -+ -+//////////////////////////////////////////////////////////////////////////////// -+/// Get the icon path in the installation. Static utility function. -+ -+const TString& TROOT::GetIconPath() { -+#ifdef ROOTICONPATH -+ if (IgnorePrefix()) { -+#endif -+ static TString rooticonpath; -+ if (rooticonpath.IsNull()) { -+ rooticonpath = "icons"; -+ gSystem->PrependPathName(GetRootSys(), rooticonpath); -+ } -+ return rooticonpath; -+#ifdef ROOTICONPATH -+ } else { -+ const static TString rooticonpath = ROOTICONPATH; -+ return rooticonpath; -+ } -+#endif -+} -+ -+//////////////////////////////////////////////////////////////////////////////// -+/// Get the fonts directory in the installation. Static utility function. -+ -+const TString& TROOT::GetTTFFontDir() { -+#ifdef TTFFONTDIR -+ if (IgnorePrefix()) { -+#endif -+ static TString ttffontdir; -+ if (ttffontdir.IsNull()) { -+ ttffontdir = "fonts"; -+ gSystem->PrependPathName(GetRootSys(), ttffontdir); -+ } -+ return ttffontdir; -+#ifdef TTFFONTDIR -+ } else { -+ const static TString ttffontdir = TTFFONTDIR; -+ return ttffontdir; -+ } -+#endif -+} -+ -+//////////////////////////////////////////////////////////////////////////////// -+/// Get the tutorials directory in the installation. Static utility function. -+/// Backward compatibility function - do not use for new code -+ -+const char *TROOT::GetTutorialsDir() { -+ return GetTutorialDir(); -+} -diff -Nur root-6.08.02.orig/core/base/src/TSystem.cxx root-6.08.02/core/base/src/TSystem.cxx ---- root-6.08.02.orig/core/base/src/TSystem.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/base/src/TSystem.cxx 2016-12-06 12:46:10.310969577 +0100 -@@ -1904,22 +1904,10 @@ - if (!system) { - // Mark the library in $ROOTSYS/lib as system. - const char *dirname = DirName(path); --#ifdef ROOTLIBDIR -- TString rootlibdir = ROOTLIBDIR; --#else -- TString rootlibdir = "lib"; -- PrependPathName(gRootDir, rootlibdir); --#endif -- system = R__MatchFilename(rootlibdir,dirname); -+ system = R__MatchFilename(TROOT::GetLibDir(), dirname); - - if (!system) { --#ifdef ROOTBINDIR -- TString rootbindir = ROOTBINDIR; --#else -- TString rootbindir = "bin"; -- PrependPathName(gRootDir, rootbindir); --#endif -- system = R__MatchFilename(rootbindir,dirname); -+ system = R__MatchFilename(TROOT::GetBinDir(), dirname); - } - } - -@@ -2571,12 +2559,9 @@ - #else - TString touch = "echo > "; touch += "\"" + depfilename + "\""; - #endif --#ifdef ROOTBINDIR -- TString builddep = ROOTBINDIR; --#else -- TString builddep = TString(gRootDir) + "/bin"; --#endif -- builddep += "/rmkdepend \"-f"; -+ TString builddep = "rmkdepend"; -+ gSystem->PrependPathName(TROOT::GetBinDir(), builddep); -+ builddep += " \"-f"; - builddep += depfilename; - builddep += "\" -o_" + extension + "." + gSystem->GetSoExt() + " "; - if (build_loc.BeginsWith(gSystem->WorkingDirectory())) { -@@ -2598,12 +2583,7 @@ - builddep += "/\" "; - } - builddep += " -Y -- "; --#ifndef ROOTINCDIR -- TString rootsysInclude = gSystem->Getenv("ROOTSYS"); -- rootsysInclude += "/include"; --#else -- TString rootsysInclude = ROOTINCDIR; --#endif -+ TString rootsysInclude = TROOT::GetIncludeDir(); - builddep += " \"-I"+rootsysInclude+"\" "; // cflags - builddep += includes; - builddep += defines; -@@ -3434,27 +3414,17 @@ - TString name = ".rootmap"; - TString sname = "system.rootmap"; - TString file; --#ifdef ROOTETCDIR -- AssignAndDelete(file, ConcatFileName(ROOTETCDIR, sname) ); --#else -- TString etc = gRootDir; --#ifdef WIN32 -- etc += "\\etc"; --#else -- etc += "/etc"; --#endif -- AssignAndDelete(file, ConcatFileName(etc, sname)); -+ AssignAndDelete(file, ConcatFileName(TROOT::GetEtcDir(), sname) ); - if (gSystem->AccessPathName(file)) { - // for backward compatibility check also $ROOTSYS/system if - // $ROOTSYS/etc/system does not exist -- AssignAndDelete(file, ConcatFileName(gRootDir, sname)); -+ AssignAndDelete(file, ConcatFileName(TROOT::GetRootSys(), sname)); - if (gSystem->AccessPathName(file)) { - // for backward compatibility check also $ROOTSYS/ if - // $ROOTSYS/system does not exist -- AssignAndDelete(file, ConcatFileName(gRootDir, name)); -+ AssignAndDelete(file, ConcatFileName(TROOT::GetRootSys(), name)); - } - } --#endif - mapfileStream << file << std::endl; - AssignAndDelete(file, ConcatFileName(gSystem->HomeDirectory(), name) ); - mapfileStream << file << std::endl; -@@ -3468,23 +3438,9 @@ - mapfileStream.close(); - - // ======= Generate the rootcling command line -- TString rcling; --#ifndef ROOTBINDIR -- rcling = gSystem->Getenv("ROOTSYS"); --#ifndef R__WIN32 -- rcling += "/bin/"; --#else -- rcling += "\\bin\\"; --#endif --#else -- rcling = ROOTBINDIR; --#ifndef R__WIN32 -- rcling += "/"; --#else -- rcling += "\\"; --#endif --#endif -- rcling += "rootcling -v0 \"--lib-list-prefix="; -+ TString rcling = "rootcling"; -+ PrependPathName(TROOT::GetBinDir(), rcling); -+ rcling += " -v0 \"--lib-list-prefix="; - rcling += mapfile; - rcling += "\" -f \""; - rcling.Append(dict).Append("\" -c -p "); -diff -Nur root-6.08.02.orig/core/CMakeLists.txt root-6.08.02/core/CMakeLists.txt ---- root-6.08.02.orig/core/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/CMakeLists.txt 2016-12-06 12:46:10.310969577 +0100 -@@ -63,14 +63,14 @@ - COMMAND ${CMAKE_SOURCE_DIR}/build/win/gitinfo.bat ${CMAKE_SOURCE_DIR} - COMMAND ${CMAKE_SOURCE_DIR}/build/win/githeader.bat RGitCommit.h.tmp - COMMENT "Recording the git revision now" -- DEPENDS ${dep_objects} -+ DEPENDS ${dep_objects} move_artifacts - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) - else() - add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/RGitCommit.h.tmp - COMMAND ${CMAKE_SOURCE_DIR}/build/unix/gitinfo.sh ${CMAKE_SOURCE_DIR} - COMMAND ${CMAKE_SOURCE_DIR}/build/unix/githeader.sh RGitCommit.h.tmp - COMMENT "Recording the git revision now" -- DEPENDS ${dep_objects} -+ DEPENDS ${dep_objects} move_artifacts - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) - endif() - add_custom_target(gitcommit ALL DEPENDS ${CMAKE_BINARY_DIR}/RGitCommit.h.tmp) -diff -Nur root-6.08.02.orig/core/meta/src/TClass.cxx root-6.08.02/core/meta/src/TClass.cxx ---- root-6.08.02.orig/core/meta/src/TClass.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/meta/src/TClass.cxx 2016-12-06 12:46:10.311969565 +0100 -@@ -1722,17 +1722,7 @@ - { - static const char *suffix = "class.rules"; - TString sname = suffix; --#ifdef ROOTETCDIR -- gSystem->PrependPathName(ROOTETCDIR, sname); --#else -- TString etc = gRootDir; --#ifdef WIN32 -- etc += "\\etc"; --#else -- etc += "/etc"; --#endif -- gSystem->PrependPathName(etc, sname); --#endif -+ gSystem->PrependPathName(TROOT::GetEtcDir(), sname); - - Int_t res = -1; - -diff -Nur root-6.08.02.orig/core/meta/src/TCling.cxx root-6.08.02/core/meta/src/TCling.cxx ---- root-6.08.02.orig/core/meta/src/TCling.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/meta/src/TCling.cxx 2016-12-06 12:46:10.313969543 +0100 -@@ -1056,27 +1056,26 @@ - std::vector clingArgsStorage; - clingArgsStorage.push_back("cling4root"); - -- std::string interpInclude; - // rootcling sets its arguments through TROOT::GetExtraInterpreterArgs(). - if (!fromRootCling) { - ROOT::TMetaUtils::SetPathsForRelocatability(clingArgsStorage); - - // Add -I early so ASTReader can find the headers. -- std::string interpInclude = ROOT::TMetaUtils::GetInterpreterExtraIncludePath(false); -- clingArgsStorage.push_back(interpInclude); -+ std::string interpInclude(TROOT::GetEtcDir()); -+ clingArgsStorage.push_back("-I" + interpInclude); - - // Add include path to etc/cling. FIXME: This is a short term solution. The - // llvm/clang header files shouldn't be there at all. We have to get rid of - // that dependency and avoid copying the header files. -- clingArgsStorage.push_back(interpInclude + "/cling"); -+ clingArgsStorage.push_back("-I" + interpInclude + "/cling"); - - // Add the root include directory and etc/ to list searched by default. -- clingArgsStorage.push_back(std::string("-I") + ROOT::TMetaUtils::GetROOTIncludeDir(false)); -+ clingArgsStorage.push_back(std::string("-I" + TROOT::GetIncludeDir())); - - // Add the current path to the include path - // TCling::AddIncludePath("."); - -- std::string pchFilename = interpInclude.substr(2) + "/allDict.cxx.pch"; -+ std::string pchFilename = interpInclude + "/allDict.cxx.pch"; - if (gSystem->Getenv("ROOT_PCH")) { - pchFilename = gSystem->Getenv("ROOT_PCH"); - } -@@ -1095,7 +1094,11 @@ - eArg = clingArgsStorage.end(); iArg != eArg; ++iArg) - interpArgs.push_back(iArg->c_str()); - -- std::string llvmResourceDir = ROOT::TMetaUtils::GetLLVMResourceDir(false); -+#ifdef R__EXTERN_LLVMDIR -+ TString llvmResourceDir = R__EXTERN_LLVMDIR; -+#else -+ TString llvmResourceDir = TROOT::GetEtcDir() + "/cling"; -+#endif - // Add statically injected extra arguments, usually coming from rootcling. - for (const char** extraArgs = TROOT::GetExtraInterpreterArgs(); - extraArgs && *extraArgs; ++extraArgs) { -@@ -1109,7 +1112,7 @@ - - fInterpreter = new cling::Interpreter(interpArgs.size(), - &(interpArgs[0]), -- llvmResourceDir.c_str()); -+ llvmResourceDir); - - if (!fromRootCling) { - fInterpreter->installLazyFunctionCreator(llvmLazyFunctionCreator); -@@ -4722,21 +4725,7 @@ - - TString sname = "system"; - sname += name; --#ifdef ROOTETCDIR -- char *s = gSystem->ConcatFileName(ROOTETCDIR, sname); --#else -- TString etc = gRootDir; --#ifdef WIN32 -- etc += "\\etc"; --#else -- etc += "/etc"; --#endif --#if defined(R__MACOSX) && (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) -- // on iOS etc does not exist and system resides in $ROOTSYS -- etc = gRootDir; --#endif -- char *s = gSystem->ConcatFileName(etc, sname); --#endif -+ char *s = gSystem->ConcatFileName(TROOT::GetEtcDir(), sname); - - Int_t ret = ReadRootmapFile(s); - if (ret == -3) // old format -diff -Nur root-6.08.02.orig/core/metautils/inc/TMetaUtils.h root-6.08.02/core/metautils/inc/TMetaUtils.h ---- root-6.08.02.orig/core/metautils/inc/TMetaUtils.h 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/metautils/inc/TMetaUtils.h 2016-12-06 12:46:10.313969543 +0100 -@@ -334,10 +334,6 @@ - //______________________________________________________________________________ - llvm::StringRef DataMemberInfo__ValidArrayIndex(const clang::DeclaratorDecl &m, int *errnum = 0, llvm::StringRef *errstr = 0); - --//______________________________________________________________________________ --// Return the ROOT include directory --std::string GetROOTIncludeDir(bool rootbuild); -- - enum class EIOCtorCategory : short {kAbsent, kDefault, kIOPtrType, kIORefType}; - - //______________________________________________________________________________ -@@ -544,18 +540,6 @@ - const char* headers[]); - - //______________________________________________________________________________ --// Return the -I needed to find RuntimeUniverse.h --std::string GetInterpreterExtraIncludePath(bool rootbuild); -- --//______________________________________________________________________________ --// Return the LLVM / clang resource directory --std::string GetLLVMResourceDir(bool rootbuild); -- --//______________________________________________________________________________ --// Return the ROOT include directory --std::string GetROOTIncludeDir(bool rootbuild); -- --//______________________________________________________________________________ - // Return (in the argument 'output') a mangled version of the C++ symbol/type (pass as 'input') - // that can be used in C++ as a variable name. - void GetCppName(std::string &output, const char *input); -diff -Nur root-6.08.02.orig/core/metautils/src/TMetaUtils.cxx root-6.08.02/core/metautils/src/TMetaUtils.cxx ---- root-6.08.02.orig/core/metautils/src/TMetaUtils.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/metautils/src/TMetaUtils.cxx 2016-12-06 12:46:10.314969531 +0100 -@@ -3303,40 +3303,6 @@ - } - - //////////////////////////////////////////////////////////////////////////////// --/// Return the -I needed to find RuntimeUniverse.h -- --std::string ROOT::TMetaUtils::GetInterpreterExtraIncludePath(bool rootbuild) --{ --#ifdef ROOTETCDIR -- if (rootbuild) { -- // Building ROOT, ignore ROOTETCDIR! --#endif -- const char* rootsys = getenv("ROOTSYS"); -- if (!rootsys) { -- Error(0, "Environment variable ROOTSYS not set!"); -- return "-Ietc"; -- } -- return std::string("-I") + rootsys + "/etc"; --#ifdef ROOTETCDIR -- } -- return std::string("-I") + ROOTETCDIR; --#endif --} -- --//////////////////////////////////////////////////////////////////////////////// --/// Return the LLVM / clang resource directory -- --std::string ROOT::TMetaUtils::GetLLVMResourceDir(bool rootbuild) --{ --#ifdef R__EXTERN_LLVMDIR -- return R__EXTERN_LLVMDIR; --#else -- return GetInterpreterExtraIncludePath(rootbuild) -- .substr(2, std::string::npos) + "/cling"; --#endif --} -- --//////////////////////////////////////////////////////////////////////////////// - /// Get the template specialisation decl and template decl behind the qualtype - /// Returns true if successfully found, false otherwise - -@@ -3967,29 +3933,6 @@ - } - - //////////////////////////////////////////////////////////////////////////////// -- --std::string ROOT::TMetaUtils::GetROOTIncludeDir(bool rootbuild) --{ -- const std::string defaultInclude ("include"); -- if (!rootbuild) { --#ifndef ROOTINCDIR -- const char* rootSysContent = getenv("ROOTSYS"); -- if (rootSysContent) { -- std::string incl_rootsys (rootSysContent); -- return incl_rootsys + "/" + defaultInclude; -- } else { -- Error(0,"Environment variable ROOTSYS not set"); -- return defaultInclude; -- } --#else -- return ROOTINCDIR; --#endif -- } -- -- return defaultInclude; --} -- --//////////////////////////////////////////////////////////////////////////////// - /// Return the dictionary file name for a module - - std::string ROOT::TMetaUtils::GetModuleFileName(const char* moduleName) -diff -Nur root-6.08.02.orig/core/rint/src/TRint.cxx root-6.08.02/core/rint/src/TRint.cxx ---- root-6.08.02.orig/core/rint/src/TRint.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/rint/src/TRint.cxx 2016-12-06 12:46:10.314969531 +0100 -@@ -305,17 +305,7 @@ - TString name = ".rootlogon.C"; - TString sname = "system"; - sname += name; --#ifdef ROOTETCDIR -- char *s = gSystem->ConcatFileName(ROOTETCDIR, sname); --#else -- TString etc = gRootDir; --#ifdef WIN32 -- etc += "\\etc"; --#else -- etc += "/etc"; --#endif -- char *s = gSystem->ConcatFileName(etc, sname); --#endif -+ char *s = gSystem->ConcatFileName(TROOT::GetEtcDir(), sname); - if (!gSystem->AccessPathName(s, kReadPermission)) { - ProcessFile(s); - } -diff -Nur root-6.08.02.orig/core/rint/src/TTabCom.cxx root-6.08.02/core/rint/src/TTabCom.cxx ---- root-6.08.02.orig/core/rint/src/TTabCom.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/rint/src/TTabCom.cxx 2016-12-06 12:46:10.315969520 +0100 -@@ -1671,8 +1671,7 @@ - case kROOT_Load: - { - const TString fileName = s3("[^\"]*$"); --// const TString dynamicPath = DeterminePath( fileName, TROOT::GetDynamicPath() ); /* should use this one */ -- const TString dynamicPath = DeterminePath(fileName,gEnv->GetValue("Root.DynamicPath",(char *) 0)); -+ const TString dynamicPath = DeterminePath(fileName, gSystem->GetDynamicPath()); - const TSeqCollection *pListOfFiles = GetListOfFilesInPath(dynamicPath); - - // pos = Complete( "[^\"/]*$", pListOfFiles, "\");", out); -diff -Nur root-6.08.02.orig/core/unix/src/TUnixSystem.cxx root-6.08.02/core/unix/src/TUnixSystem.cxx ---- root-6.08.02.orig/core/unix/src/TUnixSystem.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/unix/src/TUnixSystem.cxx 2016-12-06 12:46:10.316969509 +0100 -@@ -458,7 +458,9 @@ - - static void SetRootSys() - { --#ifndef ROOTPREFIX -+#ifdef ROOTPREFIX -+ if (gSystem->Getenv("ROOTIGNOREPREFIX")) { -+#endif - void *addr = (void *)SetRootSys; - Dl_info info; - if (dladdr(addr, &info) && info.dli_fname && info.dli_fname[0]) { -@@ -471,8 +473,8 @@ - gSystem->Setenv("ROOTSYS", gSystem->DirName(rs)); - } - } --#else -- return; -+#ifdef ROOTPREFIX -+ } - #endif - } - #endif -@@ -500,7 +502,9 @@ - TRegexp sovers = "libCore\\.[0-9]+\\.*[0-9]*\\.so"; - TRegexp dyvers = "libCore\\.[0-9]+\\.*[0-9]*\\.dylib"; - --#ifndef ROOTPREFIX -+#ifdef ROOTPREFIX -+ if (gSystem->Getenv("ROOTIGNOREPREFIX")) { -+#endif - #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR - // first loaded is the app so set ROOTSYS to app bundle - if (i == 1) { -@@ -526,6 +530,8 @@ - } - } - #endif -+#ifdef ROOTPREFIX -+ } - #endif - - // when libSystem.B.dylib is loaded we have finished loading all dylibs -@@ -613,13 +619,8 @@ - SetRootSys(); - #endif - --#ifndef ROOTPREFIX -- gRootDir = Getenv("ROOTSYS"); -- if (gRootDir == 0) -- gRootDir= "/usr/local/root"; --#else -- gRootDir = ROOTPREFIX; --#endif -+ // This is a fallback in case TROOT::GetRootSys() can't determine ROOTSYS -+ gRootDir = "/usr/local/root"; - - return kFALSE; - } -@@ -2240,22 +2241,17 @@ - if (AccessPathName(gdbscript, kReadPermission)) { - fprintf(stderr, "Root.StacktraceScript %s does not exist\n", gdbscript.Data()); - gdbscript = ""; -- } else { -- gdbscript += " "; - } - } - if (gdbscript == "") { --#ifdef ROOTETCDIR -- gdbscript.Form("%s/gdb-backtrace.sh", ROOTETCDIR); --#else -- gdbscript.Form("%s/etc/gdb-backtrace.sh", Getenv("ROOTSYS")); --#endif -+ gdbscript = "gdb-backtrace.sh"; -+ gSystem->PrependPathName(TROOT::GetEtcDir(), gdbscript); - if (AccessPathName(gdbscript, kReadPermission)) { - fprintf(stderr, "Error in script %s is missing\n", gdbscript.Data()); - return; - } -- gdbscript += " "; - } -+ gdbscript += " "; - - TString gdbmess = gEnv->GetValue("Root.StacktraceMessage", ""); - gdbmess = gdbmess.Strip(); -@@ -4602,11 +4598,7 @@ - TString rdynpath = gEnv->GetValue("Root.DynamicPath", (char*)0); - rdynpath.ReplaceAll(": ", ":"); // in case DynamicPath was extended - if (rdynpath.IsNull()) { --#ifdef ROOTLIBDIR -- rdynpath = ".:"; rdynpath += ROOTLIBDIR; --#else -- rdynpath = ".:"; rdynpath += gRootDir; rdynpath += "/lib"; --#endif -+ rdynpath = ".:"; rdynpath += TROOT::GetLibDir(); - } - TString ldpath; - #if defined (R__AIX) -@@ -4627,16 +4619,9 @@ - else { - dynpath = ldpath; dynpath += ":"; dynpath += rdynpath; - } -- --#ifdef ROOTLIBDIR -- if (!dynpath.Contains(ROOTLIBDIR)) { -- dynpath += ":"; dynpath += ROOTLIBDIR; -+ if (!dynpath.Contains(TROOT::GetLibDir())) { -+ dynpath += ":"; dynpath += TROOT::GetLibDir(); - } --#else -- if (!dynpath.Contains(TString::Format("%s/lib", gRootDir))) { -- dynpath += ":"; dynpath += gRootDir; dynpath += "/lib"; -- } --#endif - if (gCling) { - dynpath += ":"; dynpath += gCling->GetSTLIncludePath(); - } else -diff -Nur root-6.08.02.orig/core/utils/CMakeLists.txt root-6.08.02/core/utils/CMakeLists.txt ---- root-6.08.02.orig/core/utils/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/utils/CMakeLists.txt 2016-12-06 12:46:10.316969509 +0100 -@@ -66,27 +66,27 @@ - DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT applications) - endif() - --set(R__LLVMRESOURCEDIR ${CMAKE_BINARY_DIR}/etc/cling) --configure_file(src/rootcling.cxx rootcling_tmp.cxx @ONLY) -+configure_file(src/rootcling.cxx src/rootcling_tmp.cxx @ONLY) - - if(WIN32) -- set_source_files_properties(rootcling_tmp.cxx PROPERTIES COMPILE_FLAGS "-D_WIN32 -DNOMINMAX -DROOT_STAGE1_BUILD -DR__LLVMRESOURCEDIR") -+ set_source_files_properties(src/rootcling_tmp.cxx PROPERTIES COMPILE_FLAGS "-D_WIN32 -DNOMINMAX -DROOT_STAGE1_BUILD") - else() - if(CXX_HAS_fno_rtti) -- set_source_files_properties(rootcling_tmp.cxx PROPERTIES COMPILE_FLAGS "-DROOT_STAGE1_BUILD -DR__LLVMRESOURCEDIR -fno-rtti") -+ set_source_files_properties(src/rootcling_tmp.cxx PROPERTIES COMPILE_FLAGS "-DROOT_STAGE1_BUILD -fno-rtti") - else() -- set_source_files_properties(rootcling_tmp.cxx PROPERTIES COMPILE_FLAGS "-DROOT_STAGE1_BUILD -DR__LLVMRESOURCEDIR") -+ set_source_files_properties(src/rootcling_tmp.cxx PROPERTIES COMPILE_FLAGS "-DROOT_STAGE1_BUILD") - endif() - endif() - - ROOT_EXECUTABLE(rootcling_tmp src/LinkdefReader.cxx src/DictSelectionReader.cxx -- src/TModuleGenerator.cxx ${CMAKE_CURRENT_BINARY_DIR}/rootcling_tmp.cxx -+ src/TModuleGenerator.cxx src/rootcling_tmp.cxx - ${CMAKE_SOURCE_DIR}/core/metautils/src/TMetaUtils.cxx - $ - $ - $ - LIBRARIES ${CLING_LIBRARIES} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT} - NOINSTALL) -+set_target_properties(rootcling_tmp PROPERTIES RUNTIME_OUTPUT_DIRECTORY src) - add_dependencies(rootcling_tmp CLING LLVMRES) - set_source_files_properties(src/LinkdefReader.cxx PROPERTIES COMPILE_FLAGS -fno-rtti) - set_source_files_properties(src/TModuleGenerator.cxx PROPERTIES COMPILE_FLAGS -fno-rtti) -diff -Nur root-6.08.02.orig/core/utils/ModuleVars.mk root-6.08.02/core/utils/ModuleVars.mk ---- root-6.08.02.orig/core/utils/ModuleVars.mk 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/utils/ModuleVars.mk 2016-12-06 12:46:10.316969509 +0100 -@@ -48,7 +48,7 @@ - ROOTCINTEXE := bin/rootcint$(EXEEXT) - GENREFLEXEXE := bin/genreflex$(EXEEXT) - ROOTCLINGSTAGE1 := $(ROOTCLINGTMPEXE) --ROOTCLINGSTAGE2 := $(ROOTCLINGEXE) -rootbuild -+ROOTCLINGSTAGE2 := ROOTIGNOREPREFIX=1 $(ROOTCLINGEXE) -rootbuild - - ##### Dependencies for all dictionaries - ROOTCLINGSTAGE1DEP := $(ROOTCLINGTMPEXE) -diff -Nur root-6.08.02.orig/core/utils/src/rootcling.cxx root-6.08.02/core/utils/src/rootcling.cxx ---- root-6.08.02.orig/core/utils/src/rootcling.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/utils/src/rootcling.cxx 2016-12-06 12:46:10.317969497 +0100 -@@ -270,12 +270,6 @@ - bool buildingROOT = false; - #endif - --#ifdef R__EXTERN_LLVMDIR --# define R__LLVMDIR R__EXTERN_LLVMDIR --#else --# define R__LLVMDIR "./interpreter/llvm/inst" // only works for rootbuild for now! --#endif -- - namespace { - // Copy-pasted from TClass.h We cannot #include TClass.h because we are compiling in -fno-rtti mode - template struct IsPointerTClassCopy { -@@ -3909,11 +3903,6 @@ - clingArgs.push_back("-DG__VECTOR_HAS_CLASS_ITERATOR"); - } - --#if defined(ROOTINCDIR) -- if (!buildingROOT) -- SetRootSys(); --#endif -- - if (ic < argc && !strcmp(argv[ic], "-c")) { - // Simply ignore the -c options. - ic++; -@@ -4069,7 +4058,11 @@ - } - - ic = nextStart; -- clingArgs.push_back(std::string("-I") + TMetaUtils::GetROOTIncludeDir(buildingROOT)); -+#ifdef ROOT_STAGE1_BUILD -+ clingArgs.push_back(std::string("-I") + getenv("ROOTSYS") + "/include"); -+#else -+ clingArgs.push_back(std::string("-I") + TROOT__GetIncludeDir()); -+#endif - - std::vector pcmArgs; - for (size_t parg = 0, n = clingArgs.size(); parg < n; ++parg) { -@@ -4093,7 +4086,11 @@ - } - - // cling-only arguments -- clingArgs.push_back(TMetaUtils::GetInterpreterExtraIncludePath(buildingROOT)); -+#ifdef ROOT_STAGE1_BUILD -+ clingArgs.push_back(std::string("-I") + getenv("ROOTSYS") + "/etc"); -+#else -+ clingArgs.push_back(std::string("-I") + TROOT__GetEtcDir()); -+#endif - // We do not want __ROOTCLING__ in the pch! - if (!onepcm) { - clingArgs.push_back("-D__ROOTCLING__"); -@@ -4118,10 +4115,14 @@ - } - - std::string resourceDir; --#ifdef R__LLVMRESOURCEDIR -- resourceDir = "@R__LLVMRESOURCEDIR@"; -+#ifdef R__EXTERN_LLVMDIR -+ resourceDir = R__EXTERN_LLVMDIR; - #else -- resourceDir = TMetaUtils::GetLLVMResourceDir(buildingROOT); -+#ifdef ROOT_STAGE1_BUILD -+ resourceDir = std::string(getenv("ROOTSYS")) + "/etc/cling"; -+#else -+ resourceDir = std::string(TROOT__GetEtcDir()) + "/cling"; -+#endif - #endif - - #ifndef ROOT_STAGE1_BUILD -@@ -4162,11 +4163,6 @@ - - interp.getOptions().ErrorOut = true; - interp.enableRawInput(true); --#ifdef ROOTINCDIR -- const bool useROOTINCDIR = !buildingROOT; --#else -- const bool useROOTINCDIR = false; --#endif - if (isGenreflex) { - if (interp.declare("namespace std {} using namespace std;") != cling::Interpreter::kSuccess) { - // There was an error. -@@ -4182,17 +4178,10 @@ - "#include \n" - "#include \n" - ) != cling::Interpreter::kSuccess -- || (!useROOTINCDIR -- && interp.declare("#include \"Rtypes.h\"\n" -- "#include \"TClingRuntime.h\"\n" -- "#include \"TObject.h\"") != cling::Interpreter::kSuccess) --#ifdef ROOTINCDIR -- || (useROOTINCDIR -- && interp.declare("#include \"" ROOTINCDIR "/Rtypes.h\"\n" -- "#include \"" ROOTINCDIR "/TClingRuntime.h\"\n" -- "#include \"" ROOTINCDIR "/TObject.h\"") != cling::Interpreter::kSuccess -- ) --#endif -+ || interp.declare("#include \"Rtypes.h\"\n" -+ "#include \"TClingRuntime.h\"\n" -+ "#include \"TObject.h\"" -+ ) != cling::Interpreter::kSuccess - ) { - // There was an error. - ROOT::TMetaUtils::Error(0, "Error loading the default header files.\n"); -diff -Nur root-6.08.02.orig/core/utils/src/rootclingTCling.cxx root-6.08.02/core/utils/src/rootclingTCling.cxx ---- root-6.08.02.orig/core/utils/src/rootclingTCling.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/utils/src/rootclingTCling.cxx 2016-12-06 12:46:10.317969497 +0100 -@@ -40,6 +40,18 @@ - } - - extern "C" -+const char *TROOT__GetIncludeDir() -+{ -+ return TROOT::GetIncludeDir().Data(); -+} -+ -+extern "C" -+const char *TROOT__GetEtcDir() -+{ -+ return TROOT::GetEtcDir().Data(); -+} -+ -+extern "C" - cling::Interpreter *TCling__GetInterpreter() - { - static bool isInitialized = false; -diff -Nur root-6.08.02.orig/core/utils/src/rootclingTCling.h root-6.08.02/core/utils/src/rootclingTCling.h ---- root-6.08.02.orig/core/utils/src/rootclingTCling.h 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/utils/src/rootclingTCling.h 2016-12-06 12:46:10.318969486 +0100 -@@ -21,6 +21,8 @@ - - extern "C" { - const char ** *TROOT__GetExtraInterpreterArgs(); -+ const char *TROOT__GetIncludeDir(); -+ const char *TROOT__GetEtcDir(); - cling::Interpreter *TCling__GetInterpreter(); - void InitializeStreamerInfoROOTFile(const char *filename); - void AddStreamerInfoToROOTFile(const char *normName); -diff -Nur root-6.08.02.orig/core/winnt/src/TWinNTSystem.cxx root-6.08.02/core/winnt/src/TWinNTSystem.cxx ---- root-6.08.02.orig/core/winnt/src/TWinNTSystem.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/winnt/src/TWinNTSystem.cxx 2016-12-06 12:46:10.318969486 +0100 -@@ -362,11 +362,7 @@ - TString rdynpath = gEnv ? gEnv->GetValue("Root.DynamicPath", (char*)0) : ""; - rdynpath.ReplaceAll("; ", ";"); // in case DynamicPath was extended - if (rdynpath == "") { --#ifdef ROOTBINDIR -- rdynpath = ".;"; rdynpath += ROOTBINDIR; --#else -- rdynpath = ".;"; rdynpath += gRootDir; rdynpath += "/bin"; --#endif -+ rdynpath = ".;"; rdynpath += TROOT::GetBinDir(); - } - TString path = gSystem->Getenv("PATH"); - if (path == "") -@@ -376,15 +372,10 @@ - } - - } --#ifdef ROOTLIBDIR -- if (!dynpath.Contains(ROOTLIBDIR)) { -- dynpath += ";"; dynpath += ROOTLIBDIR; -- } --#else -- if (!dynpath.Contains(TString::Format("%s/lib", gRootDir))) { -- dynpath += ";"; dynpath += gRootDir; dynpath += "/lib"; -+ -+ if (!dynpath.Contains(TROOT::GetLibDir())) { -+ dynpath += ";"; dynpath += TROOT::GetLibDir(); - } --#endif - - return dynpath; - } -@@ -823,16 +814,8 @@ - } - - // determine the fileopen.C file path: -- TString fileopen; --#ifndef ROOT_PREFIX -- fileopen += sys->TWinNTSystem::DriveName(buf); -- fileopen += ":"; -- fileopen += sys->TWinNTSystem::DirName(sys->TWinNTSystem::DirName(buf)); -- fileopen += "\\macros"; --#else -- fileopen += ROOTMACRODIR; --#endif -- fileopen += "\\fileopen.C"; -+ TString fileopen = "fileopen.C"; -+ gSystem->PrependPathName(TROOT::GetMacroDir(), fileopen); - - if (regROOTwrite) { - // only write to registry if fileopen.C is readable -@@ -1007,7 +990,9 @@ - - char *buf = new char[MAX_MODULE_NAME32 + 1]; - --#ifndef ROOTPREFIX -+#ifdef ROOTPREFIX -+ if (gSystem->Getenv("ROOTIGNOREPREFIX") { -+#endif - // set ROOTSYS - HMODULE hModCore = ::GetModuleHandle("libCore.dll"); - if (hModCore) { -@@ -1035,6 +1020,8 @@ - } - } - } -+#ifdef ROOTPREFIX -+ } - #endif - - UpdateRegistry(this, buf); -@@ -1112,23 +1099,17 @@ - - fSigcnt = 0; - --#ifndef ROOTPREFIX -- gRootDir = Getenv("ROOTSYS"); -- if (gRootDir == 0) { -- static char lpFilename[MAX_PATH]; -- if (::GetModuleFileName(NULL, // handle to module to find filename for -- lpFilename, // pointer to buffer to receive module path -- sizeof(lpFilename))) // size of buffer, in characters -- { -- const char *dirName = DirName(DirName(lpFilename)); -- gRootDir = StrDup(dirName); -- } else { -- gRootDir = 0; -- } -+ // This is a fallback in case TROOT::GetRootSys() can't determine ROOTSYS -+ static char lpFilename[MAX_PATH]; -+ if (::GetModuleFileName( -+ NULL, // handle to module to find filename for -+ lpFilename, // pointer to buffer to receive module path -+ sizeof(lpFilename))) { // size of buffer, in characters -+ const char *dirName = DirName(DirName(lpFilename)); -+ gRootDir = StrDup(dirName); -+ } else { -+ gRootDir = 0; - } --#else -- gRootDir= ROOTPREFIX; --#endif - - // Increase the accuracy of Sleep() without needing to link to winmm.lib - typedef UINT (WINAPI* LPTIMEBEGINPERIOD)( UINT uPeriod ); -diff -Nur root-6.08.02.orig/core/zip/CMakeLists.txt root-6.08.02/core/zip/CMakeLists.txt ---- root-6.08.02.orig/core/zip/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/core/zip/CMakeLists.txt 2016-12-06 12:46:10.319969475 +0100 -@@ -22,6 +22,7 @@ - # Define all the header files which should be installed when - # doing a "make install" - install(FILES ${ZLIB_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT headers) -+file(COPY ${ZLIB_HEADERS} DESTINATION ${CMAKE_BINARY_DIR}/include) - set_property(GLOBAL APPEND PROPERTY ROOT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/inc) - - ROOT_OBJECT_LIBRARY(Zip ${ZLIB_SRCS}) -diff -Nur root-6.08.02.orig/documentation/doxygen/converttonotebook.py root-6.08.02/documentation/doxygen/converttonotebook.py ---- root-6.08.02.orig/documentation/doxygen/converttonotebook.py 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/documentation/doxygen/converttonotebook.py 2016-12-06 12:46:10.319969475 +0100 -@@ -601,7 +601,7 @@ - def rs401dGetFiles(code): - if tutName == "rs401d_FeldmanCousins": - code = code.replace( -- """#if !defined(__CINT__) || defined(__MAKECINT__)\n#include "../tutorials/roostats/NuMuToNuE_Oscillation.h"\n#include "../tutorials/roostats/NuMuToNuE_Oscillation.cxx" // so that it can be executed directly\n#else\n#include "../tutorials/roostats/NuMuToNuE_Oscillation.cxx+" // so that it can be executed directly\n#endif""" , """std::string tutDir = gROOT->GetTutorialsDir();\nTString headerDir = TString::Format("#include \\\"%s/roostats/NuMuToNuE_Oscillation.h\\\"", tutDir.c_str());\nTString impDir = TString::Format("#include \\\"%s/roostats/NuMuToNuE_Oscillation.cxx\\\"", tutDir.c_str());\ngROOT->ProcessLine(headerDir);\ngROOT->ProcessLine(impDir);""") -+ """#if !defined(__CINT__) || defined(__MAKECINT__)\n#include "../tutorials/roostats/NuMuToNuE_Oscillation.h"\n#include "../tutorials/roostats/NuMuToNuE_Oscillation.cxx" // so that it can be executed directly\n#else\n#include "../tutorials/roostats/NuMuToNuE_Oscillation.cxx+" // so that it can be executed directly\n#endif""" , """TString tutDir = gROOT->GetTutorialDir();\nTString headerDir = TString::Format("#include \\\"%s/roostats/NuMuToNuE_Oscillation.h\\\"", tutDir.Data());\nTString impDir = TString::Format("#include \\\"%s/roostats/NuMuToNuE_Oscillation.cxx\\\"", tutDir.Data());\ngROOT->ProcessLine(headerDir);\ngROOT->ProcessLine(impDir);""") - return code - - -diff -Nur root-6.08.02.orig/geom/geom/src/TGeoElement.cxx root-6.08.02/geom/geom/src/TGeoElement.cxx ---- root-6.08.02.orig/geom/geom/src/TGeoElement.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/geom/geom/src/TGeoElement.cxx 2016-12-06 12:46:10.319969475 +0100 -@@ -39,6 +39,7 @@ - #include "Riostream.h" - - #include "TSystem.h" -+#include "TROOT.h" - #include "TObjArray.h" - #include "TVirtualGeoPainter.h" - #include "TGeoManager.h" -@@ -1128,12 +1129,8 @@ - { - if (HasRNElements()) return; - TGeoElementRN *elem; -- TString rnf; --#ifdef ROOTETCDIR -- rnf.Form("%s/RadioNuclides.txt", ROOTETCDIR); --#else -- rnf.Form("%s/etc/RadioNuclides.txt", gSystem->Getenv("ROOTSYS")); --#endif -+ TString rnf = "RadioNuclides.txt"; -+ gSystem->PrependPathName(TROOT::GetEtcDir(), rnf); - FILE *fp = fopen(rnf, "r"); - if (!fp) { - Error("ImportElementsRN","File RadioNuclides.txt not found"); -diff -Nur root-6.08.02.orig/graf2d/asimage/src/TASImage.cxx root-6.08.02/graf2d/asimage/src/TASImage.cxx ---- root-6.08.02.orig/graf2d/asimage/src/TASImage.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/asimage/src/TASImage.cxx 2016-12-06 12:46:10.320969463 +0100 -@@ -357,33 +357,33 @@ - - static void init_icon_paths() - { -- const char *icons = "/icons"; --#ifdef R__WIN32 -- icons = "\\icons"; --#endif -- -- TString homeIcons = gSystem->HomeDirectory(); -- homeIcons += icons; -- -- TString rootIcons = gSystem->Getenv("ROOTSYS"); -- rootIcons += icons; -- -- TString guiIcons = gEnv->GetValue("Gui.IconPath", ""); -- -- gIconPaths[0] = StrDup("."); -- gIconPaths[1] = StrDup(homeIcons.Data()); -- gIconPaths[2] = StrDup(rootIcons.Data()); -- gIconPaths[3] = StrDup(guiIcons.Data()); -- --#ifdef ROOTICONPATH -- gIconPaths[4] = StrDup(ROOTICONPATH); -+ TString icon_path = gEnv->GetValue("Gui.IconPath", ""); -+ if (icon_path.IsNull()) { -+ icon_path = "icons"; -+ gSystem->PrependPathName(gSystem->HomeDirectory(), icon_path); -+#ifndef R__WIN32 -+ icon_path = ".:" + icon_path + ":" + TROOT::GetIconPath() + ":" + EXTRAICONPATH; -+#else -+ icon_path = ".;" + icon_path + ";" + TROOT::GetIconPath() + ";" + EXTRAICONPATH; - #endif -+ } - --#ifdef EXTRAICONPATH -- gIconPaths[5] = StrDup(EXTRAICONPATH); -+ Int_t cnt = 0; -+ Ssiz_t from = 0; -+ TString token; -+#ifndef R__WIN32 -+ const char *delim = ":"; -+#else -+ const char *delim = ";"; - #endif -- -- gIconPaths[6] = 0; -+ while (icon_path.Tokenize(token, from, delim) && cnt < 6) { -+ char *path = gSystem->ExpandPathName(token.Data()); -+ if (path) { -+ gIconPaths[cnt] = path; -+ cnt++; -+ } -+ } -+ gIconPaths[cnt] = 0; - } - - //////////////////////////////////////////////////////////////////////////////// -@@ -2592,14 +2592,19 @@ - - TString fn = font_name; - fn.Strip(); -- char *tmpstr = 0; -+ -+ // 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; - - 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")) { -- tmpstr = gSystem->ExpandPathName(fn.Data()); -- fn = tmpstr; - ttfont = kTRUE; - } -- delete [] tmpstr; - - if (color) { - parse_argb_color(color, &text_color); -diff -Nur root-6.08.02.orig/graf2d/cocoa/src/QuartzWindow.mm root-6.08.02/graf2d/cocoa/src/QuartzWindow.mm ---- root-6.08.02.orig/graf2d/cocoa/src/QuartzWindow.mm 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/cocoa/src/QuartzWindow.mm 2016-12-06 12:46:10.321969452 +0100 -@@ -814,11 +814,7 @@ - } - - if (pngFileName) { --#ifdef ROOTICONPATH -- const char * const path = gSystem->Which(ROOTICONPATH, pngFileName, kReadPermission); --#else -- const char * const path = gSystem->Which("$ROOTSYS/icons", pngFileName, kReadPermission); --#endif -+ const char * const path = gSystem->Which(TROOT::GetIconPath(), pngFileName, kReadPermission); - const Util::ScopedArray arrayGuard(path); - - if (!path || path[0] == 0) { -@@ -3083,11 +3079,7 @@ - } - - if (pngFileName) { --#ifdef ROOTICONPATH -- const char * const path = gSystem->Which(ROOTICONPATH, pngFileName, kReadPermission); --#else -- const char * const path = gSystem->Which("$ROOTSYS/icons", pngFileName, kReadPermission); --#endif -+ const char * const path = gSystem->Which(TROOT::GetIconPath(), pngFileName, kReadPermission); - const Util::ScopedArray arrayGuard(path); - - if (!path || path[0] == 0) { -diff -Nur root-6.08.02.orig/graf2d/gpad/src/TClassTree.cxx root-6.08.02/graf2d/gpad/src/TClassTree.cxx ---- root-6.08.02.orig/graf2d/gpad/src/TClassTree.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/gpad/src/TClassTree.cxx 2016-12-06 12:46:10.321969452 +0100 -@@ -195,11 +195,7 @@ - fNdata = 0; - SetLabelDx(); - SetYoffset(0); --#ifdef ROOTSRCDIR -- SetSourceDir(".:src:" ROOTSRCDIR); --#else -- SetSourceDir(".:src:$ROOTSYS/src"); --#endif -+ SetSourceDir(".:src:" + TROOT::GetSourceDir()); - } - - //////////////////////////////////////////////////////////////////////////////// -@@ -225,11 +221,7 @@ - fNdata = 0; - SetLabelDx(); - SetYoffset(0); --#ifdef ROOTSRCDIR -- SetSourceDir(".:src:" ROOTSRCDIR); --#else -- SetSourceDir(".:src:$ROOTSYS/src"); --#endif -+ SetSourceDir(".:src:" + TROOT::GetSourceDir()); - - // draw list of classes (if specified) - if (classes && strlen(classes)) { -diff -Nur root-6.08.02.orig/graf2d/graf/src/TTF.cxx root-6.08.02/graf2d/graf/src/TTF.cxx ---- root-6.08.02.orig/graf2d/graf/src/TTF.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/graf/src/TTF.cxx 2016-12-06 12:46:10.322969441 +0100 -@@ -15,12 +15,10 @@ - Interface to the freetype 2 library. - */ - --// RConfigure.h is needed for TTFFONTDIR --#include "RConfigure.h" -- - # include - # include FT_FREETYPE_H - # include FT_GLYPH_H -+#include "TROOT.h" - #include "TTF.h" - #include "TSystem.h" - #include "TEnv.h" -@@ -415,13 +413,7 @@ - - // try to load font (font must be in Root.TTFontPath resource) - const char *ttpath = gEnv->GetValue("Root.TTFontPath", --# ifdef TTFFONTDIR -- TTFFONTDIR --# else -- "$(ROOTSYS)/fonts" --# endif -- ); -- -+ TROOT::GetTTFFontDir()); - char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission); - - if (!ttfont) { -@@ -543,12 +535,7 @@ - // try to load font (font must be in Root.TTFontPath resource) - // to see which fontset we have available - const char *ttpath = gEnv->GetValue("Root.TTFontPath", --#ifdef TTFFONTDIR -- TTFFONTDIR --#else -- "$(ROOTSYS)/fonts" --#endif -- ); -+ TROOT::GetTTFFontDir()); - char *ttfont = gSystem->Which(ttpath, gEnv->GetValue(fonttable[fontid][0], fonttable[fontid][1]), kReadPermission); - if (ttfont) { - delete [] ttfont; -diff -Nur root-6.08.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.08.02/graf2d/postscript/src/TPostScript.cxx ---- root-6.08.02.orig/graf2d/postscript/src/TPostScript.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/postscript/src/TPostScript.cxx 2016-12-06 12:46:10.322969441 +0100 -@@ -1568,12 +1568,7 @@ - - // try to load font (font must be in Root.TTFontPath resource) - const char *ttpath = gEnv->GetValue("Root.TTFontPath", --#ifdef TTFFONTDIR -- TTFFONTDIR --#else // TTFFONTDIR -- "$(ROOTSYS)/fonts" --#endif // TTFFONTDIR -- ); -+ TROOT::GetTTFFontDir()); - - for (Int_t fontid = 1; fontid < 30; fontid++) { - if (fontid != 15 && MustEmbed[fontid-1]) { -diff -Nur root-6.08.02.orig/graf2d/qt/src/TGQt.cxx root-6.08.02/graf2d/qt/src/TGQt.cxx ---- root-6.08.02.orig/graf2d/qt/src/TGQt.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf2d/qt/src/TGQt.cxx 2016-12-06 12:46:10.323969430 +0100 -@@ -707,13 +707,6 @@ - GetSystemMetrics(SM_CYSMICON)); - HDC dc = tempIcon->handle(); - DrawIcon (dc, 0, 0, icon); --#else --# ifdef ROOTICONPATH -- gSystem->ExpandPathName(ROOTICONPATH); --# else -- gSystem->ExpandPathName("$ROOTSYS/icons/"); --// tempIcon =new QPixmap (16,16), --# endif - #endif - return tempIcon; - } -@@ -803,13 +796,7 @@ - static TQtApplication *app = 0; - if (!app) { - // app = new TQtApplication(gApplication->ApplicationName(),gApplication->Argc(),gApplication->Argv()); -- static TString argvString ( --#ifdef ROOTBINDIR -- ROOTBINDIR "/root.exe" --#else -- "$ROOTSYS/bin/root.exe" --#endif -- ); -+ static TString argvString (TROOT::GetBinDir() + "/root.exe"); - gSystem->ExpandPathName(argvString); - static char *argv[] = {(char *)argvString.Data()}; - static int nArg = 1; -@@ -997,14 +984,8 @@ - } - - if (isXdfSupport && !symbolFontFound) { --// Load the local ROOT font -- QString fontdir = --#ifdef TTFFONTDIR -- TTFFONTDIR --#else -- "$ROOTSYS/fonts" --#endif -- ; -+ // Load the local ROOT font -+ QString fontdir = TROOT::GetTTFFontDir().Data(); - QString symbolFontFile = fontdir + "/" + QString(fSymbolFontFamily).toLower() + ".ttf"; - symbolFontFound = QFontDatabase::addApplicationFont(symbolFontFile); - } -@@ -1014,12 +995,7 @@ - fontFamily = fSymbolFontFamily = "Arial"; - qDebug() << " Substitute it with \""<GetValue("Root.TTGLFontPath", TTFFONTDIR ); --# else -- ttpath = gEnv->GetValue("Root.TTGLFontPath", "$(ROOTSYS)/fonts"); --# endif -+ ttpath = gEnv->GetValue("Root.TTGLFontPath", TROOT::GetTTFFontDir()); - { - //For extenede we have both ttf and otf. - char *fp = gSystem->Which(ttpath, fileID < fgExtendedFontStart ? -diff -Nur root-6.08.02.orig/graf3d/gl/src/TGLSAViewer.cxx root-6.08.02/graf3d/gl/src/TGLSAViewer.cxx ---- root-6.08.02.orig/graf3d/gl/src/TGLSAViewer.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf3d/gl/src/TGLSAViewer.cxx 2016-12-06 12:46:10.323969430 +0100 -@@ -669,14 +669,7 @@ - switch (parm1) { - case kGLHelpAbout: { - #ifdef R__UNIX -- TString rootx; --#ifdef ROOTBINDIR -- rootx = ROOTBINDIR; --#else -- rootx = gSystem->Getenv("ROOTSYS"); -- if (!rootx.IsNull()) rootx += "/bin"; --#endif -- rootx += "/root -a &"; -+ TString rootx = TROOT::GetBinDir() + "/root -a &"; - gSystem->Exec(rootx); - #else - #ifdef WIN32 -diff -Nur root-6.08.02.orig/graf3d/gl/src/TGLText.cxx root-6.08.02/graf3d/gl/src/TGLText.cxx ---- root-6.08.02.orig/graf3d/gl/src/TGLText.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/graf3d/gl/src/TGLText.cxx 2016-12-06 12:46:10.323969430 +0100 -@@ -197,13 +197,7 @@ - - // try to load font (font must be in Root.TTFontPath resource) - const char *ttpath = gEnv->GetValue("Root.TTFontPath", --# ifdef TTFFONTDIR -- TTFFONTDIR --# else -- "$(ROOTSYS)/fonts" --# endif -- ); -- -+ TROOT::GetTTFFontDir()); - char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission); - - if (fGLTextFont) delete fGLTextFont; -diff -Nur root-6.08.02.orig/gui/gui/src/TGApplication.cxx root-6.08.02/gui/gui/src/TGApplication.cxx ---- root-6.08.02.orig/gui/gui/src/TGApplication.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/gui/gui/src/TGApplication.cxx 2016-12-06 12:46:10.324969418 +0100 -@@ -84,12 +84,7 @@ - - if (strcmp(appClassName, "proofserv")) { - const char *ttpath = gEnv->GetValue("Root.TTFontPath", --#ifdef TTFFONTDIR -- TTFFONTDIR); --#else -- "$(ROOTSYS)/fonts"); --#endif -- -+ TROOT::GetTTFFontDir()); - char *ttfont = gSystem->Which(ttpath, "arialbd.ttf", kReadPermission); - // Added by cholm for use of DFSG - fonts - based on fix by Kevin - if (!ttfont) -diff -Nur root-6.08.02.orig/gui/gui/src/TGResourcePool.cxx root-6.08.02/gui/gui/src/TGResourcePool.cxx ---- root-6.08.02.orig/gui/gui/src/TGResourcePool.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/gui/gui/src/TGResourcePool.cxx 2016-12-06 12:46:10.324969418 +0100 -@@ -83,46 +83,29 @@ - TString framebgpixmap = gEnv->GetValue("Gui.FrameBackgroundPixmap", ""); - TString docbgpixmap = gEnv->GetValue("Gui.DocumentBackgroundPixmap", ""); - -- TString icon_path; -- TString mime_file; -- TString line; -- -+ TString icon_path = gEnv->GetValue("Gui.IconPath", ""); -+ if (icon_path.IsNull()) { -+ icon_path = "icons"; -+ gSystem->PrependPathName(gSystem->HomeDirectory(), icon_path); - #ifndef R__WIN32 --# ifdef ROOTICONPATH -- icon_path = TString::Format("%s/icons:%s:.:", gSystem->HomeDirectory(), -- ROOTICONPATH); --# ifdef EXTRAICONPATH -- icon_path += gEnv->GetValue("Gui.IconPath", EXTRAICONPATH); --# else -- icon_path += gEnv->GetValue("Gui.IconPath", ""); --# endif --# else -- icon_path = TString::Format("%s/icons:%s/icons:.:", gSystem->HomeDirectory(), -- gSystem->Getenv("ROOTSYS")); -- icon_path += gEnv->GetValue("Gui.IconPath", ""); --# endif -- line = TString::Format("%s/.root.mimes", gSystem->HomeDirectory()); -+ icon_path = ".:" + icon_path + ":" + TROOT::GetIconPath() + ":" + EXTRAICONPATH; -+#else -+ icon_path = ".;" + icon_path + ";" + TROOT::GetIconPath() + ";" + EXTRAICONPATH; -+#endif -+ } - -- mime_file = gEnv->GetValue("Gui.MimeTypeFile", line.Data()); -+ TString mime_file = ".root.mimes"; -+ gSystem->PrependPathName(gSystem->HomeDirectory(), mime_file); -+ mime_file = gEnv->GetValue("Gui.MimeTypeFile", mime_file.Data()); - char *mf = gSystem->ExpandPathName(mime_file.Data()); - if (mf) { - mime_file = mf; - delete [] mf; - } -- if (gSystem->AccessPathName(mime_file, kReadPermission)) --#ifdef ROOTETCDIR -- mime_file = TString::Format("%s/root.mimes", ROOTETCDIR); --#else -- mime_file = TString::Format("%s/etc/root.mimes", gSystem->Getenv("ROOTSYS")); --#endif --#else // R__WIN32 -- icon_path = TString::Format("%s\\icons:.:\\", gSystem->Getenv("ROOTSYS")); -- icon_path += gEnv->GetValue("Gui.IconPath", ""); -- line = TString::Format("%s\\root.mimes", gSystem->HomeDirectory()); -- mime_file = gEnv->GetValue("Gui.MimeTypeFile", line.Data()); -- if (gSystem->AccessPathName(mime_file, kReadPermission)) -- mime_file = TString::Format("%s\\etc\\root.mimes", gSystem->Getenv("ROOTSYS")); --#endif -+ if (gSystem->AccessPathName(mime_file, kReadPermission)) { -+ mime_file = "root.mimes"; -+ gSystem->PrependPathName(TROOT::GetEtcDir(), mime_file); -+ } - - // Setup colors... - fClient->GetColorByName("white", fWhite); // white and black always exist -diff -Nur root-6.08.02.orig/gui/gui/src/TGSpeedo.cxx root-6.08.02/gui/gui/src/TGSpeedo.cxx ---- root-6.08.02.orig/gui/gui/src/TGSpeedo.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/gui/gui/src/TGSpeedo.cxx 2016-12-06 12:46:10.324969418 +0100 -@@ -119,8 +119,7 @@ - { - TString sc; - Float_t step, mark[5]; -- TString fp = gEnv->GetValue("Root.TTFontPath", ""); -- TString ar = fp + "/arialbd.ttf"; -+ TString ar = "arialbd.ttf"; - Int_t i, nexe, offset; - - const TGFont *counterFont = fClient->GetFont("-*-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*"); -@@ -528,8 +527,7 @@ - delete fImage2; - fImage2 = (TImage*)fImage->Clone("fImage2"); - if (!fImage2 || !fImage2->IsValid()) return; -- TString fp = gEnv->GetValue("Root.TTFontPath", ""); -- TString ar = fp + "/arialbd.ttf"; -+ TString ar = "arialbd.ttf"; - // format counter value - Int_t nexe = 0; - Int_t ww = fCounter; -@@ -609,8 +607,7 @@ - delete fImage2; - fImage2 = (TImage*)fImage->Clone("fImage2"); - if (!fImage2 || !fImage2->IsValid()) return; -- TString fp = gEnv->GetValue("Root.TTFontPath", ""); -- TString ar = fp + "/arialbd.ttf"; -+ TString ar = "arialbd.ttf"; - // format counter value - Int_t nexe = 0; - Int_t ww = fCounter; -diff -Nur root-6.08.02.orig/gui/gui/src/TGTextEditor.cxx root-6.08.02/gui/gui/src/TGTextEditor.cxx ---- root-6.08.02.orig/gui/gui/src/TGTextEditor.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/gui/gui/src/TGTextEditor.cxx 2016-12-06 12:46:10.324969418 +0100 -@@ -842,14 +842,7 @@ - void TGTextEditor::About() - { - #ifdef R__UNIX -- TString rootx; --# ifdef ROOTBINDIR -- rootx = ROOTBINDIR; --# else -- rootx = gSystem->Getenv("ROOTSYS"); -- if (!rootx.IsNull()) rootx += "/bin"; --# endif -- rootx += "/root -a &"; -+ TString rootx = TROOT::GetBinDir() + "/root -a &"; - gSystem->Exec(rootx); - #else - #ifdef WIN32 -diff -Nur root-6.08.02.orig/gui/gui/src/TRootBrowser.cxx root-6.08.02/gui/gui/src/TRootBrowser.cxx ---- root-6.08.02.orig/gui/gui/src/TRootBrowser.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/gui/gui/src/TRootBrowser.cxx 2016-12-06 12:46:10.325969407 +0100 -@@ -702,14 +702,7 @@ - case kHelpAbout: - { - #ifdef R__UNIX -- TString rootx; --# ifdef ROOTBINDIR -- rootx = ROOTBINDIR; --# else -- rootx = gSystem->Getenv("ROOTSYS"); -- if (!rootx.IsNull()) rootx += "/bin"; --# endif -- rootx += "/root -a &"; -+ TString rootx = TROOT::GetBinDir() + "/root -a &"; - gSystem->Exec(rootx); - #else - #ifdef WIN32 -diff -Nur root-6.08.02.orig/gui/gui/src/TRootBrowserLite.cxx root-6.08.02/gui/gui/src/TRootBrowserLite.cxx ---- root-6.08.02.orig/gui/gui/src/TRootBrowserLite.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/gui/gui/src/TRootBrowserLite.cxx 2016-12-06 12:46:10.325969407 +0100 -@@ -1962,14 +1962,7 @@ - case kHelpAbout: - { - #ifdef R__UNIX -- TString rootx; --# ifdef ROOTBINDIR -- rootx = ROOTBINDIR; --# else -- rootx = gSystem->Getenv("ROOTSYS"); -- if (!rootx.IsNull()) rootx += "/bin"; --# endif -- rootx += "/root -a &"; -+ TString rootx = TROOT::GetBinDir() + "/root -a &"; - gSystem->Exec(rootx); - #else - #ifdef WIN32 -diff -Nur root-6.08.02.orig/gui/gui/src/TRootCanvas.cxx root-6.08.02/gui/gui/src/TRootCanvas.cxx ---- root-6.08.02.orig/gui/gui/src/TRootCanvas.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/gui/gui/src/TRootCanvas.cxx 2016-12-06 12:46:10.326969396 +0100 -@@ -1192,14 +1192,7 @@ - case kHelpAbout: - { - #ifdef R__UNIX -- TString rootx; --# ifdef ROOTBINDIR -- rootx = ROOTBINDIR; --# else -- rootx = gSystem->Getenv("ROOTSYS"); -- if (!rootx.IsNull()) rootx += "/bin"; --# endif -- rootx += "/root -a &"; -+ TString rootx = TROOT::GetBinDir() + "/root -a &"; - gSystem->Exec(rootx); - #else - #ifdef WIN32 -diff -Nur root-6.08.02.orig/gui/guihtml/src/TGHtmlBrowser.cxx root-6.08.02/gui/guihtml/src/TGHtmlBrowser.cxx ---- root-6.08.02.orig/gui/guihtml/src/TGHtmlBrowser.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/gui/guihtml/src/TGHtmlBrowser.cxx 2016-12-06 12:46:10.326969396 +0100 -@@ -629,14 +629,7 @@ - case kM_HELP_ABOUT: - { - #ifdef R__UNIX -- TString rootx; --# ifdef ROOTBINDIR -- rootx = ROOTBINDIR; --# else -- rootx = gSystem->Getenv("ROOTSYS"); -- if (!rootx.IsNull()) rootx += "/bin"; --# endif -- rootx += "/root -a &"; -+ TString rootx = TROOT::GetBinDir() + "/root -a &"; - gSystem->Exec(rootx); - #else - #ifdef WIN32 -diff -Nur root-6.08.02.orig/gui/sessionviewer/src/TSessionViewer.cxx root-6.08.02/gui/sessionviewer/src/TSessionViewer.cxx ---- root-6.08.02.orig/gui/sessionviewer/src/TSessionViewer.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/gui/sessionviewer/src/TSessionViewer.cxx 2016-12-06 12:46:10.327969384 +0100 -@@ -5812,14 +5812,7 @@ - case kHelpAbout: - { - #ifdef R__UNIX -- TString rootx; --# ifdef ROOTBINDIR -- rootx = ROOTBINDIR; --# else -- rootx = gSystem->Getenv("ROOTSYS"); -- if (!rootx.IsNull()) rootx += "/bin"; --# endif -- rootx += "/root -a &"; -+ TString rootx = TROOT::GetBinDir() + "/root -a &"; - gSystem->Exec(rootx); - #else - #ifdef WIN32 -diff -Nur root-6.08.02.orig/html/src/THtml.cxx root-6.08.02/html/src/THtml.cxx ---- root-6.08.02.orig/html/src/THtml.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/html/src/THtml.cxx 2016-12-06 12:46:10.328969373 +0100 -@@ -1349,18 +1349,7 @@ - R__LOCKGUARD(GetMakeClassMutex()); - - fPathInfo.fEtcDir = "html"; -- --#ifdef ROOTETCDIR -- gSystem->PrependPathName(ROOTETCDIR, fPathInfo.fEtcDir); --#else -- gSystem->PrependPathName("etc", fPathInfo.fEtcDir); --# ifdef ROOTPREFIX -- gSystem->PrependPathName(ROOTPREFIX, fPathInfo.fEtcDir); --# else -- if (getenv("ROOTSYS")) -- gSystem->PrependPathName(getenv("ROOTSYS"), fPathInfo.fEtcDir); --# endif --#endif -+ gSystem->PrependPathName(TROOT::GetEtcDir(), fPathInfo.fEtcDir); - - return fPathInfo.fEtcDir; - } -@@ -1669,12 +1658,7 @@ - if (posSpace != std::string::npos) - lib.erase(posSpace); - if (rootLibs.find(lib) == rootLibs.end()) { --#ifdef ROOTLIBDIR -- TString rootlibdir = ROOTLIBDIR; --#else -- TString rootlibdir = "lib"; -- gSystem->PrependPathName(gRootDir, rootlibdir); --#endif -+ TString rootlibdir = TROOT::GetLibDir(); - TString sLib(lib); - if (sLib.Index('.') == -1) { - sLib += "."; -diff -Nur root-6.08.02.orig/io/io/src/TFile.cxx root-6.08.02/io/io/src/TFile.cxx ---- root-6.08.02.orig/io/io/src/TFile.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/io/io/src/TFile.cxx 2016-12-06 12:46:10.328969373 +0100 -@@ -3098,11 +3098,7 @@ - return; - } - // Get Makefile.arch --#ifdef ROOTETCDIR -- TString mkarchsrc = TString::Format("%s/Makefile.arch", ROOTETCDIR); --#else -- TString mkarchsrc("$(ROOTSYS)/etc/Makefile.arch"); --#endif -+ TString mkarchsrc = TString::Format("%s/Makefile.arch", TROOT::GetEtcDir().Data()); - if (gSystem->ExpandPathName(mkarchsrc)) - Warning("MakeProject", "problems expanding '%s'", mkarchsrc.Data()); - TString mkarchdst = TString::Format("%s/Makefile.arch", clean_dirname.Data()); -diff -Nur root-6.08.02.orig/main/CMakeLists.txt root-6.08.02/main/CMakeLists.txt ---- root-6.08.02.orig/main/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/main/CMakeLists.txt 2016-12-06 12:46:10.329969362 +0100 -@@ -40,7 +40,7 @@ - endforeach() - - install(FILES python/cmdLineUtils.py DESTINATION ${runtimedir}) -- install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m py_compile \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${runtimedir}/cmdLineUtils.py )") -- install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -O -m py_compile \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${runtimedir}/cmdLineUtils.py )") -- configure_file(python/cmdLineUtils.py ${CMAKE_BINARY_DIR}/${runtimedir}/cmdLineUtils.py @ONLY) -+ install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m py_compile \$ENV{DESTDIR}${runtimedir}/cmdLineUtils.py)") -+ install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -O -m py_compile \$ENV{DESTDIR}${runtimedir}/cmdLineUtils.py)") -+ configure_file(python/cmdLineUtils.py ${localruntimedir}/cmdLineUtils.py @ONLY) - endif() -diff -Nur root-6.08.02.orig/main/src/nbmain.cxx root-6.08.02/main/src/nbmain.cxx ---- root-6.08.02.orig/main/src/nbmain.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/main/src/nbmain.cxx 2016-12-06 12:46:10.329969362 +0100 -@@ -173,15 +173,9 @@ - - int main() - { --#ifdef ROOTPREFIX -- string rootbin(ROOTBINDIR); -- string rootlib(ROOTLIBDIR); -- string rootetc(ROOTETCDIR); --#else -- string rootbin(getenv("ROOTSYS") + pathsep + "bin"); -- string rootlib(getenv("ROOTSYS") + pathsep + "lib"); -- string rootetc(getenv("ROOTSYS") + pathsep + "etc"); --#endif -+ string rootbin(TROOT::GetBinDir()); -+ string rootlib(TROOT::GetLibDir()); -+ string rootetc(TROOT::GetEtcDir()); - - // If needed, install ROOT notebook files in the user's home directory - #ifdef WIN32 -diff -Nur root-6.08.02.orig/Makefile root-6.08.02/Makefile ---- root-6.08.02.orig/Makefile 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/Makefile 2016-12-06 12:46:10.336969282 +0100 -@@ -708,11 +708,9 @@ - .NOTPARALLEL: - endif - --ifeq ($(USECONFIG),FALSE) - all: tutorials/hsimple.root - tutorials/hsimple.root: rootexecs postbin -- @(cd tutorials; ! ../bin/root -l -q -b -n -x hsimple.C) --endif -+ @(cd tutorials; ! ROOTIGNOREPREFIX=1 ../bin/root -l -q -b -n -x hsimple.C) - - all: rootexecs postbin - @echo " " -@@ -1152,7 +1150,7 @@ - - $(ROOTPCH): $(MAKEPCH) $(ROOTCLINGSTAGE1DEP) $(ALLHDRS) $(CLINGETCPCH) $(ORDER_) $(ALLLIBS) - @$(MAKEPCHINPUT) $(ROOT_SRCDIR) "$(MODULES)" $(CLINGETCPCH) -- $(ROOTCLING_CXXFLAGS) -- @$(MAKEPCH) $@ -+ @ROOTIGNOREPREFIX=1 $(MAKEPCH) $@ - - $(MAKEPCH): $(ROOT_SRCDIR)/$(MAKEPCH) - @mkdir -p $(dir $@) -@@ -1257,8 +1255,6 @@ - $(INSTALLDATA) build/misc/root-help.el $(DESTDIR)$(ELISPDIR); \ - echo "Installing GDML conversion scripts in $(DESTDIR)$(LIBDIR)"; \ - $(INSTALLDATA) $(ROOT_SRCDIR)/geom/gdml/*.py $(DESTDIR)$(LIBDIR); \ -- (cd $(DESTDIR)$(TUTDIR); \ -- ! LD_LIBRARY_PATH=$(DESTDIR)$(LIBDIR):$$LD_LIBRARY_PATH $(DESTDIR)$(BINDIR)/root -l -b -q -n -x hsimple.C); \ - fi - - uninstall: -@@ -1385,7 +1381,6 @@ - --exclude proofd.xinetd \ - --exclude rootd.rc.d \ - --exclude rootd.xinetd \ -- --exclude gitinfo.txt \ - $(ROOT_SRCDIR)/etc . ; \ - echo "Rsync'ing $(ROOT_SRCDIR)/macros..."; \ - $(RSYNC) \ -diff -Nur root-6.08.02.orig/math/mathcore/src/Integrator.cxx root-6.08.02/math/mathcore/src/Integrator.cxx ---- root-6.08.02.orig/math/mathcore/src/Integrator.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/math/mathcore/src/Integrator.cxx 2016-12-06 12:46:10.336969282 +0100 -@@ -22,9 +22,6 @@ - - - #include "RConfigure.h" --// #ifndef ROOTINCDIR --// #define MATH_NO_PLUGIN_MANAGER --// #endif - - #include - #include -diff -Nur root-6.08.02.orig/montecarlo/eg/src/TDatabasePDG.cxx root-6.08.02/montecarlo/eg/src/TDatabasePDG.cxx ---- root-6.08.02.orig/montecarlo/eg/src/TDatabasePDG.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/montecarlo/eg/src/TDatabasePDG.cxx 2016-12-06 12:46:10.336969282 +0100 -@@ -564,11 +564,8 @@ - const char *fn; - - if (!FileName[0]) { --#ifdef ROOTETCDIR -- default_name.Form("%s/pdg_table.txt", ROOTETCDIR); --#else -- default_name.Form("%s/etc/pdg_table.txt", gSystem->Getenv("ROOTSYS")); --#endif -+ default_name = "pdg_table.txt"; -+ gSystem->PrependPathName(TROOT::GetEtcDir(), default_name); - fn = gEnv->GetValue("Root.DatabasePDG", default_name.Data()); - } else { - fn = FileName; -diff -Nur root-6.08.02.orig/net/auth/CMakeLists.txt root-6.08.02/net/auth/CMakeLists.txt ---- root-6.08.02.orig/net/auth/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/net/auth/CMakeLists.txt 2016-12-06 12:46:10.336969282 +0100 -@@ -23,7 +23,6 @@ - add_library(rsa STATIC ${CMAKE_CURRENT_SOURCE_DIR}/src/rsaaux.cxx - ${CMAKE_CURRENT_SOURCE_DIR}/src/rsalib.cxx - ${CMAKE_CURRENT_SOURCE_DIR}/src/rsafun.cxx) --add_dependencies(rsa move_headers) - - if(ssl) - include_directories(${OPENSSL_INCLUDE_DIR}) -diff -Nur root-6.08.02.orig/net/auth/src/DaemonUtils.cxx root-6.08.02/net/auth/src/DaemonUtils.cxx ---- root-6.08.02.orig/net/auth/src/DaemonUtils.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/net/auth/src/DaemonUtils.cxx 2016-12-06 12:46:10.337969271 +0100 -@@ -95,18 +95,8 @@ - { - // Executables and conf dirs - -- string execdir, etcdir; --#ifdef ROOTBINDIR -- execdir = string(ROOTBINDIR); --#endif --#ifdef ROOTETCDIR -- etcdir = string(ROOTETCDIR); --#endif -- -- // Define rootbindir if not done already -- if (!execdir.length()) -- execdir = string(confdir).append("/bin"); -- // Make it available to all the session via env -+ // Make rootbindir available to all the session via env -+ string execdir = TROOT::GetBinDir().Data(); - if (execdir.length()) { - int len = 15 + execdir.length(); - char *tmp = new char[len+1]; -@@ -117,10 +107,8 @@ - return -1; - } - -- // Define rootetcdir if not done already -- if (!etcdir.length()) -- etcdir = string(confdir).append("/etc"); -- // Make it available to all the session via env -+ // Make rootetcdir available to all the session via env -+ string etcdir = TROOT::GetEtcDir().Data(); - if (etcdir.length()) { - int len = 15 + etcdir.length(); - char *tmp = new char[len+1]; -diff -Nur root-6.08.02.orig/net/auth/src/TAuthenticate.cxx root-6.08.02/net/auth/src/TAuthenticate.cxx ---- root-6.08.02.orig/net/auth/src/TAuthenticate.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/net/auth/src/TAuthenticate.cxx 2016-12-06 12:46:10.338969260 +0100 -@@ -4107,19 +4107,9 @@ - ::Info("TAuthenticate::ReadRootAuthrc", - "file %s cannot be read (errno: %d)", authrc, errno); - delete [] authrc; --#ifdef ROOTETCDIR -- authrc = gSystem->ConcatFileName(ROOTETCDIR,"system.rootauthrc"); --#else -- char etc[1024]; --#ifdef WIN32 -- snprintf(etc, 1024, "%s\\etc", gRootDir); --#else -- snprintf(etc, 1024, "%s/etc", gRootDir); --#endif -- authrc = gSystem->ConcatFileName(etc,"system.rootauthrc"); --#endif -+ authrc = gSystem->ConcatFileName(TROOT::GetEtcDir(), "system.rootauthrc"); - if (gDebug > 2) -- ::Info("TAuthenticate::ReadRootAuthrc", "Checking system file:%s",authrc); -+ ::Info("TAuthenticate::ReadRootAuthrc", "Checking system file: %s", authrc); - if (gSystem->AccessPathName(authrc, kReadPermission)) { - if (gDebug > 1) - ::Info("TAuthenticate::ReadRootAuthrc", -diff -Nur root-6.08.02.orig/net/http/src/THttpServer.cxx root-6.08.02/net/http/src/THttpServer.cxx ---- root-6.08.02.orig/net/http/src/THttpServer.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/net/http/src/THttpServer.cxx 2016-12-06 12:46:10.338969260 +0100 -@@ -148,11 +148,7 @@ - if (jsrootsys != 0) fJSROOTSYS = jsrootsys; - - if (fJSROOTSYS.Length() == 0) { --#ifdef ROOTETCDIR -- TString jsdir = TString::Format("%s/http", ROOTETCDIR); --#else -- TString jsdir("$(ROOTSYS)/etc/http"); --#endif -+ TString jsdir = TString::Format("%s/http", TROOT::GetEtcDir().Data()); - if (gSystem->ExpandPathName(jsdir)) { - Warning("THttpServer", "problems resolving '%s', use JSROOTSYS to specify $ROOTSYS/etc/http location", jsdir.Data()); - fJSROOTSYS = "."; -@@ -163,18 +159,7 @@ - - AddLocation("currentdir/", "."); - AddLocation("jsrootsys/", fJSROOTSYS); -- -- const char *rootsys = gSystem->Getenv("ROOTSYS"); -- if (rootsys != 0) { -- AddLocation("rootsys/", rootsys); -- } else { --#ifdef ROOTPREFIX -- TString sysdir = ROOTPREFIX; --#else -- TString sysdir = "$(ROOTSYS)"; --#endif -- if (!gSystem->ExpandPathName(sysdir)) AddLocation("rootsys/", sysdir); -- } -+ AddLocation("rootsys/", TROOT::GetRootSys()); - - fDefaultPage = fJSROOTSYS + "/files/online.htm"; - fDrawPage = fJSROOTSYS + "/files/draw.htm"; -diff -Nur root-6.08.02.orig/net/net/src/TApplicationServer.cxx root-6.08.02/net/net/src/TApplicationServer.cxx ---- root-6.08.02.orig/net/net/src/TApplicationServer.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/net/net/src/TApplicationServer.cxx 2016-12-06 12:46:10.338969260 +0100 -@@ -1275,17 +1275,7 @@ - TString name = ".rootlogon.C"; - TString sname = "system"; - sname += name; --#ifdef ROOTETCDIR -- char *s = gSystem->ConcatFileName(ROOTETCDIR, sname); --#else -- TString etc = gRootDir; --#ifdef WIN32 -- etc += "\\etc"; --#else -- etc += "/etc"; --#endif -- char *s = gSystem->ConcatFileName(etc, sname); --#endif -+ char *s = gSystem->ConcatFileName(TROOT::GetEtcDir(), sname); - if (!gSystem->AccessPathName(s, kReadPermission)) { - ProcessFile(s); - } -diff -Nur root-6.08.02.orig/net/net/src/TServerSocket.cxx root-6.08.02/net/net/src/TServerSocket.cxx ---- root-6.08.02.orig/net/net/src/TServerSocket.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/net/net/src/TServerSocket.cxx 2016-12-06 12:46:10.338969260 +0100 -@@ -335,22 +335,7 @@ - } - } - -- TString confdir; --#ifndef ROOTPREFIX -- // try to guess the config directory... -- if (gSystem->Getenv("ROOTSYS")) { -- confdir = TString(gSystem->Getenv("ROOTSYS")); -- } else { -- // Try to guess it from 'root.exe' path -- char *rootexe = gSystem->Which(gSystem->Getenv("PATH"), -- "root.exe", kExecutePermission); -- confdir = rootexe; -- confdir.Resize(confdir.Last('/')); -- delete [] rootexe; -- } --#else -- confdir = TString(ROOTPREFIX); --#endif -+ TString confdir = TROOT::GetRootSys(); - if (!confdir.Length()) { - Error("Authenticate", "config dir undefined"); - return kFALSE; -diff -Nur root-6.08.02.orig/net/rootd/src/rootd.cxx root-6.08.02/net/rootd/src/rootd.cxx ---- root-6.08.02.orig/net/rootd/src/rootd.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/net/rootd/src/rootd.cxx 2016-12-06 12:46:10.339969248 +0100 -@@ -2523,10 +2523,13 @@ - - if (argc > 0) { - confdir = std::string(*argv); -- } else { -- // try to guess the config directory... --#ifndef ROOTPREFIX -+ } -+ -+#ifdef ROOTPREFIX -+ if (getenv("IGNOREROOTPREFIX")) { -+#endif - if (!confdir.length()) { -+ // try to guess the config directory... - if (getenv("ROOTSYS")) { - confdir = getenv("ROOTSYS"); - if (gDebug > 0) -@@ -2537,31 +2540,26 @@ - ErrorInfo("main: no config directory specified"); - } - } --#else -- confdir = ROOTPREFIX; --#endif -+ rootbindir = std::string(confdir).append("/bin"); -+ rootetcdir = std::string(confdir).append("/etc"); -+#ifdef ROOTPREFIX -+ } -+ else { -+ if (!confdir.length()) -+ confdir = ROOTPREFIX; -+ rootbindir = ROOTBINDIR; -+ rootetcdir = ROOTETCDIR; - } --#ifdef ROOTBINDIR -- rootbindir= ROOTBINDIR; --#endif --#ifdef ROOTETCDIR -- rootetcdir= ROOTETCDIR; - #endif - -- // Define rootbindir if not done already -- if (!rootbindir.length()) -- rootbindir = std::string(confdir).append("/bin"); -- // Make it available to all the session via env -+ // Make rootbindir available to all the session via env - if (rootbindir.length()) { - char *tmp1 = new char[15 + rootbindir.length()]; - sprintf(tmp1, "ROOTBINDIR=%s", rootbindir.c_str()); - putenv(tmp1); - } - -- // Define rootetcdir if not done already -- if (!rootetcdir.length()) -- rootetcdir = std::string(confdir).append("/etc"); -- // Make it available to all the session via env -+ // Make rootetcdir available to all the session via env - if (rootetcdir.length()) { - char *tmp1 = new char[15 + rootetcdir.length()]; - sprintf(tmp1, "ROOTETCDIR=%s", rootetcdir.c_str()); -diff -Nur root-6.08.02.orig/net/rpdutils/CMakeLists.txt root-6.08.02/net/rpdutils/CMakeLists.txt ---- root-6.08.02.orig/net/rpdutils/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/net/rpdutils/CMakeLists.txt 2016-12-06 12:46:10.339969248 +0100 -@@ -31,7 +31,6 @@ - - #---static library needed for rootd and proofd -------------------------------------------- - add_library(rpdutil STATIC ${rpdutilsrcs}) --add_dependencies(rpdutil move_headers) - - ROOT_LINKER_LIBRARY(SrvAuth rpdutils.cxx ssh.cxx LIBRARIES rpdutil rsa ${CRYPTLIBS} ${GLOBUS_LIBRARIES} ${OPENSSL_LIBRARIES} DEPENDENCIES Net) - -diff -Nur root-6.08.02.orig/proof/proof/src/TProofLite.cxx root-6.08.02/proof/proof/src/TProofLite.cxx ---- root-6.08.02.orig/proof/proof/src/TProofLite.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/proof/proof/src/TProofLite.cxx 2016-12-06 12:46:10.340969237 +0100 -@@ -409,17 +409,7 @@ - if (fgWrksMax == -2) { - // Find the max number of workers, if any - TString sysname = "system.rootrc"; --#ifdef ROOTETCDIR -- char *s = gSystem->ConcatFileName(ROOTETCDIR, sysname); --#else -- TString etc = gRootDir; --#ifdef WIN32 -- etc += "\\etc"; --#else -- etc += "/etc"; --#endif -- char *s = gSystem->ConcatFileName(etc, sysname); --#endif -+ char *s = gSystem->ConcatFileName(TROOT::GetEtcDir(), sysname); - TEnv sysenv(0); - sysenv.ReadFile(s, kEnvGlobal); - fgWrksMax = sysenv.GetValue("ProofLite.MaxWorkers", -1); -@@ -765,17 +755,9 @@ - return -1; - } - // ROOTSYS --#ifdef R__HAVE_CONFIG -- fprintf(fenv, "export ROOTSYS=%s\n", ROOTPREFIX); --#else -- fprintf(fenv, "export ROOTSYS=%s\n", gSystem->Getenv("ROOTSYS")); --#endif -+ fprintf(fenv, "export ROOTSYS=%s\n", TROOT::GetRootSys().Data()); - // Conf dir --#ifdef R__HAVE_CONFIG -- fprintf(fenv, "export ROOTCONFDIR=%s\n", ROOTETCDIR); --#else -- fprintf(fenv, "export ROOTCONFDIR=%s\n", gSystem->Getenv("ROOTSYS")); --#endif -+ fprintf(fenv, "export ROOTCONFDIR=%s\n", TROOT::GetRootSys().Data()); - // TMPDIR - fprintf(fenv, "export TMPDIR=%s\n", gSystem->TempDirectory()); - // Log file in the log dir -diff -Nur root-6.08.02.orig/proof/proof/src/TProofServ.cxx root-6.08.02/proof/proof/src/TProofServ.cxx ---- root-6.08.02.orig/proof/proof/src/TProofServ.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/proof/proof/src/TProofServ.cxx 2016-12-06 12:46:10.341969226 +0100 -@@ -2964,13 +2964,7 @@ - #ifdef R__UNIX - // Add bindir to PATH - TString path(gSystem->Getenv("PATH")); -- TString bindir; --# ifdef ROOTBINDIR -- bindir = ROOTBINDIR; --# else -- bindir = gSystem->Getenv("ROOTSYS"); -- if (!bindir.IsNull()) bindir += "/bin"; --# endif -+ TString bindir(TROOT::GetBinDir()); - // Augment PATH, if required - // ^, , ^, - TString paths = gEnv->GetValue("ProofServ.BinPaths", ""); -diff -Nur root-6.08.02.orig/proof/proof/src/TSlaveLite.cxx root-6.08.02/proof/proof/src/TSlaveLite.cxx ---- root-6.08.02.orig/proof/proof/src/TSlaveLite.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/proof/proof/src/TSlaveLite.cxx 2016-12-06 12:46:10.341969226 +0100 -@@ -88,13 +88,8 @@ - { - // Command to be executed - TString cmd; --#ifdef R__HAVE_CONFIG - cmd.Form(". %s/worker-%s.env; export ROOTBINDIR=\"%s\"; %s/proofserv proofslave lite %d %d 0&", -- fWorkDir.Data(), fOrdinal.Data(), ROOTBINDIR, ROOTBINDIR, --#else -- cmd.Form(". %s/worker-%s.env; export ROOTBINDIR=\"%s/bin\"; %s/bin/proofserv proofslave lite %d %d 0&", -- fWorkDir.Data(), fOrdinal.Data(), gSystem->Getenv("ROOTSYS"), gSystem->Getenv("ROOTSYS"), --#endif -+ fWorkDir.Data(), fOrdinal.Data(), TROOT::GetBinDir().Data(), TROOT::GetBinDir().Data(), - gSystem->GetPid(), gDebug); - // Execute - if (gSystem->Exec(cmd) != 0) { -diff -Nur root-6.08.02.orig/proof/proofbench/CMakeLists.txt root-6.08.02/proof/proofbench/CMakeLists.txt ---- root-6.08.02.orig/proof/proofbench/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/proof/proofbench/CMakeLists.txt 2016-12-06 12:46:10.341969226 +0100 -@@ -14,7 +14,7 @@ - # Generation and installation of the PAR files required by the benchmark - add_custom_target(ProofBenchPARFiles ALL DEPENDS ${CMAKE_BINARY_DIR}/etc/proof/proofbench/ProofBenchCPUSel.par - ${CMAKE_BINARY_DIR}/etc/proof/proofbench/ProofBenchDataSel.par) --add_dependencies(ProofBenchPARFiles move_headers) # The /etc directory from sources is copied when moving the headers -+add_dependencies(ProofBenchPARFiles move_artifacts) - add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/etc/proof/proofbench/ProofBenchCPUSel.par - ${CMAKE_BINARY_DIR}/etc/proof/proofbench/ProofBenchDataSel.par - COMMAND etc/proof/utils/makepbenchpars.sh ARGS ProofBenchCPUSel ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} -diff -Nur root-6.08.02.orig/proof/proofbench/src/TProofBench.cxx root-6.08.02/proof/proofbench/src/TProofBench.cxx ---- root-6.08.02.orig/proof/proofbench/src/TProofBench.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/proof/proofbench/src/TProofBench.cxx 2016-12-06 12:46:10.342969214 +0100 -@@ -1338,11 +1338,7 @@ - // Is it the default selector? - if (fDataGenSel == kPROOF_BenchSelDataGenDef) { - // Load the parfile --#ifdef R__HAVE_CONFIG -- TString par = TString::Format("%s/%s%s.par", ROOTETCDIR, kPROOF_BenchParDir, kPROOF_BenchDataSelPar); --#else -- TString par = TString::Format("$ROOTSYS/etc/%s%s.par", kPROOF_BenchParDir, kPROOF_BenchDataSelPar); --#endif -+ TString par = TString::Format("%s/%s%s.par", TROOT::GetEtcDir().Data(), kPROOF_BenchParDir, kPROOF_BenchDataSelPar); - Info("MakeDataSet", "uploading '%s' ...", par.Data()); - if (fProof->UploadPackage(par) != 0) { - Error("MakeDataSet", "problems uploading '%s' - cannot continue", par.Data()); -diff -Nur root-6.08.02.orig/proof/proofbench/src/TProofBenchDataSet.cxx root-6.08.02/proof/proofbench/src/TProofBenchDataSet.cxx ---- root-6.08.02.orig/proof/proofbench/src/TProofBenchDataSet.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/proof/proofbench/src/TProofBenchDataSet.cxx 2016-12-06 12:46:10.342969214 +0100 -@@ -25,6 +25,7 @@ - #include "TMap.h" - #include "TProof.h" - #include "TProofBenchTypes.h" -+#include "TROOT.h" - - - ClassImp(TProofBenchDataSet) -@@ -144,11 +145,7 @@ - TString selName("TSelHandleDataSet"); - if (!TClass::GetClass(selName)) { - // Load the parfile --#ifdef R__HAVE_CONFIG -- TString par = TString::Format("%s/%s%s.par", ROOTETCDIR, kPROOF_BenchParDir, kPROOF_BenchDataSelPar); --#else -- TString par = TString::Format("$ROOTSYS/etc/%s%s.par", kPROOF_BenchParDir, kPROOF_BenchDataSelPar); --#endif -+ TString par = TString::Format("%s/%s%s.par", TROOT::GetEtcDir().Data(), kPROOF_BenchParDir, kPROOF_BenchDataSelPar); - Info("Handle", "Uploading '%s' ...", par.Data()); - if (fProof->UploadPackage(par) != 0) { - Error("Handle", "problems uploading '%s' - cannot continue", par.Data()); -diff -Nur root-6.08.02.orig/proof/proofbench/src/TProofBenchRunCPU.cxx root-6.08.02/proof/proofbench/src/TProofBenchRunCPU.cxx ---- root-6.08.02.orig/proof/proofbench/src/TProofBenchRunCPU.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/proof/proofbench/src/TProofBenchRunCPU.cxx 2016-12-06 12:46:10.342969214 +0100 -@@ -274,11 +274,7 @@ - // Is it the default selector? - if (fSelName == kPROOF_BenchSelCPUDef) { - // Load the parfile --#ifdef R__HAVE_CONFIG -- TString par = TString::Format("%s/%s%s.par", ROOTETCDIR, kPROOF_BenchParDir, kPROOF_BenchCPUSelPar); --#else -- TString par = TString::Format("$ROOTSYS/etc/%s%s.par", kPROOF_BenchParDir, kPROOF_BenchCPUSelPar); --#endif -+ TString par = TString::Format("%s/%s%s.par", TROOT::GetEtcDir().Data(), kPROOF_BenchParDir, kPROOF_BenchCPUSelPar); - Info("Run", "Uploading '%s' ...", par.Data()); - if (fProof->UploadPackage(par) != 0) { - Error("Run", "problems uploading '%s' - cannot continue", par.Data()); -diff -Nur root-6.08.02.orig/proof/proofbench/src/TProofBenchRunDataRead.cxx root-6.08.02/proof/proofbench/src/TProofBenchRunDataRead.cxx ---- root-6.08.02.orig/proof/proofbench/src/TProofBenchRunDataRead.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/proof/proofbench/src/TProofBenchRunDataRead.cxx 2016-12-06 12:46:10.342969214 +0100 -@@ -162,11 +162,7 @@ - // Is it the default selector? - if (fSelName == kPROOF_BenchSelDataDef) { - // Load the parfile --#ifdef R__HAVE_CONFIG -- TString par = TString::Format("%s/%s%s.par", ROOTETCDIR, kPROOF_BenchParDir, kPROOF_BenchDataSelPar); --#else -- TString par = TString::Format("$ROOTSYS/etc/%s%s.par", kPROOF_BenchParDir, kPROOF_BenchDataSelPar); --#endif -+ TString par = TString::Format("%s/%s%s.par", TROOT::GetEtcDir().Data(), kPROOF_BenchParDir, kPROOF_BenchDataSelPar); - Info("Run", "Uploading '%s' ...", par.Data()); - if (fProof->UploadPackage(par) != 0) { - Error("Run", "problems uploading '%s' - cannot continue", par.Data()); -diff -Nur root-6.08.02.orig/proof/proofd/src/proofd.cxx root-6.08.02/proof/proofd/src/proofd.cxx ---- root-6.08.02.orig/proof/proofd/src/proofd.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/proof/proofd/src/proofd.cxx 2016-12-06 12:46:10.343969203 +0100 -@@ -1001,49 +1001,48 @@ - - if (argc > 0) { - gConfDir = std::string(*argv); -- } else { -- // try to guess the config directory... --#ifndef ROOTDATADIR -- if (getenv("ROOTSYS")) { -- gConfDir = getenv("ROOTSYS"); -- if (gDebug > 0) -- ErrorInfo("main: no config directory specified using ROOTSYS (%s)", -- gConfDir.c_str()); -- } else { -- Error(ErrFatal, -1, "main: no config directory specified"); -- } --#else -- gConfDir = ROOTDATADIR; --#endif - } --#ifdef ROOTBINDIR -- gRootBinDir= ROOTBINDIR; --#endif --#ifdef ROOTETCDIR -- rootetcdir= ROOTETCDIR; --#endif - -- // Define gRootBinDir if not done already -- if (!gRootBinDir.length()) -+#ifdef ROOTPREFIX -+ if (getenv("IGNOREROOTPREFIX")) { -+#endif -+ if (!gConfDir.length()) { -+ // try to guess the config directory... -+ if (getenv("ROOTSYS")) { -+ gConfDir = getenv("ROOTSYS"); -+ if (gDebug > 0) -+ ErrorInfo("main: no config directory specified using" -+ " ROOTSYS (%s)", gConfDir.c_str()); -+ } else { -+ Error(ErrFatal, -1, "main: no config directory specified"); -+ } -+ } - gRootBinDir = std::string(gConfDir).append("/bin"); -+ rootetcdir = std::string(gConfDir).append("/etc"); -+#ifdef ROOTPREFIX -+ } -+ else { -+ if (!gConfDir.length()) -+ gConfDir = ROOTPREFIX; -+ gRootBinDir = ROOTBINDIR; -+ rootetcdir = ROOTETCDIR; -+ } -+#endif - -- // make sure it contains the executable we want to run -+ // make sure gRootBinDir contains the executable we want to run - std::string arg0 = std::string(gRootBinDir).append("/proofserv"); - if (access(arg0.c_str(), X_OK) == -1) { - Error(ErrFatal,-1,"main: incorrect config directory specified (%s)", - gConfDir.c_str()); - } -- // Make it available to all the session via env -+ // Make gRootBinDir available to all the session via env - if (gRootBinDir.length()) { - char *tmp = new char[15 + gRootBinDir.length()]; - snprintf(tmp, 15 + gRootBinDir.length(), "ROOTBINDIR=%s", gRootBinDir.c_str()); - putenv(tmp); - } - -- // Define rootetcdir if not done already -- if (!rootetcdir.length()) -- rootetcdir = std::string(gConfDir).append("/etc"); -- // Make it available to all the session via env -+ // Make rootetcdir available to all the session via env - if (rootetcdir.length()) { - char *tmp = new char[15 + rootetcdir.length()]; - snprintf(tmp, 15 + rootetcdir.length(), "ROOTETCDIR=%s", rootetcdir.c_str()); -diff -Nur root-6.08.02.orig/proof/proofd/src/XrdROOT.cxx root-6.08.02/proof/proofd/src/XrdROOT.cxx ---- root-6.08.02.orig/proof/proofd/src/XrdROOT.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/proof/proofd/src/XrdROOT.cxx 2016-12-06 12:46:10.343969203 +0100 -@@ -384,11 +384,19 @@ - } else { - // Check the ROOT dirs - if (fROOT.size() <= 0) { -+ XrdOucString dir, bd, ld, id, dd; - #ifdef R__HAVE_CONFIG -- XrdOucString dir(ROOTPREFIX), bd(ROOTBINDIR), ld(ROOTLIBDIR), -- id(ROOTINCDIR), dd(ROOTDATADIR); --#else -- XrdOucString dir(getenv("ROOTSYS")), bd, ld, id, dd; -+ if (getenv("ROOTIGNOREPREFIX")) -+#endif -+ dir = getenv("ROOTSYS"); -+#ifdef R__HAVE_CONFIG -+ else { -+ dir = ROOTPREFIX; -+ bd = ROOTBINDIR; -+ ld = ROOTLIBDIR; -+ id = ROOTINCDIR; -+ dd = ROOTDATADIR; -+ } - #endif - // None defined: use ROOTSYS as default, if any; otherwise we fail - if (dir.length() > 0) { -diff -Nur root-6.08.02.orig/roofit/histfactory/CMakeLists.txt root-6.08.02/roofit/histfactory/CMakeLists.txt ---- root-6.08.02.orig/roofit/histfactory/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/roofit/histfactory/CMakeLists.txt 2016-12-06 12:46:10.343969203 +0100 -@@ -25,10 +25,4 @@ - WORLD_EXECUTE WORLD_READ - DESTINATION ${CMAKE_INSTALL_BINDIR}) - -- --#ROOT_INSTALL_HEADERS() --install(DIRECTORY inc/RooStats/HistFactory/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/RooStats/HistFactory -- COMPONENT headers -- PATTERN ".svn" EXCLUDE -- REGEX "LinkDef" EXCLUDE ) --set_property(GLOBAL APPEND PROPERTY ROOT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/inc) -+ROOT_INSTALL_HEADERS() -diff -Nur root-6.08.02.orig/roofit/histfactory/config/prepareHistFactory root-6.08.02/roofit/histfactory/config/prepareHistFactory ---- root-6.08.02.orig/roofit/histfactory/config/prepareHistFactory 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/roofit/histfactory/config/prepareHistFactory 2016-12-06 12:46:10.343969203 +0100 -@@ -2,16 +2,10 @@ - - # HistFactory workplace setup script - --ROOTPREFDIR=`root-config --prefix` --ROOTETCDIR=`root-config --etcdir` -+ROOTETCDIR=`root -b -q -l -n -e "std::cout << TROOT::GetEtcDir() << std::endl;" | tail -1` - echo "Using etcdir "$ROOTETCDIR --ROOTTUTDIR=$ROOTPREFDIR/tutorials --if test -e $ROOTTUTDIR; then -- echo "Using tutorials dir" $ROOTTUTDIR --else -- ROOTTUTDIR=${ROOTPREFDIR}/share/doc/root/tutorials -- echo "Using tutorials dir" $ROOTTUTDIR --fi -+ROOTTUTDIR=`root -b -q -l -n -e "std::cout << TROOT::GetTutorialDir() << std::endl;" | tail -1` -+echo "Using tutorials dir" $ROOTTUTDIR - - if [ $# -eq 1 ] - then -diff -Nur root-6.08.02.orig/roofit/roostats/CMakeLists.txt root-6.08.02/roofit/roostats/CMakeLists.txt ---- root-6.08.02.orig/roofit/roostats/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/roofit/roostats/CMakeLists.txt 2016-12-06 12:46:10.344969192 +0100 -@@ -8,9 +8,4 @@ - ROOT_LINKER_LIBRARY(RooStats *.cxx G__RooStats.cxx LIBRARIES Core - DEPENDENCIES RooFit RooFitCore Tree RIO Hist Matrix MathCore Minuit Foam Graf Gpad ) - --#ROOT_INSTALL_HEADERS() --install(DIRECTORY inc/RooStats/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/RooStats -- COMPONENT headers -- PATTERN ".svn" EXCLUDE -- REGEX "LinkDef" EXCLUDE ) --set_property(GLOBAL APPEND PROPERTY ROOT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/inc) -+ROOT_INSTALL_HEADERS() -diff -Nur root-6.08.02.orig/rootx/src/rootx.cxx root-6.08.02/rootx/src/rootx.cxx ---- root-6.08.02.orig/rootx/src/rootx.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/rootx/src/rootx.cxx 2016-12-06 12:46:10.344969192 +0100 -@@ -218,7 +218,6 @@ - return 0; - } - --#ifndef ROOTPREFIX - static const char *GetExePath() - { - static std::string exepath; -@@ -265,7 +264,6 @@ - delete [] ep; - } - } --#endif - - static void SetDisplay() - { -@@ -314,7 +312,9 @@ - - static void SetLibraryPath() - { --#ifndef ROOTLIBDIR -+#ifdef ROOTPREFIX -+ if (getenv("ROOTIGNOREPREFIX")) { -+#endif - // Set library path for the different platforms. - - char *msg; -@@ -361,6 +361,8 @@ - } - # endif - putenv(msg); -+#ifdef ROOTPREFIX -+ } - #endif - } - -@@ -458,7 +460,9 @@ - char **argvv; - char arg0[kMAXPATHLEN]; - --#ifndef ROOTPREFIX -+#ifdef ROOTPREFIX -+ if (getenv("ROOTIGNOREPREFIX")) { -+#endif - // Try to set ROOTSYS depending on pathname of the executable - SetRootSys(); - -@@ -467,6 +471,8 @@ - argv[0], argv[0]); - return 1; - } -+#ifdef ROOTPREFIX -+ } - #endif - - // In batch mode don't show splash screen, idem for no logo mode, -@@ -491,23 +497,20 @@ - if (notebook) { - // Build command - #ifdef ROOTBINDIR -- snprintf(arg0, sizeof(arg0), "%s/%s", ROOTBINDIR, ROOTNBBINARY); --#else -- snprintf(arg0, sizeof(arg0), "%s/bin/%s", getenv("ROOTSYS"), ROOTNBBINARY); -+ if (getenv("ROOTIGNOREPREFIX")) -+#endif -+ snprintf(arg0, sizeof(arg0), "%s/bin/%s", getenv("ROOTSYS"), ROOTNBBINARY); -+#ifdef ROOTBINDIR -+ else -+ snprintf(arg0, sizeof(arg0), "%s/%s", ROOTBINDIR, ROOTNBBINARY); - #endif - - // Execute ROOT notebook binary - execl(arg0, arg0, NULL); -- -+ - // Exec failed --#ifndef ROOTBINDIR -- fprintf(stderr, -- "%s: can't start ROOT notebook -- this option is only available when building with CMake, please check that %s/bin/%s exists\n", -- argv[0], getenv("ROOTSYS"), ROOTNBBINARY); --#else -- fprintf(stderr, "%s: can't start ROOT notebook -- this option is only available when building with CMake, please check that %s/%s exists\n", -- argv[0], ROOTBINDIR, ROOTNBBINARY); --#endif -+ fprintf(stderr, "%s: can't start ROOT notebook -- this option is only available when building with CMake, please check that %s exists\n", -+ argv[0], arg0); - - return 1; - } -@@ -604,9 +607,12 @@ - // Build argv vector - argvv = new char* [argc+2]; - #ifdef ROOTBINDIR -- snprintf(arg0, sizeof(arg0), "%s/%s", ROOTBINDIR, ROOTBINARY); --#else -- snprintf(arg0, sizeof(arg0), "%s/bin/%s", getenv("ROOTSYS"), ROOTBINARY); -+ if (getenv("ROOTIGNOREPREFIX")) -+#endif -+ snprintf(arg0, sizeof(arg0), "%s/bin/%s", getenv("ROOTSYS"), ROOTBINARY); -+#ifdef ROOTBINDIR -+ else -+ snprintf(arg0, sizeof(arg0), "%s/%s", ROOTBINDIR, ROOTBINARY); - #endif - argvv[0] = arg0; - argvv[1] = (char *) "-splash"; -@@ -622,14 +628,8 @@ - execv(arg0, argvv); - - // Exec failed --#ifndef ROOTBINDIR -- fprintf(stderr, -- "%s: can't start ROOT -- check that %s/bin/%s exists!\n", -- argv[0], getenv("ROOTSYS"), ROOTBINARY); --#else -- fprintf(stderr, "%s: can't start ROOT -- check that %s/%s exists!\n", -- argv[0], ROOTBINDIR, ROOTBINARY); --#endif -+ fprintf(stderr, "%s: can't start ROOT -- check that %s exists!\n", -+ argv[0], arg0); - - return 1; - } -diff -Nur root-6.08.02.orig/test/rhtml/rhtml.cxx root-6.08.02/test/rhtml/rhtml.cxx ---- root-6.08.02.orig/test/rhtml/rhtml.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/test/rhtml/rhtml.cxx 2016-12-06 12:46:10.344969192 +0100 -@@ -475,14 +475,7 @@ - case M_HELP_ABOUT: - { - #ifdef R__UNIX -- TString rootx; --# ifdef ROOTBINDIR -- rootx = ROOTBINDIR; --# else -- rootx = gSystem->Getenv("ROOTSYS"); -- if (!rootx.IsNull()) rootx += "/bin"; --# endif -- rootx += "/root -a &"; -+ TString rootx = TROOT::GetBinDir() + "/root -a &"; - gSystem->Exec(rootx); - #else - #ifdef WIN32 -diff -Nur root-6.08.02.orig/test/RootIDE/TGRootIDE.cxx root-6.08.02/test/RootIDE/TGRootIDE.cxx ---- root-6.08.02.orig/test/RootIDE/TGRootIDE.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/test/RootIDE/TGRootIDE.cxx 2016-12-06 12:46:10.344969192 +0100 -@@ -1270,14 +1270,7 @@ - void TGRootIDE::About() - { - #ifdef R__UNIX -- TString rootx; --# ifdef ROOTBINDIR -- rootx = ROOTBINDIR; --# else -- rootx = gSystem->Getenv("ROOTSYS"); -- if (!rootx.IsNull()) rootx += "/bin"; --# endif -- rootx += "/root -a &"; -+ TString rootx = TROOT::GetBinDir() + "/root -a &"; - gSystem->Exec(rootx); - #else - #ifdef WIN32 -diff -Nur root-6.08.02.orig/tmva/tmva/CMakeLists.txt root-6.08.02/tmva/tmva/CMakeLists.txt ---- root-6.08.02.orig/tmva/tmva/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tmva/tmva/CMakeLists.txt 2016-12-06 12:46:10.345969180 +0100 -@@ -79,11 +79,7 @@ - LIBRARIES Core ${DNN_CUDA_LIBRARIES} ${DNN_CPU_LIBRARIES} - DEPENDENCIES RIO Hist Tree TreePlayer MLP Minuit XMLIO) - --install(DIRECTORY inc/TMVA/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/TMVA -- COMPONENT headers -- PATTERN ".svn" EXCLUDE -- REGEX "LinkDef" EXCLUDE ) --set_property(GLOBAL APPEND PROPERTY ROOT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/inc) -+ROOT_INSTALL_HEADERS() - - if(NOT gnuinstall) - install(DIRECTORY test DESTINATION tmva -diff -Nur root-6.08.02.orig/tmva/tmvagui/CMakeLists.txt root-6.08.02/tmva/tmvagui/CMakeLists.txt ---- root-6.08.02.orig/tmva/tmvagui/CMakeLists.txt 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tmva/tmvagui/CMakeLists.txt 2016-12-06 12:46:10.345969180 +0100 -@@ -31,11 +31,7 @@ - ROOT_LINKER_LIBRARY(TMVAGui *.cxx G__TMVAGui.cxx LIBRARIES Core - DEPENDENCIES RIO Hist Tree TreeViewer MLP Minuit XMLIO TMVA Gui) - --install(DIRECTORY inc/TMVA/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/TMVA -- COMPONENT headers -- PATTERN ".svn" EXCLUDE -- REGEX "LinkDef" EXCLUDE ) --set_property(GLOBAL APPEND PROPERTY ROOT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/inc) -+ROOT_INSTALL_HEADERS() - - if(NOT gnuinstall) - install(DIRECTORY test DESTINATION tmva -diff -Nur root-6.08.02.orig/tree/treeviewer/src/TTreeViewer.cxx root-6.08.02/tree/treeviewer/src/TTreeViewer.cxx ---- root-6.08.02.orig/tree/treeviewer/src/TTreeViewer.cxx 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tree/treeviewer/src/TTreeViewer.cxx 2016-12-06 12:46:10.345969180 +0100 -@@ -2048,14 +2048,7 @@ - case kHelpAbout: - { - #ifdef R__UNIX -- TString rootx; --# ifdef ROOTBINDIR -- rootx = ROOTBINDIR; --# else -- rootx = gSystem->Getenv("ROOTSYS"); -- if (!rootx.IsNull()) rootx += "/bin"; --# endif -- rootx += "/root -a &"; -+ TString rootx = TROOT::GetBinDir() + "/root -a &"; - gSystem->Exec(rootx); - #else - #ifdef WIN32 -diff -Nur root-6.08.02.orig/tutorials/eve/SplitGLView.C root-6.08.02/tutorials/eve/SplitGLView.C ---- root-6.08.02.orig/tutorials/eve/SplitGLView.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/eve/SplitGLView.C 2016-12-06 12:46:10.346969169 +0100 -@@ -291,8 +291,7 @@ - const char *str = fText.Data(); - char *string = strdup(str); - Int_t nlines = 0, size = fTextH; -- TString fp = gEnv->GetValue("Root.TTFontPath", ""); -- TString ar = fp + "/arial.ttf"; -+ TString ar = "arial.ttf"; - char *s = strtok((char *)string, "\n"); - TImage *img = (TImage*)fImage->Clone("img"); - img->DrawText(fTextX, fTextY+(nlines*size), s, size, fTextCol, ar); -@@ -1020,14 +1019,7 @@ - case kHelpAbout: - { - #ifdef R__UNIX -- TString rootx; --# ifdef ROOTBINDIR -- rootx = ROOTBINDIR; --# else -- rootx = gSystem->Getenv("ROOTSYS"); -- if (!rootx.IsNull()) rootx += "/bin"; --# endif -- rootx += "/root -a &"; -+ TString rootx = TROOT::GetBinDir() + "/root -a &"; - gSystem->Exec(rootx); - #else - #ifdef WIN32 -diff -Nur root-6.08.02.orig/tutorials/fit/fit1.C root-6.08.02/tutorials/fit/fit1.C ---- root-6.08.02.orig/tutorials/fit/fit1.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/fit/fit1.C 2016-12-06 12:46:10.346969169 +0100 -@@ -35,7 +35,7 @@ - // We connect the ROOT file generated in a previous tutorial - // (see Filling histograms with random numbers from a function) - // -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.Append("/fit/"); - TFile *file = TFile::Open("fillrandom.root"); - if (!file) { -diff -Nur root-6.08.02.orig/tutorials/fit/fitslicesy.C root-6.08.02/tutorials/fit/fitslicesy.C ---- root-6.08.02.orig/tutorials/fit/fitslicesy.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/fit/fitslicesy.C 2016-12-06 12:46:10.346969169 +0100 -@@ -23,7 +23,7 @@ - gStyle->SetTitleH(0.1); - - // Connect the input file and get the 2-d histogram in memory -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.Append("/hsimple.C"); - dir.ReplaceAll("/./","/"); - if (!gInterpreter->IsLoaded(dir.Data())) gInterpreter->LoadMacro(dir.Data()); -diff -Nur root-6.08.02.orig/tutorials/fit/myfit.C root-6.08.02/tutorials/fit/myfit.C ---- root-6.08.02.orig/tutorials/fit/myfit.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/fit/myfit.C 2016-12-06 12:46:10.346969169 +0100 -@@ -25,7 +25,7 @@ - } - void myfit() - { -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.Append("/hsimple.C"); - dir.ReplaceAll("/./","/"); - if (!gInterpreter->IsLoaded(dir.Data())) gInterpreter->LoadMacro(dir.Data()); -diff -Nur root-6.08.02.orig/tutorials/foam/foam_demopers.C root-6.08.02/tutorials/foam/foam_demopers.C ---- root-6.08.02.orig/tutorials/foam/foam_demopers.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/foam/foam_demopers.C 2016-12-06 12:46:10.347969158 +0100 -@@ -24,7 +24,7 @@ - gSystem->Load("libFoam"); - - // need to load the foam_demo tutorial for the definition of the function -- TString macroName = gROOT->GetTutorialsDir(); -+ TString macroName = gROOT->GetTutorialDir(); - macroName.Append("/foam/foam_demo.C"); - gROOT->ProcessLine(TString::Format(".L %s+",macroName.Data())); - -diff -Nur root-6.08.02.orig/tutorials/geom/runplugin.C root-6.08.02/tutorials/geom/runplugin.C ---- root-6.08.02.orig/tutorials/geom/runplugin.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/geom/runplugin.C 2016-12-06 12:46:10.347969158 +0100 -@@ -27,7 +27,7 @@ - { - - -- TString tutdir = gROOT->GetTutorialsDir(); -+ TString tutdir = gROOT->GetTutorialDir(); - gROOT->ProcessLine(".x " + tutdir + "/geom/rootgeom.C"); - plugin = new iterplugin(); - gGeoManager->GetGeomPainter()->SetIteratorPlugin(plugin); -diff -Nur root-6.08.02.orig/tutorials/graphics/earth.C root-6.08.02/tutorials/graphics/earth.C ---- root-6.08.02.orig/tutorials/graphics/earth.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/graphics/earth.C 2016-12-06 12:46:10.347969158 +0100 -@@ -26,7 +26,7 @@ - TH2F *hs = new TH2F("hs","Sinusoidal",180, -180, 180, 181, -90.5, 90.5); - TH2F *hp = new TH2F("hp","Parabolic", 180, -180, 180, 181, -90.5, 90.5); - -- TString dat = gROOT->GetTutorialsDir(); -+ TString dat = gROOT->GetTutorialDir(); - dat.Append("/graphics/earth.dat"); - dat.ReplaceAll("/./","/"); - -diff -Nur root-6.08.02.orig/tutorials/graphics/psview.C root-6.08.02/tutorials/graphics/psview.C ---- root-6.08.02.orig/tutorials/graphics/psview.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/graphics/psview.C 2016-12-06 12:46:10.347969158 +0100 -@@ -32,7 +32,7 @@ - gROOT->SetBatch(1); - - // create a PostScript file -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.Append("/graphics/feynman.C"); - gROOT->Macro(dir); - gPad->Print("feynman.eps"); -diff -Nur root-6.08.02.orig/tutorials/graphs/motorcycle.C root-6.08.02/tutorials/graphs/motorcycle.C ---- root-6.08.02.orig/tutorials/graphs/motorcycle.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/graphs/motorcycle.C 2016-12-06 12:46:10.347969158 +0100 -@@ -43,7 +43,7 @@ - void motorcycle() - { - // data taken from R library MASS: mcycle.txt -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.Append("/graphs/"); - dir.ReplaceAll("/./","/"); - -diff -Nur root-6.08.02.orig/tutorials/hist/FirstContour.C root-6.08.02/tutorials/hist/FirstContour.C ---- root-6.08.02.orig/tutorials/hist/FirstContour.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/hist/FirstContour.C 2016-12-06 12:46:10.347969158 +0100 -@@ -13,7 +13,7 @@ - - void FirstContour() - { -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.Append("/hsimple.C"); - dir.ReplaceAll("/./","/"); - if (!gInterpreter->IsLoaded(dir.Data())) gInterpreter->LoadMacro(dir.Data()); -diff -Nur root-6.08.02.orig/tutorials/hist/h1draw.C root-6.08.02/tutorials/hist/h1draw.C ---- root-6.08.02.orig/tutorials/hist/h1draw.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/hist/h1draw.C 2016-12-06 12:46:10.348969146 +0100 -@@ -25,7 +25,7 @@ - - void h1draw() - { -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.Append("/hsimple.C"); - dir.ReplaceAll("/./","/"); - if (gBenchmark->GetBench("hsimple") < 0) gInterpreter->LoadMacro(dir.Data()); -diff -Nur root-6.08.02.orig/tutorials/hist/hbars.C root-6.08.02/tutorials/hist/hbars.C ---- root-6.08.02.orig/tutorials/hist/hbars.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/hist/hbars.C 2016-12-06 12:46:10.348969146 +0100 -@@ -10,7 +10,7 @@ - - TCanvas *hbars() { - // Try to open first the file cernstaff.root in tutorials/tree directory -- TString filedir = gROOT->GetTutorialsDir(); -+ TString filedir = gROOT->GetTutorialDir(); - filedir += TString("/tree/"); - TString filename = "cernstaff.root"; - bool fileNotFound = gSystem->AccessPathName(filename); // note opposite return code -diff -Nur root-6.08.02.orig/tutorials/hsimple.C root-6.08.02/tutorials/hsimple.C ---- root-6.08.02.orig/tutorials/hsimple.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/hsimple.C 2016-12-06 12:46:10.348969146 +0100 -@@ -34,7 +34,7 @@ - TFile *hsimple(Int_t getFile=0) - { - TString filename = "hsimple.root"; -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.ReplaceAll("/./","/"); - TFile *hfile = 0; - if (getFile) { -diff -Nur root-6.08.02.orig/tutorials/image/rose_image.C root-6.08.02/tutorials/image/rose_image.C ---- root-6.08.02.orig/tutorials/image/rose_image.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/image/rose_image.C 2016-12-06 12:46:10.348969146 +0100 -@@ -30,9 +30,8 @@ - img->SetConstRatio(0); - img->SetImageQuality(TAttImage::kImgBest); - -- TString fp = gEnv->GetValue("Root.TTFontPath", ""); -- TString bc = fp + "/BlackChancery.ttf"; -- TString ar = fp + "/arial.ttf"; -+ TString bc = "BlackChancery.ttf"; -+ TString ar = "arial.ttf"; - - // draw text over image with funny font - img->DrawText(120, 160, "Hello World!", 32, -diff -Nur root-6.08.02.orig/tutorials/io/importCode.C root-6.08.02/tutorials/io/importCode.C ---- root-6.08.02.orig/tutorials/io/importCode.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/io/importCode.C 2016-12-06 12:46:10.348969146 +0100 -@@ -54,7 +54,7 @@ - } - void importCode() { - TFile *f = new TFile("code.root","recreate"); -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - importdir(dir); //change the directory as you like - delete f; - } -diff -Nur root-6.08.02.orig/tutorials/io/mergeSelective.C root-6.08.02/tutorials/io/mergeSelective.C ---- root-6.08.02.orig/tutorials/io/mergeSelective.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/io/mergeSelective.C 2016-12-06 12:46:10.348969146 +0100 -@@ -49,7 +49,7 @@ - // Create the files to be merged - TStopwatch timer; - timer.Start(); -- TString tutdir = gROOT->GetTutorialsDir(); -+ TString tutdir = gROOT->GetTutorialDir(); - if (gROOT->LoadMacro(tutdir + "/hsimple.C")) return; - Int_t i; - for (i=0; iGetTutorialsDir(); -+ TString tutdir = gROOT->GetTutorialDir(); - gROOT->LoadMacro(tutdir+"/hsimple.C"); - TList *list1 = (TList *)GetCollection(); - TList *inputs = new TList(); -diff -Nur root-6.08.02.orig/tutorials/multicore/mp103_processSelector.C root-6.08.02/tutorials/multicore/mp103_processSelector.C ---- root-6.08.02.orig/tutorials/multicore/mp103_processSelector.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/multicore/mp103_processSelector.C 2016-12-06 12:46:10.349969135 +0100 -@@ -26,7 +26,7 @@ - // MacOSX may generate connection to WindowServer errors - gROOT->SetBatch(kTRUE); - -- TString selectorPath = gROOT->GetTutorialsDir(); -+ TString selectorPath = gROOT->GetTutorialDir(); - selectorPath += "/tree/h1analysis.C+"; - std::cout << "selector used is: "<< selectorPath<<"\n"; - TSelector *sel = TSelector::GetSelector(selectorPath); -diff -Nur root-6.08.02.orig/tutorials/pyroot/benchmarks.py root-6.08.02/tutorials/pyroot/benchmarks.py ---- root-6.08.02.orig/tutorials/pyroot/benchmarks.py 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/pyroot/benchmarks.py 2016-12-06 12:46:10.349969135 +0100 -@@ -45,7 +45,7 @@ - ## -------------------------------------------------------------------------- - if __name__ == '__main__': - -- macrodir = os.path.join(ROOT.gROOT.GetTutorialsDir(), 'pyroot') -+ macrodir = os.path.join(str(ROOT.gROOT.GetTutorialDir()), 'pyroot') - - # window for keeping track of bench marks that are run - bench = ROOT.TCanvas( 'bench','Benchmarks Summary', -1000, 50, 200, 500 ) -diff -Nur root-6.08.02.orig/tutorials/pyroot/fit1.py root-6.08.02/tutorials/pyroot/fit1.py ---- root-6.08.02.orig/tutorials/pyroot/fit1.py 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/pyroot/fit1.py 2016-12-06 12:46:10.349969135 +0100 -@@ -51,7 +51,7 @@ - fitlabel = TPaveText( 0.6, 0.3, 0.9, 0.80, 'NDC' ) - fitlabel.SetTextAlign( 12 ) - fitlabel.SetFillColor( 42 ) --fitlabel.ReadFile(path.join(gROOT.GetTutorialsDir(), 'pyroot', 'fit1_py.py')) -+fitlabel.ReadFile(path.join(str(gROOT.GetTutorialDir()), 'pyroot', 'fit1_py.py')) - fitlabel.Draw() - c1.Update() - gBenchmark.Show( 'fit1' ) -diff -Nur root-6.08.02.orig/tutorials/pyroot/geometry.py root-6.08.02/tutorials/pyroot/geometry.py ---- root-6.08.02.orig/tutorials/pyroot/geometry.py 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/pyroot/geometry.py 2016-12-06 12:46:10.349969135 +0100 -@@ -10,7 +10,7 @@ - import os - import ROOT - --macrodir = os.path.join(ROOT.gROOT.GetTutorialsDir(), 'pyroot') -+macrodir = os.path.join(str(ROOT.gROOT.GetTutorialDir()), 'pyroot') - - # the na49.C file was generated, so no python conversion is provided - ROOT.gROOT.Macro( ROOT.gSystem.UnixPathName( os.path.join( macrodir, os.pardir, 'geom', 'na49.C' ) ) ) -diff -Nur root-6.08.02.orig/tutorials/pyroot/rootmarks.py root-6.08.02/tutorials/pyroot/rootmarks.py ---- root-6.08.02.orig/tutorials/pyroot/rootmarks.py 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/pyroot/rootmarks.py 2016-12-06 12:46:10.349969135 +0100 -@@ -13,7 +13,7 @@ - import os - import ROOT - --macrodir = os.path.join(ROOT.gROOT.GetTutorialsDir(), 'pyroot') -+macrodir = os.path.join(str(ROOT.gROOT.GetTutorialDir()), 'pyroot') - - # use ROOT macro to make sure that bench numbers get updated in one place - ROOT.gROOT.Macro( ROOT.gSystem.UnixPathName( os.path.join( macrodir, os.pardir, 'rootmarks.C' ) ) ) -diff -Nur root-6.08.02.orig/tutorials/pyroot/staff.py root-6.08.02/tutorials/pyroot/staff.py ---- root-6.08.02.orig/tutorials/pyroot/staff.py 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/pyroot/staff.py 2016-12-06 12:46:10.350969124 +0100 -@@ -47,7 +47,7 @@ - tree.Branch( 'Nation', AddressOf( staff, 'Nation' ), 'Nation/C' ) - - # note that the branches Division and Nation cannot be on the first branch -- fname = os.path.join(ROOT.gROOT.GetTutorialsDir(), 'tree', 'cernstaff.dat') -+ fname = os.path.join(str(ROOT.gROOT.GetTutorialDir()), 'tree', 'cernstaff.dat') - for line in open(fname).readlines(): - t = list(filter( lambda x: x, re.split( '\s+', line ) ) ) - staff.Category = int(t[0]) # assign as integers -diff -Nur root-6.08.02.orig/tutorials/roofit/rf505_asciicfg.C root-6.08.02/tutorials/roofit/rf505_asciicfg.C ---- root-6.08.02.orig/tutorials/roofit/rf505_asciicfg.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/roofit/rf505_asciicfg.C 2016-12-06 12:46:10.350969124 +0100 -@@ -60,9 +60,9 @@ - params->writeToFile("rf505_asciicfg_example.txt") ; - - -- TString dir1 = gROOT->GetTutorialsDir() ; -+ TString dir1 = gROOT->GetTutorialDir() ; - dir1.Append("/roofit/rf505_asciicfg.txt") ; -- TString dir2 = gROOT->GetTutorialsDir() ; -+ TString dir2 = gROOT->GetTutorialDir() ; - dir2.Append("/roofit/rf505_asciicfg_example.txt") ; - // R e a d p a r a m e t e r s f r o m a s c i i f i l e - // ---------------------------------------------------------------- -diff -Nur root-6.08.02.orig/tutorials/spectrum/Background_compton.C root-6.08.02/tutorials/spectrum/Background_compton.C ---- root-6.08.02.orig/tutorials/spectrum/Background_compton.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/Background_compton.C 2016-12-06 12:46:10.350969124 +0100 -@@ -19,7 +19,7 @@ - - TH1F *d1 = new TH1F("d1","",nbins,xmin,xmax); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - TH1F *back = (TH1F*) f->Get("back3"); -diff -Nur root-6.08.02.orig/tutorials/spectrum/Background_decr.C root-6.08.02/tutorials/spectrum/Background_decr.C ---- root-6.08.02.orig/tutorials/spectrum/Background_decr.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/Background_decr.C 2016-12-06 12:46:10.350969124 +0100 -@@ -18,7 +18,7 @@ - - TH1F *d = new TH1F("d","",nbins,xmin,xmax); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - TH1F *back = (TH1F*) f->Get("back1"); -diff -Nur root-6.08.02.orig/tutorials/spectrum/Background_incr.C root-6.08.02/tutorials/spectrum/Background_incr.C ---- root-6.08.02.orig/tutorials/spectrum/Background_incr.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/Background_incr.C 2016-12-06 12:46:10.350969124 +0100 -@@ -18,7 +18,7 @@ - - TH1F *d = new TH1F("d","",nbins,xmin,xmax); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - TH1F *back = (TH1F*) f->Get("back1"); -diff -Nur root-6.08.02.orig/tutorials/spectrum/Background_order.C root-6.08.02/tutorials/spectrum/Background_order.C ---- root-6.08.02.orig/tutorials/spectrum/Background_order.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/Background_order.C 2016-12-06 12:46:10.350969124 +0100 -@@ -22,7 +22,7 @@ - TH1F *d3 = new TH1F("d3","",nbins,xmin,xmax); - TH1F *d4 = new TH1F("d4","",nbins,xmin,xmax); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - TH1F *back = (TH1F*) f->Get("back2"); -diff -Nur root-6.08.02.orig/tutorials/spectrum/Background_smooth.C root-6.08.02/tutorials/spectrum/Background_smooth.C ---- root-6.08.02.orig/tutorials/spectrum/Background_smooth.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/Background_smooth.C 2016-12-06 12:46:10.351969112 +0100 -@@ -20,7 +20,7 @@ - TH1F *d1 = new TH1F("d1","",nbins,xmin,xmax); - TH1F *d2 = new TH1F("d2","",nbins,xmin,xmax); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - TH1F *back = (TH1F*) f->Get("back1"); -diff -Nur root-6.08.02.orig/tutorials/spectrum/Background_width2.C root-6.08.02/tutorials/spectrum/Background_width2.C ---- root-6.08.02.orig/tutorials/spectrum/Background_width2.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/Background_width2.C 2016-12-06 12:46:10.351969112 +0100 -@@ -22,7 +22,7 @@ - TH1F *d3 = new TH1F("d3","",nbins,xmin,xmax); - TH1F *d4 = new TH1F("d4","",nbins,xmin,xmax); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - TH1F *back = (TH1F*) f->Get("back2"); -diff -Nur root-6.08.02.orig/tutorials/spectrum/Background_width.C root-6.08.02/tutorials/spectrum/Background_width.C ---- root-6.08.02.orig/tutorials/spectrum/Background_width.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/Background_width.C 2016-12-06 12:46:10.352969101 +0100 -@@ -17,7 +17,7 @@ - Double_t source[nbins]; - gROOT->ForceStyle(); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - TH1F *back = (TH1F*) f->Get("back1"); -diff -Nur root-6.08.02.orig/tutorials/spectrum/Deconvolution.C root-6.08.02/tutorials/spectrum/Deconvolution.C ---- root-6.08.02.orig/tutorials/spectrum/Deconvolution.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/Deconvolution.C 2016-12-06 12:46:10.352969101 +0100 -@@ -17,7 +17,7 @@ - Double_t response[nbins]; - gROOT->ForceStyle(); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - TH1F *h = (TH1F*) f->Get("decon1"); -diff -Nur root-6.08.02.orig/tutorials/spectrum/DeconvolutionRL_wide_boost.C root-6.08.02/tutorials/spectrum/DeconvolutionRL_wide_boost.C ---- root-6.08.02.orig/tutorials/spectrum/DeconvolutionRL_wide_boost.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/DeconvolutionRL_wide_boost.C 2016-12-06 12:46:10.353969090 +0100 -@@ -17,7 +17,7 @@ - Double_t response[nbins]; - gROOT->ForceStyle(); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - h = (TH1F*) f->Get("decon3"); -diff -Nur root-6.08.02.orig/tutorials/spectrum/DeconvolutionRL_wide.C root-6.08.02/tutorials/spectrum/DeconvolutionRL_wide.C ---- root-6.08.02.orig/tutorials/spectrum/DeconvolutionRL_wide.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/DeconvolutionRL_wide.C 2016-12-06 12:46:10.353969090 +0100 -@@ -17,7 +17,7 @@ - Double_t response[nbins]; - gROOT->ForceStyle(); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - h = (TH1F*) f->Get("decon3"); -diff -Nur root-6.08.02.orig/tutorials/spectrum/Deconvolution_wide_boost.C root-6.08.02/tutorials/spectrum/Deconvolution_wide_boost.C ---- root-6.08.02.orig/tutorials/spectrum/Deconvolution_wide_boost.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/Deconvolution_wide_boost.C 2016-12-06 12:46:10.353969090 +0100 -@@ -20,7 +20,7 @@ - TH1F *h = new TH1F("h","Deconvolution",nbins,xmin,xmax); - TH1F *d = new TH1F("d","",nbins,xmin,xmax); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - h = (TH1F*) f->Get("decon3"); -diff -Nur root-6.08.02.orig/tutorials/spectrum/Deconvolution_wide.C root-6.08.02/tutorials/spectrum/Deconvolution_wide.C ---- root-6.08.02.orig/tutorials/spectrum/Deconvolution_wide.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/Deconvolution_wide.C 2016-12-06 12:46:10.353969090 +0100 -@@ -17,7 +17,7 @@ - Double_t response[nbins]; - gROOT->ForceStyle(); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - TH1F *h = (TH1F*) f->Get("decon3"); -diff -Nur root-6.08.02.orig/tutorials/spectrum/Smoothing.C root-6.08.02/tutorials/spectrum/Smoothing.C ---- root-6.08.02.orig/tutorials/spectrum/Smoothing.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/spectrum/Smoothing.C 2016-12-06 12:46:10.353969090 +0100 -@@ -16,7 +16,7 @@ - Double_t source[nbins]; - gROOT->ForceStyle(); - -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - TString file = dir+"/spectrum/TSpectrum.root"; - TFile *f = new TFile(file.Data()); - TH1F *h = (TH1F*) f->Get("back1"); -diff -Nur root-6.08.02.orig/tutorials/tmva/keras/MulticlassKeras.py root-6.08.02/tutorials/tmva/keras/MulticlassKeras.py ---- root-6.08.02.orig/tutorials/tmva/keras/MulticlassKeras.py 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/tmva/keras/MulticlassKeras.py 2016-12-06 12:46:10.354969079 +0100 -@@ -19,7 +19,7 @@ - - # Load data - if not isfile('tmva_example_multiple_background.root'): -- createDataMacro = gROOT.GetTutorialsDir() + '/tmva/createData.C' -+ createDataMacro = str(gROOT.GetTutorialDir()) + '/tmva/createData.C' - print(createDataMacro) - gROOT.ProcessLine('.L {}'.format(createDataMacro)) - gROOT.ProcessLine('create_MultipleBackground(4000)') -diff -Nur root-6.08.02.orig/tutorials/tmva/TMVAClassificationCategoryApplication.C root-6.08.02/tutorials/tmva/TMVAClassificationCategoryApplication.C ---- root-6.08.02.orig/tutorials/tmva/TMVAClassificationCategoryApplication.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/tmva/TMVAClassificationCategoryApplication.C 2016-12-06 12:46:10.354969079 +0100 -@@ -85,7 +85,7 @@ - TString fname = TString(gSystem->DirName(__FILE__) ) + "/data/"; - // if directory data not found try using tutorials dir - if (gSystem->AccessPathName( fname + "toy_sigbkg_categ_offset.root" )) { -- fname = TString(gROOT->GetTutorialsDir()) + "/tmva/data/"; -+ fname = gROOT->GetTutorialDir() + "/tmva/data/"; - } - if (UseOffsetMethod) fname += "toy_sigbkg_categ_offset.root"; - else fname += "toy_sigbkg_categ_varoff.root"; -diff -Nur root-6.08.02.orig/tutorials/tmva/TMVAClassificationCategory.C root-6.08.02/tutorials/tmva/TMVAClassificationCategory.C ---- root-6.08.02.orig/tutorials/tmva/TMVAClassificationCategory.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/tmva/TMVAClassificationCategory.C 2016-12-06 12:46:10.354969079 +0100 -@@ -89,7 +89,7 @@ - TString fname = TString(gSystem->DirName(__FILE__) ) + "/data/"; - if (gSystem->AccessPathName( fname + "toy_sigbkg_categ_offset.root")) { - // if directory data not found try using tutorials dir -- fname = TString(gROOT->GetTutorialsDir()) + "/tmva/data/"; -+ fname = gROOT->GetTutorialDir() + "/tmva/data/"; - } - if (UseOffsetMethod) fname += "toy_sigbkg_categ_offset.root"; - else fname += "toy_sigbkg_categ_varoff.root"; -diff -Nur root-6.08.02.orig/tutorials/tmva/TMVAMulticlass.C root-6.08.02/tutorials/tmva/TMVAMulticlass.C ---- root-6.08.02.orig/tutorials/tmva/TMVAMulticlass.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/tmva/TMVAMulticlass.C 2016-12-06 12:46:10.354969079 +0100 -@@ -98,7 +98,7 @@ - } - else { - std::cout << "Creating testdata...." << std::endl; -- TString createDataMacro = TString(gROOT->GetTutorialsDir()) + "/tmva/createData.C"; -+ TString createDataMacro = gROOT->GetTutorialDir() + "/tmva/createData.C"; - gROOT->ProcessLine(TString::Format(".L %s",createDataMacro.Data())); - gROOT->ProcessLine("create_MultipleBackground(2000)"); - std::cout << " created tmva_example_multiple_background.root for tests of the multiclass features"<GetTutorialsDir()) + "/tmva/createData.C"; -+ TString createDataMacro = gROOT->GetTutorialDir() + "/tmva/createData.C"; - gROOT->ProcessLine(TString::Format(".L %s",createDataMacro.Data())); - gROOT->ProcessLine("create_MultipleBackground(2000)"); - -diff -Nur root-6.08.02.orig/tutorials/tree/basic2.C root-6.08.02/tutorials/tree/basic2.C ---- root-6.08.02.orig/tutorials/tree/basic2.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/tree/basic2.C 2016-12-06 12:46:10.354969079 +0100 -@@ -10,7 +10,7 @@ - /// \author Rene Brun - - void basic2() { -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.Append("/tree/"); - dir.ReplaceAll("/./","/"); - -diff -Nur root-6.08.02.orig/tutorials/tree/basic.C root-6.08.02/tutorials/tree/basic.C ---- root-6.08.02.orig/tutorials/tree/basic.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/tree/basic.C 2016-12-06 12:46:10.355969067 +0100 -@@ -12,7 +12,7 @@ - void basic() { - // read file $ROOTSYS/tutorials/tree/basic.dat - // this file has 3 columns of float data -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.Append("/tree/"); - dir.ReplaceAll("/./","/"); - ifstream in; -diff -Nur root-6.08.02.orig/tutorials/tree/cernbuild.C root-6.08.02/tutorials/tree/cernbuild.C ---- root-6.08.02.orig/tutorials/tree/cernbuild.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/tree/cernbuild.C 2016-12-06 12:46:10.355969067 +0100 -@@ -25,7 +25,7 @@ - //The input file cern.dat is a copy of the CERN staff data base - //from 1988 - TString filename = "cernstaff.root"; -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.Append("/tree/"); - dir.ReplaceAll("/./","/"); - FILE *fp = fopen(Form("%scernstaff.dat",dir.Data()),"r"); -diff -Nur root-6.08.02.orig/tutorials/tree/cernstaff.C root-6.08.02/tutorials/tree/cernstaff.C ---- root-6.08.02.orig/tutorials/tree/cernstaff.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/tree/cernstaff.C 2016-12-06 12:46:10.355969067 +0100 -@@ -9,7 +9,7 @@ - /// \author Rene Brun - - void cernstaff () { -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.Append("/tree/cernstaff.C"); - if (gSystem->AccessPathName("cernstaff.root")) { - gROOT->SetMacroPath(dir); -diff -Nur root-6.08.02.orig/tutorials/tree/jets.C root-6.08.02/tutorials/tree/jets.C ---- root-6.08.02.orig/tutorials/tree/jets.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/tree/jets.C 2016-12-06 12:46:10.355969067 +0100 -@@ -99,7 +99,7 @@ - //void jets(Int_t nev=100, Int_t npileup=200, Bool_t secondrun); - void jets(Int_t nev=100, Int_t npileup=200) { - gSystem->Load("libPhysics"); -- TString tutdir = gROOT->GetTutorialsDir(); -+ TString tutdir = gROOT->GetTutorialDir(); - gROOT->ProcessLine(".L " + tutdir + "/tree/JetEvent.cxx+"); - gROOT->ProcessLine("#define JETS_SECOND_RUN yes"); - gROOT->ProcessLine("#include \"" __FILE__ "\""); -diff -Nur root-6.08.02.orig/tutorials/tree/ntuple1.C root-6.08.02/tutorials/tree/ntuple1.C ---- root-6.08.02.orig/tutorials/tree/ntuple1.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/tree/ntuple1.C 2016-12-06 12:46:10.355969067 +0100 -@@ -31,7 +31,7 @@ - // - // Connect ROOT histogram/ntuple demonstration file - // generated by example $ROOTSYS/tutorials/hsimple.C. -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - dir.Append("/hsimple.C"); - dir.ReplaceAll("/./","/"); - if (gBenchmark->GetBench("hsimple") < 0) gInterpreter->LoadMacro(dir.Data()); -diff -Nur root-6.08.02.orig/tutorials/xml/DOMParsePerson.C root-6.08.02/tutorials/xml/DOMParsePerson.C ---- root-6.08.02.orig/tutorials/xml/DOMParsePerson.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/xml/DOMParsePerson.C 2016-12-06 12:46:10.356969056 +0100 -@@ -234,7 +234,7 @@ - { - PersonList personlist; - gROOT->ProcessLine(".O 0"); -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - if (personlist.ParseFile(dir+"/xml/person.xml") == 0) - cout << personlist << endl; - } -diff -Nur root-6.08.02.orig/tutorials/xml/DOMRecursive.C root-6.08.02/tutorials/xml/DOMRecursive.C ---- root-6.08.02.orig/tutorials/xml/DOMRecursive.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/xml/DOMRecursive.C 2016-12-06 12:46:10.356969056 +0100 -@@ -54,7 +54,7 @@ - void DOMRecursive() - { - TDOMParser *domParser = new TDOMParser(); -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - domParser->SetValidate(false); // do not validate with DTD - domParser->ParseFile(dir+"/xml/person.xml"); - -diff -Nur root-6.08.02.orig/tutorials/xml/SAXHandler.C root-6.08.02/tutorials/xml/SAXHandler.C ---- root-6.08.02.orig/tutorials/xml/SAXHandler.C 2016-12-03 00:07:29.000000000 +0100 -+++ root-6.08.02/tutorials/xml/SAXHandler.C 2016-12-06 12:46:10.356969056 +0100 -@@ -104,6 +104,6 @@ - SaxHandler *saxHandler = new SaxHandler(); - - saxParser->ConnectToHandler("SaxHandler", saxHandler); -- TString dir = gROOT->GetTutorialsDir(); -+ TString dir = gROOT->GetTutorialDir(); - saxParser->ParseFile(dir+"/xml/saxexample.xml"); - } diff --git a/root-tformulatests-typo.patch b/root-tformulatests-typo.patch deleted file mode 100644 index c1fd12f..0000000 --- a/root-tformulatests-typo.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/test/TFormulaTests.cxx b/test/TFormulaTests.cxx -index fd24825..ca4fd1d 100644 ---- a/test/TFormulaTests.cxx -+++ b/test/TFormulaTests.cxx -@@ -500,7 +500,7 @@ bool TFormulaTests::Parser() { - - int main(int argc, char **argv) - { -- printf("strting .....\n"); -+ printf("starting .....\n"); - - TApplication theApp("App", &argc, argv); - gBenchmark = new TBenchmark(); diff --git a/root-tmva-test.patch b/root-tmva-test.patch deleted file mode 100644 index d8dec2c..0000000 --- a/root-tmva-test.patch +++ /dev/null @@ -1,195 +0,0 @@ -diff --git a/tmva/tmva/test/DNN/TestBackpropagationCpu.cxx b/tmva/tmva/test/DNN/TestBackpropagationCpu.cxx -index c44405b..ba796d1 100644 ---- a/tmva/tmva/test/DNN/TestBackpropagationCpu.cxx -+++ b/tmva/tmva/test/DNN/TestBackpropagationCpu.cxx -@@ -26,22 +26,23 @@ int main() - std::cout << "Testing Backpropagation:" << std::endl; - - double error; -+ int iret = 0; - - error = testBackpropagationWeightsLinear>(1.0); - if (error > 1e-3) -- return 1; -+ iret++; - - error = testBackpropagationL1Regularization>(1e-2); - if (error > 1e-3) -- return 1; -+ iret++; - - error = testBackpropagationL2Regularization>(1.0); - if (error > 1e-3) -- return 1; -+ iret++; - - error = testBackpropagationBiasesLinear>(1.0); - if (error > 1e-3) -- return 1; -+ iret++; - -- return 0; -+ return iret; - } -diff --git a/tmva/tmva/test/DNN/TestDerivatives.h b/tmva/tmva/test/DNN/TestDerivatives.h -index 1acf46f..956bdde 100644 ---- a/tmva/tmva/test/DNN/TestDerivatives.h -+++ b/tmva/tmva/test/DNN/TestDerivatives.h -@@ -104,7 +104,7 @@ auto testActivationFunctionDerivatives() - { - evaluateDerivative(X, af, Y); - }; -- error = testDerivatives(f, df, 5e-3); -+ error = testDerivatives(f, df, 1.0e-04); - - std::cout << "Testing " << static_cast(af) << ": "; - std::cout << "Maximum Relative Error = " << error << std::endl; -diff --git a/tmva/tmva/test/DNN/TestMatrixArithmetic.h b/tmva/tmva/test/DNN/TestMatrixArithmetic.h -index 10aed0e..330cf49 100644 ---- a/tmva/tmva/test/DNN/TestMatrixArithmetic.h -+++ b/tmva/tmva/test/DNN/TestMatrixArithmetic.h -@@ -38,8 +38,7 @@ auto testMultiplication(size_t ntests) - n = rand() % 100 + 1; - k = rand() % 100 + 1; - -- TMatrixT ARef(m,k), A2Ref(m,k), ATRef(k,m) , BRef(k,n), -- BTRef(n,k), CRef(m,n); -+ TMatrixT ARef(m,k), A2Ref(m,k), ATRef(k,m) , BRef(k,n), BTRef(n,k), CRef(m,n); - TMVA::DNN::randomMatrix(ARef); - TMVA::DNN::randomMatrix(A2Ref); - TMVA::DNN::randomMatrix(ATRef); -@@ -50,19 +49,19 @@ auto testMultiplication(size_t ntests) - // A * B - CRef.Mult(ARef,BRef); - Architecture_t::Multiply(C, A, B); -- Scalar_t error = TMVA::DNN::maximumRelativeError((TMatrixT) C, CRef); -+ Scalar_t error = TMVA::DNN::maximumRelativeError(C, CRef); - maximumError = std::max(error, maximumError); - - // A^T * B - CRef.TMult(ATRef,BRef); - Architecture_t::TransposeMultiply(C, AT, B); -- error = TMVA::DNN::maximumRelativeError((TMatrixT) C, CRef); -+ error = TMVA::DNN::maximumRelativeError(C, CRef); - maximumError = std::max(error, maximumError); - - // A * B^T - CRef.MultT(ARef,BTRef); - Architecture_t::MultiplyTranspose(C, A, BT); -- error = TMVA::DNN::maximumRelativeError((TMatrixT) C, CRef); -+ error = TMVA::DNN::maximumRelativeError(C, CRef); - maximumError = std::max(error, maximumError); - - // A .* B -@@ -72,7 +71,7 @@ auto testMultiplication(size_t ntests) - } - } - Architecture_t::Hadamard(A, A2); -- error = TMVA::DNN::maximumRelativeError((TMatrixT) A, ARef); -+ error = TMVA::DNN::maximumRelativeError(A, ARef); - maximumError = std::max(error, maximumError); - } - -diff --git a/tmva/tmva/test/DNN/Utility.h b/tmva/tmva/test/DNN/Utility.h -index 46077fc..a0c29b5 100644 ---- a/tmva/tmva/test/DNN/Utility.h -+++ b/tmva/tmva/test/DNN/Utility.h -@@ -1,6 +1,7 @@ - #ifndef TMVA_TEST_DNN_UTILITY - #define TMVA_TEST_DNN_UTILITY - -+#include - #include - #include - #include -@@ -172,64 +173,48 @@ AFloat reduceMean(F f, AFloat start, const AMatrix &X) - return result / (AFloat) (m * n); - } - --/** Compute the relative error of x and y normalized by y. Specialized for -- * float and double to make sure both arguments are above expected machine -- * precision (1e-5 and 1e-10). */ -+/** Compute the relative error of x and y */ - //______________________________________________________________________________ --template --inline AFloat relativeError(const AFloat &x, -- const AFloat &y); -+template -+inline T relativeError(const T &x, const T &y) -+{ -+ using std::abs; - -+ if (x == y) -+ return T(0.0); - --//______________________________________________________________________________ --template <> --inline Double_t relativeError(const Double_t &x, -- const Double_t &y) --{ -- if ((std::abs(x) > 1e-10) && (std::abs(y) > 1e-10)) { -- return std::fabs((x - y) / y); -- } else { -- return std::fabs(x - y); -- } --} -+ T diff = abs(x - y); - --//______________________________________________________________________________ --template <> --inline Real_t relativeError(const Real_t &x, -- const Real_t &y) --{ -- if ((std::abs(x) > 1e-5) && (std::abs(y) > 1e-5)) { -- return std::fabs((x - y) / y); -- } else { -- return std::fabs(x - y); -- } -+ if (x * y == T(0.0) || -+ diff < std::numeric_limits::epsilon()) -+ return diff; -+ -+ return diff / (abs(x) + abs(y)); - } - - /*! Compute the maximum, element-wise relative error of the matrices - * X and Y normalized by the element of Y. Protected against division - * by zero. */ - //______________________________________________________________________________ --template --auto maximumRelativeError(const AMatrix &X, -- const AMatrix &Y) ---> decltype(X(0,0)) -+template -+auto maximumRelativeError(const Matrix1 &X, const Matrix2 &Y) -> decltype(X(0,0)) - { -+ decltype(X(0,0)) curError, maxError = 0.0; - -- using AFloat = decltype(X(0,0)); -+ Int_t m = X.GetNrows(); -+ Int_t n = X.GetNcols(); - -- size_t m,n; -- m = X.GetNrows(); -- n = X.GetNcols(); -+ assert(m == Y.GetNrows()); -+ assert(n == Y.GetNcols()); - -- AFloat maximumError = 0.0; -- -- for (size_t i = 0; i < m; i++) { -- for (size_t j = 0; j < n; j++) { -- AFloat error = relativeError(X(i,j), Y(i,j)); -- maximumError = std::max(error, maximumError); -+ for (Int_t i = 0; i < m; i++) { -+ for (Int_t j = 0; j < n; j++) { -+ curError = relativeError(X(i,j), Y(i,j)); -+ maxError = std::max(curError, maxError); - } - } -- return maximumError; -+ -+ return maxError; - } - - /*! Numerically compute the derivative of the functional f using finite diff --git a/root-unbundle-gtest.patch b/root-unbundle-gtest.patch new file mode 100644 index 0000000..29cf011 --- /dev/null +++ b/root-unbundle-gtest.patch @@ -0,0 +1,78 @@ +diff -ur root-6.10.00.orig/cmake/modules/SearchInstalledSoftware.cmake root-6.10.00/cmake/modules/SearchInstalledSoftware.cmake +--- root-6.10.00.orig/cmake/modules/SearchInstalledSoftware.cmake 2017-06-13 09:14:04.000000000 +0200 ++++ root-6.10.00/cmake/modules/SearchInstalledSoftware.cmake 2017-06-15 14:21:08.367446162 +0200 +@@ -1471,73 +1471,15 @@ + + #---Download googletest-------------------------------------------------------------- + if (testing) +- # FIXME: Remove our version of gtest in roottest. We can reuse this one. +- # Add gtest +- # http://stackoverflow.com/questions/9689183/cmake-googletest +- +- set(_byproduct_binary_dir +- ${CMAKE_CURRENT_BINARY_DIR}/googletest-prefix/src/googletest-build/googlemock/) +- set(_byproducts +- ${_byproduct_binary_dir}/gtest/libgtest.a +- ${_byproduct_binary_dir}/gtest/libgtest_main.a +- ${_byproduct_binary_dir}/libgmock.a +- ${_byproduct_binary_dir}/libgmock_main.a +- ) +- +- ExternalProject_Add( +- googletest +- GIT_REPOSITORY https://github.com/google/googletest.git +- GIT_TAG release-1.8.0 +- UPDATE_COMMAND "" +- # TIMEOUT 10 +- # # Force separate output paths for debug and release builds to allow easy +- # # identification of correct lib in subsequent TARGET_LINK_LIBRARIES commands +- # CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs +- # -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs +- # -Dgtest_force_shared_crt=ON +- CMAKE_ARGS -G ${CMAKE_GENERATOR} +- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} +- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} +- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} +- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} +- -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} +- -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} +- # Disable install step +- INSTALL_COMMAND "" +- BUILD_BYPRODUCTS ${_byproducts} +- # Wrap download, configure and build steps in a script to log output +- LOG_DOWNLOAD ON +- LOG_CONFIGURE ON +- LOG_BUILD ON) +- +- # Specify include dirs for gtest and gmock +- ExternalProject_Get_Property(googletest source_dir) +- set(GTEST_INCLUDE_DIR ${source_dir}/googletest/include) +- set(GMOCK_INCLUDE_DIR ${source_dir}/googlemock/include) +- +- # Libraries +- ExternalProject_Get_Property(googletest binary_dir) +- set(_G_LIBRARY_PATH ${binary_dir}/googlemock/) +- +- # gtest +- add_library(gtest IMPORTED STATIC GLOBAL) +- set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/gtest/libgtest.a) +- add_dependencies(gtest googletest) +- +- # gtest_main +- add_library(gtest_main IMPORTED STATIC GLOBAL) +- set_property(TARGET gtest_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/gtest/libgtest_main.a) +- add_dependencies(gtest_main googletest) ++ set(_G_LIBRARY_PATH ${CMAKE_SOURCE_DIR}/googlemock) + + # gmock + add_library(gmock IMPORTED STATIC GLOBAL) + set_property(TARGET gmock PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/libgmock.a) +- add_dependencies(gmock googletest) + + # gmock_main + add_library(gmock_main IMPORTED STATIC GLOBAL) + set_property(TARGET gmock_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/libgmock_main.a) +- add_dependencies(gmock_main googletest) + + endif() + diff --git a/root.spec b/root.spec index 60cb0bf..af1b6b6 100644 --- a/root.spec +++ b/root.spec @@ -23,9 +23,9 @@ %global __provides_exclude_from ^(%{python2_sitearch}|%{python3_sitearch})/libJupyROOT\\.so$ Name: root -Version: 6.08.06 +Version: 6.10.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 7%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -43,84 +43,19 @@ Source2: %{name}-testfiles.sh # systemd unit files Source3: rootd.service Source4: proofd.service -# Allow running tests -# https://github.com/root-project/root/pull/130 -Patch0: %{name}-test-install.patch # Use system fonts -Patch1: %{name}-fontconfig.patch +Patch0: %{name}-fontconfig.patch # Don't link to libjvm (handled properly inside libhdfs) -Patch2: %{name}-dont-link-jvm.patch +Patch1: %{name}-dont-link-jvm.patch # Don't create documentation notebooks -Patch3: %{name}-doc-no-notebooks.patch +Patch2: %{name}-doc-no-notebooks.patch # Don't run gui macros -Patch4: %{name}-avoid-gui-crash.patch -# Use files in source tree during tests -# https://github.com/root-project/root/pull/403 -Patch5: %{name}-template-files.patch -# Use cache read option -# https://github.com/root-project/root/pull/404 -Patch6: %{name}-cache-test.patch -# Fixes for tests on ix86 -# https://github.com/root-project/root/pull/400 -# https://github.com/root-project/root/pull/401 -Patch7: %{name}-32bit.patch -# Fix root-config for s390/s390x -# https://github.com/root-project/root/pull/406 -Patch8: %{name}-s390x.patch -# Typo in TFormulaTests -# https://github.com/root-project/root/pull/405 -Patch9: %{name}-tformulatests-typo.patch -# Don't download testdata -# https://github.com/root-project/root/pull/402 -Patch10: %{name}-no-testdata.patch -# Missing includes -# https://github.com/root-project/root/pull/269 -Patch11: %{name}-missing-includes.patch -# Old FSF address -# https://github.com/root-project/root/pull/270 -Patch12: %{name}-fsf-addr.patch -# Name clash HZ -# https://github.com/root-project/root/pull/309 -Patch13: %{name}-hz.patch -# Fix errors when building documentation -# https://github.com/root-project/root/pull/310 -Patch14: %{name}-global-name-not-defined.patch -# Fix paths in image tutorial -# https://github.com/root-project/root/pull/311 -Patch15: %{name}-rose-image.patch +Patch3: %{name}-avoid-gui-crash.patch +# Unbundle gtest +Patch4: %{name}-unbundle-gtest.patch # Fix stressGraphics.ref -# https://github.com/root-project/root/pull/312 -Patch16: %{name}-stressgraphics.patch -# Fix broken TPad::WaitPrimitive (backport from git) -Patch17: %{name}-TPad-WaitPrimitive.patch -# Fix for test suite on Fedora 26 i686 -# https://github.com/root-project/root/pull/359 -Patch18: %{name}-Quantiles.patch -# Fix format warnings/errors -# https://github.com/root-project/root/pull/376 -Patch19: %{name}-format.patch -# Allow both absolute and relative python install paths -# https://github.com/root-project/root/pull/382 -Patch20: %{name}-python-install-path.patch -# Fix relocation problems on aarch64 -# Based on the patch in Fedora's llvm package -# https://reviews.llvm.org/D27609 -# https://pagure.io/releng/issue/6653 -# https://sft.its.cern.ch/jira/browse/ROOT-8702 -# https://github.com/root-project/root/pull/430 -Patch21: %{name}-aarch64.patch -# Python 3 compatibility fixes -# Backported from upstream git (6.08 branch) -Patch22: %{name}-python3-support.patch -# Fix for macro scope issue -# Backported from upstream git (6.08 branch) -Patch23: %{name}-macro-scope.patch -# Use absolute path when loading libJupyROOT.so -# https://github.com/root-project/root/pull/569 -Patch24: %{name}-jupyroot-path.patch -# Fix for TMVA tests -# Backported from upstream git (master) -Patch25: %{name}-tmva-test.patch +# https://github.com/root-project/root/pull/659 +Patch5: %{name}-stressgraphics.patch # s390 is not supported by cling: "error: unknown target # triple 's390-ibm-linux', please use -triple or -arch" @@ -226,6 +161,8 @@ BuildRequires: doxygen BuildRequires: graphviz BuildRequires: perl-generators BuildRequires: systemd-units +BuildRequires: gtest-devel +BuildRequires: gmock-devel # Some of the tests call lsb_release BuildRequires: redhat-lsb-core # Fonts @@ -255,7 +192,7 @@ the functionality needed to handle and analyze large amounts of data in a very efficient way. Having the data defined as a set of objects, specialized storage methods are used to get direct access to the separate attributes of the selected objects, without having to touch -the bulk of the data. Included are histograming methods in an +the bulk of the data. Included are histogramming methods in an arbitrary number of dimensions, curve fitting, function evaluation, minimization, graphics and visualization classes to allow the easy setup of an analysis system that can query and process the data @@ -360,6 +297,7 @@ Requires: font(droidsansfallback) %if %{ruby} == 0 Obsoletes: %{name}-ruby < 6.00.00 %endif +Obsoletes: %{name}-vdt < 6.10.00 %description core This package contains the core libraries used by ROOT: libCore, libNew, @@ -467,8 +405,11 @@ Provides: %{py2_dist jupyroot} = %{version} Requires: python2-%{name} = %{version}-%{release} %if %{?fedora}%{!?fedora:0} >= 26 || %{?rhel}%{!?rhel:0} >= 8 Requires: python2-ipython +Requires: python2-metakernel %else Requires: python-ipython-console +# python-metakernel for python2 not available in +# Fedora <= 25 or RHEL/EPEL - some functionality missing %endif Obsoletes: %{name}-rootaas < 6.08.00 @@ -483,11 +424,14 @@ Provides: %{py3_dist jupyroot} = %{version} Requires: %{python3pkg}-%{name} = %{version}-%{release} %if %{?fedora}%{!?fedora:0} >= 26 || %{?rhel}%{!?rhel:0} >= 8 Requires: %{python3pkg}-ipython +Requires: %{python3pkg}-metakernel %else %if %{?fedora}%{!?fedora:0} # ipython for python3 not available in RHEL/EPEL Requires: %{python3pkg}-ipython-console %endif +# python-metakernel for python3 not available in +# Fedora <= 25 or RHEL/EPEL - some functionality missing %endif %description -n %{python3pkg}-jupyroot @@ -1163,15 +1107,6 @@ init-program computes all tables and constants necessary for the random variate generation. The sample program can then generate variates from the desired distribution. -%package vdt -Summary: VDT mathematical library -BuildArch: noarch - -%description vdt -VDT is a library of mathematical functions implemented in double and -single precision. The implementation is fast and with the aid of -modern compilers (e.g. gcc 4.7) vectorizable. - %package memstat Summary: Memory statistics tool for use with ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1582,6 +1517,16 @@ Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} %description tree-viewer This package contains a plugin for browsing a ROOT tree in ROOT. +%package unfold +Summary: Distribution unfolding +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io-xml%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} + +%description unfold +An algorithm to unfold distributions from detector to truth level. + %package cli Summary: ROOT command line utilities BuildArch: noarch @@ -1613,26 +1558,6 @@ ROOT as a Jupyter Notebook. %patch3 -p1 %patch4 -p1 %patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 -%patch19 -p1 -%patch20 -p1 -%patch21 -p1 -%patch22 -p1 -%patch23 -p1 -%patch24 -p1 -%patch25 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -1664,8 +1589,8 @@ sed 's!\(MATHJAX_RELPATH\s*=\).*!\1 file:///usr/share/javascript/mathjax!' \ -i documentation/doxygen/Doxyfile %if %{?fedora}%{!?fedora:0} >= 24 # * string_view -rm core/metautils/inc/libcpp_string_view.h \ - core/metautils/inc/RWrap_libcpp_string_view.h +rm core/foundation/inc/libcpp_string_view.h \ + core/foundation/inc/RWrap_libcpp_string_view.h %endif # Remove bundled fonts provided by the OS distributions @@ -1679,6 +1604,15 @@ sed -e '/^\.UR/d' -e '/^\.UE/d' -i man/man1/* # Build PyROOT for python 3 cp -pr bindings/pyroot bindings/python +# Work around missing libraries in Fedora's gmock packaging +mkdir googlemock +pushd googlemock +g++ %{optflags} -DGTEST_HAS_PTHREAD=1 -c -o gmock-all.o /usr/src/gmock/gmock-all.cc +ar rv libgmock.a gmock-all.o +g++ %{optflags} -DGTEST_HAS_PTHREAD=1 -c -o gmock_main.o /usr/src/gmock/gmock_main.cc +ar rv libgmock_main.a gmock_main.o +popd + %build unset QTDIR unset QTLIB @@ -1722,6 +1656,8 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dbuiltin_tbb:BOOL=OFF \ -Dbuiltin_unuran:BOOL=OFF \ -Dbuiltin_vc:BOOL=OFF \ + -Dbuiltin_vdt:BOOL=OFF \ + -Dbuiltin_veccore:BOOL=OFF \ -Dbuiltin_xrootd:BOOL=OFF \ -Dbuiltin_zlib:BOOL=OFF \ -Dafdsmgrd:BOOL=OFF \ @@ -1820,7 +1756,8 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dtmva:BOOL=ON \ -Dunuran:BOOL=ON \ -Dvc:BOOL=OFF \ - -Dvdt:BOOL=ON \ + -Dvdt:BOOL=OFF \ + -Dveccore:BOOL=OFF \ -Dvecgeom:BOOL=OFF \ -Dx11:BOOL=ON \ -Dxft:BOOL=ON \ @@ -1832,6 +1769,9 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" %endif -Dfail-on-missing:BOOL=ON \ -Dtesting:BOOL=ON \ + -Dclingtest:BOOL=OFF \ + -Dcoverage:BOOL=OFF \ + -Droottest:BOOL=OFF \ .. # Build PyROOT for python 3 (prep) @@ -1963,7 +1903,7 @@ ln -s ..`sed 's!%{_libdir}!!' <<< %{ruby_vendorarchdir}`/libRuby.so \ mv %{buildroot}%{_datadir}/%{name}/proof/utils/pq2/pq2* %{buildroot}%{_bindir} # Avoid /usr/bin/env shebangs (and adapt cli to cmdLineUtils location) -sed 's!/usr/bin/env bash!/bin/bash!' -i %{buildroot}%{_bindir}/root-config +sed -e 's!/usr/bin/env bash!/bin/bash!' -i %{buildroot}%{_bindir}/root-config sed -e 's!/usr/bin/env python!/usr/bin/python!' \ -e '/import sys/d' \ -e '/import cmdLineUtils/iimport sys' \ @@ -1975,17 +1915,23 @@ sed -e 's!/usr/bin/env python!/usr/bin/python!' \ %{buildroot}%{_bindir}/rootmkdir \ %{buildroot}%{_bindir}/rootmv \ %{buildroot}%{_bindir}/rootprint \ - %{buildroot}%{_bindir}/rootrm + %{buildroot}%{_bindir}/rootrm \ + %{buildroot}%{_bindir}/rootslimtree sed -e '/^\#!/d' \ -i %{buildroot}%{_datadir}/%{name}/cli/cmdLineUtils.py \ %{buildroot}%{python2_sitearch}/JupyROOT/kernel/rootkernel.py \ %{buildroot}%{python3_sitearch}/JupyROOT/kernel/rootkernel.py -sed 's!/usr/bin/env python!/usr/bin/python!' \ +sed -e 's!/usr/bin/env python!/usr/bin/python!' \ -i %{buildroot}%{_bindir}/rootdrawtree \ %{buildroot}%{_datadir}/%{name}/dictpch/makepch.py \ - %{buildroot}%{_pkgdocdir}/tutorials/histfactory/makeQuickModel.py \ %{buildroot}%{_pkgdocdir}/tutorials/histfactory/example.py \ - %{buildroot}%{_pkgdocdir}/tutorials/pyroot/parse_CSV_file_with_TTree_ReadStream.py + %{buildroot}%{_pkgdocdir}/tutorials/histfactory/makeQuickModel.py \ + %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/ApplicationClassificationKeras.py \ + %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/ApplicationRegressionKeras.py \ + %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/ClassificationKeras.py \ + %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/GenerateModel.py \ + %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/MulticlassKeras.py \ + %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/RegressionKeras.py # Remove some junk rm %{buildroot}%{_datadir}/%{name}/daemons/*.plist @@ -1999,9 +1945,14 @@ 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}/corebasetestUnit +rm %{buildroot}%{_bindir}/coreconttestUnit rm %{buildroot}%{_bindir}/setenvwrap.csh rm %{buildroot}%{_bindir}/setxrd* rm %{buildroot}%{_bindir}/thisroot* +rm %{buildroot}%{_bindir}/testTBufferMerger +rm %{buildroot}%{_bindir}/testTProfile2Poly +rm %{buildroot}%{_bindir}/treetreeplayertestUnit rm %{buildroot}%{_mandir}/man1/g2rootold.1 rm %{buildroot}%{_mandir}/man1/genmap.1 rm %{buildroot}%{_mandir}/man1/proofserva.1 @@ -2012,8 +1963,6 @@ rm %{buildroot}%{_mandir}/man1/xproofd.1 %endif rm %{buildroot}%{_includedir}/%{name}/*.cw rm %{buildroot}%{_includedir}/%{name}/*.pri -rm %{buildroot}%{_includedir}/%{name}/proofdp.h -rm %{buildroot}%{_includedir}/%{name}/rootdp.h rm %{buildroot}%{_pkgdocdir}/INSTALL rm %{buildroot}%{_pkgdocdir}/README.ALIEN rm %{buildroot}%{_pkgdocdir}/README.MONALISA @@ -2140,9 +2089,12 @@ popd # - test-stressIOPlugins-* # requires network access (by design since they test the remote file IO) # +# - tutorial-dataframe-tdf101_h1Analysis # - tutorial-tree-run_h1analysis # - tutorial-multicore-imt001_parBranchProcessing # - tutorial-multicore-mp103_processSelector +# - tutorial-multicore-mp104_processH1 +# - tutorial-multicore-mp105_processEntryList # requires network access: http://root.cern.ch/files/h1/ # # - tutorial-multicore-imt101_parTreeProcessing @@ -2154,7 +2106,7 @@ popd # currently fails on 32 bit arm - reported upstream: # https://sft.its.cern.ch/jira/browse/ROOT-8500 -excluded="test-stressIOPlugins-.*|tutorial-tree-run_h1analysis|tutorial-multicore-imt001_parBranchProcessing|tutorial-multicore-mp103_processSelector|tutorial-multicore-imt101_parTreeProcessing" +excluded="test-stressIOPlugins-.*|tutorial-dataframe-tdf101_h1Analysis|tutorial-tree-run_h1analysis|tutorial-multicore-imt001_parBranchProcessing|tutorial-multicore-mp103_processSelector|tutorial-multicore-mp104_processH1|tutorial-multicore-mp105_processEntryList|tutorial-multicore-imt101_parTreeProcessing" %ifarch %{arm} excluded="${excluded}|test-stressiterators-interpreted|tutorial-hist-sparsehist|tutorial-r-.*" %endif @@ -2457,6 +2409,8 @@ fi %postun tree-player -p /sbin/ldconfig %post tree-viewer -p /sbin/ldconfig %postun tree-viewer -p /sbin/ldconfig +%post unfold -p /sbin/ldconfig +%postun unfold -p /sbin/ldconfig %files %{_bindir}/hadd @@ -2488,7 +2442,6 @@ fi %files core -f includelist-core %{_bindir}/memprobe -%{_bindir}/rlibmap %{_bindir}/rmkdepend %{_bindir}/root-config %{_mandir}/man1/memprobe.1* @@ -2496,6 +2449,7 @@ fi %{_mandir}/man1/root-config.1* %dir %{_libdir}/%{name} %{_libdir}/%{name}/libCore.* +%{_libdir}/%{name}/libImt.* %{_libdir}/%{name}/libNew.* %{_libdir}/%{name}/libRint.* %{_libdir}/%{name}/libThread.* @@ -2953,12 +2907,6 @@ fi %{_libdir}/%{name}/libUnuran_rdict.pcm %{_datadir}/%{name}/plugins/ROOT@@Math@@DistSampler/P010_TUnuranSampler.C -%files vdt -f includelist-math-vdt -%dir %{_includedir}/%{name} -%dir %{_includedir}/%{name}/vdt -%doc math/vdt/ReadMe.md math/vdt/ReleaseNotes.txt -%license math/vdt/Licence.md - %files memstat -f includelist-misc-memstat %{_libdir}/%{name}/libMemStat.* %{_libdir}/%{name}/libMemStat_rdict.pcm @@ -2997,7 +2945,7 @@ fi %{_datadir}/%{name}/plugins/TSystem/P070_TNetSystem.C %{_datadir}/%{name}/plugins/TVirtualMonitoringWriter/P020_TSQLMonitoringWriter.C -%files net-rpdutils -f includelist-net-rpdutils +%files net-rpdutils %{_libdir}/%{name}/libSrvAuth.* %files net-bonjour -f includelist-net-bonjour @@ -3074,7 +3022,7 @@ fi %{_libdir}/%{name}/libProofBench_rdict.pcm %{_datadir}/%{name}/proof -%files proof-pq2 -f includelist-proof-pq2 +%files proof-pq2 %{_bindir}/pq2* %{_mandir}/man1/pq2*.1* @@ -3153,6 +3101,8 @@ fi %files tree-player -f includelist-tree-treeplayer %{_libdir}/%{name}/libTreePlayer.* %{_libdir}/%{name}/libTreePlayer_rdict.pcm +%{_libdir}/%{name}/libDataFrame.rootmap +%{_libdir}/%{name}/libTreePlayer_G__DataFrame_rdict.pcm %{_datadir}/%{name}/plugins/TFileDrawMap/P010_TFileDrawMap.C %{_datadir}/%{name}/plugins/TVirtualTreePlayer/P010_TTreePlayer.C @@ -3161,6 +3111,10 @@ fi %{_libdir}/%{name}/libTreeViewer_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualTreeViewer/P010_TTreeViewer.C +%files unfold -f includelist-hist-unfold +%{_libdir}/%{name}/libUnfold.* +%{_libdir}/%{name}/libUnfold_rdict.pcm + %files cli %{_bindir}/rootbrowse %{_bindir}/rootcp @@ -3171,6 +3125,7 @@ fi %{_bindir}/rootmv %{_bindir}/rootprint %{_bindir}/rootrm +%{_bindir}/rootslimtree %{_datadir}/%{name}/cli %files notebook @@ -3178,6 +3133,13 @@ fi %{_datadir}/%{name}/notebook %changelog +* Wed Jun 14 2017 Mattias Ellert - 6.10.00-1 +- Update to 6.10.00 +- Drop patches accepted upstream +- Drop previously backported patches +- New sub-package: root-unfold +- Dropped sub-package: root-vdt + * Tue May 16 2017 Mattias Ellert - 6.08.06-7 - Remove JupyROOT references from cmake files - Do not generate autoprovides for libJupyROOT.so diff --git a/sources b/sources index 2144ec1..8442d04 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.08.06.tar.xz) = f9604055bee65b9dba69ad64f69749f6cfd8e7b84b487a0552f5a54806447f97f3372c35610f43045bd9ef3304be87095c6a595bc5b0985d6822d8cf6c22c8b1 +SHA512 (root-6.10.00.tar.xz) = f0483ac129d9f0ae48cd755db269fa14f5bb7b54055a31e47588bafc6f84f1bc14d0b2d5b9e3dcd991d1ec81741a69fcdec4e7480546c9eec031fe44fb266e72 SHA512 (root-testfiles.tar.xz) = 1a1295693b80aa27546bd9cf4a34cb38df1a3be2b14a3a29f418cd49058ae5d581e03e2e7fb9e978d448b29cf407e0f0bb4a5c26211e519d506166ec0b78e86b