[root/el5] Rebuild for xrootd 3.3

Mattias Ellert ellert at fedoraproject.org
Fri Mar 8 13:22:30 UTC 2013


commit 8faae32f8201773d80c165f7556a0e4b470123dd
Author: Mattias Ellert <mattias.ellert at fysast.uu.se>
Date:   Fri Mar 8 13:20:42 2013 +0100

    Rebuild for xrootd 3.3
    
    - Backport gfal fixes

 root-gfal-bits.patch |   61 +++
 root-qt.patch        |   25 +
 root-xrootd.patch    | 1322 ++++++++++++++++++++++++++++++++++++++++++++++++--
 root.spec            |   33 +-
 4 files changed, 1397 insertions(+), 44 deletions(-)
---
diff --git a/root-gfal-bits.patch b/root-gfal-bits.patch
new file mode 100644
index 0000000..050e522
--- /dev/null
+++ b/root-gfal-bits.patch
@@ -0,0 +1,61 @@
+diff -ur root-5.28.00h.orig/config/Makefile.in root-5.28.00h/config/Makefile.in
+--- root-5.28.00h.orig/config/Makefile.in	2011-11-24 17:12:55.000000000 +0100
++++ root-5.28.00h/config/Makefile.in	2013-03-02 08:09:02.230002472 +0100
+@@ -154,6 +154,7 @@
+ GFALLIBDIR     := @gfallibdir@
+ GFALCLILIB     := @gfallib@
+ GFALINCDIR     := $(filter-out /usr/include, @gfalincdir@)
++SRMIFCEINCDIR  := $(filter-out /usr/include, @srmifceincdir@)
+ 
+ BUILDGLITE     := @buildglite@
+ GLITELIBDIR    := @glitelibdir@
+diff -ur root-5.28.00h.orig/configure root-5.28.00h/configure
+--- root-5.28.00h.orig/configure	2011-11-24 17:12:57.000000000 +0100
++++ root-5.28.00h/configure	2013-03-02 08:10:33.684863607 +0100
+@@ -1426,6 +1426,7 @@
+   gviz-incdir        Graphviz support, location of gvc.h
+   gviz-libdir        Graphviz support, location of libgvplugin_core
+   gfal-incdir        GFAL support, location of gfal_api.h
++  srm-ifce-incdir    GFAL support, location of gfal_srm_ifce_types.h
+   gfal-libdir        GFAL support, location of libgfal
+   glew-incdir        GLEW support, location of glew.h
+   glew-libdir        GLEW support, location of libGLEW
+@@ -1733,6 +1734,7 @@
+       --with-gviz-libdir=*)    gvizlibdir=$optarg    ; enable_gviz="yes"    ;;
+       --with-gfal-incdir=*)    gfalincdir=$optarg    ; enable_gfal="yes"    ;;
+       --with-gfal-libdir=*)    gfallibdir=$optarg    ; enable_gfal="yes"    ;;
++      --with-srm-ifce-incdir=*) srmifceincdir=$optarg;;
+       --with-glew-incdir=*)    glewincdir=$optarg    ; enable_builtin_glew=no;;
+       --with-glew-libdir=*)    glewlibdir=$optarg    ; enable_builtin_glew=no;;
+       --with-gsl-incdir=*)     gslincdir=$optarg     ; enable_gsl="yes"     ;;
+@@ -3199,6 +3201,12 @@
+     gfallib=$found_lib
+     gfallibdir=$found_dir
+ 
++    check_header "gfal_srm_ifce_types.h" "$srmifceincdir" \
++        /opt/lcg/include /opt/srm-ifce/include /usr/local/lcg/include \
++        /usr/local/srm-ifce/include
++    srmifceinc=$found_hdr
++    srmifceincdir=$found_dir
++
+     if test "x$gfalincdir" = "x" || test "x$gfallib" = "x"; then
+         enable_gfal="no"
+     fi
+@@ -6341,6 +6349,7 @@
+     -e "s|@exceptions@|$enable_exceptions|"     \
+     -e "s|@explicitlink@|$enable_explicitlink|" \
+     -e "s|@gfalincdir@|$gfalincdir|"            \
++    -e "s|@srmifceincdir@|$srmifceincdir|"      \
+     -e "s|@gfallib@|$gfallib|"                  \
+     -e "s|@gfallibdir@|$gfallibdir|"            \
+     -e "s|@enable_xft@|$enable_xft|"            \
+diff -ur root-5.28.00h.orig/io/gfal/Module.mk root-5.28.00h/io/gfal/Module.mk
+--- root-5.28.00h.orig/io/gfal/Module.mk	2011-11-24 17:12:56.000000000 +0100
++++ root-5.28.00h/io/gfal/Module.mk	2013-03-02 08:04:00.349761906 +0100
+@@ -70,3 +70,6 @@
+ ##### extra rules ######
+ $(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-qt.patch b/root-qt.patch
new file mode 100644
index 0000000..353b6fb
--- /dev/null
+++ b/root-qt.patch
@@ -0,0 +1,25 @@
+diff -ur root-5.28.00h.orig/configure root-5.28.00h/configure
+--- root-5.28.00h.orig/configure	2011-11-24 17:12:57.000000000 +0100
++++ root-5.28.00h/configure	2013-03-02 12:52:21.823338782 +0100
+@@ -2955,21 +2955,6 @@
+             check_library "libQt3Support Qt3Support Qt3Support$qt4suffix Qt3Support4" \
+                 "$enable_shared" "$found_raw_dir" ""
+             qtlib="$qtlib $found_lib"
+-            check_library "libQtOpenGL QtOpenGL QtOpenGL$qt4suffix QtOpenGL4" \
+-                "$enable_shared" "$found_raw_dir" ""
+-            qtlib="$qtlib $found_lib"
+-            check_library "libQtSvg QtSvg QtSvg$qt4suffix QtSvg4" \
+-                "$enable_shared" "$found_raw_dir" ""
+-            qtlib="$qtlib $found_lib"
+-            check_library "libQtXml QtXml QtXml$qt4suffix QtXml4" \
+-                "$enable_shared" "$found_raw_dir" ""
+-            qtlib="$qtlib $found_lib"
+-            check_library "libQtWebKit QtWebKit QtWebKit$qt4suffix QtWebKit4" \
+-                "$enable_shared" "$found_raw_dir" ""
+-            qtlib="$qtlib $found_lib"
+-            check_library "libQtNetwork QtNetwork QtNetwork$qt4suffix QtNetwork4" \
+-                "$enable_shared" "$found_raw_dir" ""
+-            qtlib="$qtlib $found_lib"
+         else
+             qtinc=
+             qtmainincdir=
diff --git a/root-xrootd.patch b/root-xrootd.patch
index 7e02e05..77bded2 100644
--- a/root-xrootd.patch
+++ b/root-xrootd.patch
@@ -1,10 +1,402 @@
-diff -ur root-5.28.00c.orig/configure root-5.28.00c/configure
---- root-5.28.00c.orig/configure	2011-04-15 17:34:20.000000000 +0200
-+++ root-5.28.00c/configure	2011-04-23 13:02:29.385052080 +0200
-@@ -4307,13 +4307,14 @@
-     if test "x$externalxrd" = "xyes"; then
-        buildxrd="no"
-        # Check if bonjour is available for code potentially using it ...
+diff -Nur root-5.28.00h.orig/config/Makefile.in root-5.28.00h/config/Makefile.in
+--- root-5.28.00h.orig/config/Makefile.in	2011-11-24 17:12:55.000000000 +0100
++++ root-5.28.00h/config/Makefile.in	2013-03-08 11:54:45.058375695 +0100
+@@ -241,12 +241,12 @@
+ XMLINCDIR      := $(filter-out /usr/include, @xmlincdir@)
+ 
+ HASXRD         := @hasxrd@
+-BUILDXRD       := @buildxrd@
+ XRDINCDIR      := @xrdincdir@
+ XRDLIBDIR      := @xrdlibdir@
+-XRDADDOPTS     := @xrdaddopts@
+ EXTRA_XRDFLAGS := @extraxrdflags@
+ XRDVERSION     := @xrdversion@
++HASXRDUTILS    := @hasxrdutils@
++XRDINCPRIVATE  := @xrdincprivate@
+ 
+ SRPLIBDIR      := @srplibdir@
+ SRPLIB         := @srplib@
+@@ -284,7 +284,6 @@
+ GLOBUSLIB      := @globuslib@
+ GLOBUSLIBDIR   := @globuslibdir@
+ GLOBUSINCDIR   := $(filter-out /usr/include, @globusincdir@)
+-BUILDXRDGSI    := @buildxrdgsi@
+ 
+ BUILDMONALISA  := @buildmonalisa@
+ MONALISALIBDIR := @monalisalibdir@
+diff -Nur root-5.28.00h.orig/configure root-5.28.00h/configure
+--- root-5.28.00h.orig/configure	2011-11-24 17:12:57.000000000 +0100
++++ root-5.28.00h/configure	2013-03-08 11:54:41.987349372 +0100
+@@ -1385,7 +1385,7 @@
+   winrtdebug         Link against the Windows debug runtime library
+   x11                X11 support
+   xml                XML parser interface
+-  xrootd             Build xrootd file server and its client (if supported)
++  xrootd             Build xrootd-dependent plugins for remote file access and PROOF (if supported)
+   xft                Xft support (X11 antialiased fonts)
+ 
+ minimal set of libraries, can be combined with above --enable-... options
+@@ -1484,10 +1484,9 @@
+   xpm-libdir         XPM support, path to libXpm
+   xft-libdir         Xft support, path to libXft
+   xext-libdir        Xext support, path to libXext
+-  xrootd             XROOTD support, path to external XROOTD distribution
+-  xrootd-incdir      XROOTD support, path to external XROOTD header files (XrdVersion.hh, ...)
+-  xrootd-libdir      XROOTD support, path to external XROOTD libraries
+-  xrootd-opts        XROOTD support, additional options to be passed to XROOTD-configure
++  xrootd             XROOTD support, path to XROOTD distribution
++  xrootd-incdir      XROOTD support, path to XROOTD header files (XrdVersion.hh, ...)
++  xrootd-libdir      XROOTD support, path to XROOTD libraries (libXrdClient, ...)
+ 
+ with compiler options, prefix with --with-, overrides default value
+ 
+@@ -1792,7 +1791,6 @@
+       --with-xft-libdir=*)     xftlibdir=$optarg     ;;
+       --with-xext-libdir=*)    xextlibdir=$optarg    ;;
+       --with-xrootd=*)         xrootddir=$optarg     ; enable_xrootd="yes"  ;;
+-      --with-xrootd-opts=*)    xrdaddopts=$optarg    ; enable_xrootd="yes"  ;;
+       --with-xrootd-incdir=*)  xrdincdir=$optarg     ; enable_xrootd="yes"  ;;
+       --with-xrootd-libdir=*)  xrdlibdir=$optarg     ; enable_xrootd="yes"  ;;
+       --with-cc=*)             altcc=$optarg         ;;
+@@ -4138,81 +4136,97 @@
+ #
+ ### echo %%% Check for xrootd support
+ #
+-message "Checking whether to build xrootd"
+-xrdcomm=""
+-vercomm=
+-
+-# If we are required to use an external XROOTD distribution
+-# we just define the pointers
+-extraxrdflags="-DUSENEWHDRS"
+-
+-# Check if we are asked to use an external XROOTD; priority to specific
+-# inc and lib settings
+-externalxrd="no"
+-if test ! "x$xrdlibdir" = "x" && test ! "x$xrdincdir" = "x"; then
+-   externalxrd="yes"
+-   xrdcomm="no, using xrootd at $xrdlibdir, $xrdincdir"
+-   if test ! -f "$xrdincdir/XrdVersion.hh" ; then
+-      enable_xrootd="no"
+-      xrdcomm="no, asked to use installation at $xrdincdir, but version file missing: disabling"
+-      xrdincdir=""
+-      xrdlibdir=""
+-   fi
+-elif test ! "x$xrootddir" = "x"; then
+-   externalxrd="yes"
++if test "x$enable_xrootd" = "xyes" ; then
++   xrdcomm=""
++   vercomm=""
++   extraxrdflags=""
++   
++   # Localize the version header; priority to specific inc and lib settings,
++   # followed by global dir setting and standard paths
++   xrdincone=""
++   xrdinctwoa=""
++   xrdinctwob=""
++   xrdinctmp=""
+    if test ! "x$xrdlibdir" = "x" && test ! "x$xrdincdir" = "x"; then
+-      xrdcomm="no, using xrootd at $xrdlibdir, $xrdincdir"
+-      if test ! -f "$xrdincdir/XrdVersion.hh" ; then
+-         enable_xrootd="no"
+-         xrdcomm="no, asked to use installation at $xrdincdir, but version file missing: disabling"
+-         xrdincdir=""
+-         xrdlibdir=""
+-      fi
++      xrdincone="$xrdincdir/XrdVersion.hh"
++      xrdlibone="$xrdlibdir"
++      xrdinctmp="$xrdincdir $xrdinctmp"
+    elif test ! "x$xrootddir" = "x"; then
+-      xrdlibdir="$xrootddir/lib"
+-      xrdcomm="no, using xrootd at $xrootddir"
+-      if test -f "$xrootddir/include/xrootd/XrdVersion.hh" ; then
+-         xrdincdir="$xrootddir/include/xrootd"
+-      elif test -f "$xrootddir/src/XrdVersion.hh" ; then
+-         xrdincdir="$xrootddir/src"
++      xrdlibtwo="$xrootddir"
++      xrdinctwoa="$xrootddir/include/xrootd/XrdVersion.hh"
++      xrdinctwob="$xrootddir/src/XrdVersion.hh"
++      xrdinctmp="$xrootddir/include/xrootd $xrootddir/src $xrdinctmp"
++   else
++      # Standard paths
++      xrdpaths="$XRDSYS /opt/xrootd /usr/local /usr"
++      for stdp in $xrdpaths ; do
++         if test -d "$stdp/lib" || test -d "$stdp/lib64" ; then
++            xrdlibthree="$xrdlibthree $stdp/lib"
++            xrdinctmp="$xrdinctmp $stdp/include/xrootd $stdp/include"
++         fi
++      done
++   fi
++   # Run the search now
++   check_header "XrdVersion.hh" "" "$xrdinctmp"
++   if test ! "x$found_hdr" = "x" ; then
++      xrdinc="$found_dir/$found_hdr"
++      # Find out which path was the good one
++      if test "x$xrdinc" = "x$xrdincone" ; then 
++         xrdincdir="$found_dir"
++         xrdlibdir="$xrdlibone"
++      elif test "x$xrdinc" = "x$xrdinctwoa" ; then 
++         xrdincdir="$xrdlibtwo/include/xrootd"
++         xrdlibdir="$xrdlibtwo/lib"
++      elif test "x$xrdinc" = "x$xrdinctwob" ; then 
++         xrdincdir="$xrdlibtwo/src"
++         xrdlibdir="$xrdlibtwo/lib"
+       else
+-         enable_xrootd="no"
+-         xrdcomm="no, asked to use installation at $xrootddir, but version file missing: disabling"
+-         xrdincdir=""
+-         xrdlibdir=""
++         for ll in $xrdlibthree ; do
++            rdir=`dirname $ll`
++            xinca="$rdir/include/xrootd/XrdVersion.hh"
++            xincb="$rdir/include/XrdVersion.hh"
++            if test "x$xrdinc" = "x$xinca" ; then 
++               xrdincdir="$rdir/include/xrootd"
++               xrdlibdir="$ll"
++            elif test "x$xrdinc" = "x$xincb" ; then 
++               xrdincdir="$rdir/include"
++               xrdlibdir="$ll"
++            fi
++            if test ! "x$xrdincdir" = "x" ; then
++               break
++            fi
++         done
++         # Only here if something inconsistent was found
++         if test "x$xrdincdir" = "x" ; then
++            enable_xrootd="no"
++            xrdincdir=""
++            xrdlibdir=""
++         fi
+       fi
++   else
++      enable_xrootd="no"
++      xrdincdir=""
++      xrdlibdir=""
+    fi
+ fi
++
+ # Decode version
+ xrdver=
+ decver=0
+-if test ! "x$enable_xrootd" = "xno" ; then
++if test "x$enable_xrootd" = "xyes" ; then
+ 
+-   newver="no"
+-   if test "x$externalxrd" = "xyes"; then
+-      verh=$xrdincdir/XrdVersion.hh
+-   else
+-      newver="yes"
+-      verh=$top_srcdir/net/xrootd/src/xrootd/VERSION_INFO
+-      if test ! -f $verh ; then
+-         newver="no"
+-         verh=$top_srcdir/net/xrootd/src/xrootd/src/XrdVersion.hh
+-      fi
+-   fi
+-   xrdver="unknown"
+-   if test "x$newver" = "xyes" ; then
+-      xrdver=`grep RefNames $verh`
+-      if test $? -eq 0 ; then
+-         set $xrdver
+-         xrdver=`echo $4 | sed -e 's|,||'`
+-      fi
++   message "Checking for xrootd version"
++
++   verh=$xrdincdir/XrdVersion.hh
++
++   xrdver=`grep XrdVERSION $verh`
++   if test $? -eq 0 ; then
++      set $xrdver
++      xrdver=$3
+    else
+-      xrdver=`grep XrdVERSION $verh`
+-      if test $? -eq 0 ; then
+-         set $xrdver
+-         xrdver=$3
+-      fi
++      xrdver="unknown"
+    fi
++
+    if test ! "x$xrdver" = "xunknown"; then
+       tmpver=`echo $xrdver | sed -e 's|"\(.*\)"|\1|' -e 's|^v||' -e 's|-.*||'`
+       if test "x$tmpver" = "xuntagged" ; then
+@@ -4241,117 +4255,96 @@
+ 	 fi
+       fi
+    fi
++   # 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
+-bjrcomm=
+-if test "x$enable_xrootd" = "xyes" && test "x$externalxrd" = "xyes"; then
+ 
+-   if test "x$enable_xrootd" = "xyes" ; then
++xrdincprivate="no"
++if test "x$enable_xrootd" = "xyes" ; then
+ 
+-      # Check version
+-      decrefone=20070628
+-      decreftwo=20070723
+-      decrefthree=20071004
+-      if [ $decver -gt $decrefone ] ; then
+-         if [ $decver -gt $decrefthree ] ; then
+-            xrdcomm="$xrdcomm"
+-            extraxrdflags="$extraxrdflags"
+-         elif [ $decver -gt $decreftwo ] ; then
+-            vercomm=" (>$decreftwo, <=$decrefthree: setting -DOLDXRDLOCATE)"
+-            extraxrdflags="-DOLDXRDLOCATE $extraxrdflags"
+-         else
+-            vercomm=" (>$decrefone, <=$decreftwo: setting -DOLDXRDLOCATE -DOLDXRDOUC)"
+-            extraxrdflags="-DOLDXRDOUC -DOLDXRDLOCATE $extraxrdflags"
+-         fi
++   extraxrdflags="-DROOTXRDVERS=$decver"
++   vercomm="setting $extraxrdflags"
++
++   #
++   # Check libraries now
++   hasxrdutils="no"
++   libxrdoucbjr=""
++   # 
++   # Release date of version 3.1.0 containing the new lib packaging
++   decreftre=300000000
++   decrefutils=300010000
++   if [ $decver -lt $decreftre ] ; then
++      decrefutils=20111021
++   fi
++   decrefnetut=20100729
++   if [ $decver -ge $decrefutils ] ; then
++      xrdlibs="libXrdMain libXrdUtils libXrdClient" 
++      hasxrdutils="yes"
++   elif [ $decver -ge $decrefnetut ] ; then
++      xrdlibs="libXrdNet libXrdNetUtil libXrdOuc libXrdSys libXrdClient libXrd" 
++   else
++      xrdlibs="libXrdNet libXrdOuc libXrdSys libXrdClient libXrd" 
++   fi
++   tmpxrdlibdir=""
++   xrdlibext=""
++   for ll in $xrdlibs ; do 
++      #
++      # Check if packaging has libXrdUtils or the old libXrdOuc, libXrdSys, ...
++      check_library $ll "$enable_shared" "$xrdlibdir" "$xrdlibdir"
++      if test "x$found_lib" = "x" ; then
++         enable_xrootd="no"
++         xrdincdir=""
++         xrdlibdir=""
++         break
+       else
+-         vercomm=" (<= $decrefone: setting -DOLDXRDLOCATE -DOLDXRDOUC -DOLDXRCPHYCONN)"
+-         extraxrdflags="-DOLDXRCPHYCONN -DOLDXRDOUC -DOLDXRDLOCATE $extraxrdflags"
++         xrdlibext="$found_ext"
++         tmpxrdlibdir="$found_dir"
++         if test "x$ll" = "xlibXrdUtils" || test "x$ll" = "xlibXrdOuc"; then
++            libxrdoucbjr="$found_lib"
++         fi
+       fi
++   done
++
++   #
++   # If not 'so' or 'a', comunicate the extension for the library loadings
++   # in XrdProofd. This may be temporary, as xrootd may do it automatically,
++   # one day ...
++   if test ! "x$xrdlibext" = "x" && test ! "x$xrdlibext" = "xso" && test ! "x$xrdlibext" = "xa"; then
++      # The \'s are needed to produce -DLT_MODULE_EXT=\".ext\" in Makefile.config
++      extraxrdflags="$extraxrdflags -DLT_MODULE_EXT=\\\\\".$xrdlibext\\\\\""
+    fi
+ 
+-else
+-   if test "x$enable_xrootd" = "x" && test "x$DEFAULTENABLE" = "xno"; then
+-       enable_xrootd="no"
+-       xrdincdir=""
+-       xrdlibdir=""
+-   else
+-       # Xrootd and its client need thread support
+-       if test "x$enable_thread" = "xyes"; then
+-           # Ok, now check the architecture
+-           case $arch in
+-           # xrootd does not build on all platforms yet
+-           linux*)
+-               if test "x$enable_xrootd" = "x"; then
+-                   enable_xrootd="yes"
+-               fi
+-               ;;
+-           macos*)
+-               if test "x$enable_xrootd" = "x"; then
+-                   enable_xrootd="yes"
+-               fi
+-               ;;
+-           solaris*)
+-               if test "x$enable_xrootd" = "x"; then
+-                   enable_xrootd="yes"
+-               fi
+-               ;;
+-           win32)
+-               if test "x$enable_xrootd" = "x"; then
+-                   enable_xrootd="yes"
+-               fi
+-               ;;
+-           *)
+-               if test "x$enable_xrootd" = "xyes"; then
+-                   enable_xrootd="yes"
+-                   xrdcomm=", but not officially supported"
+-               else
+-                   enable_xrootd="no"
+-               fi
+-               xrdincdir=""
+-               xrdlibdir=""
+-               ;;
+-           esac
+-       else
+-           if test "x$enable_xrootd" = "xyes"; then
+-               enable_xrootd="no"
+-               xrdcomm=", needs thread support (make sure pthread lib is found)"
+-           else
+-               enable_xrootd="no"
+-           fi
+-           xrdincdir=""
+-           xrdlibdir=""
+-       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
+ 
+-   xrdcomm="$enable_xrootd$xrdcomm"
++   #
++   # Check if bonjour is available for code potentially using it ...
++   if test "x$enable_xrootd" = "xyes"; then
++      xrdlibdir="$tmpxrdlibdir"
++      if test "x$enable_bonjour" = "xyes"; then
++         # This check is broken. The xrootd libraries are C++ hence their
++         # symbol names are mangled. The check_symbol macro is designed
++         # to check for unmangled symbol names in C libraries.
++         # check_symbol XrdOucBonjour "$libxrdoucbjr" "$xrdlibdir"
++         # if test  $found_symbol -eq 0 ; then
++         #    bonjourcppflags=
++         # fi
++         bonjourcppflags=
++      fi
++   fi
+ fi
+ 
+-xrdcomm="$xrdcomm"
+-result $xrdcomm
+-if test "x$enable_xrootd" = "xyes"; then
+-    hasxrd=""
+-    hasnotxrd="#"
+-    message "Checking for xrootd version"
+-    result "$xrdver $vercomm"
+-    buildxrd="yes"
+-    if test "x$externalxrd" = "xyes"; then
+-       buildxrd="no"
+-       # Check if bonjour is available for code potentially using it ...
 -       if test "x$enable_bonjour" = "xyes"; then
 -          check_symbol XrdOucBonjour "libXrdOuc.a" "$xrdlibdir"
 -          if test  $found_symbol -eq 0 ; then
@@ -12,21 +404,291 @@ diff -ur root-5.28.00c.orig/configure root-5.28.00c/configure
 -             bonjourcppflags=
 -          fi
 -       fi
-+       ## This test is broken and will always fail.
-+       ##if test "x$enable_bonjour" = "xyes"; then
-+       ##   check_symbol XrdOucBonjour "libXrdOuc.a" "$xrdlibdir"
-+       ##   if test  $found_symbol -eq 0 ; then
-+       ##      bjrcomm="External xrootd has no bonjour support: disabling bonjour in XrdProofd"
-+       ##      bonjourcppflags=
-+       ##   fi
-+       ##fi
-     fi
+-    fi
+-else
+-    buildxrd="no"
+-    hasxrd="#"
+-    hasnotxrd=""
+-fi
+-if test ! "x$bjrcomm" = "x"; then
+-   echo "$bjrcomm"
+-fi
+ check_explicit "$enable_xrootd" "$enable_xrootd_explicit" \
+      "Explicitly required Xrootd dependencies not fulfilled"
+ 
+@@ -4364,11 +4357,6 @@
+ # If the user has set the flags "--disable-globus", we don't check for
+ # Globus at all.
+ #
+-# By default, always try to build the XRD GSI plug-in; this can be
+-# disabled with
+-#                  --with-xrootd-opts="--disable-gsi"
+-buildxrdgsi="yes"
+-#
+ glbextracflags=""
+ glbpatchcflags=""
+ haveglobus=""
+@@ -6282,7 +6270,6 @@
+     -e "s|@buildglew@|$enable_builtin_glew|"    \
+     -e "s|@builtinfreetype@|$enable_builtin_freetype|"      \
+     -e "s|@builtinpcre@|$enable_builtin_pcre|"  \
+-    -e "s|@buildxrd@|$buildxrd|"                \
+     -e "s|@hasxrd@|$enable_xrootd|"             \
+     -e "s|@castorincdir@|$castorincdir|"        \
+     -e "s|@castorlib@|$castorlib|"              \
+@@ -6467,10 +6454,11 @@
+     -e "s|@x11libdir@|$x11libdir|"              \
+     -e "s|@xpmlib@|$xpmlib|"                    \
+     -e "s|@xpmlibdir@|$xpmlibdir|"              \
+-    -e "s|@xrdaddopts@|$xrdaddopts|"            \
+     -e "s|@xrdlibdir@|$xrdlibdir|"              \
+     -e "s|@xrdincdir@|$xrdincdir|"              \
++    -e "s|@xrdincprivate@|$xrdincprivate|"      \
+     -e "s|@xrdversion@|$decver|"                \
++    -e "s|@hasxrdutils@|$hasxrdutils|"          \
+     -e "s|@cursesincdir@|$cursesincdir|"        \
+     -e "s|@curseshdr@|$curseshdr|"              \
+     -e "s|@curseslib@|$curseslib|"              \
+@@ -6508,7 +6496,6 @@
+     -e "s|@buildsrputil@|$enable_srputil|"      \
+     -e "s|@buildkrb5@|$enable_krb5|"            \
+     -e "s|@buildglobus@|$enable_globus|"        \
+-    -e "s|@buildxrdgsi@|$buildxrdgsi|"          \
+     -e "s|@buildclarens@|$enable_clarens|"      \
+     -e "s|@buildpeac@|$buildpeac|"              \
+     -e "s|@buildafdsmgrd@|$enable_afdsmgrd|"    \
+diff -Nur root-5.28.00h.orig/net/netx/Module.mk root-5.28.00h/net/netx/Module.mk
+--- root-5.28.00h.orig/net/netx/Module.mk	2011-11-24 17:12:53.000000000 +0100
++++ root-5.28.00h/net/netx/Module.mk	2013-03-08 11:54:43.607363254 +0100
+@@ -51,15 +51,21 @@
+ # Xrootd includes
+ NETXINCEXTRA := $(XROOTDDIRI:%=-I%)
+ ifneq ($(EXTRA_XRDFLAGS),)
+-NETXINCEXTRA += -Iproof/proofd/inc
++NETXINCEXTRA += -I$(ROOT_SRCDIR)/proof/proofd/inc
++endif
++ifeq ($(XRDINCPRIVATE),yes)
++NETXINCEXTRA += -I$(XRDINCDIR)/private
+ endif
+ 
+ # Xrootd client libs
+ ifeq ($(PLATFORM),win32)
+ NETXLIBEXTRA += $(XROOTDDIRL)/libXrdClient.lib
  else
