easybuilders / easybuild-easyblocks

Collection of easyblocks that implement support for building and installing software with EasyBuild.
https://easybuild.io
GNU General Public License v2.0
104 stars 284 forks source link

CMake-3.13.3-GCCcore-8.2.0.eb failed to build #2769

Open wrussian opened 2 years ago

wrussian commented 2 years ago

Hi all, trying to build CMake-3.13.3-GCCcore-8.2.0.eb (actually the error occurred while running the (this) dependency trying to build QGIS-3.4.12-foss-2019a-Python-3.7.2.eb) fails with a compilation error. C++11 feature (unique_pointer) is missing.

EB version : 4.5.3 OS version : SLES 15.3 python version : 3.6.13 eb --show-config #

Current EasyBuild configuration

(C: command line argument, D: default value, E: environment variable, F: configuration file)

# buildpath (E) = /opt/local/easybuild/build containerpath (E) = /opt/local/easybuild/containers installpath (E) = /opt/local installpath-modules (E) = /opt/local/hmns/modules installpath-software (E) = /opt/local module-naming-scheme (E) = HierarchicalMNS repositorypath (D) = /home/yadmin/.local/easybuild/ebfiles_repo robot-paths (D) = /home/yadmin/easybuild/software/EasyBuild/4.5.3/easybuild/easyconfigs sourcepath (E) = /opt/local/easybuild/sources umask (E) = 022

The build was started with command: eb CMake-3.13.3-GCCcore-8.2.0.eb --debug --robot

The error reported on the command line reads as: == FAILED: Installation ended unsuccessfully (build directory: /opt/local/easybuild/build/CMake/3.13.3/GCCcore-8.2.0): build failed (first 300 chars): cmd " ./configure --prefix=/opt/local/CMake/3.13.3-GCCcore-8.2.0 --parallel=36 --verbose -- -DCMAKE_USE_OPENSSL=ON -DCMAKE_USE_SYSTEM_ZLIB=ON -DCMAKE_USE_SYSTEM_BZIP2=ON -DCMAKE_USE_SYSTEM_CURL=ON" exited with exit code 11 and output:

Source directory: (took 1 min 14 secs) == Results of the build can be found in the log file(s) /tmp/eb-16zosa3s/easybuild-CMake-3.13.3-20220805.095021.hcqeU.log ERROR: Build of /home/yadmin/easybuild/software/EasyBuild/4.5.3/easybuild/easyconfigs/c/CMake/CMake-3.13.3-GCCcore-8.2.0.eb failed (err: 'build failed (first 300 chars): cmd " ./configure --prefix=/opt/local/CMake/3.13.3-GCCcore-8.2.0 --parallel=36 --verbose -- -DCMAKE_USE_OPENSSL=ON -DCMAKE_USE_SYSTEM_ZLIB=ON -DCMAKE_USE_SYSTEM_BZIP2=ON -DCMAKE_USE_SYSTEM_CURL=ON" exited with exit code 11 and output:\n---------------------------------------------\nSource directory:')

I attached the build log (/tmp/eb-16zosa3s/easybuild-CMake-3.13.3-20220805.095021.hcqeU.log) to the ticket. Many thanks in advance. Cheers, -Frank

easybuild-CMake-3.13.3-20220805.095021.hcqeU.log

ocaisa commented 2 years ago

C++11 support in GCC is feature complete since GCC 4.8.1 so it is either picking up a compiler from somewhere else, or there is something unusual about your build of GCC/8.2.0

ocaisa commented 2 years ago

Ah, I found https://stackoverflow.com/a/59809110 which indicates that it may be the drive you are building on that is causing the problem. Try changing the buildpath to another filesystem, e.g., --buildpath=/dev/shm/$USER

wrussian commented 2 years ago

Wow. Many thanks for the quick reply. Impressive. I tried: eb CMake-3.13.3-GCCcore-8.2.0.eb --debug --robot --buildpath=/dev/shm/$USER but, still got:

