diff options
Diffstat (limited to 'community/root')
-rw-r--r-- | community/root/PKGBUILD | 39 | ||||
-rw-r--r-- | community/root/fix-mathcore-generation-r42566.diff | 40 |
2 files changed, 62 insertions, 17 deletions
diff --git a/community/root/PKGBUILD b/community/root/PKGBUILD index 0e9aee589..4c380c044 100644 --- a/community/root/PKGBUILD +++ b/community/root/PKGBUILD @@ -3,7 +3,7 @@ pkgname=root pkgver=5.32.00 -pkgrel=2 +pkgrel=3 pkgdesc='C++ data analysis framework and interpreter from CERN.' arch=('i686' 'x86_64' 'mips64el') url='http://root.cern.ch' @@ -16,25 +16,31 @@ options=('!emptydirs') source=("ftp://root.cern.ch/root/root_v${pkgver}.source.tar.gz" 'root.sh' 'rootd' - 'root.xml') + 'root.xml' + 'fix-mathcore-generation-r42566.diff') md5sums=('1c30e4e6eeae62ff1ad5118cd1309679' '0e883ad44f99da9bc7c23bc102800b62' 'efd06bfa230cc2194b38e0c8939e72af' - 'e2cf69b204192b5889ceb5b4dedc66f7') + 'e2cf69b204192b5889ceb5b4dedc66f7' + '12877cabd620284f50ea16ef97a54aac') build() { cd root + # temporary workaround: remove on next patch release after 5.32.00 + # bug reported at: https://savannah.cern.ch/bugs/?90906 + patch -Np0 -i ${srcdir}/fix-mathcore-generation-r42566.diff + if [ ${CARCH} == 'i686' ]; then TARGET=linux; else TARGET=linuxx8664gcc; fi - # python2 switch - find . -type f -exec sed -i -e 's_#!/usr/bin/env python_&2_' \ - -e 's/python -O/python2 -O/g' \ - -e 's/python -c/python2 -c/g' {} \; + msg 'python2 switch' + find . -type f -exec sed -e 's_#!/usr/bin/env python_&2_' \ + -e 's/python -O/python2 -O/g' \ + -e 's/python -c/python2 -c/g' -i {} \; sed \ -e 's/python 2/python2 2/g' \ -i configure @@ -45,15 +51,16 @@ build() { -e 's/python /python2 /' \ -i config/genreflex.in config/genreflex-rootcint.in + local sys_libs="" + for sys_lib in ftgl freetype glew pcre zlib lzma; do + sys_libs+="--disable-builtin-${sys_lib} " + done + # move from aur if possible + #--disable-builtin-afterimage \ + ./configure \ ${TARGET} \ --prefix=/usr \ - --disable-builtin-ftgl \ - --disable-builtin-freetype \ - --disable-builtin-glew \ - --disable-builtin-pcre \ - --disable-builtin-zlib \ - --disable-builtin-lzma \ --enable-gdml \ --enable-gsl-shared \ --enable-minuit2 \ @@ -61,10 +68,8 @@ build() { --enable-roofit \ --enable-python \ --with-python-incdir=/usr/include/python2.7 \ - --with-python-libdir=/usr/lib - - # move from aur - #--disable-builtin-afterimage \ + --with-python-libdir=/usr/lib \ + ${sys_libs} make } diff --git a/community/root/fix-mathcore-generation-r42566.diff b/community/root/fix-mathcore-generation-r42566.diff new file mode 100644 index 000000000..ae22c23c0 --- /dev/null +++ b/community/root/fix-mathcore-generation-r42566.diff @@ -0,0 +1,40 @@ +Index: cint/cint/src/typedef.cxx +=================================================================== +--- cint/cint/src/typedef.cxx (revision 42564) ++++ cint/cint/src/typedef.cxx (revision 42566) +@@ -297,18 +297,27 @@ + } + c = G__fgetname_template(type1, 0, "{"); + } +- if (!strcmp(type1, "::")) { // FIXME: This makes no sense, there cannot be typedef ::{...}; ++ if (!strcmp(type1, "::")) { + // skip a :: without a namespace in front of it (i.e. global namespace!) + c = G__fgetspace(); // skip the next ':' + c = G__fgetname_template(type1, 0, "{"); + } +- if (!strncmp(type1, "::", 2)) { // Strip a leading :: (global namespace operator) +- // A leading '::' causes other typename matching functions to fail so +- // we remove it. This is not the ideal solution (neither was the one +- // above since it does not allow for distinction between global +- // namespace and local namespace) ... but at least it is an improvement +- // over the current behavior. +- strcpy((char*)type1, type1 + 2); // Okay since we reduce the size ... ++ if (!strncmp(type1, "::", 2)) { ++ // Strip a leading :: (global namespace operator). ++ // A leading '::' causes other typename matching ++ // functions to fail so we remove it. This is not ++ // the ideal solution (neither is the one above) ++ // since it does not allow for decriminating between ++ // global namespace and local namespace, but at ++ // least it is an improvement over the current ++ // behavior. ++ // ++ // Note: We must use memmove because the source ++ // and destination strings overlap! ++ // ++ int t1len = strlen(type1); ++ memmove(type1, type1 + 2, t1len - 2); ++ type1.Set(t1len - 2, '\0'); + } + while (isspace(c)) { + len = strlen(type1); |