-     buildxrd="no"
-diff -ur root-5.28.00c.orig/proof/proofd/Module.mk root-5.28.00c/proof/proofd/Module.mk
---- root-5.28.00c.orig/proof/proofd/Module.mk	2011-04-15 17:33:43.000000000 +0200
-+++ root-5.28.00c/proof/proofd/Module.mk	2011-04-23 13:51:01.294607207 +0200
-@@ -115,12 +115,10 @@
+-NETXLIBEXTRA += -L$(XROOTDDIRL) -lXrdOuc -lXrdSys \
+-                -lXrdClient
++ifeq ($(HASXRDUTILS),no)
++NETXLIBEXTRA += $(XROOTDDIRL) -lXrdOuc -lXrdSys -lXrdClient
++else
++NETXLIBEXTRA += $(XROOTDDIRL) -lXrdUtils -lXrdClient
++endif
+ endif
+ 
+ ##### local rules #####
+diff -Nur root-5.28.00h.orig/net/netx/src/TXNetFile.cxx root-5.28.00h/net/netx/src/TXNetFile.cxx
+--- root-5.28.00h.orig/net/netx/src/TXNetFile.cxx	2011-11-24 17:12:53.000000000 +0100
++++ root-5.28.00h/net/netx/src/TXNetFile.cxx	2013-03-08 11:54:22.638183476 +0100
+@@ -56,6 +56,7 @@
+ #include "TVirtualPerfStats.h"
+ 
+ #include <XrdClient/XrdClient.hh>
++#include <XrdClient/XrdClientConn.hh>
+ #include <XrdClient/XrdClientConst.hh>
+ #include <XrdClient/XrdClientEnv.hh>
+ #include <XProtocol/XProtocol.hh>
+diff -Nur root-5.28.00h.orig/proof/proofd/inc/XpdObject.h root-5.28.00h/proof/proofd/inc/XpdObject.h
+--- root-5.28.00h.orig/proof/proofd/inc/XpdObject.h	1970-01-01 01:00:00.000000000 +0100
++++ root-5.28.00h/proof/proofd/inc/XpdObject.h	2013-03-08 11:54:41.991349396 +0100
+@@ -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
+diff -Nur root-5.28.00h.orig/proof/proofd/inc/XrdProofdProofServMgr.h root-5.28.00h/proof/proofd/inc/XrdProofdProofServMgr.h
+--- root-5.28.00h.orig/proof/proofd/inc/XrdProofdProofServMgr.h	2011-11-24 17:12:38.000000000 +0100
++++ root-5.28.00h/proof/proofd/inc/XrdProofdProofServMgr.h	2013-03-08 11:54:29.736244390 +0100
+@@ -46,6 +46,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;
+@@ -159,6 +162,8 @@
+    std::list<XrdProofdProofServ *> fActiveSessions;     // List of active sessions (non-idle)
+    std::list<XpdClientSessions *> *fRecoverClients; // List of client potentially recovering
+ 
++   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);
+@@ -252,8 +257,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 -Nur root-5.28.00h.orig/proof/proofd/inc/XrdProofdProtocol.h root-5.28.00h/proof/proofd/inc/XrdProofdProtocol.h
+--- root-5.28.00h.orig/proof/proofd/inc/XrdProofdProtocol.h	2011-11-24 17:12:38.000000000 +0100
++++ root-5.28.00h/proof/proofd/inc/XrdProofdProtocol.h	2013-03-08 11:54:41.991349396 +0100
+@@ -41,10 +41,10 @@
+ #  include "XrdSys/XrdSysPthread.hh"
+ #endif
+ #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;
+@@ -133,7 +133,7 @@
+    //
+    // Protocol variables
+ 
+-   XrdObject<XrdProofdProtocol>  fProtLink;
++   XpdObject                     fProtLink;
+    XrdBuffer                    *fArgp;
+ 
+    XrdLink                      *fLink;
+@@ -178,7 +178,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
+diff -Nur root-5.28.00h.orig/proof/proofd/Module.mk root-5.28.00h/proof/proofd/Module.mk
+--- root-5.28.00h.orig/proof/proofd/Module.mk	2011-11-24 17:12:38.000000000 +0100
++++ root-5.28.00h/proof/proofd/Module.mk	2013-03-08 11:54:41.992349404 +0100
+@@ -46,10 +46,10 @@
+ XPDLIB       := $(LPATH)/libXrdProofd.$(SOEXT)
+ 
+ # Extra include paths and libs
+-XPDINCEXTRA    := $(XROOTDDIRI:%=-I%)
+-XPDINCEXTRA    += $(PROOFDDIRI:%=-I%)
++XPDINCEXTRA  := $(XROOTDDIRI:%=-I%)
++XPDINCEXTRA  += $(PROOFDDIRI:%=-I%)
+ 
+-XPDLIBEXTRA  += $(XROOTDDIRL)/libXrdClient.lib
++XPDLIBEXTRA  := $(XROOTDDIRL)/libXrdClient.lib
+ 
+ # used in the main Makefile
+ PROOFDEXEH   := $(MODDIRI)/proofdp.h
+@@ -110,18 +110,24 @@
+ 
+ # Extra include paths and libs
+ XPROOFDEXELIBS :=
+-XPROOFDEXESYSLIBS := $(DNSSDLIB)
+-XPROOFDEXE     :=
++XPROOFDEXESYSLIBS :=
++XPROOFDEXE     := bin/xproofd
  ifeq ($(HASXRD),yes)
  XPDINCEXTRA    := $(XROOTDDIRI:%=-I%)
  XPDINCEXTRA    += $(PROOFDDIRI:%=-I%)
