Install Root v5.34.34

Dear ROOT experts,

We need to install (see below the cmake command we use) a specific ROOT version v5.34.34 on a computing cluster (OakRidge Summit Summit User Guide — OLCF User Documentation) as a user. Their machine processor is not supported by cmake. See printout at the end.

The error is coming here looking at the file cmake/modules/SetUpLinux.cmake

elseif(CMAKE_SYSTEM_PROCESSOR MATCHES ppc64)
  message(STATUS "Found a 64bit PPC system (ppc64/ppc64le)")
  if(CMAKE_COMPILER_IS_GNUCXX)
    message(STATUS "Found GNU compiler collection")
    set(ROOT_ARCHITECTURE linuxppc64gcc)
  elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
    message(STATUS "Found CLANG compiler")
    set(ROOT_ARCHITECTURE linuxppc64gcc)
  else()
    message(FATAL_ERROR "There is no Setup for this compiler up to now. Don't know what to do. Stop cmake at this point.")
  endif()

Do you have any suggestions what’s the best way going forward to install this version of ROOT?

Thanks,
Wei

cmake ../root-source/root -Dminuit2:BOOL=ON \
                              -Droofit:BOOL=ON \
                              -Dfortran:BOOL=ON \
                              -Dpython:BOOL=OFF \
                              -Dx11:BOOL=OFF \
                              -Dmysql:BOOL=OFF \
                              -Dalien:BOOL=OFF \
                              -Dxml:BOOL=ON \
                              -Dalien:BOOL=OFF \
                              -Dastiff:BOOL=OFF \
                              -Dbonjour:BOOL=OFF \
                              -Dbuiltin_gsl:BOOL=OFF \
                              -Dopengl:BOOL=OFF \
                              -Dglite:BOOL=OFF \
                              -Dldap:BOOL=OFF \
                              -Dmonalisa:BOOL=OFF \
                              -Dmysql:BOOL=OFF \
                              -Doracle:BOOL=OFF \
                              -Dpgsql:BOOL=OFF \
                              -Dsapdb:BOOL=OFF \
                              -Dsqlite:BOOL=OFF \
                              -Dxft:BOOL=OFF \
                              ${rootextras}
    cmake --build . -- -j8

Detailed out put here

Untarring ROOT install to /autofs/nccs-svm1_home1/wshi/MaCh3/root-source
mkdir: created directory '/autofs/nccs-svm1_home1/wshi/MaCh3/root-source'
Please be patient, untarring ROOT takes a while...
Untarred ROOT
Making root in /autofs/nccs-svm1_home1/wshi/MaCh3/root with Minuit2, ROOfit, pyROOT with 8 threads
mkdir: created directory '/autofs/nccs-svm1_home1/wshi/MaCh3/root'
Loading cmake module...
Trying to load saved and generic cmake version...
Building ROOT with cmake...
CMake Deprecation Warning at CMakeLists.txt:2 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- The C compiler identification is XLClang 16.1.1.10
-- The CXX compiler identification is XLClang 16.1.1.10
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /sw/summit/xl/16.1.1-10/xlC/16.1.1/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /sw/summit/xl/16.1.1-10/xlC/16.1.1/bin/xlC - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Deprecation Warning at cmake/modules/RootNewMacros.cmake:8 (cmake_policy):
  The OLD behavior for policy CMP0022 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.
Call Stack (most recent call first):
  CMakeLists.txt:32 (include)


-- The Fortran compiler identification is XL 16.1.1
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Check for working Fortran compiler: /sw/summit/xl/16.1.1-10/xlf/16.1.1/bin/xlf - skipped
-- CMAKE_BUILD_TYPE: RelWithDebInfo
-- Performing Test CXX_HAS_Wno-array-bounds
-- Performing Test CXX_HAS_Wno-array-bounds - Success
-- Performing Test CXX_HAS_Wno-strict-aliasing
-- Performing Test CXX_HAS_Wno-strict-aliasing - Success
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Found a 32bit system
CMake Error at cmake/modules/SetUpLinux.cmake:34 (message):
  There is no Setup for this compiler up to now.  Don't know what to do.
  Stop cmake at this point.
