[root/f18: 3/3] Update to 5.34.05
Mattias Ellert
ellert at fedoraproject.org
Fri Mar 8 13:22:50 UTC 2013
commit 86f1cc80eeec0145ac1b9f70fa798ebe38c3e4b5
Author: Mattias Ellert <mattias.ellert at fysast.uu.se>
Date: Fri Mar 8 07:10:26 2013 +0100
Update to 5.34.05
- Rebuild for xrootd 3.3
- Patch for latest graphviz (libcgraph)
- Drop patches root-glibc.patch and root-tclass-fix.patch
root-fontconfig.patch | 1001 +++++++++++++++++++++++++++++++++++++------
root-gfal-bits.patch | 24 +-
root-glibc.patch | 35 --
root-gviz.patch | 116 +++++
root-no-extra-formats.patch | 20 +
root-rev48681.patch | 199 +++++++++
root-rev48831.patch | 619 ++++++++++++++++++++++++++
root-tclass-fix.patch | 24 -
root.spec | 83 +++-
sources | 2 +-
10 files changed, 1889 insertions(+), 234 deletions(-)
---
diff --git a/root-fontconfig.patch b/root-fontconfig.patch
index 6609c76..4c333e9 100644
--- a/root-fontconfig.patch
+++ b/root-fontconfig.patch
@@ -1,9 +1,12 @@
-diff -ur root-5.34.00.orig/core/base/src/TApplication.cxx root-5.34.00/core/base/src/TApplication.cxx
---- root-5.34.00.orig/core/base/src/TApplication.cxx 2012-06-05 15:31:18.000000000 +0200
-+++ root-5.34.00/core/base/src/TApplication.cxx 2012-06-09 16:01:50.212196155 +0200
-@@ -239,20 +239,9 @@
+diff -ur root-5.34.05.orig/core/base/src/TApplication.cxx root-5.34.05/core/base/src/TApplication.cxx
+--- root-5.34.05.orig/core/base/src/TApplication.cxx 2013-02-14 23:27:37.000000000 +0100
++++ root-5.34.05/core/base/src/TApplication.cxx 2013-02-26 19:27:54.452632349 +0100
+@@ -237,22 +237,11 @@
+ LoadGraphicsLibs();
+
// Try to load TrueType font renderer. Only try to load if not in batch
- // mode and Root.UseTTFonts is true and Root.TTFontPath exists. Abort silently
+- // mode and Root.UseTTFonts is true and Root.TTFontPath exists. Abort silently
++ // mode and Root.UseTTFonts is true. 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
@@ -31,22 +34,45 @@ diff -ur root-5.34.00.orig/core/base/src/TApplication.cxx root-5.34.00/core/base
// Create WM dependent application environment
if (fAppImp)
-diff -ur root-5.34.00.orig/graf2d/graf/Module.mk root-5.34.00/graf2d/graf/Module.mk
---- root-5.34.00.orig/graf2d/graf/Module.mk 2012-06-05 15:31:46.000000000 +0200
-+++ root-5.34.00/graf2d/graf/Module.mk 2012-06-09 16:01:50.212196155 +0200
-@@ -45,7 +45,7 @@
+diff -ur root-5.34.05.orig/graf2d/graf/inc/TTF.h root-5.34.05/graf2d/graf/inc/TTF.h
+--- root-5.34.05.orig/graf2d/graf/inc/TTF.h 2013-02-14 23:27:53.000000000 +0100
++++ root-5.34.05/graf2d/graf/inc/TTF.h 2013-02-26 19:27:54.452632349 +0100
+@@ -71,9 +71,8 @@
+ static FT_BBox fgCBox; // string control box
+ static FT_CharMap fgCharMap[kTTMaxFonts]; // font character map
+ static Int_t fgCurFontIdx; // current font index
+- static Int_t fgSymbItaFontIdx; // Symbol italic font index
+ static Int_t fgFontCount; // number of fonts loaded
+- static char *fgFontName[kTTMaxFonts]; // font name
++ static Int_t fgFontID[kTTMaxFonts]; // font ID
+ static FT_Face fgFace[kTTMaxFonts]; // font face
+ static TTGlyph fgGlyphs[kMaxGlyphs]; // glyphs
+ static Bool_t fgHinting; // use hinting (true by default)
+diff -ur root-5.34.05.orig/graf2d/graf/Module.mk root-5.34.05/graf2d/graf/Module.mk
+--- root-5.34.05.orig/graf2d/graf/Module.mk 2013-02-14 23:27:53.000000000 +0100
++++ root-5.34.05/graf2d/graf/Module.mk 2013-02-26 19:27:54.452632349 +0100
+@@ -46,7 +46,7 @@
@$(MAKELIB) $(PLATFORM) $(LD) "$(LDFLAGS)" \
"$(SOFLAGS)" libGraf.$(SOEXT) $@ \
"$(GRAFO) $(GRAFDO)" \
-- "$(FREETYPELDFLAGS) $(FREETYPELIB) $(GRAFLIBEXTRA)"
-+ "$(FREETYPELDFLAGS) $(FREETYPELIB) $(GRAFLIBEXTRA) -lfontconfig"
+- "$(GRAFLIBEXTRA) $(MATHTEXTLIB) $(FREETYPELDFLAGS) $(FREETYPELIB)"
++ "$(GRAFLIBEXTRA) $(MATHTEXTLIB) $(FREETYPELDFLAGS) $(FREETYPELIB) -lfontconfig"
$(GRAFDS): $(GRAFH) $(GRAFL) $(ROOTCINTTMPDEP)
$(MAKEDIR)
-diff -ur root-5.34.00.orig/graf2d/graf/src/TTF.cxx root-5.34.00/graf2d/graf/src/TTF.cxx
---- root-5.34.00.orig/graf2d/graf/src/TTF.cxx 2012-06-05 15:31:46.000000000 +0200
-+++ root-5.34.00/graf2d/graf/src/TTF.cxx 2012-06-09 16:01:50.261196568 +0200
-@@ -26,6 +26,7 @@
+diff -ur root-5.34.05.orig/graf2d/graf/src/TTF.cxx root-5.34.05/graf2d/graf/src/TTF.cxx
+--- root-5.34.05.orig/graf2d/graf/src/TTF.cxx 2013-02-14 23:27:52.000000000 +0100
++++ root-5.34.05/graf2d/graf/src/TTF.cxx 2013-02-26 19:36:07.971088035 +0100
+@@ -17,15 +17,13 @@
+ // //
+ //////////////////////////////////////////////////////////////////////////
+
+-// RConfigure.h is needed for TTFFONTDIR
+-#include "RConfigure.h"
+-
+ #include "TTF.h"
+ #include "TSystem.h"
+ #include "TEnv.h"
#include "TMath.h"
#include "TError.h"
@@ -54,24 +80,216 @@ diff -ur root-5.34.00.orig/graf2d/graf/src/TTF.cxx root-5.34.00/graf2d/graf/src/
// to scale fonts to the same size as the old TT version
const Float_t kScale = 0.93376068;
-@@ -112,10 +113,13 @@
+@@ -40,10 +38,9 @@
+ Int_t TTF::fgWidth = 0;
+ Int_t TTF::fgAscent = 0;
+ Int_t TTF::fgCurFontIdx = -1;
+-Int_t TTF::fgSymbItaFontIdx = -1;
+ Int_t TTF::fgFontCount = 0;
+ Int_t TTF::fgNumGlyphs = 0;
+-char *TTF::fgFontName[kTTMaxFonts];
++Int_t TTF::fgFontID[kTTMaxFonts];
+ FT_Matrix *TTF::fgRotMatrix;
+ FT_Library TTF::fgLibrary;
+ FT_BBox TTF::fgCBox;
+@@ -87,7 +84,6 @@
+ if (!fgInit) return;
+
+ for (int i = 0; i < fgFontCount; i++) {
+- delete [] fgFontName[i];
+ FT_Done_Face(fgFace[i]);
+ }
+ if (fgRotMatrix) delete fgRotMatrix;
+@@ -112,12 +108,15 @@
charmap = fgFace[fgCurFontIdx]->charmaps[i];
platform = charmap->platform_id;
encoding = charmap->encoding_id;
- if ((platform == 3 && encoding == 1) ||
+ if ((platform == 3 && encoding == 1 &&
-+ strcmp(fgFontName[fgCurFontIdx], "symbol.ttf")) ||
++ (fgFontID[fgCurFontIdx] != 12 && fgFontID[fgCurFontIdx] != 15)) ||
(platform == 0 && encoding == 0) ||
(platform == 1 && encoding == 0 &&
- !strcmp(fgFontName[fgCurFontIdx], "wingding.ttf")) ||
+- !strcmp(fgFontName[fgCurFontIdx], "wingding.ttf")) ||
++ fgFontID[fgCurFontIdx] == 14) ||
+ (platform == 7 && encoding == 2 &&
-+ !strcmp(fgFontName[fgCurFontIdx], "symbol.ttf")) ||
++ (fgFontID[fgCurFontIdx] == 12 || fgFontID[fgCurFontIdx] == 15)) ||
(platform == 1 && encoding == 0 &&
- !strcmp(fgFontName[fgCurFontIdx], "symbol.ttf")))
+- !strcmp(fgFontName[fgCurFontIdx], "symbol.ttf")))
++ (fgFontID[fgCurFontIdx] == 12 || fgFontID[fgCurFontIdx] == 15)))
{
-@@ -360,19 +364,86 @@
+ fgCharMap[fgCurFontIdx] = charmap;
+ if (FT_Set_Charmap(fgFace[fgCurFontIdx], fgCharMap[fgCurFontIdx]))
+@@ -381,27 +380,147 @@
+
+ if (!fontname || !fontname[0]) {
+ Warning("TTF::SetTextFont",
+- "no font name specified, using default font %s", fgFontName[0]);
++ "no font name specified, using default font");
+ fgCurFontIdx = 0;
return 0;
}
+ const char *basename = gSystem->BaseName(fontname);
+
++ if (strcmp(basename, "timesi.ttf") == 0 ||
++ strcmp(basename, "FreeSerifItalic.otf") == 0) {
++ SetTextFont(12);
++ }
++ else if (strcmp(basename, "timesbd.ttf") == 0 ||
++ strcmp(basename, "FreeSerifBold.otf") == 0) {
++ SetTextFont(22);
++ }
++ else if (strcmp(basename, "timesbi.ttf") == 0 ||
++ strcmp(basename, "FreeSerifBoldItalic.otf") == 0) {
++ SetTextFont(32);
++ }
++ else if (strcmp(basename, "arial.ttf") == 0 ||
++ strcmp(basename, "FreeSans.otf") == 0) {
++ SetTextFont(42);
++ }
++ else if (strcmp(basename, "ariali.ttf") == 0 ||
++ strcmp(basename, "FreeSansOblique.otf") == 0) {
++ SetTextFont(52);
++ }
++ else if (strcmp(basename, "arialbd.ttf") == 0 ||
++ strcmp(basename, "FreeSansBold.otf") == 0) {
++ SetTextFont(62);
++ }
++ else if (strcmp(basename, "arialbi.ttf") == 0 ||
++ strcmp(basename, "FreeSansBoldOblique.otf") == 0) {
++ SetTextFont(72);
++ }
++ else if (strcmp(basename, "cour.ttf") == 0 ||
++ strcmp(basename, "FreeMono.otf") == 0) {
++ SetTextFont(82);
++ }
++ else if (strcmp(basename, "couri.ttf") == 0 ||
++ strcmp(basename, "FreeMonoOblique.otf") == 0) {
++ SetTextFont(92);
++ }
++ else if (strcmp(basename, "courbd.ttf") == 0 ||
++ strcmp(basename, "FreeMonoBold.otf") == 0) {
++ SetTextFont(102);
++ }
++ else if (strcmp(basename, "courbi.ttf") == 0 ||
++ strcmp(basename, "FreeMonoBoldOblique.otf") == 0) {
++ SetTextFont(112);
++ }
++ else if (strcmp(basename, "symbol.ttf") == 0) {
++ if (italic)
++ SetTextFont(152);
++ else
++ SetTextFont(122);
++ }
++ else if (strcmp(basename, "times.ttf") == 0 ||
++ strcmp(basename, "FreeSerif.otf") == 0) {
++ SetTextFont(132);
++ }
++ else if (strcmp(basename, "wingding.ttf") == 0) {
++ SetTextFont(142);
++ }
++ else if (strcmp(basename, "STIXGeneral.otf") == 0) {
++ SetTextFont(162);
++ }
++ else if (strcmp(basename, "STIXGeneralItalic.otf") == 0) {
++ SetTextFont(172);
++ }
++ else if (strcmp(basename, "STIXGeneralBol.otf") == 0) {
++ SetTextFont(182);
++ }
++ else if (strcmp(basename, "STIXGeneralBolIta.otf") == 0) {
++ SetTextFont(192);
++ }
++ else if (strcmp(basename, "STIXSiz1Sym.otf") == 0) {
++ SetTextFont(202);
++ }
++ else if (strcmp(basename, "STIXSiz1SymBol.otf") == 0) {
++ SetTextFont(212);
++ }
++ else if (strcmp(basename, "STIXSiz2Sym.otf") == 0) {
++ SetTextFont(222);
++ }
++ else if (strcmp(basename, "STIXSiz2SymBol.otf") == 0) {
++ SetTextFont(232);
++ }
++ else if (strcmp(basename, "STIXSiz3Sym.otf") == 0) {
++ SetTextFont(242);
++ }
++ else if (strcmp(basename, "STIXSiz3SymBol.otf") == 0) {
++ SetTextFont(252);
++ }
++ else if (strcmp(basename, "STIXSiz4Sym.otf") == 0) {
++ SetTextFont(262);
++ }
++ else if (strcmp(basename, "STIXSiz4SymBol.otf") == 0) {
++ SetTextFont(272);
++ }
++ else if (strcmp(basename, "STIXSiz5Sym.otf") == 0) {
++ SetTextFont(282);
++ }
++ else if (strcmp(basename, "DroidSansFallback.ttf") == 0) {
++ SetTextFont(292);
++ }
++ else {
++ Error("TTF::SetTextFont", "font %s not known to ROOT", basename);
++ if (fgFontCount) {
++ Warning("TTF::SetTextFont", "using default font");
++ fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
++ return 0;
++ } else {
++ return 1;
++ }
++ }
++
++ return 0;
++}
++
++//______________________________________________________________________________
++void TTF::SetTextFont(Font_t fontnumber)
++{
++ int fontid = fontnumber / 10;
++ if (fontid < 0 || fontid > 31) fontid = 0;
++
++ Int_t italic = 0;
++ if (fontid==15) italic = 1;
++
++ if (!fgInit) Init();
++
++ if (fontid == 0) {
++ fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
++ return;
++ }
++
+ // check if font is in cache
+ int i;
+ for (i = 0; i < fgFontCount; i++) {
+- if (!strcmp(fgFontName[i], basename)) {
+- if (italic) {
+- if (i==fgSymbItaFontIdx) {
+- fgCurFontIdx = i;
+- return 0;
+- }
+- } else {
+- if (i!=fgSymbItaFontIdx) {
+- fgCurFontIdx = i;
+- return 0;
+- }
+- }
++ if (fgFontID[i] == fontid) {
++ fgCurFontIdx = i;
++ return;
+ }
+ }
+
+@@ -409,161 +528,228 @@
+ if (fgFontCount >= kTTMaxFonts) {
+ Error("TTF::SetTextFont", "too many fonts opened (increase kTTMaxFont = %d)",
+ kTTMaxFonts);
+- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
++ Warning("TTF::SetTextFont", "using default font");
+ fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
+- return 0;
++ return;
+ }
- // try to load font (font must be in Root.TTFontPath resource)
- const char *ttpath = gEnv->GetValue("Root.TTFontPath",
@@ -86,91 +304,191 @@ diff -ur root-5.34.00.orig/graf2d/graf/src/TTF.cxx root-5.34.00/graf2d/graf/src/
-
- if (!ttfont) {
- Error("TTF::SetTextFont", "font file %s not found in path", fontname);
+- if (fgFontCount) {
+- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
+- fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
+- return 0;
+- } else {
+- return 1;
+- }
+ FcPattern *pat, *match;
++ FcCharSet *set = NULL;
+ FcResult result;
+ char *ttfont;
+ int ttindex;
+
+ pat = FcPatternCreate ();
+
-+ if (strcmp(basename, /* 13 */ "times.ttf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(basename, /* 1 */ "timesi.ttf") == 0) {
++ switch (fontid) {
++ case 1:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
-+ else if (strcmp(basename, /* 2 */ "timesbd.ttf") == 0) {
++ break;
++ case 2:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(basename, /* 3 */ "timesbi.ttf") == 0) {
++ break;
++ case 3:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
-+ else if (strcmp(basename, /* 4 */ "arial.ttf") == 0) {
++ break;
++ case 4:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(basename, /* 5 */ "ariali.ttf") == 0) {
++ break;
++ case 5:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
-+ else if (strcmp(basename, /* 6 and 0 */ "arialbd.ttf") == 0) {
++ break;
++ case 6:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(basename, /* 7 */ "arialbi.ttf") == 0) {
++ break;
++ case 7:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
-+ else if (strcmp(basename, /* 8 */ "cour.ttf") == 0) {
++ break;
++ case 8:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(basename, /* 9 */ "couri.ttf") == 0) {
++ break;
++ case 9:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
-+ else if (strcmp(basename, /* 10 */ "courbd.ttf") == 0) {
++ break;
++ case 10:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(basename, /* 11 */ "courbi.ttf") == 0) {
++ break;
++ case 11:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
-+ else if (strcmp(basename, /* 12 and 15 */ "symbol.ttf") == 0) {
++ break;
++ case 12:
++ case 15:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"symbol");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(basename, /* 14 */ "wingding.ttf") == 0) {
++ break;
++ case 13:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 14:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"wingdings");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else {
-+ Error("TTF::SetTextFont", "font %s not known to ROOT", basename);
++ break;
++ case 16:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 17:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ break;
++ case 18:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 19:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ break;
++ case 20:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizeonesym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ // set = FcCharSetCreate ();
++ // FcCharSetAddChar (set, 0x239b); // Bracket pieces
++ // FcPatternAddCharSet (pat, FC_CHARSET, set);
++ break;
++ case 21:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizeonesym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ // set = FcCharSetCreate ();
++ // FcCharSetAddChar (set, 0x239b); // Bracket pieces
++ // FcPatternAddCharSet (pat, FC_CHARSET, set);
++ break;
++ case 22:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizetwosym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 23:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizetwosym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 24:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizethreesym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize13");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 25:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizethreesym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 26:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizefoursym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 27:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizefoursym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 28:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizefivesym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize5");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 29:
++ case 30:
++ case 31:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"droidsansfallback");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ set = FcCharSetCreate ();
++ FcCharSetAddChar (set, 0x0410); // Cyrillic
++ FcCharSetAddChar (set, 0x4e00); // CJK
++ FcPatternAddCharSet (pat, FC_CHARSET, set);
++ break;
++ default:
++ Error("TTF::SetTextFont", "font %i not known to ROOT", fontid);
+ FcPatternDestroy (pat);
- if (fgFontCount) {
- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
- fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
-@@ -382,11 +453,18 @@
- }
++ Warning("TTF::SetTextFont", "using default font");
++ fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
++ return;
++ break;
}
+ FcConfigSubstitute (NULL, pat, FcMatchPattern);
@@ -188,28 +506,113 @@ diff -ur root-5.34.00.orig/graf2d/graf/src/TTF.cxx root-5.34.00/graf2d/graf/src/
+ FcPatternDestroy (match);
+ FcPatternDestroy (pat);
if (tface) FT_Done_Face(tface);
- if (fgFontCount) {
- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
-@@ -397,7 +475,8 @@
- }
+- if (fgFontCount) {
+- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
+- fgCurFontIdx = 0;
+- return 0;
+- } else {
+- return 1;
+- }
++ Warning("TTF::SetTextFont", "using default font");
++ fgCurFontIdx = 0;
++ return;
}
- delete [] ttfont;
+ FcPatternDestroy (match);
+ FcPatternDestroy (pat);
- fgFontName[fgFontCount] = StrDup(basename);
+- fgFontName[fgFontCount] = StrDup(basename);
++ if (set) FcCharSetDestroy (set);
++
++ fgFontID[fgFontCount] = fontid;
fgCurFontIdx = fgFontCount;
-@@ -464,37 +543,12 @@
- /*15 */ { "symbol.ttf", "symbol.ttf" }
- };
+ fgFace[fgCurFontIdx] = tface;
+ fgCharMap[fgCurFontIdx] = 0;
+ fgFontCount++;
+- if (italic) {
+- fgSymbItaFontIdx = fgCurFontIdx;
++ if (fontid == 15) {
+ FT_Matrix slantMat;
+ slantMat.xx = (1 << 16);
+ slantMat.xy = ((1 << 16) >> 2);
+ slantMat.yx = 0;
+ slantMat.yy = (1 << 16);
+- FT_Set_Transform( fgFace[fgSymbItaFontIdx], &slantMat, NULL );
++ FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, NULL );
+ }
+-
+- return 0;
+-}
+-
+-//______________________________________________________________________________
+-void TTF::SetTextFont(Font_t fontnumber)
+-{
+- // Set specified font.
+- // List of the currently supported fonts (screen and PostScript)
+- // =============================================================
+- // Font ID X11 TTF
+- // 1 : times-medium-i-normal timesi.ttf
+- // 2 : times-bold-r-normal timesbd.ttf
+- // 3 : times-bold-i-normal timesi.ttf
+- // 4 : helvetica-medium-r-normal arial.ttf
+- // 5 : helvetica-medium-o-normal ariali.ttf
+- // 6 : helvetica-bold-r-normal arialbd.ttf
+- // 7 : helvetica-bold-o-normal arialbi.ttf
+- // 8 : courier-medium-r-normal cour.ttf
+- // 9 : courier-medium-o-normal couri.ttf
+- // 10 : courier-bold-r-normal courbd.ttf
+- // 11 : courier-bold-o-normal courbi.ttf
+- // 12 : symbol-medium-r-normal symbol.ttf
+- // 13 : times-medium-r-normal times.ttf
+- // 14 : wingding.ttf
+- // 15 : symbol oblique is emulated from symbol.ttf
+-
+- // Added by cholm for use of DFSG - fonts - based on Kevins fix.
+- // Table of Microsoft and (for non-MSFT operating systems) backup
+- // FreeFont TTF fonts.
+- static const char *fonttable[][2] = {
+- { "Root.TTFont.0", "FreeSansBold.otf" },
+- { "Root.TTFont.1", "FreeSerifItalic.otf" },
+- { "Root.TTFont.2", "FreeSerifBold.otf" },
+- { "Root.TTFont.3", "FreeSerifBoldItalic.otf" },
+- { "Root.TTFont.4", "FreeSans.otf" },
+- { "Root.TTFont.5", "FreeSansOblique.otf" },
+- { "Root.TTFont.6", "FreeSansBold.otf" },
+- { "Root.TTFont.7", "FreeSansBoldOblique.otf" },
+- { "Root.TTFont.8", "FreeMono.otf" },
+- { "Root.TTFont.9", "FreeMonoOblique.otf" },
+- { "Root.TTFont.10", "FreeMonoBold.otf" },
+- { "Root.TTFont.11", "FreeMonoBoldOblique.otf" },
+- { "Root.TTFont.12", "symbol.ttf" },
+- { "Root.TTFont.13", "FreeSerif.otf" },
+- { "Root.TTFont.14", "wingding.ttf" },
+- { "Root.TTFont.15", "symbol.ttf" },
+- { "Root.TTFont.STIXGen", "STIXGeneral.otf" },
+- { "Root.TTFont.STIXGenIt", "STIXGeneralItalic.otf" },
+- { "Root.TTFont.STIXGenBd", "STIXGeneralBol.otf" },
+- { "Root.TTFont.STIXGenBdIt", "STIXGeneralBolIta.otf" },
+- { "Root.TTFont.STIXSiz1Sym", "STIXSiz1Sym.otf" },
+- { "Root.TTFont.STIXSiz1SymBd", "STIXSiz1SymBol.otf" },
+- { "Root.TTFont.STIXSiz2Sym", "STIXSiz2Sym.otf" },
+- { "Root.TTFont.STIXSiz2SymBd", "STIXSiz2SymBol.otf" },
+- { "Root.TTFont.STIXSiz3Sym", "STIXSiz3Sym.otf" },
+- { "Root.TTFont.STIXSiz3SymBd", "STIXSiz3SymBol.otf" },
+- { "Root.TTFont.STIXSiz4Sym", "STIXSiz4Sym.otf" },
+- { "Root.TTFont.STIXSiz4SymBd", "STIXSiz4SymBol.otf" },
+- { "Root.TTFont.STIXSiz5Sym", "STIXSiz5Sym.otf" },
+- { "Root.TTFont.ME", "DroidSansFallback.ttf" },
+- { "Root.TTFont.CJKMing", "DroidSansFallback.ttf" },
+- { "Root.TTFont.CJKGothic", "DroidSansFallback.ttf" }
+- };
+-
- static int fontset = -1;
- int thisset = fontset;
-
- int fontid = fontnumber / 10;
- if (fontid < 0 || fontid > 15) fontid = 0;
-
+- int fontid = fontnumber / 10;
+- if (fontid < 0 || fontid > 31) fontid = 0;
+-
- if (thisset == -1) {
- // try to load font (font must be in Root.TTFontPath resource)
- // to see which fontset we have available
@@ -220,7 +623,7 @@ diff -ur root-5.34.00.orig/graf2d/graf/src/TTF.cxx root-5.34.00/graf2d/graf/src/
- "$(ROOTSYS)/fonts"
-#endif
- );
-- char *ttfont = gSystem->Which(ttpath, fonttable[fontid][0], kReadPermission);
+- char *ttfont = gSystem->Which(ttpath, gEnv->GetValue(fonttable[fontid][0], fonttable[fontid][1]), kReadPermission);
- if (ttfont) {
- delete [] ttfont;
- thisset = 0;
@@ -229,20 +632,318 @@ diff -ur root-5.34.00.orig/graf2d/graf/src/TTF.cxx root-5.34.00/graf2d/graf/src/
- thisset = 1;
- }
- }
- Int_t italic = 0;
- if (fontid==15) italic = 1;
-- int ret = SetTextFont(fonttable[fontid][thisset], italic);
+- Int_t italic = 0;
+- if (fontid==15) italic = 1;
+- int ret = SetTextFont(gEnv->GetValue(fonttable[fontid][thisset], fonttable[fontid][1]), italic);
- // Do not define font set is we're loading the symbol.ttf - it's
- // the same in both cases.
- if (ret == 0 && fontid != 12) fontset = thisset;
-+ SetTextFont(fonttable[fontid][0], italic);
}
//______________________________________________________________________________
-diff -ur root-5.34.00.orig/graf3d/gl/Module.mk root-5.34.00/graf3d/gl/Module.mk
---- root-5.34.00.orig/graf3d/gl/Module.mk 2012-06-05 15:31:34.000000000 +0200
-+++ root-5.34.00/graf3d/gl/Module.mk 2012-06-09 16:01:50.311196992 +0200
-@@ -70,7 +70,7 @@
+diff -ur root-5.34.05.orig/graf2d/postscript/Module.mk root-5.34.05/graf2d/postscript/Module.mk
+--- root-5.34.05.orig/graf2d/postscript/Module.mk 2013-02-14 23:27:54.000000000 +0100
++++ root-5.34.05/graf2d/postscript/Module.mk 2013-02-26 19:27:54.453632355 +0100
+@@ -50,7 +50,7 @@
+ @$(MAKELIB) $(PLATFORM) $(LD) "$(LDFLAGS)" \
+ "$(SOFLAGS)" libPostscript.$(SOEXT) $@ \
+ "$(POSTSCRIPTO) $(POSTSCRIPTDO)" \
+- "$(POSTSCRIPTLIBEXTRA) $(MATHTEXTLIB) $(FREETYPELDFLAGS) $(FREETYPELIB)"
++ "$(POSTSCRIPTLIBEXTRA) $(MATHTEXTLIB) $(FREETYPELDFLAGS) $(FREETYPELIB) -lfontconfig"
+
+ $(POSTSCRIPTDS): $(POSTSCRIPTH) $(POSTSCRIPTL) $(ROOTCINTTMPDEP)
+ $(MAKEDIR)
+diff -ur root-5.34.05.orig/graf2d/postscript/src/TPostScript.cxx root-5.34.05/graf2d/postscript/src/TPostScript.cxx
+--- root-5.34.05.orig/graf2d/postscript/src/TPostScript.cxx 2013-02-14 23:27:54.000000000 +0100
++++ root-5.34.05/graf2d/postscript/src/TPostScript.cxx 2013-02-26 19:45:18.377106631 +0100
+@@ -238,6 +238,7 @@
+ #include <string.h>
+ #include <ctype.h>
+ #include <wchar.h>
++#include <fontconfig/fontconfig.h>
+
+ #include "Riostream.h"
+ #include "Byteswap.h"
+@@ -1511,78 +1512,206 @@
+ {
+ // Embed font in PS file.
+
+- static const char *fonttable[32][2] = {
+- { "Root.TTFont.0", "FreeSansBold.otf" },
+- { "Root.TTFont.1", "FreeSerifItalic.otf" },
+- { "Root.TTFont.2", "FreeSerifBold.otf" },
+- { "Root.TTFont.3", "FreeSerifBoldItalic.otf" },
+- { "Root.TTFont.4", "FreeSans.otf" },
+- { "Root.TTFont.5", "FreeSansOblique.otf" },
+- { "Root.TTFont.6", "FreeSansBold.otf" },
+- { "Root.TTFont.7", "FreeSansBoldOblique.otf" },
+- { "Root.TTFont.8", "FreeMono.otf" },
+- { "Root.TTFont.9", "FreeMonoOblique.otf" },
+- { "Root.TTFont.10", "FreeMonoBold.otf" },
+- { "Root.TTFont.11", "FreeMonoBoldOblique.otf" },
+- { "Root.TTFont.12", "symbol.ttf" },
+- { "Root.TTFont.13", "FreeSerif.otf" },
+- { "Root.TTFont.14", "wingding.ttf" },
+- { "Root.TTFont.15", "symbol.ttf" },
+- { "Root.TTFont.STIXGen", "STIXGeneral.otf" },
+- { "Root.TTFont.STIXGenIt", "STIXGeneralItalic.otf" },
+- { "Root.TTFont.STIXGenBd", "STIXGeneralBol.otf" },
+- { "Root.TTFont.STIXGenBdIt", "STIXGeneralBolIta.otf" },
+- { "Root.TTFont.STIXSiz1Sym", "STIXSiz1Sym.otf" },
+- { "Root.TTFont.STIXSiz1SymBd", "STIXSiz1SymBol.otf" },
+- { "Root.TTFont.STIXSiz2Sym", "STIXSiz2Sym.otf" },
+- { "Root.TTFont.STIXSiz2SymBd", "STIXSiz2SymBol.otf" },
+- { "Root.TTFont.STIXSiz3Sym", "STIXSiz3Sym.otf" },
+- { "Root.TTFont.STIXSiz3SymBd", "STIXSiz3SymBol.otf" },
+- { "Root.TTFont.STIXSiz4Sym", "STIXSiz4Sym.otf" },
+- { "Root.TTFont.STIXSiz4SymBd", "STIXSiz4SymBol.otf" },
+- { "Root.TTFont.STIXSiz5Sym", "STIXSiz5Sym.otf" },
+- { "Root.TTFont.ME", "DroidSansFallback.ttf" },
+- { "Root.TTFont.CJKMing", "DroidSansFallback.ttf" },
+- { "Root.TTFont.CJKCothic", "DroidSansFallback.ttf" }
+- };
+-
+ PrintStr("%%IncludeResource: ProcSet (FontSetInit)@");
+
+- // 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
+- );
+-
+ for (Int_t fontid = 1; fontid < 30; fontid++) {
+- if (fontid != 15) {
+- const char *filename = gEnv->GetValue(
+- fonttable[fontid][0], fonttable[fontid][1]);
+- char *ttfont = gSystem->Which(ttpath, filename,
+- kReadPermission);
+-
+- if(!ttfont) {
+- Error("TPostScript::FontEmbed",
+- "font %d (filename `%s') not found in path",
+- fontid, filename);
+- } else {
+- if (FontEmbedType2(ttfont)) {
+- // nothing
+- } else if(FontEmbedType1(ttfont)) {
+- // nothing
+- } else if(FontEmbedType42(ttfont)) {
+- // nothing
+- } else {
+- Error("TPostScript::FontEmbed",
+- "failed to embed font %d (filename `%s')",
+- fontid, filename);
+- }
+- delete [] ttfont;
+- }
+- }
++ if (fontid != 15) {
++
++ FcPattern *pat, *match;
++ FcCharSet *set = NULL;
++ FcResult result;
++ char *ttfont;
++
++ pat = FcPatternCreate ();
++
++ switch (fontid) {
++ case 1:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ break;
++ case 2:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 3:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ break;
++ case 4:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 5:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ break;
++ case 6:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 7:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ break;
++ case 8:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 9:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ break;
++ case 10:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 11:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ break;
++ case 12:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"symbol");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 13:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 14:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"wingdings");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 16:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 17:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ break;
++ case 18:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 19:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
++ break;
++ case 20:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizeonesym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ // set = FcCharSetCreate ();
++ // FcCharSetAddChar (set, 0x239b); // Bracket pieces
++ // FcPatternAddCharSet (pat, FC_CHARSET, set);
++ break;
++ case 21:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizeonesym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ // set = FcCharSetCreate ();
++ // FcCharSetAddChar (set, 0x239b); // Bracket pieces
++ // FcPatternAddCharSet (pat, FC_CHARSET, set);
++ break;
++ case 22:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizetwosym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 23:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizetwosym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 24:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizethreesym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize13");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 25:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizethreesym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 26:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizefoursym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 27:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizefoursym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 28:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsizefivesym");
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize5");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 29:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"droidsansfallback");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ set = FcCharSetCreate ();
++ FcCharSetAddChar (set, 0x0410); // Cyrillic
++ FcCharSetAddChar (set, 0x4e00); // CJK
++ FcPatternAddCharSet (pat, FC_CHARSET, set);
++ break;
++ }
++
++ FcConfigSubstitute (NULL, pat, FcMatchPattern);
++ FcDefaultSubstitute (pat);
++ match = FcFontMatch (NULL, pat, &result);
++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfont);
++
++ if(!ttfont) {
++ Error("TPostScript::FontEmbed", "font %d not found in path",
++ fontid);
++ } else {
++ if (FontEmbedType2(ttfont)) {
++ // nothing
++ } else if(FontEmbedType1(ttfont)) {
++ // nothing
++ } else if(FontEmbedType42(ttfont)) {
++ // nothing
++ } else {
++ Error("TPostScript::FontEmbed", "failed to embed font %d)",
++ fontid);
++ }
++ }
++
++ FcPatternDestroy (match);
++ FcPatternDestroy (pat);
++
++ if (set) FcCharSetDestroy (set);
++ }
+ }
+ PrintStr("%%IncludeResource: font Times-Roman@");
+ PrintStr("%%IncludeResource: font Times-Italic@");
+diff -ur root-5.34.05.orig/graf3d/gl/Module.mk root-5.34.05/graf3d/gl/Module.mk
+--- root-5.34.05.orig/graf3d/gl/Module.mk 2013-02-14 23:27:47.000000000 +0100
++++ root-5.34.05/graf3d/gl/Module.mk 2013-02-26 19:27:54.454632361 +0100
+@@ -78,7 +78,7 @@
@$(MAKELIB) $(PLATFORM) $(LD) "$(LDFLAGS)" \
"$(SOFLAGS)" libRGL.$(SOEXT) $@ "$(GLO) $(GLO1) $(GLDO)" \
"$(GLLIBEXTRA) $(FTGLLIBDIR) $(FTGLLIBS) \
@@ -251,19 +952,18 @@ diff -ur root-5.34.00.orig/graf3d/gl/Module.mk root-5.34.00/graf3d/gl/Module.mk
$(GLDS): $(GLH2) $(GLL) $(ROOTCINTTMPDEP)
$(MAKEDIR)
-diff -ur root-5.34.00.orig/graf3d/gl/src/TGLFontManager.cxx root-5.34.00/graf3d/gl/src/TGLFontManager.cxx
---- root-5.34.00.orig/graf3d/gl/src/TGLFontManager.cxx 2012-06-05 15:31:34.000000000 +0200
-+++ root-5.34.00/graf3d/gl/src/TGLFontManager.cxx 2012-06-09 16:01:50.311196992 +0200
-@@ -37,6 +37,8 @@
+diff -ur root-5.34.05.orig/graf3d/gl/src/TGLFontManager.cxx root-5.34.05/graf3d/gl/src/TGLFontManager.cxx
+--- root-5.34.05.orig/graf3d/gl/src/TGLFontManager.cxx 2013-02-14 23:27:47.000000000 +0100
++++ root-5.34.05/graf3d/gl/src/TGLFontManager.cxx 2013-02-26 19:27:54.454632361 +0100
+@@ -36,6 +36,7 @@
+ # include "FTGLBitmapFont.h"
#endif
-
+#include <fontconfig/fontconfig.h>
-+
+
//______________________________________________________________________________
// TGLFont
- //
-@@ -391,17 +393,91 @@
+@@ -391,17 +392,91 @@
FontMap_i it = fFontMap.find(TGLFont(size, fileID, mode));
if (it == fFontMap.end())
{
@@ -286,12 +986,7 @@ diff -ur root-5.34.00.orig/graf3d/gl/src/TGLFontManager.cxx root-5.34.00/graf3d/
+
+ pat = FcPatternCreate ();
+
-+ if (strcmp(fontname, /* 13 */ "times") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(fontname, /* 1 */ "timesi") == 0) {
++ if (strcmp(fontname, /* 1 */ "timesi") == 0) {
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
@@ -316,16 +1011,16 @@ diff -ur root-5.34.00.orig/graf3d/gl/src/TGLFontManager.cxx root-5.34.00/graf3d/
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
+ }
-+ else if (strcmp(fontname, /* 6 and 0 */ "arialbd") == 0) {
++ else if (strcmp(fontname, /* 6 */ "arialbd") == 0) {
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
- }
++ }
+ else if (strcmp(fontname, /* 7 */ "arialbi") == 0) {
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
+ }
+ else if (strcmp(fontname, /* 8 */ "cour") == 0) {
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
@@ -346,11 +1041,16 @@ diff -ur root-5.34.00.orig/graf3d/gl/src/TGLFontManager.cxx root-5.34.00/graf3d/
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
+ }
-+ else if (strcmp(fontname, /* 12 and 15 */ "symbol") == 0) {
++ else if (strcmp(fontname, /* 12 */ "symbol") == 0) {
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"symbol");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
+ }
++ else if (strcmp(fontname, /* 13 */ "times") == 0) {
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ }
+ else if (strcmp(fontname, /* 14 */ "wingding") == 0) {
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"wingdings");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
@@ -365,7 +1065,7 @@ diff -ur root-5.34.00.orig/graf3d/gl/src/TGLFontManager.cxx root-5.34.00/graf3d/
FTFont* ftfont = 0;
switch (mode)
-@@ -427,9 +503,13 @@
+@@ -427,9 +502,13 @@
break;
default:
Error("TGLFontManager::GetFont", "invalid FTGL type");
@@ -379,9 +1079,9 @@ diff -ur root-5.34.00.orig/graf3d/gl/src/TGLFontManager.cxx root-5.34.00/graf3d/
ftfont->FaceSize(size);
const TGLFont &mf = fFontMap.insert(std::make_pair(TGLFont(size, fileID, mode, ftfont, 0), 1)).first->first;
out.CopyAttributes(mf);
-diff -ur root-5.34.00.orig/graf3d/gl/src/TGLText.cxx root-5.34.00/graf3d/gl/src/TGLText.cxx
---- root-5.34.00.orig/graf3d/gl/src/TGLText.cxx 2012-06-05 15:31:34.000000000 +0200
-+++ root-5.34.00/graf3d/gl/src/TGLText.cxx 2012-06-09 16:01:50.320197065 +0200
+diff -ur root-5.34.05.orig/graf3d/gl/src/TGLText.cxx root-5.34.05/graf3d/gl/src/TGLText.cxx
+--- root-5.34.05.orig/graf3d/gl/src/TGLText.cxx 2013-02-14 23:27:47.000000000 +0100
++++ root-5.34.05/graf3d/gl/src/TGLText.cxx 2013-02-26 19:27:54.455632367 +0100
@@ -34,6 +34,8 @@
# include "FTGLBitmapFont.h"
#endif
@@ -391,10 +1091,27 @@ diff -ur root-5.34.00.orig/graf3d/gl/src/TGLText.cxx root-5.34.00/graf3d/gl/src/
#define FTGL_BITMAP 0
#define FTGL_PIXMAP 1
#define FTGL_OUTLINE 2
-@@ -190,16 +192,89 @@
- if (fontid == 13) fontname = "times.ttf";
- if (fontid == 14) fontname = "wingding.ttf";
+@@ -173,33 +175,91 @@
+ {
+ int fontid = fontnumber / 10;
+- const char *fontname=0;
+- if (fontid == 0) fontname = "arialbd.ttf";
+- if (fontid == 1) fontname = "timesi.ttf";
+- if (fontid == 2) fontname = "timesbd.ttf";
+- if (fontid == 3) fontname = "timesbi.ttf";
+- if (fontid == 4) fontname = "arial.ttf";
+- if (fontid == 5) fontname = "ariali.ttf";
+- if (fontid == 6) fontname = "arialbd.ttf";
+- if (fontid == 7) fontname = "arialbi.ttf";
+- if (fontid == 8) fontname = "cour.ttf";
+- if (fontid == 9) fontname = "couri.ttf";
+- if (fontid == 10) fontname = "courbd.ttf";
+- if (fontid == 11) fontname = "courbi.ttf";
+- if (fontid == 12) fontname = "symbol.ttf";
+- if (fontid == 13) fontname = "times.ttf";
+- if (fontid == 14) fontname = "wingding.ttf";
+-
- // try to load font (font must be in Root.TTFontPath resource)
- const char *ttpath = gEnv->GetValue("Root.TTFontPath",
-# ifdef TTFFONTDIR
@@ -410,75 +1127,77 @@ diff -ur root-5.34.00.orig/graf3d/gl/src/TGLText.cxx root-5.34.00/graf3d/gl/src/
+
+ pat = FcPatternCreate ();
+
-+ if (strcmp(fontname, /* 13 */ "times.ttf") == 0) {
-+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
-+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
-+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(fontname, /* 1 */ "timesi.ttf") == 0) {
++ switch (fontid) {
++ case 1:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
-+ else if (strcmp(fontname, /* 2 */ "timesbd.ttf") == 0) {
++ break;
++ case 2:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(fontname, /* 3 */ "timesbi.ttf") == 0) {
++ break;
++ case 3:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
-+ else if (strcmp(fontname, /* 4 */ "arial.ttf") == 0) {
++ break;
++ case 4:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(fontname, /* 5 */ "ariali.ttf") == 0) {
++ break;
++ case 5:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
-+ else if (strcmp(fontname, /* 6 and 0 */ "arialbd.ttf") == 0) {
++ break;
++ case 6:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(fontname, /* 7 */ "arialbi.ttf") == 0) {
++ break;
++ case 7:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"arial");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
-+ else if (strcmp(fontname, /* 8 */ "cour.ttf") == 0) {
++ break;
++ case 8:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(fontname, /* 9 */ "couri.ttf") == 0) {
++ break;
++ case 9:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
-+ else if (strcmp(fontname, /* 10 */ "courbd.ttf") == 0) {
++ break;
++ case 10:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(fontname, /* 11 */ "courbi.ttf") == 0) {
++ break;
++ case 11:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"courier new");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
-+ }
-+ else if (strcmp(fontname, /* 12 */ "symbol.ttf") == 0) {
++ break;
++ case 12:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"symbol");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
-+ }
-+ else if (strcmp(fontname, /* 14 */ "wingding.ttf") == 0) {
++ break;
++ case 13:
++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"times new roman");
++ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
++ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
++ case 14:
+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"wingdings");
+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR);
+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN);
++ break;
+ }
- char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission);
@@ -490,7 +1209,7 @@ diff -ur root-5.34.00.orig/graf3d/gl/src/TGLText.cxx root-5.34.00/graf3d/gl/src/
if (fGLTextFont) delete fGLTextFont;
-@@ -209,5 +284,6 @@
+@@ -209,5 +269,6 @@
if (!fGLTextFont->FaceSize(1))
Error("SetGLTextFont","Cannot set FTGL::FaceSize"),
@@ -498,9 +1217,9 @@ diff -ur root-5.34.00.orig/graf3d/gl/src/TGLText.cxx root-5.34.00/graf3d/gl/src/
+ FcPatternDestroy (match);
+ FcPatternDestroy (pat);
}
-diff -ur root-5.34.00.orig/gui/gui/src/TGApplication.cxx root-5.34.00/gui/gui/src/TGApplication.cxx
---- root-5.34.00.orig/gui/gui/src/TGApplication.cxx 2012-06-05 15:31:42.000000000 +0200
-+++ root-5.34.00/gui/gui/src/TGApplication.cxx 2012-06-09 16:01:50.327197123 +0200
+diff -ur root-5.34.05.orig/gui/gui/src/TGApplication.cxx root-5.34.05/gui/gui/src/TGApplication.cxx
+--- root-5.34.05.orig/gui/gui/src/TGApplication.cxx 2013-02-14 23:27:51.000000000 +0100
++++ root-5.34.05/gui/gui/src/TGApplication.cxx 2013-02-26 19:27:54.455632367 +0100
@@ -83,25 +83,12 @@
gROOT->SetBatch(kFALSE);
@@ -528,9 +1247,9 @@ diff -ur root-5.34.00.orig/gui/gui/src/TGApplication.cxx root-5.34.00/gui/gui/sr
}
// Create the canvas colors early so they are allocated before
-diff -ur root-5.34.00.orig/gui/gui/src/TGSpeedo.cxx root-5.34.00/gui/gui/src/TGSpeedo.cxx
---- root-5.34.00.orig/gui/gui/src/TGSpeedo.cxx 2012-06-05 15:31:42.000000000 +0200
-+++ root-5.34.00/gui/gui/src/TGSpeedo.cxx 2012-06-09 16:03:08.260851587 +0200
+diff -ur root-5.34.05.orig/gui/gui/src/TGSpeedo.cxx root-5.34.05/gui/gui/src/TGSpeedo.cxx
+--- root-5.34.05.orig/gui/gui/src/TGSpeedo.cxx 2013-02-14 23:27:51.000000000 +0100
++++ root-5.34.05/gui/gui/src/TGSpeedo.cxx 2013-02-26 19:27:54.455632367 +0100
@@ -119,8 +119,7 @@
TString sc;
diff --git a/root-gfal-bits.patch b/root-gfal-bits.patch
index ab7afff..edf424e 100644
--- a/root-gfal-bits.patch
+++ b/root-gfal-bits.patch
@@ -1,15 +1,9 @@
-diff -ur root-5.34.02.orig/io/gfal/src/TGFALFile.cxx root-5.34.02/io/gfal/src/TGFALFile.cxx
---- root-5.34.02.orig/io/gfal/src/TGFALFile.cxx 2012-09-21 16:29:07.000000000 +0200
-+++ root-5.34.02/io/gfal/src/TGFALFile.cxx 2012-10-12 22:59:42.785689152 +0200
-@@ -60,6 +60,11 @@
- // //
- //////////////////////////////////////////////////////////////////////////
-
-+#ifdef _FILE_OFFSET_BITS
-+#undef _FILE_OFFSET_BITS
-+#endif
-+#define _FILE_OFFSET_BITS 64
-+
- #include "TGFALFile.h"
- #include "TROOT.h"
- #include "TUrl.h"
+diff -ur root-5.34.05.orig/io/gfal/Module.mk root-5.34.05/io/gfal/Module.mk
+--- root-5.34.05.orig/io/gfal/Module.mk 2013-02-14 23:27:54.000000000 +0100
++++ root-5.34.05/io/gfal/Module.mk 2013-02-26 20:58:00.150088502 +0100
+@@ -71,3 +71,5 @@
+ $(GFALO) $(GFALDO): CXXFLAGS := $(filter-out -Wshadow,$(CXXFLAGS))
+ $(GFALO): CXXFLAGS += $(GFALINCDIR:%=-I%)
+ $(GFALO): CXXFLAGS += $(SRMIFCEINCDIR:%=-I%)
++$(GFALO): CXXFLAGS += $(shell pkg-config --cflags glib-2.0)
++$(GFALO): CXXFLAGS += -D_FILE_OFFSET_BITS=64
diff --git a/root-gviz.patch b/root-gviz.patch
new file mode 100644
index 0000000..8631327
--- /dev/null
+++ b/root-gviz.patch
@@ -0,0 +1,116 @@
+diff -ur root-5.34.05.orig/configure root-5.34.05/configure
+--- root-5.34.05.orig/configure 2013-02-14 23:27:56.000000000 +0100
++++ root-5.34.05/configure 2013-03-07 19:40:36.108220359 +0100
+@@ -3639,7 +3639,7 @@
+ gvizlib1=$found_lib
+ gvizlib1raw=$found_raw_lib
+ gvizlibir=$found_dir
+- check_library "libgraph graph" "no" "$gvizlibdir" \
++ check_library "libgraph graph libcgraph cgraph" "no" "$gvizlibdir" \
+ $GVIZ ${GVIZ:+$GVIZ/lib/graphviz} ${GVIZ:+$GVIZ/lib} ${GVIZ:+$GVIZ/.libs} \
+ ${finkdir:+$finkdir/lib} \
+ /usr/local/lib /usr/lib
+diff -ur root-5.34.05.orig/graf2d/gviz/inc/TGraphEdge.h root-5.34.05/graf2d/gviz/inc/TGraphEdge.h
+--- root-5.34.05.orig/graf2d/gviz/inc/TGraphEdge.h 2013-02-14 23:27:53.000000000 +0100
++++ root-5.34.05/graf2d/gviz/inc/TGraphEdge.h 2013-03-07 19:35:10.936220359 +0100
+@@ -20,8 +20,13 @@
+ #include "TAttLine.h"
+ #endif
+
++#if !defined(__CINT__)
++#include <types.h>
++#else
+ struct Agraph_t;
+ struct Agedge_t;
++#endif
++
+ class TGraphNode;
+
+ //////////////////////////////////////////////////////////////////////////
+diff -ur root-5.34.05.orig/graf2d/gviz/inc/TGraphNode.h root-5.34.05/graf2d/gviz/inc/TGraphNode.h
+--- root-5.34.05.orig/graf2d/gviz/inc/TGraphNode.h 2013-02-14 23:27:53.000000000 +0100
++++ root-5.34.05/graf2d/gviz/inc/TGraphNode.h 2013-03-07 19:35:10.946220359 +0100
+@@ -28,9 +28,12 @@
+ #include "TAttLine.h"
+ #endif
+
++#if !defined(__CINT__)
++#include <types.h>
++#else
+ struct Agraph_t;
+ struct Agnode_t;
+-
++#endif
+
+ //////////////////////////////////////////////////////////////////////////
+ // //
+diff -ur root-5.34.05.orig/graf2d/gviz/inc/TGraphStruct.h root-5.34.05/graf2d/gviz/inc/TGraphStruct.h
+--- root-5.34.05.orig/graf2d/gviz/inc/TGraphStruct.h 2013-02-14 23:27:53.000000000 +0100
++++ root-5.34.05/graf2d/gviz/inc/TGraphStruct.h 2013-03-07 19:35:10.954220359 +0100
+@@ -25,7 +25,12 @@
+ #include "TList.h"
+ #endif
+
++#if !defined(__CINT__)
++#include <types.h>
++#else
+ struct Agraph_t;
++#endif
++
+ struct GVC_s;
+
+ //////////////////////////////////////////////////////////////////////////
+diff -ur root-5.34.05.orig/graf2d/gviz/Module.mk root-5.34.05/graf2d/gviz/Module.mk
+--- root-5.34.05.orig/graf2d/gviz/Module.mk 2013-02-14 23:27:53.000000000 +0100
++++ root-5.34.05/graf2d/gviz/Module.mk 2013-03-07 19:35:10.921220359 +0100
+@@ -68,4 +68,4 @@
+ distclean:: distclean-$(MODNAME)
+
+ ##### extra rules ######
+-$(GVIZO): CXXFLAGS += $(GRAPHVIZINCDIR:%=-I%) $(GRAPHVIZCFLAGS)
++$(GVIZO) $(GVIZDO): CXXFLAGS += $(GRAPHVIZINCDIR:%=-I%) $(GRAPHVIZCFLAGS)
+diff -ur root-5.34.05.orig/graf2d/gviz/src/TGraphEdge.cxx root-5.34.05/graf2d/gviz/src/TGraphEdge.cxx
+--- root-5.34.05.orig/graf2d/gviz/src/TGraphEdge.cxx 2013-02-14 23:27:53.000000000 +0100
++++ root-5.34.05/graf2d/gviz/src/TGraphEdge.cxx 2013-03-07 19:35:10.892220359 +0100
+@@ -81,7 +81,11 @@
+ if (gv) {
+ Agnode_t *n1 = fNode1->GetGVNode();
+ Agnode_t *n2 = fNode2->GetGVNode();
++#ifdef WITH_CGRAPH
++ fGVEdge = agedge(gv, n1, n2, NULL, 1);
++#else
+ fGVEdge = agedge(gv, n1, n2);
++#endif
+ } else {
+ Error("CreateGVEdge","Invalid graphviz graph");
+ }
+diff -ur root-5.34.05.orig/graf2d/gviz/src/TGraphNode.cxx root-5.34.05/graf2d/gviz/src/TGraphNode.cxx
+--- root-5.34.05.orig/graf2d/gviz/src/TGraphNode.cxx 2013-02-14 23:27:53.000000000 +0100
++++ root-5.34.05/graf2d/gviz/src/TGraphNode.cxx 2013-03-07 19:35:10.904220359 +0100
+@@ -65,7 +65,11 @@
+ // Create the GraphViz node into the GraphViz data structure gv.
+
+ if (gv) {
++#ifdef WITH_CGRAPH
++ fGVNode = agnode(gv, (char *)GetName(), 1);
++#else
+ fGVNode = agnode(gv, (char *)GetName());
++#endif
+ } else {
+ Error("CreateGVNode","Invalid graphviz graph");
+ }
+diff -ur root-5.34.05.orig/graf2d/gviz/src/TGraphStruct.cxx root-5.34.05/graf2d/gviz/src/TGraphStruct.cxx
+--- root-5.34.05.orig/graf2d/gviz/src/TGraphStruct.cxx 2013-02-14 23:27:53.000000000 +0100
++++ root-5.34.05/graf2d/gviz/src/TGraphStruct.cxx 2013-03-07 19:35:10.913220359 +0100
+@@ -226,7 +226,11 @@
+ gvFreeLayout(fGVC,fGVGraph);
+ agclose(fGVGraph);
+ }
++#ifdef WITH_CGRAPH
++ fGVGraph = agopen((char*)"GVGraph", Agdirected, 0);
++#else
+ fGVGraph = agopen((char*)"GVGraph", AGDIGRAPH);
++#endif
+
+ // Put the GV nodes into the GV graph
+ if (fNodes) {
diff --git a/root-no-extra-formats.patch b/root-no-extra-formats.patch
new file mode 100644
index 0000000..a3924f4
--- /dev/null
+++ b/root-no-extra-formats.patch
@@ -0,0 +1,20 @@
+diff -ur root-5.34.05.orig/tutorials/graphics/tmathtext.C root-5.34.05/tutorials/graphics/tmathtext.C
+--- root-5.34.05.orig/tutorials/graphics/tmathtext.C 2013-02-14 23:27:35.000000000 +0100
++++ root-5.34.05/tutorials/graphics/tmathtext.C 2013-03-01 19:00:01.437565765 +0100
+@@ -17,11 +17,11 @@
+ l.DrawMathText(0.27, 0.110, "\\mathbb{N} \\subset \\mathbb{R}");
+ l.DrawMathText(0.63, 0.100, "\\hbox{RHIC スピン物理 Нью-Йорк}");
+
+- c1->Print("c1.gif");
+- c1->Print("c1.jpg");
+- c1->Print("c1.png");
+- c1->Print("c1.ps");
+- c1->Print("c1.eps");
++ // c1->Print("c1.gif");
++ // c1->Print("c1.jpg");
++ // c1->Print("c1.png");
++ // c1->Print("c1.ps");
++ // c1->Print("c1.eps");
+
+ return c1;
+ }
diff --git a/root-rev48681.patch b/root-rev48681.patch
new file mode 100644
index 0000000..409ae83
--- /dev/null
+++ b/root-rev48681.patch
@@ -0,0 +1,199 @@
+Index: proof/proofd/src/XrdProofdProofServMgr.cxx
+===================================================================
+--- proof/proofd/src/XrdProofdProofServMgr.cxx (revision 48680)
++++ proof/proofd/src/XrdProofdProofServMgr.cxx (revision 48681)
+@@ -32,8 +32,7 @@
+ #include "XrdOuc/XrdOucRash.hh"
+ #include "XrdOuc/XrdOucStream.hh"
+ #include "XrdSys/XrdSysPriv.hh"
+-#include "XrdSut/XrdSutAux.hh"
+-
++#include "XrdSys/XrdSysPlugin.hh"
+ #include "XrdProofdClient.h"
+ #include "XrdProofdClientMgr.h"
+ #include "XrdProofdManager.h"
+@@ -287,6 +286,8 @@
+ fCurrentSessions = 0;
+
+ fSeqSessionN = 0;
++
++ fCredsSaver = 0;
+
+ // Defaults can be changed via 'proofservmgr'
+ fCheckFrequency = 30;
+@@ -3091,22 +3092,13 @@
+ ev[len] = 0;
+ putenv(ev);
+ TRACE(DBG, "XrdSecCREDS set");
+-
+- // If 'pwd', save AFS key, if any
+- if (!strncmp(p->AuthProt()->Entity.prot, "pwd", 3)) {
++ if (fCredsSaver) {
+ XrdOucString credsdir = udir;
+ credsdir += "/.creds";
+ // Make sure the directory exists
+ if (!XrdProofdAux::AssertDir(credsdir.c_str(), p->Client()->UI(), fMgr->ChangeOwn())) {
+- if (SaveAFSkey(creds, credsdir.c_str(), p->Client()->UI()) == 0) {
+- len = strlen("ROOTPROOFAFSCREDS=")+credsdir.length()+strlen("/.afs")+2;
+- ev = new char[len];
+- snprintf(ev, len, "ROOTPROOFAFSCREDS=%s/.afs", credsdir.c_str());
+- putenv(ev);
+- fprintf(fenv, "ROOTPROOFAFSCREDS has been set\n");
+- TRACE(DBG, ev);
+- } else {
+- TRACE(DBG, "problems in saving AFS key");
++ if ((*fCredsSaver)(creds, credsdir.c_str(), p->Client()->UI()) != 0) {
++ TRACE(DBG, "problems in saving authentication creds under "<<credsdir);
+ }
+ } else {
+ TRACE(XERR, "unable to create creds dir: "<<credsdir);
+@@ -3114,6 +3106,7 @@
+ return -1;
+ }
+ }
++ fclose(fenv);
+ }
+ }
+
+@@ -3568,21 +3561,13 @@
+ PutEnv(ev, in->fOld);
+ TRACE(DBG, "XrdSecCREDS set");
+
+- // If 'pwd', save AFS key, if any
+- if (!strncmp(p->AuthProt()->Entity.prot, "pwd", 3)) {
++ if (fCredsSaver) {
+ XrdOucString credsdir = p->Client()->Sandbox()->Dir();
+ credsdir += "/.creds";
+ // Make sure the directory exists
+ if (!XrdProofdAux::AssertDir(credsdir.c_str(), p->Client()->UI(), fMgr->ChangeOwn())) {
+- if (SaveAFSkey(creds, credsdir.c_str(), p->Client()->UI()) == 0) {
+- len = strlen("ROOTPROOFAFSCREDS=")+credsdir.length()+strlen("/.afs")+2;
+- ev = new char[len];
+- snprintf(ev, len, "ROOTPROOFAFSCREDS=%s/.afs", credsdir.c_str());
+- fprintf(fenv, "ROOTPROOFAFSCREDS has been set\n");
+- TRACE(DBG, ev);
+- PutEnv(ev, in->fOld);
+- } else {
+- TRACE(DBG, "problems in saving AFS key");
++ if ((*fCredsSaver)(creds, credsdir.c_str(), p->Client()->UI()) != 0) {
++ TRACE(DBG, "problems in saving authentication creds under "<<credsdir);
+ }
+ } else {
+ TRACE(XERR, "unable to create creds dir: "<<credsdir);
+@@ -3590,6 +3575,7 @@
+ return -1;
+ }
+ }
++ fclose(fenv);
+ }
+ }
+
+@@ -4582,76 +4568,6 @@
+ return 0;
+ }
+
+-//______________________________________________________________________________
+-int XrdProofdProofServMgr::SaveAFSkey(XrdSecCredentials *c,
+- const char *dir, XrdProofUI ui)
+-{
+- // Save the AFS key, if any, for usage in proofserv in file 'dir'/.afs .
+- // Return 0 on success, -1 on error.
+- XPDLOC(SMGR, "ProofServMgr::SaveAFSkey")
+-
+- // Check file name
+- if (!dir || strlen(dir) <= 0) {
+- TRACE(XERR, "dir name undefined");
+- return -1;
+- }
+-
+- // Check credentials
+- if (!c) {
+- TRACE(XERR, "credentials undefined");
+- return -1;
+- }
+- TRACE(REQ, "dir: "<<dir);
+-
+- // Decode credentials
+- int lout = 0;
+- char *out = new char[c->size];
+- if (XrdSutFromHex(c->buffer, out, lout) != 0) {
+- TRACE(XERR, "problems unparsing hex string");
+- delete [] out;
+- return -1;
+- }
+-
+- // Locate the key
+- char *key = out + 5;
+- if (strncmp(key, "afs:", 4)) {
+- TRACE(DBG, "string does not contain an AFS key");
+- delete [] out;
+- return 0;
+- }
+- key += 4;
+-
+- // Save to file, if not existing already
+- XrdOucString fn = dir;
+- fn += "/.afs";
+- int rc = 0;
+-
+- // Open the file, truncating if already existing
+- int fd = open(fn.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0600);
+- if (fd < 0) {
+- TRACE(XERR, "problems creating file - errno: " << errno);
+- delete [] out;
+- return -1;
+- }
+- // Write out the key
+- int lkey = lout - 9;
+- if (XrdProofdAux::Write(fd, key, lkey) != lkey) {
+- TRACE(XERR, "problems writing to file - errno: " << errno);
+- rc = -1;
+- }
+-
+- // Cleanup
+- delete [] out;
+- close(fd);
+-
+- // Make sure the file is owned by the user
+- if (XrdProofdAux::ChangeOwn(fn.c_str(), ui) != 0) {
+- TRACE(XERR, "can't change ownership of "<<fn);
+- }
+-
+- return rc;
+-}
+-
+ //__________________________________________________________________________
+ XrdProofdProofServ *XrdProofdProofServMgr::GetActiveSession(int pid)
+ {
+Index: proof/proofd/inc/XrdProofdProofServMgr.h
+===================================================================
+--- proof/proofd/inc/XrdProofdProofServMgr.h (revision 48680)
++++ proof/proofd/inc/XrdProofdProofServMgr.h (revision 48681)
+@@ -42,6 +42,9 @@
+ #define PSMMAXCNTS 3
+ #define PSMCNTOK(t) (t >= 0 && t < PSMMAXCNTS)
+
++// Security handle
++typedef int (*XrdSecCredsSaver_t)(XrdSecCredentials *, const char *fn, const XrdProofUI &ui);
++
+ // Aux structure for session set env inputs
+ typedef struct {
+ XrdProofdProofServ *fPS;
+@@ -161,6 +164,8 @@
+
+ std::map<XrdProofdProtocol*,int> fDestroyTimes; // Tracks destroyed sessions
+
++ XrdSecCredsSaver_t fCredsSaver; // If defined, function to be used to save the credentials
++
+ int DoDirectiveProofServMgr(char *, XrdOucStream *, bool);
+ int DoDirectivePutEnv(char *, XrdOucStream *, bool);
+ int DoDirectivePutRc(char *, XrdOucStream *, bool);
+@@ -268,8 +273,6 @@
+
+ int SetProofServEnv(XrdProofdProtocol *p, void *in);
+ int SetProofServEnvOld(XrdProofdProtocol *p, void *in);
+-
+- int SaveAFSkey(XrdSecCredentials *c, const char *fn, XrdProofUI ui);
+ int SetUserEnvironment(XrdProofdProtocol *p);
+
+ static int SetProofServEnv(XrdProofdManager *m, XrdROOT *r);
diff --git a/root-rev48831.patch b/root-rev48831.patch
new file mode 100644
index 0000000..2b016c3
--- /dev/null
+++ b/root-rev48831.patch
@@ -0,0 +1,619 @@
+Index: cmake/modules/FindXROOTD.cmake
+===================================================================
+--- cmake/modules/FindXROOTD.cmake (revision 48830)
++++ cmake/modules/FindXROOTD.cmake (revision 48831)
+@@ -28,32 +28,37 @@
+ )
+
+ if (XROOTD_INCLUDE_DIR)
+- file(STRINGS ${XROOTD_INCLUDE_DIR}/XrdVersion.hh xrdvers REGEX "^#define XrdVERSION")
++ file(STRINGS ${XROOTD_INCLUDE_DIR}/XrdVersion.hh xrdvers REGEX "^#define XrdVERSION ")
+ string(REGEX REPLACE "#define[ ]+XrdVERSION[ ]+" "" xrdvers ${xrdvers})
+ string(REGEX REPLACE "[^v\\.]+" "" xrdversdots ${xrdvers})
+ if (${xrdversdots} STREQUAL "v..")
+ # Regular version string; parse it out
+ string(REGEX MATCH "[0-9\\.]+" xrdvers ${xrdvers})
+- string(REGEX MATCH "[0-9]" xrdversmajor ${xrdvers})
+- string(REPLACE "${xrdversmajor}." "" xrdversminor ${xrdvers})
+- string(REGEX MATCH "[0-9]" xrdversminor ${xrdversminor})
+- string(REPLACE "${xrdversmajor}.${xrdversminor}." "" xrdverspatch ${xrdvers})
+- string(REGEX MATCH "[0-9]+" xrdverspatch ${xrdverspatch})
++ string(REGEX REPLACE "^([^.]*)\\.(.*)\\.(.*)" "\\1" xrdversmajor ${xrdvers})
++ string(REGEX REPLACE "^([^.]*)\\.(.*)\\.(.*)" "\\2" xrdversminor ${xrdvers})
++ string(REGEX REPLACE "^([^.]*)\\.(.*)\\.(.*)" "\\3" xrdverspatch ${xrdvers})
+ math(EXPR xrdversnum ${xrdversmajor}*100000000+${xrdversminor}*10000+${xrdverspatch})
+ else ()
+ # Old version string: we keep only the first numerics, i.e. the date
+ string(REGEX REPLACE "[v\"]" "" xrdvers ${xrdvers})
+- message(STATUS "Found Xrootd version ${xrdvers}")
+- string(REGEX REPLACE "[^0-9-]+" " " xrdvers ${xrdvers})
+ string(SUBSTRING ${xrdvers} 0 8 xrdversnum)
+ endif ()
++ if ( ${xrdversnum} EQUAL 300030000 )
++ SET(XROOTD_FOUND FALSE)
++ message(WARNING " >>> Cannot build with XRootD version 3.3.0: please install >=3.3.1 or <= 3.2.x")
++ else()
++ SET(XROOTD_FOUND TRUE)
++ endif ()
++endif()
++
++if(XROOTD_FOUND)
+ # This we used as a compiler macro variable
+ if(NOT XROOTD_FIND_QUIETLY )
+- message(STATUS "Found Xrootd version num: ${xrdvers}")
++ message(STATUS "Found Xrootd version num: ${xrdvers} (setting -DROOTXRDVERS=${xrdversnum})")
+ endif()
+ SET(XROOTD_CFLAGS "-DROOTXRDVERS=${xrdversnum}")
+
+- if ( ${xrdversnum} LESS 300010000 )
++ if ( ${xrdversnum} LESS 300010000 AND ${xrdversnum} LESS 20111022)
+ SET(XROOTD_OLDPACK TRUE)
+ message(STATUS "Setting OLDPACK TRUE")
+ else()
+@@ -72,14 +77,16 @@
+ XrdOuc/XrdOucPthread.hh
+ XrdOuc/XrdOucSemWait.hh
+ XrdOuc/XrdOucTimer.hh
++ PATHS
+ ${XROOTD_INCLUDE_DIR}
+ )
+ else()
+- if ( ${xrdversnum} LESS 300010000 )
++ if ( ${xrdversnum} LESS 300010000 AND ${xrdversnum} LESS 20111022)
+ # DNS stuff was under XrdNet
+ find_path(XROOTD_INCLUDE_DIR
+ NAMES
+ XrdNet/XrdNetDNS.hh
++ PATHS
+ ${XROOTD_INCLUDE_DIR}
+ )
+ else ()
+@@ -87,6 +94,7 @@
+ find_path(XROOTD_INCLUDE_DIR
+ NAMES
+ XrdSys/XrdSysDNS.hh
++ PATHS
+ ${XROOTD_INCLUDE_DIR}
+ )
+ endif ()
+@@ -101,9 +109,20 @@
+ XrdSys/XrdSysPthread.hh
+ XrdSys/XrdSysSemWait.hh
+ XrdSys/XrdSysTimer.hh
++ PATHS
+ ${XROOTD_INCLUDE_DIR}
+ )
+ endif()
++
++ if (XROOTD_INCLUDE_DIR)
++ # Check for additional headers in new directories
++ find_path(XROOTD_PRIVATE_INCLUDE_DIR
++ NAMES
++ XrdSys/XrdSysPriv.hh
++ PATHS
++ ${XROOTD_INCLUDE_DIR}/private
++ )
++ endif()
+ endif()
+ if (XROOTD_INCLUDE_DIR)
+ SET(XROOTD_FOUND TRUE)
+@@ -152,7 +171,7 @@
+ if(XROOTD_LIBRARIES)
+ set(XROOTD_FOUND TRUE)
+ if(NOT XROOTD_FIND_QUIETLY )
+- message(STATUS " include_dir: ${XROOTD_INCLUDE_DIR}")
++ message(STATUS " include_dir: ${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR}")
+ message(STATUS " libraries: ${XROOTD_LIBRARIES}")
+ endif()
+ else ()
+@@ -160,7 +179,8 @@
+ endif ()
+ endif()
+
+-mark_as_advanced(XROOTD_INCLUDE_DIR
++mark_as_advanced(XROOTD_INCLUDE_DIR
++ XROOTD_PRIVATE_INCLUDE_DIR
+ XROOTD_XrdMain_LIBRARY
+ XROOTD_XrdUtils_LIBRARY
+ XROOTD_XrdClient_LIBRARY
+Index: configure
+===================================================================
+--- configure (revision 48830)
++++ configure (revision 48831)
+@@ -4577,9 +4577,16 @@
+ fi
+ fi
+ fi
+- echo "$xrdver"
++ # Protect against 3.3.0, first version with 'include/xrootd/private'
++ if [ $decver -eq 300030000 ] ; then
++ echo "Cannot build against version $xrdver (missing headers)"
++ enable_xrootd="no"
++ else
++ echo "$xrdver"
++ fi
+ fi
+
++xrdincprivate="no"
+ if test "x$enable_xrootd" = "xyes" ; then
+
+ extraxrdflags="-DROOTXRDVERS=$decver"
+@@ -4635,6 +4642,15 @@
+ fi
+
+ #
++ # Check also if 'include/private' exists: we need to signal this to the build modules
++ # for correct location of some headers available form the dlevel packages for version >= 3.3.x
++ if test "x$enable_xrootd" = "xyes"; then
++ if test -d "$xrdincdir/private"; then
++ xrdincprivate="yes"
++ fi
++ fi
++
++ #
+ # Check if bonjour is available for code potentially using it ...
+ if test "x$enable_xrootd" = "xyes"; then
+ xrdlibdir="$tmpxrdlibdir"
+@@ -6730,6 +6746,7 @@
+ -e "s|@xpmlibdir@|$xpmlibdir|" \
+ -e "s|@xrdlibdir@|$xrdlibdir|" \
+ -e "s|@xrdincdir@|$xrdincdir|" \
++ -e "s|@xrdincprivate@|$xrdincprivate|" \
+ -e "s|@xrdversion@|$decver|" \
+ -e "s|@hasxrdutils@|$hasxrdutils|" \
+ -e "s|@cfitsioincdir@|$cfitsioincdir|" \
+Index: proof/proofd/src/XrdProofConn.cxx
+===================================================================
+--- proof/proofd/src/XrdProofConn.cxx (revision 48830)
++++ proof/proofd/src/XrdProofConn.cxx (revision 48831)
+@@ -32,7 +32,6 @@
+
+ #include "XrdClient/XrdClientConnMgr.hh"
+ #include "XrdClient/XrdClientConst.hh"
+-#include "XrdClient/XrdClientDebug.hh"
+ #include "XrdClient/XrdClientEnv.hh"
+ #include "XrdClient/XrdClientLogConnection.hh"
+ #include "XrdClient/XrdClientPhyConnection.hh"
+@@ -41,6 +40,7 @@
+ #include "XrdOuc/XrdOucErrInfo.hh"
+ #include "XrdOuc/XrdOucString.hh"
+ #include "XrdSec/XrdSecInterface.hh"
++#include "XrdSys/XrdSysLogger.hh"
+ #include "XrdSys/XrdSysPlatform.hh"
+
+ // Dynamic libs
+Index: proof/proofd/src/XpdObject.cxx
+===================================================================
+--- proof/proofd/src/XpdObject.cxx (revision 0)
++++ proof/proofd/src/XpdObject.cxx (revision 48831)
+@@ -0,0 +1,125 @@
++// @(#)root/proofd:$Id$
++// Author: Gerardo Ganis Feb 2013
++
++/*************************************************************************
++ * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers. *
++ * All rights reserved. *
++ * *
++ * For the licensing terms see $ROOTSYS/LICENSE. *
++ * For the list of contributors see $ROOTSYS/README/CREDITS. *
++ *************************************************************************/
++
++//////////////////////////////////////////////////////////////////////////
++// //
++// XpdObject //
++// //
++// Authors: G. Ganis, CERN, 2013 //
++// //
++// Auxilliary class to stack protocols. //
++// //
++//////////////////////////////////////////////////////////////////////////
++
++#include "XpdObject.h"
++#include "XrdProofdAux.h"
++#include "XrdProofdProtocol.h"
++#include "Xrd/XrdScheduler.hh"
++#include "XrdOuc/XrdOucTrace.hh"
++
++//_______________________________________________________________________
++XrdProofdProtocol *XpdObjectQ::Pop()
++{
++ // Pop up a protocol object
++
++ XpdObject *node;
++ fQMutex.Lock();
++ if ((node = fFirst)) {
++ fFirst = fFirst->fNext;
++ fCount--;
++ }
++ fQMutex.UnLock();
++ if (node) return node->fItem;
++ return (XrdProofdProtocol *)0;
++}
++
++//_______________________________________________________________________
++void XpdObjectQ::Push(XpdObject *node)
++{
++ // Push back a protocol
++
++ node->fQTime = fCurage;
++ fQMutex.Lock();
++ if (fCount >= fMaxinQ) {
++ delete node->fItem;
++ } else {
++ node->fNext = fFirst;
++ fFirst = node;
++ fCount++;
++ }
++ fQMutex.UnLock();
++}
++
++//_______________________________________________________________________
++void XpdObjectQ::Set(int inQMax, time_t agemax)
++{
++ // Lock the data area and set the values
++
++ fQMutex.Lock();
++ fMaxinQ = inQMax; fMaxage = agemax;
++ if (!(fMininQ = inQMax/2)) fMininQ = 1;
++ fQMutex.UnLock();
++
++ // Schedule ourselves using the new values
++ if (agemax > 0)
++ fSched->Schedule((XrdJob *)this, agemax + time(0));
++}
++
++//_______________________________________________________________________
++void XpdObjectQ::DoIt()
++{
++ // Process method
++
++ XpdObject *pp, *p;
++ int oldcnt, agemax;
++
++ // Lock the anchor and see if we met the threshold for deletion
++ //
++ fQMutex.Lock();
++ agemax = fMaxage;
++ if ((oldcnt = fCount) > fMininQ) {
++
++ // Prepare to scan down the queue.
++ if ((pp = fFirst)) {
++ p = pp->fNext;
++ } else { p = 0; }
++
++ // Find the first object that's been idle for too long
++ while(p && (p->fQTime >= fCurage)) { pp = p; p = p->fNext;}
++
++ // Now delete half of the idle objects. The object queue element must be
++ // part of the actual object being deleted for this to properly work.
++ if (pp) {
++ while (p) {
++ pp->fNext = p->fNext;
++ delete p->fItem;
++ fCount--;
++ p = ((pp = pp->fNext) ? pp->fNext : 0);
++ }
++ }
++ }
++
++ // Increase the age and unlock the queue
++ fCurage++;
++ fQMutex.UnLock();
++
++ // Trace as needed
++ if (fTraceON && fTrace->Tracing(fTraceON))
++ {fTrace->Beg(fTraceID);
++ cerr <<Comment <<" trim done; " <<fCount <<" of " <<oldcnt <<" kept";
++ fTrace->End();
++ }
++
++ // Reschedule ourselves if we must do so
++ if (agemax > 0)
++ fSched->Schedule((XrdJob *)this, agemax+time(0));
++}
++
+
+Egenskapsändringar för: proof/proofd/src/XpdObject.cxx
+___________________________________________________________________
+Added: svn:eol-style
+## -0,0 +1 ##
++LF
+\ No newline at end of property
+Added: svn:keywords
+## -0,0 +1 ##
++Id
+\ No newline at end of property
+Index: proof/proofd/src/XrdProofdProtocol.cxx
+===================================================================
+--- proof/proofd/src/XrdProofdProtocol.cxx (revision 48830)
++++ proof/proofd/src/XrdProofdProtocol.cxx (revision 48831)
+@@ -29,6 +29,7 @@
+
+ #include "XrdVersion.hh"
+ #include "Xrd/XrdBuffer.hh"
++#include "Xrd/XrdScheduler.hh"
+
+ #include "XrdProofdClient.h"
+ #include "XrdProofdClientMgr.h"
+@@ -54,8 +55,7 @@
+ //
+ // Static area: general protocol managing section
+ int XrdProofdProtocol::fgCount = 0;
+-XrdObjectQ<XrdProofdProtocol>
+- XrdProofdProtocol::fgProtStack("ProtStack",
++XpdObjectQ XrdProofdProtocol::fgProtStack("ProtStack",
+ "xproofd protocol anchor");
+ XrdSysRecMutex XrdProofdProtocol::fgBMutex; // Buffer management mutex
+ XrdBuffManager *XrdProofdProtocol::fgBPool = 0;
+@@ -542,8 +542,12 @@
+ // Schedule protocol object cleanup; the maximum number of objects
+ // and the max age are taken from XrdXrootdProtocol: this may need
+ // some optimization in the future.
++#if 1
+ fgProtStack.Set(pi->Sched, XrdProofdTrace, TRACE_MEM);
+ fgProtStack.Set((pi->ConnMax/3 ? pi->ConnMax/3 : 30), 60*60);
++#else
++ fgProtStack.Set(pi->Sched, 3600);
++#endif
+
+ // Default tracing options: always trace logins and errors for all
+ // domains; if the '-d' option was specified on the command line then
+@@ -789,6 +793,13 @@
+
+ // Push ourselves on the stack
+ fgProtStack.Push(&fProtLink);
++#if 0
++ if(fgProtStack.Push(&fProtLink) != 0) {
++ XrdProofdProtocol *xp = fProtLink.objectItem();
++ fProtLink.setItem(0);
++ delete xp;
++ }
++#endif
+ }
+
+ //______________________________________________________________________________
+Index: proof/proofd/inc/XrdProofdProtocol.h
+===================================================================
+--- proof/proofd/inc/XrdProofdProtocol.h (revision 48830)
++++ proof/proofd/inc/XrdProofdProtocol.h (revision 48831)
+@@ -38,10 +38,10 @@
+ #include "XpdSysPthread.h"
+
+ #include "Xrd/XrdLink.hh"
+-#include "Xrd/XrdObject.hh"
+ #include "Xrd/XrdProtocol.hh"
+ #include "XrdOuc/XrdOucString.hh"
+ #include "XrdSec/XrdSecInterface.hh"
++#include "XpdObject.h"
+ #include "XProofProtocol.h"
+
+ class XrdBuffer;
+@@ -131,7 +131,7 @@
+ //
+ // Protocol variables
+
+- XrdObject<XrdProofdProtocol> fProtLink;
++ XpdObject fProtLink;
+ XrdBuffer *fArgp;
+
+ XrdLink *fLink;
+@@ -176,7 +176,7 @@
+ //
+ static bool fgConfigDone;
+ static int fgCount;
+- static XrdObjectQ<XrdProofdProtocol> fgProtStack;
++ static XpdObjectQ fgProtStack;
+ static XrdBuffManager *fgBPool; // Buffer manager
+ static int fgMaxBuffsz; // Maximum buffer size we can have
+ static XrdSysRecMutex fgBMutex; // Buffer management mutex
+Index: proof/proofd/inc/XpdObject.h
+===================================================================
+--- proof/proofd/inc/XpdObject.h (revision 0)
++++ proof/proofd/inc/XpdObject.h (revision 48831)
+@@ -0,0 +1,100 @@
++// @(#)root/proofd:$Id$
++// Author: Gerardo Ganis Feb 2013
++
++/*************************************************************************
++ * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers. *
++ * All rights reserved. *
++ * *
++ * For the licensing terms see $ROOTSYS/LICENSE. *
++ * For the list of contributors see $ROOTSYS/README/CREDITS. *
++ *************************************************************************/
++
++//////////////////////////////////////////////////////////////////////////
++// //
++// XpdObject //
++// //
++// Authors: G. Ganis, CERN, 2013 //
++// //
++// Auxilliary class to stack protocols. //
++// Adapted version of XrdObject. //
++// //
++//////////////////////////////////////////////////////////////////////////
++
++#ifndef ROOT_XpdObject
++#define ROOT_XpdObject
++
++#include <string.h>
++#include <strings.h>
++#include <time.h>
++#include <sys/types.h>
++#include "Xrd/XrdJob.hh"
++#include "XrdOuc/XrdOucTrace.hh"
++#include "XrdSys/XrdSysPthread.hh"
++
++class XpdObjectQ;
++class XrdProofdProtocol;
++class XrdScheduler;
++
++class XpdObject {
++public:
++ friend class XpdObjectQ;
++
++ // Item() supplies the item value associated with itself (used with Next()).
++ XrdProofdProtocol *objectItem() { return fItem; }
++
++ // Next() supplies the next list node.
++ XpdObject *nextObject() { return fNext; }
++
++ // Set the item pointer
++ void setItem(XrdProofdProtocol *ival) { fItem = ival; }
++
++ XpdObject(XrdProofdProtocol *ival=0) { fNext = 0; fItem = ival; fQTime = 0; }
++ ~XpdObject() {}
++
++private:
++ XpdObject *fNext;
++ XrdProofdProtocol *fItem;
++ time_t fQTime; // Only used for time-managed objects
++};
++
++/******************************************************************************/
++/* x r d _ O b j e c t Q */
++/******************************************************************************/
++
++// Note to properly cleanup this type of queue you must call Set() at least
++// once to cause the time element to be sceduled.
++
++class XrdOucTrace;
++
++class XpdObjectQ : public XrdJob {
++public:
++
++ XrdProofdProtocol *Pop();
++ void Push(XpdObject *Node);
++ void Set(int inQMax, time_t agemax=1800);
++ void Set(XrdScheduler *sp, XrdOucTrace *tp, int traceChk = 0)
++ {fSched = sp; fTrace = tp; fTraceON = traceChk;}
++ void DoIt();
++
++ XpdObjectQ(const char *id, const char *desc) : XrdJob(desc)
++ {fCurage = fCount = 0; fMaxage = 0; fTraceID = id;
++ fMaxinQ = 32; fMininQ = 16; fFirst = 0; }
++
++ ~XpdObjectQ() {}
++
++private:
++
++ XrdSysMutex fQMutex;
++ XpdObject *fFirst;
++ int fCount;
++ int fCurage;
++ int fMininQ;
++ int fMaxinQ;
++ time_t fMaxage;
++ XrdOucTrace *fTrace;
++ XrdScheduler *fSched;
++ int fTraceON;
++ const char *fTraceID;
++};
++
++#endif
+
+Egenskapsändringar för: proof/proofd/inc/XpdObject.h
+___________________________________________________________________
+Added: svn:keywords
+## -0,0 +1 ##
++Id
+\ No newline at end of property
+Added: svn:eol-style
+## -0,0 +1 ##
++LF
+\ No newline at end of property
+Index: proof/proofd/Module.mk
+===================================================================
+--- proof/proofd/Module.mk (revision 48830)
++++ proof/proofd/Module.mk (revision 48831)
+@@ -127,7 +127,11 @@
+ ifeq ($(HASXRD),yes)
+ XPDINCEXTRA := $(XROOTDDIRI:%=-I%)
+ XPDINCEXTRA += $(PROOFDDIRI:%=-I%)
++ifeq ($(XRDINCPRIVATE),yes)
++XPDINCEXTRA += -I$(XRDINCDIR)/private
++endif
+
++
+ ifeq ($(HASXRDUTILS),no)
+
+ XPDLIBEXTRA += $(XROOTDDIRL) -lXrdClient -lXrdNet -lXrdOuc \
+Index: proof/proofd/CMakeLists.txt
+===================================================================
+--- proof/proofd/CMakeLists.txt (revision 48830)
++++ proof/proofd/CMakeLists.txt (revision 48831)
+@@ -7,7 +7,7 @@
+ ROOT_USE_PACKAGE(net/rpdutils)
+ ROOT_USE_PACKAGE(net/auth)
+
+-include_directories(${XROOTD_INCLUDE_DIR})
++include_directories(${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR})
+ add_definitions(${XROOTD_CFLAGS})
+
+ if(WIN32)
+Index: proof/proofx/Module.mk
+===================================================================
+--- proof/proofx/Module.mk (revision 48830)
++++ proof/proofx/Module.mk (revision 48831)
+@@ -63,6 +63,9 @@
+ PROOFXINCEXTRA := $(PROOFXDIRI:%=-I%)
+ PROOFXINCEXTRA += $(XROOTDDIRI:%=-I%)
+ PROOFXINCEXTRA += $(PROOFDDIRI:%=-I%)
++ifeq ($(XRDINCPRIVATE),yes)
++PROOFXINCEXTRA += -I$(XRDINCDIR)/private
++endif
+
+ # Xrootd client libs
+ ifeq ($(PLATFORM),win32)
+Index: proof/proofx/CMakeLists.txt
+===================================================================
+--- proof/proofx/CMakeLists.txt (revision 48830)
++++ proof/proofx/CMakeLists.txt (revision 48831)
+@@ -16,7 +16,7 @@
+ ROOT_GLOB_SOURCES(sources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cxx)
+ endif()
+
+-include_directories(${XROOTD_INCLUDE_DIR})
++include_directories(${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR})
+ link_directories(${XROOTD_LIBRARY_DIR})
+ add_definitions(${XROOTD_CFLAGS})
+
+Index: net/netx/Module.mk
+===================================================================
+--- net/netx/Module.mk (revision 48830)
++++ net/netx/Module.mk (revision 48831)
+@@ -55,6 +55,9 @@
+ ifneq ($(EXTRA_XRDFLAGS),)
+ NETXINCEXTRA += -I$(ROOT_SRCDIR)/proof/proofd/inc
+ endif
++ifeq ($(XRDINCPRIVATE),yes)
++NETXINCEXTRA += -I$(XRDINCDIR)/private
++endif
+
+ # Xrootd client libs
+ ifeq ($(PLATFORM),win32)
+Index: net/netx/CMakeLists.txt
+===================================================================
+--- net/netx/CMakeLists.txt (revision 48830)
++++ net/netx/CMakeLists.txt (revision 48831)
+@@ -6,7 +6,7 @@
+ ROOT_USE_PACKAGE(net/net)
+ ROOT_USE_PACKAGE(proof/proofd)
+
+-include_directories(${XROOTD_INCLUDE_DIR})
++include_directories(${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR})
+ add_definitions(${XROOTD_CFLAGS})
+ #---------------------------------------------------------------------------
+
+Index: config/Makefile.in
+===================================================================
+--- config/Makefile.in (revision 48830)
++++ config/Makefile.in (revision 48831)
+@@ -255,6 +255,7 @@
+ EXTRA_XRDFLAGS := @extraxrdflags@
+ XRDVERSION := @xrdversion@
+ HASXRDUTILS := @hasxrdutils@
++XRDINCPRIVATE := @xrdincprivate@
+
+ SRPLIBDIR := @srplibdir@
+ SRPLIB := @srplib@
diff --git a/root.spec b/root.spec
index 521b261..766711b 100644
--- a/root.spec
+++ b/root.spec
@@ -26,9 +26,9 @@
%endif
Name: root
-Version: 5.34.02
+Version: 5.34.05
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 3%{?dist}
+Release: 1%{?dist}
Summary: Numerical data analysis framework
Group: Applications/Engineering
@@ -55,19 +55,22 @@ Patch0: %{name}-ftgl.patch
Patch1: %{name}-fontconfig.patch
# Use system unuran:
Patch2: %{name}-unuran.patch
-# Fixes for xrootd bonjour
+# Remove broken xrootd test:
Patch3: %{name}-xrootd.patch
-# Fix hardcoded include path
+# Fix hardcoded include path:
# https://savannah.cern.ch/bugs/index.php?91463
Patch4: %{name}-meta.patch
-# Fixes for latest glibc headers
-Patch5: %{name}-glibc.patch
-# Missing Include
-Patch6: %{name}-gfal-bits.patch
-# Backport meta fixes
-Patch7: %{name}-tclass-fix.patch
-# Revert THtml change
-Patch8: %{name}-thtml-revert.patch
+# Missing include path:
+Patch5: %{name}-gfal-bits.patch
+# Revert THtml change:
+Patch6: %{name}-thtml-revert.patch
+# Don't save in all image formats:
+Patch7: %{name}-no-extra-formats.patch
+# Graphviz libgraph deprecated:
+Patch8: %%{name}-gviz.patch
+# Backport xrootd 3.3 support:
+Patch9: %{name}-rev48681.patch
+Patch10: %{name}-rev48831.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
# The build segfaults on ppc64 during an invocation of cint:
# https://savannah.cern.ch/bugs/index.php?70542
@@ -113,9 +116,6 @@ BuildRequires: python26-devel
%endif
%if %{?fedora}%{!?fedora:0} >= 9 || %{?rhel}%{!?rhel:0} >= 6
BuildRequires: qt4-devel
-%if %{?fedora}%{!?fedora:0} >= 14
-BuildRequires: qt4-webkit-devel
-%endif
%endif
BuildRequires: ruby
BuildRequires: ruby-devel
@@ -127,7 +127,8 @@ BuildRequires: libtool-ltdl-devel
BuildRequires: desktop-file-utils
BuildRequires: dcap-devel
BuildRequires: dpm-devel
-BuildRequires: xrootd-devel
+BuildRequires: xrootd-client-devel
+BuildRequires: xrootd-private-devel
BuildRequires: cfitsio-devel
BuildRequires: gfal-devel
BuildRequires: srm-ifce-devel
@@ -148,6 +149,22 @@ BuildRequires: liberation-fonts
%endif
# This contains a Symbol font that can be used by fontconfig
BuildRequires: urw-fonts
+%if %{?fedora}%{!?fedora:0} >= 11 || %{?rhel}%{!?rhel:0} >= 6
+BuildRequires: font(droidsansfallback)
+%endif
+%if %{?fedora}%{!?fedora:0} >= 18 || %{?rhel}%{!?rhel:0} >= 7
+BuildRequires: font(stix)
+%else
+%if %{?fedora}%{!?fedora:0} >= 14
+BuildRequires: font(stixgeneral)
+BuildRequires: font(stixsizeonesym)
+%else
+%if %{?fedora}%{!?fedora:0} >= 11 || %{?rhel}%{!?rhel:0} >= 6
+BuildRequires: font(stixgeneral)
+BuildRequires: font(stixsize1)
+%endif
+%endif
+%endif
Requires: hicolor-icon-theme
%description
@@ -227,6 +244,22 @@ Requires: liberation-fonts
%endif
# This contains a Symbol font that can be used by fontconfig
Requires: urw-fonts
+%if %{?fedora}%{!?fedora:0} >= 11 || %{?rhel}%{!?rhel:0} >= 6
+Requires: font(droidsansfallback)
+%endif
+%if %{?fedora}%{!?fedora:0} >= 18 || %{?rhel}%{!?rhel:0} >= 7
+Requires: font(stix)
+%else
+%if %{?fedora}%{!?fedora:0} >= 14
+Requires: font(stixgeneral)
+Requires: font(stixsizeonesym)
+%else
+%if %{?fedora}%{!?fedora:0} >= 11 || %{?rhel}%{!?rhel:0} >= 6
+Requires: font(stixgeneral)
+Requires: font(stixsize1)
+%endif
+%endif
+%endif
%description core
This package contains the core libraries used by ROOT: libCore, libNew,
@@ -1033,6 +1066,8 @@ fi
%patch6 -p1
%patch7 -p1
%patch8 -p1
+%patch9 -p0
+%patch10 -p0
find . '(' -name '*.cxx' -o -name '*.cpp' -o -name '*.C' -o -name '*.c' -o \
-name '*.h' -o -name '*.hh' -o -name '*.hi' -o -name '*.py' -o \
@@ -1107,7 +1142,8 @@ sed s/c1/c1simp/g -i tutorials/hsimple.C
%if "%{?rhel}" == "5"
# Build PyROOT for python 2.6
cp -pr bindings/pyroot bindings/pyroot26
-sed 's/python /python26 /' -i bindings/pyroot26/Module.mk
+sed -e 's/= pyroot/= pyroot26/' -e 's/python /python26 /' \
+ -i bindings/pyroot26/Module.mk
%endif
%build
@@ -1138,10 +1174,10 @@ unset QTINC
--enable-fftw3 \
--enable-fitsio \
--enable-gdml \
+ --enable-genvector \
--enable-gfal \
--with-gfal-incdir=%{_includedir} \
--with-gfal-libdir=%{_libdir} \
- --enable-genvector \
--enable-globus \
--enable-gsl-shared \
--enable-gviz \
@@ -1315,6 +1351,7 @@ rm ${RPM_BUILD_ROOT}%{_datadir}/%{name}/svninfo.txt
%if %{?fedora}%{!?fedora:0} < 13 && %{?rhel}%{!?rhel:0} < 6
rm ${RPM_BUILD_ROOT}%{_libdir}/%{name}/libAfterImage.a
%endif
+rm ${RPM_BUILD_ROOT}%{_libdir}/%{name}/libmathtext.a
rm ${RPM_BUILD_ROOT}%{_bindir}/setxrd*
rm ${RPM_BUILD_ROOT}%{_bindir}/thisroot*
rm ${RPM_BUILD_ROOT}%{_mandir}/man1/cint.1
@@ -1345,6 +1382,7 @@ rm ${RPM_BUILD_ROOT}%{_datadir}/%{name}/macros/fileopen.C
pushd ${RPM_BUILD_ROOT}%{_datadir}/%{name}/plugins
rm TAFS/P010_TAFS.C
rm TDataProgressDialog/P010_TDataProgressDialog.C
+rm TDataSetManager/P020_TDataSetManagerAliEn.C
rm TFile/P030_TCastorFile.C
rm TFile/P060_TChirpFile.C
rm TFile/P070_TAlienFile.C
@@ -1403,6 +1441,7 @@ cat includelist-geom-geom* > includelist-geom
cat includelist-roofit-roo* > includelist-roofit
cat includelist-gui-qt* > includelist-gui-qt
cat includelist-graf2d-x11ttf >> includelist-graf2d-x11
+cat includelist-graf2d-mathtext >> includelist-graf2d-x11
cat includelist-gui-guihtml >> includelist-gui-gui
cat includelist-io-xmlparser >> includelist-io-xml
cat includelist-proof-proofplayer >> includelist-proof-proof
@@ -1781,9 +1820,11 @@ fi
%{_bindir}/proofserv
%{_bindir}/proofserv.exe
%{_bindir}/xproofd
+%{_bindir}/xpdtest
%{_mandir}/man1/proofd.1*
%{_mandir}/man1/proofserv.1*
%{_mandir}/man1/xproofd.1*
+%{_mandir}/man1/xpdtest.1*
%{_initrddir}/proofd
%files rootd
@@ -2287,6 +2328,12 @@ fi
%{emacs_lispdir}/root/*.el
%changelog
+* Wed Feb 27 2013 Mattias Ellert <mattias.ellert at fysast.uu.se> - 5.34.05-1
+- Update to 5.34.05
+- Rebuild for xrootd 3.3
+- Patch for latest graphviz (libcgraph)
+- Drop patches root-glibc.patch and root-tclass-fix.patch
+
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 5.34.02-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
diff --git a/sources b/sources
index 49f0898..b0b813c 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-cf47c9e9f2b0b6b77eb2ded0f6acba94 root-5.34.02.tar.gz
+0dd415d539f5bb8ec21c9f49b2f9c5fd root-5.34.05.tar.gz
More information about the scm-commits
mailing list