-- Check for working CXX compiler: /opt/local/GCCcore/8.2.0/bin/g++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Checking if compiler supports C11 _Thread_local -- Checking if compiler supports C11 _Thread_local - yes -- Checking if compiler supports needed C++17 constructs -- Checking if compiler supports needed C++17 constructs - yes -- Checking if compiler supports C++ make_unique -- Checking if compiler supports C++ make_unique - no -- Checking if compiler supports C++ unique_ptr -- Checking if compiler supports C++ unique_ptr - no CMake Error at CMakeLists.txt:92 (message): The C++ compiler does not support C++11 (e.g. std::unique_ptr).

again. Should I attach the logfile completly?

ocaisa commented 2 years ago

No, that's ok, there won't be much useful there I suspect, you'll need to go digging in the build directory and looking at the CMake logs to see if you can find the issue.

This thread on Gentoo might help https://bugs.gentoo.org/691544, do you have distcc on your system?

wrussian commented 2 years ago

I bundled the cmake logs into a tar archive and attached it below. From what I saw only information items are listed consistent to those in the eb logfile had been written, but I might have overlooked something. (?)

No, I don't use distcc. The build node had been set-up with help of a xCAT image and is the only 'builder' instance at the moment.

Should I try (--force) a re-installation of gcc-8.2.0?

easybuild-CMake-3.13.3-20220805.095021.hcqeU.log

wrussian commented 2 years ago

I'm sorry. The previous log attached wasn't the one I intended to upload. Here's the correct one. Sorry for the confusion cmake-3.13.3Logs.zip .

ocaisa commented 2 years ago

OK, you are getting a warning from binutils at linking that is causing the error (the warning is treated as a fatal error):

/opt/local/binutils/2.31.1-GCCcore-8.2.0/bin/ld.gold: warning: /usr/lib64/libc_nonshared.a(elf-init.oS): section .debug_str contains incorrectly aligned strings; the alignment of those strings won't be preserved

I'm afraid I don't know what to do about that since it is specific to your system. I can see a few things to try:

I worry though that this issue might come up again whenever you use CMake. What is the OS? It's funny that it is linking against a static libc (EDIT: reason is https://stackoverflow.com/questions/66701091/what-is-the-purpose-of-libc-nonshared-a).

wrussian commented 2 years ago

The OS is sles15.3 and the shared library is bundled in ~ # rpm -q --whatprovides /usr/lib64/libc_nonshared.a glibc-devel-2.31-9.3.2.x86_64 and provides for the following RPMs: ~ # rpm -q -R glibc-devel-2.31-9.3.2.x86_64 /bin/sh glibc = 2.31 libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.4)(64bit) libdl.so.2()(64bit) libdl.so.2(GLIBC_2.2.5)(64bit) libxcrypt-devel linux-kernel-headers rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1

I checked in the easybuild installation directory. None of GCC installation provides this file. Did this indicate an erroneous set-up of the easybuild compile environment? and of course if so, what's wrong actually(?) From the stackoverflow posting (66701091), it not clear to me whether this feature, file should be local (and shows it only by accident, because of the compiler warning) or be should part of the gcc module version installation in question. (?) I'll re-force the gcc-8.2.0 after double checking the EB compile and RTE.

ocaisa commented 2 years ago

This doesn't have anything to do with eb, it's libc related...so directly to your OS. Rebuilding GCC won't change that. Did you try my suggestions above?

wrussian commented 2 years ago

Yes, I tried it:


CMake 3.13.3, Copyright 2000-2018 Kitware, Inc. and Contributors Warning: This is an in-source build

Error when bootstrapping CMake: Cannot find appropriate C compiler on this system. Please specify one using environment variable CC. See cmake_bootstrap.log for compilers attempted.

wrussian commented 2 years ago

Sorry, for the second workaround I forgot to add a [BUILD] section for the preconfigopts. Anyway the build process failed with

Checking if compiler supports C++ unique_ptr - no CMake Error at CMakeLists.txt:92 (message): The C++ compiler does not support C++11 (e.g. std::unique_ptr).

again.