Call Stack (most recent call first):
  cmake/modules/CheckCompiler.cmake:102 (include)
  CMakeLists.txt:33 (include)

ROOT Version:v5.34.34
Platform:

NAME="Red Hat Enterprise Linux"
VERSION="8.2 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.2"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.2 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8.2:GA"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.2
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.2"

Compiler: gcc/7.5.0 gcc/9.1.0 (D) gcc/9.3.0 gcc/10.2.0 gcc/11.1.0 gcc/11.2.0 gcc/12.1.0

Did you try with configure/make ?

Hi we did try the config option

./configure --enable-minuit2 --enable-roofit --enable-python --disable-x11 --disable-mysql
make

It seems get further but stopped by this error:

bin/rmkdepend -R -fcint/cint/src/dict/libstrm.d -Y -w 1000 -- -pipe -Wall -m64 -fPIC -fsigned-char -DG__REGEXP -DG__UNIX -DG__SHAREDLIB -DG__OSFDLL -DG__ROOT -DG__REDIRECTIO -DG__64BIT -Iinclude   -DG__HAVE_CONFIG -DG__NOMAKEINFO -DG__CINTBODY  -I/autofs/nccs-svm1_home1/wshi/root/cint/cint/inc -I/autofs/nccs-svm1_home1/wshi/root/cint/cint/src -I/autofs/nccs-svm1_home1/wshi/root/cint/cint/src/dict -pthread -Icint/cint/lib/libstrm -Icint/cint/lib/stream -I. -D__cplusplus -- cint/cint/src/dict/libstrm.cxx
g++ -O -pipe -Wall -m64 -fPIC -fsigned-char -DG__REGEXP -DG__UNIX -DG__SHAREDLIB -DG__OSFDLL -DG__ROOT -DG__REDIRECTIO -DG__64BIT -Iinclude   -DG__HAVE_CONFIG -DG__NOMAKEINFO -DG__CINTBODY  -I/autofs/nccs-svm1_home1/wshi/root/cint/cint/inc -I/autofs/nccs-svm1_home1/wshi/root/cint/cint/src -I/autofs/nccs-svm1_home1/wshi/root/cint/cint/src/dict -pthread -Icint/cint/lib/libstrm -Icint/cint/lib/stream -I. -o cint/cint/src/dict/libstrm.o -c cint/cint/src/dict/libstrm.cxx

In file included from cint/cint/src/dict/libstrm.h:37,
                 from cint/cint/src/dict/libstrm.cxx:14:
cint/cint/lib/stream/iostrm.h:24:10: fatal error: iostream.h: No such file or directory
 #include <iostream.h>
          ^~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:632: cint/cint/src/dict/libstrm.o] Error 1

I tried changing to #include <iostream>, but more include header errors like this pop up. Apparently something is wrong. Any suggestions?

Wei

I don’t know if this will help, but I recently installed 5.34/38 on Ubuntu 22.04, by using:

./configure --with-cxx=g++-7 --with-cc=gcc-7 --with-ld=g++-7 --prefix=/opt/root/root-5.34.38-install --disable-builtin-afterimage --disable-asimage

and by hacking/commenting a couple of lines in the file misc/memstat/src/TMemStatHook.cxx that were giving errors.

(I had to install g++-7 by temporarily enabling the apt source list of focal instead of jammy)

Hello, 5.34/38 works for us. Thanks!

Wei

You’d better take the head of the v5-34-00-patches branch.

Do you mean install v5.34.38 plus these v5-34-00-patches patches? is the v5.34.38 expected not going to work alone?

We do see some errors when invoking the root.exe

[wshi@login1.summit bin]$ root.exe -l
Error in <UnknownClass::ReadFile>: no file name specified
Error in <UnknownClass::ReadFile>: no file name specified
Error: cannot open file "iostream"  (tmpfile):2:
*** Interpreter error recovered ***
Error in <TEnv::ReadFile>: no file name specified
Error in <TEnv::ReadFile>: no file name specified
Error in <TUnixSystem::DynamicPathName>: libMathCore[.so | .dll | .dylib | .sl | .dl | .a] does not exist in .:./lib:

 *** Break *** segmentation violation
