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

Reply via email to