@@ -36,14 +698,24 @@ diff -ur root-5.28.00c.orig/proof/proofd/Module.mk root-5.28.00c/proof/proofd/Mo
 -                  $(XROOTDDIRL)/libXrdNet.a \
 -                  $(XROOTDDIRL)/libXrdOuc.a \
 -                  $(XROOTDDIRL)/libXrdSys.a $(XROOTDDIRL)/libXrdSut.a
-+XPDLIBEXTRA    += -L$(XROOTDDIRL) -lXrd -lXrdClient -lXrdSut \
-+                  -lXrdNet -lXrdOuc -lXrdSys $(DNSSDLIB)
-+XPROOFDEXELIBS := -L$(XROOTDDIRL) -lXrd -lXrdClient -lXrdSut \
-+                  -lXrdNet -lXrdOuc -lXrdSys
- # Starting from Jul 2010 XrdNet has been split in two libs: XrdNet and XrdNetUtil;
+-# Starting from Jul 2010 XrdNet has been split in two libs: XrdNet and XrdNetUtil;
++ifeq ($(XRDINCPRIVATE),yes)
++XPDINCEXTRA    += -I$(XRDINCDIR)/private
++endif
++
++
++ifeq ($(HASXRDUTILS),no)
++
++XPDLIBEXTRA    += $(XROOTDDIRL) -lXrdClient -lXrdNet -lXrdOuc \
++                  -lXrdSys -lXrdSut
++XPROOFDEXELIBS := $(XROOTDDIRL) -lXrd -lXrdClient -lXrdNet -lXrdOuc \
++                  -lXrdSys -lXrdSut
++# Starting from Jul 2010 XrdNet has been split in two libs:
++#    XrdNet and XrdNetUtil
  # both are needed
  XRDNETUTIL     :=
-@@ -130,8 +128,8 @@
+ ifneq ($(XRDVERSION),)
+@@ -130,15 +136,22 @@
                            fi)
  endif
  ifeq ($(XRDNETUTIL),yes)
@@ -51,15 +723,601 @@ diff -ur root-5.28.00c.orig/proof/proofd/Module.mk root-5.28.00c/proof/proofd/Mo
 -XPROOFDEXELIBS += $(XROOTDDIRL)/libXrdNetUtil.a
 +XPDLIBEXTRA    += -lXrdNetUtil
 +XPROOFDEXELIBS += -lXrdNetUtil
++endif
++
++else
++
++XPDLIBEXTRA    += $(XROOTDDIRL) -lXrdClient -lXrdUtils
++XPROOFDEXELIBS := $(XROOTDDIRL) -lXrdMain -lXrdClient -lXrdUtils
++
  endif
  XPDLIBEXTRA    +=  $(DNSSDLIB)
++XPROOFDEXELIBS +=  $(DNSSDLIB)
+ 
+ ifeq ($(PLATFORM),solaris)
+ XPROOFDEXESYSLIBS := -lsendfile
+ endif
+-XPROOFDEXE     := bin/xproofd
+ endif
+ 
+ # used in the main Makefile
+@@ -162,12 +175,15 @@
+ include/%.h:    $(PROOFDDIRI)/%.h
+ 		cp $< $@
  
