This is the patch to fix the current llvm-toolchain FTBFS. I explained everything on the description already, but feel free to ask questions.
There's a PPA with the proposed change here: https://launchpad.net/~sergiodj/+archive/ubuntu/ftbfs-impish/+packages This PPA depends on the "volatile" PPA that doko is using to build the packages. Unfortunately, the llvm-toolchain package takes a long time to build, but I did verify locally that the build is passing. One of the dep8 tests is failing locally, but the failure is not related to this change. IMO, fixing the FTBFS is orthogonal to fixing the dep8 failure, which should be done later. ** Patch added: "fix-llvm-toolchain-ftbfs.patch" https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-11/+bug/1939424/+attachment/5517140/+files/fix-llvm-toolchain-ftbfs.patch -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to llvm-toolchain-11 in Ubuntu. https://bugs.launchpad.net/bugs/1939424 Title: FTBFS with Linux 5.13/GCC 11 Status in llvm-toolchain-11 package in Ubuntu: Confirmed Bug description: llvm-toolchain-11 is FTBFS'ing with Linux 5.13 because of: [ 8%] Building CXX object projects/compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.x86_64.dir/sanitizer_posix.cpp.o cd /<<PKGBUILDDIR>>/build-llvm/projects/compiler-rt/lib/sanitizer_common && /usr/bin/g++-11 -DHAVE_RPC_XDR_H=0 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/<<PKGBUILDDIR>>/build-llvm/projects/compiler-rt/lib/sanitizer_common -I/<<PKGBUILDDIR>>/compiler-rt/lib/sanitizer_common -I/<<PKGBUILDDIR>>/build-llvm/include -I/<<PKGBUILDDIR>>/llvm/include -I/<<PKGBUILDDIR>>/compiler-rt/lib/sanitizer_common/.. -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-redundant-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -ffunction-sections -fdata-sections -Wall -std=c++14 -Wno-unused-parameter -O2 -DNDEBUG -g1 -m64 -fPIC -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fno-stack-protector -fvisibility=hidden -fno-lto -O3 -g -Wno-variadic-macros -Wno-non-virtual-dtor -fno-rtti -Wframe-larger-than=570 -std=c++14 -o CMakeFiles/RTSanitizerCommon.x86_64.dir/sanitizer_posix.cpp.o -c /<<PKGBUILDDIR>>/compiler-rt/lib/sanitizer_common/sanitizer_posix.cpp /<<PKGBUILDDIR>>/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp:133:10: fatal error: linux/cyclades.h: No such file or directory 133 | #include <linux/cyclades.h> | ^~~~~~~~~~~~~~~~~~ compilation terminated. make[5]: *** [projects/compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.x86_64.dir/build.make:358: projects/compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.x86_64.dir/sanitizer_platform_limits_posix.cpp.o] Error 1 make[5]: *** Waiting for unfinished jobs.... make -f projects/compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommonCoverage.x86_64.dir/build.make projects/compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommonCoverage.x86_64.dir/depend make[5]: Entering directory '/<<PKGBUILDDIR>>/build-llvm' This is happening because the Cyclades driver has been finally removed from Linux (after being orphaned 13 years ago): https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/include/uapi/linux?h=v5.12&id=f76edd8f7ce06cdff2fe5b6b39a49644c684a161 LLVM includes cyclades.h when building libsanitizer, and therefore the FTBFS occurs. Upstream has fixed this by removing support for Cyclades from libsanitizer: https://github.com/llvm/llvm- project/commit/884040db086936107ec81656aa5b4c607235fb9a As for the GCC 11 failure, the problem is: [ 19%] Building CXX object tools/clang/utils/TableGen/CMakeFiles/obj.clang-tblgen.dir/ClangDiagnosticsEmitter.cpp.o cd /<<PKGBUILDDIR>>/build-llvm/tools/clang/stage2-bins/tools/clang/utils/TableGen && /<<PKGBUILDDIR>>/build-llvm/./bin/clang++ -DCLANG_VENDOR="\"Ubuntu \"" -D_GNU_SOURCE -D__STDC_CONSTANT_M ACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/<<PKGBUILDDIR>>/build-llvm/tools/clang/stage2-bins/tools/clang/utils/TableGen -I/<<PKGBUILDDIR>>/clang/utils/TableGen -I/<<PKGBUILDDIR> >/clang/include -I/<<PKGBUILDDIR>>/build-llvm/tools/clang/stage2-bins/tools/clang/include -I/<<PKGBUILDDIR>>/build-llvm/tools/clang/stage2-bins/include -I/<<PKGBUILDDIR>>/llvm/include -fuse -ld=gold -fPIC -Wno-unused-command-line-argument -Wno-unknown-warning-option -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused -parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-class-memaccess -Wno-noexcept-type -Wnon-vi rtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O2 -DNDEBUG -g1 -fno-exceptions -std=c ++14 -o CMakeFiles/obj.clang-tblgen.dir/ClangDiagnosticsEmitter.cpp.o -c /<<PKGBUILDDIR>>/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp In file included from /<<PKGBUILDDIR>>/llvm/utils/benchmark/src/benchmark_register.cc:15: /<<PKGBUILDDIR>>/llvm/utils/benchmark/src/benchmark_register.h:17:30: error: no member named 'numeric_limits' in namespace 'std' static const T kmax = std::numeric_limits<T>::max(); ~~~~~^ /<<PKGBUILDDIR>>/llvm/utils/benchmark/src/benchmark_register.h:17:45: error: 'T' does not refer to a value static const T kmax = std::numeric_limits<T>::max(); ^ /<<PKGBUILDDIR>>/llvm/utils/benchmark/src/benchmark_register.h:8:20: note: declared here template <typename T> ^ /<<PKGBUILDDIR>>/llvm/utils/benchmark/src/benchmark_register.h:17:47: error: no member named 'max' in the global namespace; did you mean 'kmax'? static const T kmax = std::numeric_limits<T>::max(); ^~~~~ kmax /<<PKGBUILDDIR>>/llvm/utils/benchmark/src/benchmark_register.h:17:18: note: 'kmax' declared here static const T kmax = std::numeric_limits<T>::max(); This comes from the fact that GCC 11 requires the inclusion of the <limits> header in order to access std::numeric_limits<T>. This has also been fixed upstream: https://github.com/llvm/llvm- project/commit/b498303066a63a203d24f739b2d2e0e56dca70d1 I'm preparing and testing a patch, and will attach it to this bug soon. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-11/+bug/1939424/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp