diff options
author | Andrei Rabusov <a.rabusov@tum.de> | 2022-02-08 21:45:39 +0100 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2022-02-10 14:13:24 +0700 |
commit | 108446d40bc86f6854661b979f34936a2db6ebf3 (patch) | |
tree | 3bdad34de5ca8f7ee752afd616fa30966df00f42 /academic | |
parent | f3194d50260af49c838a36e764b86b7c9d7620da (diff) |
academic/root: Switch to cmake
This will allow us to compile ROOT v6.14 or higher. Current version
is v6.24-06. Many thanks to ponce for fixing some typos in this update.
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'academic')
-rw-r--r-- | academic/root/README | 26 | ||||
-rw-r--r-- | academic/root/root.SlackBuild | 262 | ||||
-rw-r--r-- | academic/root/root.info | 14 | ||||
-rw-r--r-- | academic/root/slack-desc | 16 |
4 files changed, 202 insertions, 116 deletions
diff --git a/academic/root/README b/academic/root/README index c8beb68da7717..ca62905ea0100 100644 --- a/academic/root/README +++ b/academic/root/README @@ -1,20 +1,20 @@ ROOT - A data analysis framework. -ROOT is a data analysis framework used mostly, but not limited to, -high energy physics. It was written in C++ by the techs at CERN to -explore the benefits of object oriented programming in physics data -analysis. It consists of libraries, CINT or cling interpreter for -C/C++, plotting interface and powerful parellel processing support. -It is the preferred choice in many laboratories. +ROOT provides a set of frameworks with the functionality needed to +handle and analyze large amounts of data in an efficient way. It +includes specialized storage methods such as histograms, curve +fitting, function evaluation, minimization, graphics, visualization +classes; the C++ interpreter cling for fast prototyping; and powerful +parallel processing support. -It comes with A LOT of different options for compilation. And it +It comes with a lot of different options for compilation. And it seems impossible to stress all of them in this one script. Therefore -the potential user is strongly advised to check the configure -script. +the potential user is strongly advised to check the cmake command +arguments. -For mathmore support, run the SlackBuild script with MATHMORE=yes, and -for QT support, run the SlackBuild script with QT=yes, for example +Compilation takes quite a while, thus consider to build ROOT like that: +# MAKEFLAGS=-j5 ./root.SlackBuild - MATHMORE=yes ./root.SlackBuild +REQUIREMENTS: gl2ps libAfterImage numpy3 tbb ftgl -Compilation takes quite a while. +NOTE: ROOT's python TMVA requires numpy3 built over blas. diff --git a/academic/root/root.SlackBuild b/academic/root/root.SlackBuild index 88fd4250ea9f6..446345ce86494 100644 --- a/academic/root/root.SlackBuild +++ b/academic/root/root.SlackBuild @@ -20,14 +20,14 @@ cd $(dirname $0) ; CWD=$(pwd) PRGNAM=root -VERSION=${VERSION:-6.10.02} +VERSION=${VERSION:-6.24.06} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} if [ -z "$ARCH" ]; then case "$( uname -m )" in - i?86) ARCH=i486 ;; + i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac @@ -45,53 +45,30 @@ TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} -if [ "$ARCH" = "i486" ]; then - SLKCFLAGS="-O2 -march=i486 -mtune=i686" - LIBDIRSUFFIX="" +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-march=i586 -mtune=i686" elif [ "$ARCH" = "i686" ]; then - SLKCFLAGS="-O2 -march=i686 -mtune=i686" - LIBDIRSUFFIX="" + SLKCFLAGS="-march=i686 -mtune=i686" elif [ "$ARCH" = "x86_64" ]; then - SLKCFLAGS="-O2 -fPIC" - LIBDIRSUFFIX="64" + SLKCFLAGS="-fPIC" else - SLKCFLAGS="-O2" - LIBDIRSUFFIX="" + SLKCFLAGS="" fi -set -e +CXXSTD=${CXXSTD:-17} -if [ ${GSL:-yes} = "no" ]; then - GSL_FLAGS="--disable-gsl-shared" -else - GSL_FLAGS="--enable-gsl-shared \ - --with-gsl-incdir=/usr/include \ - --with-gsl-libdir=/usr/lib${LIBDIRSUFFIX}" - if [ "$MATHMORE" = "yes" ]; then - GSL_FLAGS="$GSL_FLAGS --enable-mathmore" - fi -fi - -if [ ${FFTW:-yes} = "no" ]; then - FFTW_FLAGS="--disable-fftw3" -else - FFTW_FLAGS="--enable-fftw3 \ - --with-fftw3-incdir=/usr/include \ - --with-fftw3-libdir=/usr/lib${LIBDIRSUFFIX}" -fi - -if [ ${QT:-no} = "no" ]; then - QT_FLAGS="--disable-qt" -else - QT_FLAGS="--enable-qt" -fi +set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION tar xvf $CWD/$PRGNAM\_v$VERSION.source.tar.gz +mv root-$VERSION src +mkdir -p $PRGNAM-$VERSION +mv src $PRGNAM-$VERSION cd $PRGNAM-$VERSION + chown -R root:root . find -L . \ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ @@ -99,75 +76,184 @@ find -L . \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; -# Make sure we use system libs and headers -rm -r graf3d/ftgl/{inc,src} -rm -r graf2d/freetype/src -rm -r graf3d/glew/{inc,src} -rm -r core/pcre/src -LANG=C LC_ALL=C find core/zip -type f -name "[a-z]*" -print0 | xargs -0 rm -f -rm -r core/lzma/src/*.tar.gz - # prefix where to install stuff -PREFIX=/opt/ROOT - -# Use --with-clang to avoid gcc-5.3 internal compiler error on i586 +PREFIX=/opt/ROOT-${VERSION} +mkdir -p build +cd build CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ -./configure \ - --with-clang \ - --prefix=$PREFIX \ - --libdir=$PREFIX/lib${LIBDIRSUFFIX} \ - --incdir=$PREFIX/include \ - --mandir=$PREFIX/man/man1 \ - --etcdir=$PREFIX/etc/root \ - --docdir=/usr/doc/$PRGNAM-$VERSION \ - --enable-roofit \ - --enable-unuran \ - --disable-builtin-freetype \ - --disable-builtin-ftgl \ - --disable-builtin-glew \ - --disable-builtin-pcre \ - --disable-builtin-zlib \ - --disable-builtin-lzma \ - $GSL_FLAGS \ - $FFTW_FLAGS \ - $QT_FLAGS \ - --enable-shared \ - --build=$ARCH-slackware-linux - +cmake ../src \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_STANDARD=${CXXSTD} \ + -DCMAKE_INSTALL_PYTHONDIR=lib \ + -DMAN_INSTALL_DIR=$PREFIX/man \ + -Dbuiltin_cfitsio=OFF \ + -Dbuiltin_davix=OFF \ + -Dbuiltin_fftw3=OFF \ + -Dbuiltin_gsl=OFF \ + -Dbuiltin_openssl=OFF \ + -Dbuiltin_tbb=OFF \ + -Dbuiltin_vc=OFF \ + -Dbuiltin_vdt=OFF \ + -Dbuiltin_veccore=OFF \ + -Dclad=OFF \ + -Dalien=OFF \ + -Dall=OFF \ + -Darrow=OFF \ + -Dassan=OFF \ + -Dasserts=OFF \ + -Dbuiltin_freetype=OFF \ + -Dfftw3=ON \ + -Dbuiltin_glew=OFF \ + -Dbuiltin_clang=ON \ + -Dbuiltin_cling=ON \ + -Dbuiltin_llvm=ON \ + -Dbuiltin_lz4=OFF \ + -Dbuiltin_lzma=OFF \ + -Dbuiltin_nlohmannjson=ON \ + -Dbuiltin_openui5=ON \ + -Dbuiltin_pcre=OFF \ + -Dbuiltin_unuran=OFF \ + -Dbuiltin_xrootd=OFF \ + -Dbuiltin_xxhash=OFF \ + -Dbuiltin_zlib=OFF \ + -Dbuiltin_zstd=OFF \ + -Dccache=OFF \ + -Dcefweb=OFF \ + -Dclingtest=OFF \ + -Dcocoa=OFF \ + -Dcompression_default=zlib \ + -Dcoverage=OFF \ + -Dcuda=OFF \ + -Dcudnn=OFF \ + -Dcxx_modules=OFF \ + -Ddataframe=ON \ + -Ddavix=OFF \ + -Ddcache=OFF \ + -Ddev=OFF \ + -Ddistcc=OFF \ + -Dexceptions=ON \ + -Dfail-on-missing=ON \ + -Dfcgi=OFF \ + -Dfitsio=ON \ + -Dfortran=ON \ + -Dgdml=ON \ + -Dgfal=OFF \ + -Dgminimal=OFF \ + -Dgnuinstall=OFF \ + -Dgsl_shared=ON \ + -Dmathmore=ON \ + -Dgviz=OFF \ + -Dhttp=ON \ + -Djemalloc=OFF \ + -Dlibcxx=OFF \ + -Dmacos_native=OFF \ + -Dmemory_termination=OFF \ + -Dminimal=OFF \ + -Dminuit2=ON \ + -Dmlp=ON \ + -Dmonalisa=OFF \ + -Dmpi=OFF \ + -Dmysql=OFF \ + -Dodbc=OFF \ + -Dopengl=ON \ + -Doracle=OFF \ + -Dpgsql=OFF \ + -Dpyroot=ON \ + -Dpyroot_legacy=OFF \ + -Dpythia6=OFF \ + -Dpythia6_nolink=OFF \ + -Dpythia8=OFF \ + -Dqt5web=OFF \ + -Dr=OFF \ + -Droofit=ON \ + -Droot7=ON \ + -Drootbench=OFF \ + -Droottest=OFF \ + -Drpath=OFF \ + -Druntime_cxxmodules=ON \ + -Dshadowpw=OFF \ + -Dshared=ON \ + -Dsoversion=ON \ + -Dspectrum=ON \ + -Dsqlite=OFF \ + -Dssl=ON \ + -Dtcmalloc=OFF \ + -Dtest_distrdf_pyspark=OFF \ + -Dtesting=OFF \ + -Dtmva=ON \ + -Dtmva-cpu=ON \ + -Dtmva-gpu=OFF \ + -Dtmva-pymva=ON \ + -Dtmva-rmva=OFF \ + -Dunuran=OFF \ + -During=OFF \ + -Dvc=OFF \ + -Dvdt=OFF \ + -Dveccore=OFF \ + -Dvmc=OFF \ + -Dwebgui=ON \ + -Dwin_broken_tests=OFF \ + -Dwinrtdebug=OFF \ + -Dx11=ON \ + -Dxml=ON \ + -Dxproofd=OFF \ + -Dxrootd=OFF \ + -DCMAKE_BUILD_TYPE=Release ../src make -make install DESTDIR=$PKG - -# Move some python stuff in the proper place -PYTHONDIR=$(python -c "import sys, os; print os.path.join('/usr/lib${LIBDIRSUFFIX}', 'python%s' % sys.version[:3], 'site-packages')")/ -mkdir -p $PKG$PYTHONDIR -mv \ - $PKG$PREFIX/lib$LIBDIRSUFFIX/*.py \ - $PKG$PREFIX/lib$LIBDIRSUFFIX/*.pyc \ - $PKG$PREFIX/lib$LIBDIRSUFFIX/*.pyo \ - $PKG$PYTHONDIR +make install/strip DESTDIR=$PKG find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneded 2> /dev/null || true find $PKG$PREFIX/man -type f -exec gzip -9 {} \; +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +# We are still in build directory +# Copy documentation to system; also to ROOTSYS (ROOT expects it there) +cp -a README/ README.md LICENSE LGPL2_1.txt ../src/CONTRIBUTING.md \ + $PKG/usr/doc/$PRGNAM-$VERSION +find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \; +cp -a README/ LICENSE \ + $PKG$PREFIX +chmod -R 644 $PKG$PREFIX/README +chmod -R 644 $PKG$PREFIX/LICENSE +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + # Install some profile.d scripts to use the right paths mkdir -p $PKG/etc/profile.d -echo "set path = ( \$path $PREFIX/bin )" > $PKG/etc/profile.d/root.csh -echo "setenv MANPATH \${MANPATH}:$PREFIX/man" >> $PKG/etc/profile.d/root.csh -echo "PATH=\$PATH:$PREFIX/bin" > $PKG/etc/profile.d/root.sh -echo "MANPATH=\$MANPATH:$PREFIX/man" >> $PKG/etc/profile.d/root.sh +# Start with tcsh +echo "setenv ROOTSYS $PREFIX" > $PKG/etc/profile.d/root.csh +echo "set path = ( \$path $PREFIX/bin )" >> $PKG/etc/profile.d/root.csh +echo "setenv MANPATH \${MANPATH}:$PREFIX/man" >> $PKG/etc/profile.d/root.csh +echo "if ( ! \$?PYTHONPATH ) then" >> $PKG/etc/profile.d/root.csh +echo "setenv PYTHONPATH $PREFIX/lib" >> $PKG/etc/profile.d/root.csh +echo "else" >> $PKG/etc/profile.d/root.csh +echo "if ( \"\$PYTHONPATH\" != \"\") then" >> $PKG/etc/profile.d/root.csh +echo "setenv PYTHONPATH \$PYTHONPATH:$PREFIX/lib">> $PKG/etc/profile.d/root.csh +echo "else" >> $PKG/etc/profile.d/root.csh +echo "setenv PYTHONPATH $PREFIX/lib" >> $PKG/etc/profile.d/root.csh +echo "endif" >> $PKG/etc/profile.d/root.csh +echo "endif" >> $PKG/etc/profile.d/root.csh +# And bash +echo "ROOTSYS=$PREFIX" > $PKG/etc/profile.d/root.sh +echo "PATH=\$PATH:$PREFIX/bin" >> $PKG/etc/profile.d/root.sh +echo "MANPATH=\$MANPATH:$PREFIX/man" >> $PKG/etc/profile.d/root.sh +echo "if [ -z \"\${PYTHONPATH}\" ]; then" >> $PKG/etc/profile.d/root.sh +echo " export PYTHONPATH=$PREFIX/lib" >> $PKG/etc/profile.d/root.sh +echo "else" >> $PKG/etc/profile.d/root.sh +echo " export PYTHONPATH=\$PYTHONPATH:$PREFIX/lib" \ + >> $PKG/etc/profile.d/root.sh +echo "fi" >> $PKG/etc/profile.d/root.sh chmod +x $PKG/etc/profile.d/root.* -cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild +mkdir -p $PKG/etc/ld.so.conf.d +echo "$PREFIX/lib" > $PKG/etc/ld.so.conf.d/root.conf mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc -sed \ - -e "s|@LIBDIRSUFFIX@|$LIBDIRSUFFIX|" \ - -e "s|@PREFIX@|$PREFIX|" \ - $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE diff --git a/academic/root/root.info b/academic/root/root.info index 7df5c817382fc..de20662e7efab 100644 --- a/academic/root/root.info +++ b/academic/root/root.info @@ -1,10 +1,10 @@ PRGNAM="root" -VERSION="6.10.02" -HOMEPAGE="http://root.cern.ch/drupal/" -DOWNLOAD="https://root.cern.ch/download/root_v6.10.02.source.tar.gz" -MD5SUM="19f2285c845a48355db779938fb4db99" +VERSION="6.24.06" +HOMEPAGE="https://root.cern" +DOWNLOAD="https://root.cern/download/root_v6.24.06.source.tar.gz" +MD5SUM="267e08ba9bf957e82b4236f3c50f0219" DOWNLOAD_x86_64="" MD5SUM_x86_64="" -REQUIRES="ftgl unixODBC" -MAINTAINER="Jože Zobec" -EMAIL="jozze.zepl@gmail.com" +REQUIRES="gl2ps libAfterImage numpy3 tbb ftgl" +MAINTAINER="Andrei Rabusov" +EMAIL="arabusov@gmail.com" diff --git a/academic/root/slack-desc b/academic/root/slack-desc index 50c68b3ed07e7..8dfe3a9ded5d2 100644 --- a/academic/root/slack-desc +++ b/academic/root/slack-desc @@ -1,5 +1,5 @@ # HOW TO EDIT THIS FILE: -# The "handy ruler" below makes it easier to edit a package description. +# The handy ruler below makes it easier to edit a package description. # Line up the first '|' above the ':' following the base package name, and # the '|' on the right side marks the last column you can put a character in. # You must make exactly 11 lines for the formatting to be correct. It's also @@ -8,12 +8,12 @@ |-----handy-ruler------------------------------------------------------| root: root (data analysis framework) root: -root: ROOT is a data analysis framework used mostly, but not limited to, -root: high energy physics. It was written in C++ by the techs at CERN to -root: explore the benefits of object oriented programming in physics data -root: analysis. It consists of libraries, CINT or cling interpreter for -root: C/C++, plotting interface and powerful parellel processing support. -root: It is the preferred choice in many laboratories. +root: ROOT provides a set of frameworks with the functionality needed to +root: handle and analyze large amounts of data in an efficient way. It +root: includes specialized storage methods such as histograms, curve +root: fitting, function evaluation, minimization, graphics, visualization +root: classes; the C++ interpreter cling for fast prototyping; and powerful +root: parallel processing support. root: -root: Homepage: http://root.cern.ch/drupal/ +root: Homepage: https://root.cern root: |