-@@ -166,7 +164,7 @@
+-$(PROOFDEXE):   $(PROOFDEXEO) $(RSAO) $(SNPRINTFO) $(GLBPATCHO) $(RPDUTILO) $(STRLCPYO)
++$(PROOFDEXE):   $(PROOFDEXEO) $(RSAO) $(SNPRINTFO) $(GLBPATCHO) $(RPDUTILO) \
++                $(STRLCPYO)
  		$(LD) $(LDFLAGS) -o $@ $(PROOFDEXEO) $(RPDUTILO) $(GLBPATCHO) \
- 		   $(RSAO) $(SNPRINTFO) $(CRYPTLIBS) $(AUTHLIBS) $(STRLCPYO) $(SYSLIBS)
+-		   $(RSAO) $(SNPRINTFO) $(CRYPTLIBS) $(AUTHLIBS) $(STRLCPYO) $(SYSLIBS)
++		   $(RSAO) $(SNPRINTFO) $(CRYPTLIBS) $(AUTHLIBS) $(STRLCPYO) \
++		   $(SYSLIBS)
  
--$(XPROOFDEXE):  $(XPDO) $(XPROOFDEXELIBS) $(XRDPROOFXD)
-+$(XPROOFDEXE):  $(XPDO) $(XRDPROOFXD)
- 		$(LD) $(LDFLAGS) -o $@ $(XPDO) $(XPROOFDEXELIBS) $(SYSLIBS) $(XPROOFDEXESYSLIBS)
+ $(XPROOFDEXE):  $(XPDO) $(XPROOFDEXELIBS) $(XRDPROOFXD)
+-		$(LD) $(LDFLAGS) -o $@ $(XPDO) $(XPROOFDEXELIBS) $(SYSLIBS) $(XPROOFDEXESYSLIBS)
++		$(LD) $(LDFLAGS) -o $@ $(XPDO) $(XPROOFDEXELIBS) \
++		   $(SYSLIBS) $(XPROOFDEXESYSLIBS)
  
  $(XPDLIB):      $(XPDO) $(XPDH) $(ORDER_) $(MAINLIBS) $(XRDPROOFXD)