Error in <TUnixSystem::StackTrace> script ./etc/gdb-backtrace.sh is missing

Are these understood for this version?

Wei

v5-34-00-patches instead of v5.34.34

So the v5.34.38 can be compiled fine on this machine. But after sourcing, it says can’t find root command:

source ../root/bin/thisroot.sh 
[wshi@login1.summit MaCh3]$ root -l
-bash: root: command not found

I can see the environment path is all correct, but in the bin folder it doesn’t contain the root binary that’s normally seen in linux, any idea why this happens?

[wshi@login5.summit bin]$ ll
total 2108
-rwxrwxr-x 1 wshi wshi  85800 Oct 25 21:05 genmap
-rwxrwxr-x 1 wshi wshi    176 Oct 25 20:36 genreflex
-rwxrwxr-x 1 wshi wshi     92 Oct 25 20:36 genreflex-rootcint
-rwxrwxr-x 1 wshi wshi  78912 Oct 25 21:05 hadd
-rwxrwxr-x 1 wshi wshi  87928 Oct 25 21:05 hist2workspace
-rwxr-xr-x 1 wshi wshi   8447 Oct 25 20:36 memprobe
-rwxrwxr-x 1 wshi wshi 160560 Oct 25 21:05 pq2
-rwxrwxr-x 1 wshi wshi   2078 Oct 25 21:05 prepareHistFactory
-rwxrwxr-x 1 wshi wshi 238112 Oct 25 21:05 proofd
-rwxr-xr-x 1 wshi wshi   2868 Oct 25 21:05 proofserv
-rwxrwxr-x 1 wshi wshi  78808 Oct 25 21:05 proofserv.exe
-rwxrwxr-x 1 wshi wshi  80624 Oct 25 20:37 rlibmap
-rwxrwxr-x 1 wshi wshi  83488 Oct 25 20:36 rmkdepend
-rwxr-xr-x 1 wshi wshi  27225 Oct 25 20:36 root-config
-rwxrwxr-x 1 wshi wshi  76608 Oct 25 21:05 root.exe
-rwxrwxr-x 1 wshi wshi 388208 Oct 25 20:37 rootcint
-rwxrwxr-x 1 wshi wshi 306968 Oct 25 21:05 rootd
-rwxrwxr-x 1 wshi wshi  76608 Oct 25 21:05 rootn.exe
-rwxr-xr-x 1 wshi wshi    821 Oct 25 21:05 roots
-rwxrwxr-x 1 wshi wshi  78504 Oct 25 21:05 roots.exe
-rw-rw-r-- 1 wshi wshi   3834 Oct 25 20:36 setxrd.csh
-rwxrwxr-x 1 wshi wshi   3046 Oct 25 20:36 setxrd.sh
-rwxrwxr-x 1 wshi wshi  77112 Oct 25 21:05 ssh2rpd
-rw-rw-r-- 1 wshi wshi   6058 Oct 25 20:36 thisroot.csh
-rw-rw-r-- 1 wshi wshi   4335 Oct 25 20:36 thisroot.sh
-rwxrwxr-x 1 wshi wshi  80736 Oct 25 21:05 xpdtest
[wshi@login5.summit bin]$ vi thisroot.sh 
[wshi@login5.summit bin]$ vi thisroot.sh 
[wshi@login5.summit bin]$ echo $ROOTSYS
/ccs/home/wshi/MaCh3/root

I also tried a separate install of v5-34-00-patches:

git clone -b v5-34-00-patches http://root.cern.ch/git/root.git v5-34-00-patches
cd v5-34-00-patches
./configure --enable-soversion --enable-minuit2 --enable-roofit --enable-python --disable-x11 --disable-mysql
make

But I am seeing the same error,

[wshi@login4.summit testROOT]$ root -l
-bash: root: command not found
[wshi@login4.summit testROOT]$ echo $ROOTSYS
/ccs/home/wshi/testROOT/v5-34-00-patches

Weird…

Does it work if you call root.exe ?

No, it doesn’t, that’s what I posted two threads above

[wshi@login1.summit bin]$ root.exe -l
Error in <UnknownClass::ReadFile>: no file name specified
Error in <UnknownClass::ReadFile>: no file name specified
Error: cannot open file "iostream"  (tmpfile):2:
*** Interpreter error recovered ***
Error in <TEnv::ReadFile>: no file name specified
Error in <TEnv::ReadFile>: no file name specified
Error in <TUnixSystem::DynamicPathName>: libMathCore[.so | .dll | .dylib | .sl | .dl | .a] does not exist in .:./lib:

 *** Break *** segmentation violation
Error in <TUnixSystem::StackTrace> script ./etc/gdb-backtrace.sh is missing

Hmm and do you get exactly the same error with root.exe when comparing with 5.34/38 and 5.34/34 and 5.34-00-patches?

Yes, exactly the same error as above for 5.34/38 and 5.34-00-patches, I can’t get 5.34/34 installed.

Hmm not sure what’s going on then for 5.34/38 (or patches).
Did you install the dependencies beforehand? Dependencies - ROOT
Did you get any error messages while compiling?

You can post the logs here, using this command:

./configure --enable-soversion --all > configure.out.txt 2>&1
make > make.out.txt 2>&1

See also Error in installing root 5.34.05

This is a cluster at OakRidge. I don’t see any error from the config step. compile shows a cpuid error. See logs:

configure.out.txt (7.2 KB)
make.out.txt (681.3 KB)

If use the way we normally config in above thread, there is no such error.

Oh, if “make” leads to an error, then it is normal that you do not get any “root” executable. So it does not compile.
(Use always “make” instead of “make -j4” at the end to verify a correct compilation.)

I see two errors before:

  • make: g77: Command not found
  • autoconf/config.guess: unable to guess system type

but maybe the problem comes from the fact that you are using g++ v8 instead of v7 as I suggested above.
Try installing locally g+±7 and gcc-7 and try again using this configure step:
--with-cxx=g++-7 --with-cc=gcc-7 --with-ld=g++-7

Hi, on the cluster there is a gcc7 vailavle, I did this

module load gcc/7.5.0

And then the version shows its correctly loaded,

[wshi@login5.summit v5-34-00-patches]$ gcc --version
gcc (GCC) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[wshi@login5.summit v5-34-00-patches]$ g++ --version
g++ (GCC) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

But when do the configure, it complains no C compiler gcc-7, I don’t understand:

[wshi@login5.summit v5-34-00-patches]$ ./configure --with-cxx=g++-7 --with-cc=gcc-7 --with-ld=g++-7                                                                              
Checking for source directory ... /ccs/home/wshi/testROOT/v5-34-00-patches
Configuring for linuxppc64gcc
Checking for GNU Make version >= 3.80 ... ok
Checking for C compiler ... no C compiler gcc-7 found
configure: C compiler MUST be installed
See http://root.cern.ch/drupal/content/build-prerequisites

Remove the --with-cxx and --with-cc flags, as you have already loaded them as default.

So I loaded gcc7, both errors are still there.

See attached log.
configure.out.txt (7.2 KB)
make.out.txt (655.7 KB)

Do you think the root executable is not there due to these two errors?
Or, should I try even older g++/gcc?

I can only locate this g77 piece in the ROOT makefile

ifeq ($(GCC_MAJOR),3)
NOUNDEF      := -Wl,--no-undefined
LDFLAGS      := $(filter-out $(NOUNDEF),$(LDFLAGS))
ifneq ($(GCC_MINOR),0)
ifeq ($(F77),g77)
LIBFRTBEGIN  := $(shell $(F77) -print-file-name=libfrtbegin.a)
F77LIBS      := $(LIBFRTBEGIN) $(F77LIBS)
endif
endif
endif
ifeq ($(GCC_MAJOR),4)
ifeq ($(F77),g77)
LIBFRTBEGIN  := $(shell $(F77) -print-file-name=libfrtbegin.a)
F77LIBS      := $(LIBFRTBEGIN) $(F77LIBS)
endif
endif

Try to add: --disable-unruan --disable-vc