Jannie Pretorius
2023-Jun-28 11:55 UTC
[R] LINUX SuSE15.4 (GNU & Intel) compiler problem in "configure" file
Dear R-Support Team: I am fully aware that you are all extremely busy and forward this request as brief and clear as possible: Thank you for the comprehensive Documentation for R-4.3.1 (very helpful) A limitation seems to have emerged, using SuSE SP15.4 (kernel: 5.14.21-150400.22) on an INTEL Skylake-e SERVER, applying both the GNU and Intel (2023.0.0) compilers. a) The "configure" step complains about a syntax in the: .... R-4.3.1/ *configure* file As: ........ Partial "configure" output checking if libtool supports shared libraries... no checking whether to build shared libraries... no checking whether to build static libraries... yes checking how to run the C++ preprocessor... g++ -E checking for ld used by g++... /usr/x86_64-suse-linux/bin/ld checking if the linker (/usr/x86_64-suse-linux/bin/ld) is GNU ld... yes checking whether the g++ linker (/usr/x86_64-suse-linux/bin/ld) supports shared libraries... no checking for g++ option to produce PIC... -fPIC -DPIC checking if g++ PIC flag -fPIC -DPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking if g++ supports -c -o file.o... (cached) yes checking whether the g++ linker (/usr/x86_64-suse-linux/bin/ld) supports shared libraries... no checking dynamic linker characteristics... no checking how to hardcode library paths into programs... immediate checking if libtool supports shared libraries... no checking whether to build shared libraries... no checking whether to build static libraries... yes checking for gfortran option to produce PIC... -fPIC checking if gfortran PIC flag -fPIC works... yes checking if gfortran static flag -static works... yes checking if gfortran supports -c -o file.o... yes checking if gfortran supports -c -o file.o... (cached) yes checking whether the gfortran linker (/usr/x86_64-suse-linux/bin/ld) supports shared libraries... yes checking dynamic linker characteristics... no checking how to hardcode library paths into programs... immediate ./configure: line 24446: ${}: bad substitution b) Removing this dual inscripted *${* ${ }*}* obviously solves the limitation encountered during the configure step (below) ## Export LD_LIBRARY_PATH or equivalent. if eval "test -z \"\*${*${Rshlibpath_var}*}*\""; then eval "${Rshlibpath_var}=\"${R_LD_LIBRARY_PATH}\"" else eval "${Rshlibpath_var}=\"${R_LD_LIBRARY_PATH}${PATH_SEPARATOR}\${${Rshlibpath_var}}\"" fi *And offers a clean pre-compilation result as*: R is now configured for x86_64-pc-none Source directory: . Installation directory: /opt/R/v4.3.1 C compiler: gcc -g -O2 Fortran fixed-form compiler: gfortran -g -O2 Default C++ compiler: g++ -std=gnu++17 -g -O2 C++11 compiler: g++ -std=gnu++11 -g -O2 C++14 compiler: g++ -std=gnu++14 -g -O2 C++17 compiler: g++ -std=gnu++17 -g -O2 C++20 compiler: C++23 compiler: Fortran free-form compiler: gfortran -g -O2 Obj-C compiler: gcc -g -O2 -fobjc-exceptions Interfaces supported: X11 External libraries: pcre2, readline, BLAS(OpenBLAS), LAPACK(in blas), curl Additional capabilities: PNG, NLS, cairo, ICU Options enabled: shared R library, R profiling, memory profiling Capabilities skipped: JPEG, TIFF Options not enabled: shared BLAS Recommended packages: yes c) But this seemingly relates to an error in the "ldpath" file at: ...R-4.3.1/etc/ldpath during the subsequent compilation step: /SOFTWARE/CODE-R/R-BASE/v4.3.1/etc/*ldpaths*: line 16: *${}*: bad substitution make[4]: *** [../../../share/make/basepkg.mk:151: sysdata] Error 1 make[4]: Leaving directory '/SOFTWARE/CODE-R/R-BASE/v4.3.1/src/library/tools' make[3]: *** [Makefile:36: all] Error 2 make[3]: Leaving directory '/SOFTWARE/CODE-R/R-BASE/v4.3.1/src/library/tools' make[2]: *** [Makefile:37: R] Error 1 make[2]: Leaving directory '/SOFTWARE/CODE-R/R-BASE/v4.3.1/src/library' make[1]: *** [Makefile:28: R] Error 1 make[1]: Leaving directory '/SOFTWARE/CODE-R/R-BASE/v4.3.1/src' make: *** [Makefile:62: R] Error 1 Obviously, irrespective if the eliminaton of *${ }* under b) above has been applied or not. d) Can you offer a work around to this please ? Kind Regards Jan Pretorius Dr Jannie Pretorius Research Fellow (Senior Scientist) Centre for the Advancement of Scholarship & Chemistry Dept. OLD COLLEGE HOUSE (1-15) University of Pretoria Hatfield Campus, Pretoria Tel: +27 12 420 5305 -- This message and attachments are subject to a disclaimer. Please refer to? http://upnet.up.ac.za/services/it/documentation/docs/004167.pdf <http://upnet.up.ac.za/services/it/documentation/docs/004167.pdf>?for full details. [[alternative HTML version deleted]]
Ivan Krylov
2023-Jun-29 06:01 UTC
[R] LINUX SuSE15.4 (GNU & Intel) compiler problem in "configure" file
On Wed, 28 Jun 2023 16:55:33 +0500 Jannie Pretorius <jannie.pretorius at up.ac.za> wrote:> ./configure: line 24446: ${}: bad substitution> ## Export LD_LIBRARY_PATH or equivalent. > if eval "test -z \"\*${*${Rshlibpath_var}*}*\""; then > eval "${Rshlibpath_var}=\"${R_LD_LIBRARY_PATH}\"" > else > eval > "${Rshlibpath_var}=\"${R_LD_LIBRARY_PATH}${PATH_SEPARATOR}\${${Rshlibpath_var}}\"" > fiWhat's your /bin/sh? Is it a symlink to bash, dash, or something else? Does the config.log file created in the directory where you ran .../configure contain mentions of variables Rshlibpath_var and shlibpath_var? Which values do they have? (Are they really empty?) The configure script should have noticed that you're building for GNU/Linux and set these variables appropriately (the value should be 'LD_LIBRARY_PATH' in both cases). What is the output of tools/config.guess? -- Best regards, Ivan