+ 		@$(MAKELIB) $(PLATFORM) $(LD) "$(LDFLAGS)" \
+@@ -182,7 +198,8 @@
+ clean::         clean-$(MODNAME)
+ 
+ distclean-$(MODNAME): clean-$(MODNAME)
+-		@rm -f $(PROOFDDEP) $(PROOFDEXE) $(XPROOFDEXE) $(XPDDEP) $(XPDLIB)
++		@rm -f $(PROOFDDEP) $(PROOFDEXE) $(XPROOFDEXE) $(XPDDEP) \
++		  $(XPDLIB)
+ 
+ distclean::     distclean-$(MODNAME)
+ 
+diff -Nur root-5.28.00h.orig/proof/proofd/src/XpdObject.cxx root-5.28.00h/proof/proofd/src/XpdObject.cxx
+--- root-5.28.00h.orig/proof/proofd/src/XpdObject.cxx	1970-01-01 01:00:00.000000000 +0100
++++ root-5.28.00h/proof/proofd/src/XpdObject.cxx	2013-03-08 11:54:41.989349384 +0100
+@@ -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));
++}
++
+diff -Nur root-5.28.00h.orig/proof/proofd/src/XrdProofConn.cxx root-5.28.00h/proof/proofd/src/XrdProofConn.cxx
+--- root-5.28.00h.orig/proof/proofd/src/XrdProofConn.cxx	2011-11-24 17:12:38.000000000 +0100
++++ root-5.28.00h/proof/proofd/src/XrdProofConn.cxx	2013-03-08 11:55:39.849845443 +0100
+@@ -35,16 +35,16 @@
+ 
+ #include "XrdClient/XrdClientConnMgr.hh"
+ #include "XrdClient/XrdClientConst.hh"
+-#include "XrdClient/XrdClientDebug.hh"
+ #include "XrdClient/XrdClientEnv.hh"
+ #include "XrdClient/XrdClientLogConnection.hh"
+ #include "XrdClient/XrdClientPhyConnection.hh"
+ #include "XrdClient/XrdClientMessage.hh"
+ #include "XrdClient/XrdClientUrlInfo.hh"
+-#include "XrdNet/XrdNetDNS.hh"
++#include "XrdSys/XrdSysDNS.hh"
+ #include "XrdOuc/XrdOucErrInfo.hh"
+ #include "XrdOuc/XrdOucString.hh"
+ #include "XrdSec/XrdSecInterface.hh"
++#include "XrdSys/XrdSysLogger.hh"
+ 
+ // Dynamic libs
+ // Bypass Solaris ELF madness
+@@ -334,7 +334,7 @@
+ 
+    // Resolve the DNS information
+    char *haddr[10] = {0}, *hname[10] = {0};
+-   int naddr = XrdNetDNS::getAddrName(fUrl.Host.c_str(), 10, haddr, hname);
++   int naddr = XrdSysDNS::getAddrName(fUrl.Host.c_str(), 10, haddr, hname);
+ 
+    int i = 0;
+    for (; i < naddr; i++ ) {
+@@ -1223,7 +1223,7 @@
+    // for the authentication.
+    struct sockaddr_in netaddr;
+    char **hosterrmsg = 0;
+-   if (XrdNetDNS::getHostAddr((char *)fUrl.HostAddr.c_str(),
++   if (XrdSysDNS::getHostAddr((char *)fUrl.HostAddr.c_str(),
+                                 (struct sockaddr &)netaddr, hosterrmsg) <= 0) {
+       TRACE(XERR, "getHostAddr: "<< *hosterrmsg);
+       return protocol;
+diff -Nur root-5.28.00h.orig/proof/proofd/src/XrdProofdConfig.cxx root-5.28.00h/proof/proofd/src/XrdProofdConfig.cxx
+--- root-5.28.00h.orig/proof/proofd/src/XrdProofdConfig.cxx	2011-11-24 17:12:38.000000000 +0100
++++ root-5.28.00h/proof/proofd/src/XrdProofdConfig.cxx	2013-03-08 11:54:22.639183484 +0100
+@@ -28,7 +28,7 @@
+ #  include "XrdSys/XrdSysError.hh"
+ #  include "XrdSys/XrdSysLogger.hh"
+ #endif
+-#include "XrdNet/XrdNetDNS.hh"
++#include "XrdSys/XrdSysDNS.hh"
+ #include "XrdOuc/XrdOucEnv.hh"
+ #include "XrdOuc/XrdOucStream.hh"
+ #include "XrdOuc/XrdOucString.hh"
+@@ -115,7 +115,7 @@
+ 
+    // Local FQDN
+    if (fgHost.length() <= 0) {
+-      char *host = XrdNetDNS::getHostName();
++      char *host = XrdSysDNS::getHostName();
+       fgHost = host ? host : "";
+       SafeFree(host);
+    }
+diff -Nur root-5.28.00h.orig/proof/proofd/src/XrdProofdManager.cxx root-5.28.00h/proof/proofd/src/XrdProofdManager.cxx
+--- root-5.28.00h.orig/proof/proofd/src/XrdProofdManager.cxx	2011-11-24 17:12:38.000000000 +0100
++++ root-5.28.00h/proof/proofd/src/XrdProofdManager.cxx	2013-03-08 11:54:22.640183493 +0100
+@@ -32,7 +32,7 @@
+ #  include "XrdSys/XrdSysPlugin.hh"
+ #  include "XrdSys/XrdSysTimer.hh"
+ #endif
+-#include "XrdNet/XrdNetDNS.hh"
++#include "XrdSys/XrdSysDNS.hh"
+ #include "XrdOuc/XrdOucEnv.hh"
+ #include "XrdOuc/XrdOucStream.hh"
+ #include "XrdSys/XrdSysPriv.hh"
+@@ -653,7 +653,7 @@
+       }
+ 
+       // Local FQDN
+-      char *host = XrdNetDNS::getHostName();
++      char *host = XrdSysDNS::getHostName();
+       fHost = host ? host : "";
+       SafeFree(host);
+ 
+diff -Nur root-5.28.00h.orig/proof/proofd/src/XrdProofdNetMgr.cxx root-5.28.00h/proof/proofd/src/XrdProofdNetMgr.cxx
+--- root-5.28.00h.orig/proof/proofd/src/XrdProofdNetMgr.cxx	2011-11-24 17:12:38.000000000 +0100
++++ root-5.28.00h/proof/proofd/src/XrdProofdNetMgr.cxx	2013-03-08 11:54:22.642183510 +0100
+@@ -27,7 +27,7 @@
+ #include "XrdClient/XrdClientEnv.hh"
+ #include "XrdClient/XrdClientMessage.hh"
+ #include "XrdClient/XrdClientUrlInfo.hh"
+-#include "XrdNet/XrdNetDNS.hh"
++#include "XrdSys/XrdSysDNS.hh"
+ #include "XrdOuc/XrdOucStream.hh"
+ #include "XrdSys/XrdSysPlatform.hh"
+ 
+@@ -77,7 +77,7 @@
+    fRequestTO = 30;
+    fBonjourEnabled = false;
+ #if defined(BUILD_BONJOUR)
+-   char *host = XrdNetDNS::getHostName();
++   char *host = XrdSysDNS::getHostName();
+    fBonjourName = host ? host : "";
+    SafeFree(host);
+    fBonjourCores = XrdProofdAux::GetNumCPUs();
+@@ -1042,7 +1042,7 @@
+       XrdClientUrlInfo uu(host);
+       if (uu.Port <= 0) uu.Port = 1093;
+       // Fully qualified name
+-      char *fqn = XrdNetDNS::getHostName(uu.Host.c_str());
++      char *fqn = XrdSysDNS::getHostName(uu.Host.c_str());
+       if (fqn && (strstr(fqn, "localhost") || !strcmp(fqn, "127.0.0.1") ||
+                   !strcmp(fMgr->Host(), fqn))) {
+          if (!checkport || (uu.Port == fMgr->Port()))
+diff -Nur root-5.28.00h.orig/proof/proofd/src/XrdProofdProofServMgr.cxx root-5.28.00h/proof/proofd/src/XrdProofdProofServMgr.cxx
+--- root-5.28.00h.orig/proof/proofd/src/XrdProofdProofServMgr.cxx	2011-11-24 17:12:38.000000000 +0100
++++ root-5.28.00h/proof/proofd/src/XrdProofdProofServMgr.cxx	2013-03-08 11:54:29.740244376 +0100
+@@ -32,13 +32,12 @@
+ #include "Xrd/XrdPoll.hh"
+ #include "Xrd/XrdScheduler.hh"
+ #include "XrdNet/XrdNet.hh"
+-#include "XrdNet/XrdNetDNS.hh"
++#include "XrdSys/XrdSysDNS.hh"
+ #include "XrdNet/XrdNetPeer.hh"
+ #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"
+@@ -297,6 +296,8 @@
+       fCounters[i] = 0;
+    }
+    fCurrentSessions = 0;
++   
++   fCredsSaver = 0;
+ 
+    // Defaults can be changed via 'proofservmgr'
+    fCheckFrequency = 30;
+@@ -2414,7 +2415,7 @@
+    // Make sure we have the full host name
+    if (peerpsrv.InetName) {
+       char *ptmp = peerpsrv.InetName;
+-      peerpsrv.InetName = XrdNetDNS::getHostName("localhost");
++      peerpsrv.InetName = XrdSysDNS::getHostName("localhost");
+       free(ptmp);
+    }
+ 
+@@ -2681,27 +2682,20 @@
+          ev[lev] = 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) {
+-                  ev = new char[strlen("ROOTPROOFAFSCREDS=")+credsdir.length()+strlen("/.afs")+2];
+-                  sprintf(ev, "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);
+                return -1;
+             }
+          }
++         fclose(fenv);
+       }
+    }
+ 
+@@ -3298,26 +3292,20 @@
+          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) {
+-                  ev = new char[strlen("ROOTPROOFAFSCREDS=")+credsdir.length()+strlen("/.afs")+2];
+-                  sprintf(ev, "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);
+                return -1;
+             }
+          }
++         fclose(fenv);
+       }
+    }
+ 
+@@ -4040,84 +4028,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;
+-   struct stat st;
+-   if (stat(fn.c_str(), &st) != 0 && errno == ENOENT) {
+-
+-      // 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);
+-   } else {
+-      TRACE(XERR, "cannot stat existing file "<<fn<<" - errno: " << errno);
+-      delete [] out;
+-      return -1;
+-   }
+-
+-   // 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)
+ {
+diff -Nur root-5.28.00h.orig/proof/proofd/src/XrdProofdProtocol.cxx root-5.28.00h/proof/proofd/src/XrdProofdProtocol.cxx
+--- root-5.28.00h.orig/proof/proofd/src/XrdProofdProtocol.cxx	2011-11-24 17:12:38.000000000 +0100
++++ root-5.28.00h/proof/proofd/src/XrdProofdProtocol.cxx	2013-03-08 11:56:59.867531468 +0100
+@@ -33,7 +33,7 @@
+ 
+ #include "XrdVersion.hh"
+ #include "Xrd/XrdBuffer.hh"
+-#include "XrdNet/XrdNetDNS.hh"
++#include "Xrd/XrdScheduler.hh"
+ 
+ #include "XrdProofdClient.h"
+ #include "XrdProofdClientMgr.h"
+@@ -57,8 +57,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;
+@@ -460,8 +459,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
+@@ -683,6 +686,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
+ }
+ 
+ //______________________________________________________________________________
+diff -Nur root-5.28.00h.orig/proof/proofd/src/XrdProofPhyConn.cxx root-5.28.00h/proof/proofd/src/XrdProofPhyConn.cxx
+--- root-5.28.00h.orig/proof/proofd/src/XrdProofPhyConn.cxx	2011-11-24 17:12:38.000000000 +0100
++++ root-5.28.00h/proof/proofd/src/XrdProofPhyConn.cxx	2013-03-08 11:54:22.645183535 +0100
+@@ -27,7 +27,7 @@
+ #include "XrdClient/XrdClientConst.hh"
+ #include "XrdClient/XrdClientLogConnection.hh"
+ #include "XrdClient/XrdClientMessage.hh"
+-#include "XrdNet/XrdNetDNS.hh"
++#include "XrdSys/XrdSysDNS.hh"
+ #include "XrdSec/XrdSecInterface.hh"
+ 
+ #ifndef WIN32
+@@ -91,7 +91,7 @@
+ 
+    // Host and Port
+    if (!fTcp) {
+-      fHost = XrdNetDNS::getHostName(((fUrl.Host.length() > 0) ?
++      fHost = XrdSysDNS::getHostName(((fUrl.Host.length() > 0) ?
+                                        fUrl.Host.c_str() : "localhost"));
+       fPort = -1;
+       fUrl.Host = "";
+diff -Nur root-5.28.00h.orig/proof/proofd/src/XrdProofWorker.cxx root-5.28.00h/proof/proofd/src/XrdProofWorker.cxx
+--- root-5.28.00h.orig/proof/proofd/src/XrdProofWorker.cxx	2011-11-24 17:12:38.000000000 +0100
++++ root-5.28.00h/proof/proofd/src/XrdProofWorker.cxx	2013-03-08 11:54:22.645183535 +0100
+@@ -27,7 +27,7 @@
+ #include "XrdProofWorker.h"
+ #include "XrdProofdProofServ.h"
+ #include "XrdClient/XrdClientUrlInfo.hh"
+-#include "XrdNet/XrdNetDNS.hh"
++#include "XrdSys/XrdSysDNS.hh"
+ #include "XProofProtocol.h"
+ 
+ // Tracing utilities
+@@ -99,7 +99,7 @@
+    // Take the user name, if specified
+    fUser = ui.User;
+    char *err;
+-   char *fullHostName = XrdNetDNS::getHostName((char *)ui.Host.c_str(), &err);
++   char *fullHostName = XrdSysDNS::getHostName((char *)ui.Host.c_str(), &err);
+    if (!fullHostName || !strcmp(fullHostName, "0.0.0.0")) {
+       TRACE(XERR, "DNS could not resolve '" << ui.Host << "'");
+       return;
+diff -Nur root-5.28.00h.orig/proof/proofx/Module.mk root-5.28.00h/proof/proofx/Module.mk
+--- root-5.28.00h.orig/proof/proofx/Module.mk	2011-11-24 17:12:38.000000000 +0100
++++ root-5.28.00h/proof/proofx/Module.mk	2013-03-08 11:54:42.795356301 +0100
+@@ -61,13 +61,18 @@
+ PROOFXINCEXTRA := $(PROOFXDIRI:%=-I%)
+ PROOFXINCEXTRA += $(XROOTDDIRI:%=-I%)
+ PROOFXINCEXTRA += $(PROOFDDIRI:%=-I%)
++ifeq ($(XRDINCPRIVATE),yes)
++PROOFXINCEXTRA += -I$(XRDINCDIR)/private
++endif
+ 
+ # Xrootd client libs
+ ifeq ($(PLATFORM),win32)
+ PROOFXLIBEXTRA += $(XROOTDDIRL)/libXrdClient.lib
+ else
+-PROOFXLIBEXTRA += -L$(XROOTDDIRL) -lXrdOuc -lXrdSys -lXrdNet -lXrdClient
+-# Starting from Jul 2010 XrdNet has been split in two libs: XrdNet and XrdNetUtil;
++ifeq ($(HASXRDUTILS),no)
++PROOFXLIBEXTRA += $(XROOTDDIRL) -lXrdOuc -lXrdSys -lXrdNet -lXrdClient
++# Starting from Jul 2010 XrdNet has been split in two libs:
++#    XrdNet and XrdNetUtil
+ # both are needed
+ XRDNETUTIL     :=
+ ifneq ($(XRDVERSION),)
+@@ -78,6 +83,9 @@
+ ifeq ($(XRDNETUTIL),yes)
+ PROOFXLIBEXTRA += -lXrdNetUtil
+ endif
++else
++PROOFXLIBEXTRA += $(XROOTDDIRL) -lXrdUtils -lXrdClient
++endif
+ endif
+ 
+ ##### local rules #####
diff --git a/root.spec b/root.spec
index 1afafdf..23ebeb0 100644
--- a/root.spec
+++ b/root.spec
@@ -30,7 +30,7 @@
 Name:		root
 Version:	5.28.00h
 %global libversion %(cut -d. -f 1-2 <<< %{version})
-Release:	2%{?dist}
+Release:	3%{?dist}
 Summary:	Numerical data analysis framework
 
 Group:		Applications/Engineering
@@ -57,17 +57,21 @@ Patch0:		%{name}-ftgl.patch
 Patch1:		%{name}-fontconfig.patch
 #		Use system unuran:
 Patch2:		%{name}-unuran.patch
-#		Workaround for broken Form() on ppc
+#		Workaround for broken Form() on ppc:
 Patch3:		%{name}-cern-ppc.patch
-#		Fix an issue with the TGListBox height (backported from trunk)
+#		Fix an issue with the TGListBox height (backported from trunk):
 Patch4:		%{name}-listbox-height.patch
-#		Fixes for external xrootd
+#		Fixes for new xrootd (backported from trunk):
 Patch5:		%{name}-xrootd.patch
-#		Fix hardcoded include path
+#		Fix hardcoded include path:
 #		https://savannah.cern.ch/bugs/index.php?91463
 Patch6:		%{name}-meta.patch
-#		Backport fixes for using aclic with versioned libraries
+#		Backport fixes for using aclic with versioned libraries:
 Patch7:		%{name}-aclic-versioned-libs.patch
+#		Fixes for gfal (mostly backported from trunk):
+Patch8:		%{name}-gfal-bits.patch
+#		Remove unnecessary Qt linkage (backported from trunk):
+Patch9:		%{name}-qt.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 +117,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 +128,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
 %if %{gfal}
 BuildRequires:	gfal-devel
@@ -1051,6 +1053,8 @@ fi
 %patch5 -p1
 %patch6 -p1
 %patch7 -p1
+%patch8 -p1
+%patch9 -p1
 
 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 \
@@ -1123,7 +1127,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
@@ -1156,6 +1161,7 @@ unset QTINC
 	    --enable-fftw3 \
 	    --enable-fitsio \
 	    --enable-gdml \
+	    --enable-genvector \
 %if %{gfal}
 	    --enable-gfal \
 	      --with-gfal-incdir=%{_includedir} \
@@ -1163,7 +1169,6 @@ unset QTINC
 %else
 	    --disable-gfal \
 %endif
-	    --enable-genvector \
 	    --enable-globus \
 	    --enable-gsl-shared \
 	    --enable-gviz \
@@ -2323,6 +2328,10 @@ fi
 %{emacs_lispdir}/root/*.el
 
 %changelog
+* Sat Mar 02 2013 Mattias Ellert <mattias.ellert at fysast.uu.se> - 5.28.00h-3
+- Rebuild for xrootd 3.3
+- Backport gfal fixes
+
 * Fri Jun 29 2012 Mattias Ellert <mattias.ellert at fysast.uu.se> - 5.28.00h-2
 - Backport fixes for using aclic with versioned libraries
 - New sub-package: root-io-gfal


More information about the scm-commits mailing list