When installing the arm compiler on RHEL 8 or LEAP 15 the package gcc-11.2.0-Generic-AArch64-gcc-11.2.0-Generic-AArch64-* only lists following provides:
# rpm -q gcc-11.2.0-Generic-AArch64-RHEL-8-aarch64-linux-11.2.0-223.aarch64 --providesgcc-11.2.0-Generic-AArch64-RHEL-8-aarch64-linux = 11.2.0-223gcc-11.2.0-Generic-AArch64-RHEL-8-aarch64-linux(aarch-64) = 11.2.0-223libasan.so()(64bit)libasan.so.6()(64bit)libasan.so.6.0.0()(64bit)libatomic.so()(64bit)libatomic.so.1()(64bit)libatomic.so.1.2.0()(64bit)libcc1.so()(64bit)libcc1.so.0()(64bit)libcc1.so.0.0.0()(64bit)libcc1plugin.so()(64bit)libcc1plugin.so.0()(64bit)libcc1plugin.so.0.0.0()(64bit)libcp1plugin.so()(64bit)libcp1plugin.so.0()(64bit)libcp1plugin.so.0.0.0()(64bit)libdep.so()(64bit)libgcc_s.so()(64bit)libgcc_s.so.1()(64bit)libgfortran.so()(64bit)libgfortran.so.5()(64bit)libgfortran.so.5.0.0()(64bit)libgomp.so()(64bit)libgomp.so.1()(64bit)libgomp.so.1.0.0()(64bit)libhwasan.so()(64bit)libhwasan.so.0()(64bit)libhwasan.so.0.0.0()(64bit)libitm.so()(64bit)libitm.so.1()(64bit)libitm.so.1.0.0()(64bit)liblsan.so()(64bit)liblsan.so.0()(64bit)liblsan.so.0.0.0()(64bit)liblto_plugin.so()(64bit)libssp.so()(64bit)libssp.so.0()(64bit)libssp.so.0.0.0()(64bit)libstdc++.so()(64bit)libstdc++.so.6()(64bit)libstdc++.so.6(GLIBCXX_3.4.20)(64bit)libstdc++.so.6(GLIBCXX_3.4.21)(64bit)libstdc++.so.6(GLIBCXX_3.4.22)(64bit)libstdc++.so.6(GLIBCXX_3.4.23)(64bit)libstdc++.so.6(GLIBCXX_3.4.25)(64bit)libstdc++.so.6.0.29()(64bit)libstdc++.so.6.0.29-gdb.py()(64bit)libtsan.so()(64bit)libtsan.so.0()(64bit)libtsan.so.0.0.0()(64bit)libubsan.so()(64bit)libubsan.so.1()(64bit)libubsan.so.1.0.0()(64bit)
# rpm -q gcc-11.2.0-Generic-AArch64-RHEL-8-aarch64-linux-11.2.0-223.aarch64 --provides
gcc-11.2.0-Generic-AArch64-RHEL-8-aarch64-linux = 11.2.0-223
gcc-11.2.0-Generic-AArch64-RHEL-8-aarch64-linux(aarch-64) = 11.2.0-223
libasan.so()(64bit)
libasan.so.6()(64bit)
libasan.so.6.0.0()(64bit)
libatomic.so()(64bit)
libatomic.so.1()(64bit)
libatomic.so.1.2.0()(64bit)
libcc1.so()(64bit)
libcc1.so.0()(64bit)
libcc1.so.0.0.0()(64bit)
libcc1plugin.so()(64bit)
libcc1plugin.so.0()(64bit)
libcc1plugin.so.0.0.0()(64bit)
libcp1plugin.so()(64bit)
libcp1plugin.so.0()(64bit)
libcp1plugin.so.0.0.0()(64bit)
libdep.so()(64bit)
libgcc_s.so()(64bit)
libgcc_s.so.1()(64bit)
libgfortran.so()(64bit)
libgfortran.so.5()(64bit)
libgfortran.so.5.0.0()(64bit)
libgomp.so()(64bit)
libgomp.so.1()(64bit)
libgomp.so.1.0.0()(64bit)
libhwasan.so()(64bit)
libhwasan.so.0()(64bit)
libhwasan.so.0.0.0()(64bit)
libitm.so()(64bit)
libitm.so.1()(64bit)
libitm.so.1.0.0()(64bit)
liblsan.so()(64bit)
liblsan.so.0()(64bit)
liblsan.so.0.0.0()(64bit)
liblto_plugin.so()(64bit)
libssp.so()(64bit)
libssp.so.0()(64bit)
libssp.so.0.0.0()(64bit)
libstdc++.so()(64bit)
libstdc++.so.6()(64bit)
libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
libstdc++.so.6(GLIBCXX_3.4.22)(64bit)
libstdc++.so.6(GLIBCXX_3.4.23)(64bit)
libstdc++.so.6(GLIBCXX_3.4.25)(64bit)
libstdc++.so.6.0.29()(64bit)
libstdc++.so.6.0.29-gdb.py()(64bit)
libtsan.so()(64bit)
libtsan.so.0()(64bit)
libtsan.so.0.0.0()(64bit)
libubsan.so()(64bit)
libubsan.so.1()(64bit)
libubsan.so.1.0.0()(64bit)
Looking just at a single file in that RPM gives me much more symbols:
# /usr/lib/rpm/elfdeps /opt/arm/gcc-11.2.0_Generic-AArch64_RHEL-8_aarch64-linux/lib64/libstdc++.so.6libstdc++.so.6(GLIBCXX_3.4)(64bit)libstdc++.so.6(GLIBCXX_3.4.1)(64bit)libstdc++.so.6(GLIBCXX_3.4.1)(64bit)libstdc++.so.6(GLIBCXX_3.4.2)(64bit)libstdc++.so.6(GLIBCXX_3.4.2)(64bit)libstdc++.so.6(GLIBCXX_3.4.3)(64bit)libstdc++.so.6(GLIBCXX_3.4.3)(64bit)libstdc++.so.6(GLIBCXX_3.4.4)(64bit)libstdc++.so.6(GLIBCXX_3.4.4)(64bit)libstdc++.so.6(GLIBCXX_3.4.5)(64bit)libstdc++.so.6(GLIBCXX_3.4.5)(64bit)libstdc++.so.6(GLIBCXX_3.4.6)(64bit)libstdc++.so.6(GLIBCXX_3.4.6)(64bit)libstdc++.so.6(GLIBCXX_3.4.7)(64bit)libstdc++.so.6(GLIBCXX_3.4.7)(64bit)libstdc++.so.6(GLIBCXX_3.4.8)(64bit)libstdc++.so.6(GLIBCXX_3.4.8)(64bit)libstdc++.so.6(GLIBCXX_3.4.9)(64bit)libstdc++.so.6(GLIBCXX_3.4.9)(64bit)libstdc++.so.6(GLIBCXX_3.4.10)(64bit)libstdc++.so.6(GLIBCXX_3.4.10)(64bit)libstdc++.so.6(GLIBCXX_3.4.11)(64bit)libstdc++.so.6(GLIBCXX_3.4.11)(64bit)libstdc++.so.6(GLIBCXX_3.4.12)(64bit)libstdc++.so.6(GLIBCXX_3.4.12)(64bit)libstdc++.so.6(GLIBCXX_3.4.13)(64bit)libstdc++.so.6(GLIBCXX_3.4.13)(64bit)libstdc++.so.6(GLIBCXX_3.4.14)(64bit)libstdc++.so.6(GLIBCXX_3.4.14)(64bit)libstdc++.so.6(GLIBCXX_3.4.15)(64bit)libstdc++.so.6(GLIBCXX_3.4.15)(64bit)libstdc++.so.6(GLIBCXX_3.4.16)(64bit)libstdc++.so.6(GLIBCXX_3.4.16)(64bit)libstdc++.so.6(GLIBCXX_3.4.17)(64bit)libstdc++.so.6(GLIBCXX_3.4.17)(64bit)libstdc++.so.6(GLIBCXX_3.4.18)(64bit)libstdc++.so.6(GLIBCXX_3.4.18)(64bit)libstdc++.so.6(GLIBCXX_3.4.19)(64bit)libstdc++.so.6(GLIBCXX_3.4.19)(64bit)libstdc++.so.6(GLIBCXX_3.4.20)(64bit)libstdc++.so.6(GLIBCXX_3.4.20)(64bit)libstdc++.so.6(GLIBCXX_3.4.21)(64bit)libstdc++.so.6(GLIBCXX_3.4.21)(64bit)libstdc++.so.6(GLIBCXX_3.4.22)(64bit)libstdc++.so.6(GLIBCXX_3.4.22)(64bit)libstdc++.so.6(GLIBCXX_3.4.23)(64bit)libstdc++.so.6(GLIBCXX_3.4.23)(64bit)libstdc++.so.6(GLIBCXX_3.4.24)(64bit)libstdc++.so.6(GLIBCXX_3.4.24)(64bit)libstdc++.so.6(GLIBCXX_3.4.25)(64bit)libstdc++.so.6(GLIBCXX_3.4.25)(64bit)libstdc++.so.6(GLIBCXX_3.4.26)(64bit)libstdc++.so.6(GLIBCXX_3.4.26)(64bit)libstdc++.so.6(GLIBCXX_3.4.27)(64bit)libstdc++.so.6(GLIBCXX_3.4.27)(64bit)libstdc++.so.6(GLIBCXX_3.4.28)(64bit)libstdc++.so.6(GLIBCXX_3.4.28)(64bit)libstdc++.so.6(GLIBCXX_3.4.29)(64bit)libstdc++.so.6(GLIBCXX_3.4.29)(64bit)libstdc++.so.6(CXXABI_1.3)(64bit)libstdc++.so.6(CXXABI_1.3.1)(64bit)libstdc++.so.6(CXXABI_1.3.1)(64bit)libstdc++.so.6(CXXABI_1.3.2)(64bit)libstdc++.so.6(CXXABI_1.3.2)(64bit)libstdc++.so.6(CXXABI_1.3.3)(64bit)libstdc++.so.6(CXXABI_1.3.3)(64bit)libstdc++.so.6(CXXABI_1.3.4)(64bit)libstdc++.so.6(CXXABI_1.3.4)(64bit)libstdc++.so.6(CXXABI_1.3.5)(64bit)libstdc++.so.6(CXXABI_1.3.5)(64bit)libstdc++.so.6(CXXABI_1.3.6)(64bit)libstdc++.so.6(CXXABI_1.3.6)(64bit)libstdc++.so.6(CXXABI_1.3.7)(64bit)libstdc++.so.6(CXXABI_1.3.7)(64bit)libstdc++.so.6(CXXABI_1.3.8)(64bit)libstdc++.so.6(CXXABI_1.3.8)(64bit)libstdc++.so.6(CXXABI_1.3.9)(64bit)libstdc++.so.6(CXXABI_1.3.9)(64bit)libstdc++.so.6(CXXABI_1.3.10)(64bit)libstdc++.so.6(CXXABI_1.3.10)(64bit)libstdc++.so.6(CXXABI_1.3.11)(64bit)libstdc++.so.6(CXXABI_1.3.11)(64bit)libstdc++.so.6(CXXABI_1.3.12)(64bit)libstdc++.so.6(CXXABI_1.3.12)(64bit)libstdc++.so.6(CXXABI_1.3.13)(64bit)libstdc++.so.6(CXXABI_1.3.13)(64bit)libstdc++.so.6(CXXABI_TM_1)(64bit)libstdc++.so.6()(64bit)
# /usr/lib/rpm/elfdeps /opt/arm/gcc-11.2.0_Generic-AArch64_RHEL-8_aarch64-linux/lib64/libstdc++.so.6
libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.1)(64bit)
libstdc++.so.6(GLIBCXX_3.4.2)(64bit)
libstdc++.so.6(GLIBCXX_3.4.3)(64bit)
libstdc++.so.6(GLIBCXX_3.4.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.5)(64bit)
libstdc++.so.6(GLIBCXX_3.4.6)(64bit)
libstdc++.so.6(GLIBCXX_3.4.7)(64bit)
libstdc++.so.6(GLIBCXX_3.4.8)(64bit)
libstdc++.so.6(GLIBCXX_3.4.9)(64bit)
libstdc++.so.6(GLIBCXX_3.4.10)(64bit)
libstdc++.so.6(GLIBCXX_3.4.11)(64bit)
libstdc++.so.6(GLIBCXX_3.4.12)(64bit)
libstdc++.so.6(GLIBCXX_3.4.13)(64bit)
libstdc++.so.6(GLIBCXX_3.4.14)(64bit)
libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
libstdc++.so.6(GLIBCXX_3.4.16)(64bit)
libstdc++.so.6(GLIBCXX_3.4.17)(64bit)
libstdc++.so.6(GLIBCXX_3.4.18)(64bit)
libstdc++.so.6(GLIBCXX_3.4.19)(64bit)
libstdc++.so.6(GLIBCXX_3.4.24)(64bit)
libstdc++.so.6(GLIBCXX_3.4.26)(64bit)
libstdc++.so.6(GLIBCXX_3.4.27)(64bit)
libstdc++.so.6(GLIBCXX_3.4.28)(64bit)
libstdc++.so.6(GLIBCXX_3.4.29)(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit)
libstdc++.so.6(CXXABI_1.3.1)(64bit)
libstdc++.so.6(CXXABI_1.3.2)(64bit)
libstdc++.so.6(CXXABI_1.3.3)(64bit)
libstdc++.so.6(CXXABI_1.3.4)(64bit)
libstdc++.so.6(CXXABI_1.3.5)(64bit)
libstdc++.so.6(CXXABI_1.3.6)(64bit)
libstdc++.so.6(CXXABI_1.3.7)(64bit)
libstdc++.so.6(CXXABI_1.3.8)(64bit)
libstdc++.so.6(CXXABI_1.3.9)(64bit)
libstdc++.so.6(CXXABI_1.3.10)(64bit)
libstdc++.so.6(CXXABI_1.3.11)(64bit)
libstdc++.so.6(CXXABI_1.3.12)(64bit)
libstdc++.so.6(CXXABI_1.3.13)(64bit)
libstdc++.so.6(CXXABI_TM_1)(64bit)
Building an RPM aginst this compiler will give me a dependency on some of these symbols but because the gcc-11.2.0-Generic-AArch64-* does not list these dependecies, the installation fails.
Can the list of provides of gcc-11.2.0-Generic-AArch64-* please be corrected.
As mentioned the same error happens on RHEL 8 and LEAP 15.3
Hi,
We have started looking into this issue. Could you share some more details on how to reproduce the issue? That would help us to make sure that we are fixing your use case as we do this.
Thanks,
Alban
Thanks.
Compiling the boost rpm from OpenHPC like here https://obs.openhpc.community/package/live_build_log/OpenHPC:2.6:Factory/boost-arm1-openmpi4/EL_8/aarch64 RPM will detect a dependency on libstdc++.so.6(GLIBCXX_3.4.29)(64bit)
The gcc-11.2.0-Generic-AArch64-RHEL-8-aarch64-linux-11.2.0-223.aarch64 RPM, however, does not list this symbol as a dependency that the package provides. Trying to install the boost package from above link with dnf will now fail because the symbol libstdc++.so.6(GLIBCXX_3.4.29)(64bit) cannot be found. It does exist however in the file, but not in the RPM database.
gcc-11.2.0-Generic-AArch64-RHEL-8-aarch64-linux-11.2.0-223.aarch64
In OpenHPC we have a workaround for it, but only for the missing symbols we found during package builds. Additional symbols which are missing from the gcc-11.2.0-Generic-AArch64-RHEL-8-aarch64-linux-11.2.0-223.aarch64 RPM are not part of our workaround.
Our workaround is here: https://github.com/openhpc/ohpc/blob/2.x/components/compiler-families/arm-compilers-devel/SPECS/arm-compilers-devel.spec#L41
We have a meta package which requires the ARM compiler and has the missing RPM dependencies listed even if the meta package does not contain the symbols. It is not a good solution but a workaround for OpenHPC.
By just exposing all symbols of the package to the RPM database no workarounds would be necessary. It seems some symbols are filtered out of the RPM. Not sure what the reason is, but it breaks regular RPM operations.
We have now released a new version of Arm Compiler for Linux, version 23.04. It can be downloaded as usual at:
https://developer.arm.com/downloads/-/arm-compiler-for-linux
The RPM packaging for GCC has been improved to list all the provided symbols, which will fix your workflow. This also introduces an update to GCC 12.2.0
Please, let us know how you get on with the new package.
Regards,