The libabseil-cpp package fails to build on a number of CPU architectures in our autobuilders. On most CPU architectures, the first issue looked like this: libabseil-cpp-20200225/absl/base/internal/direct_mmap.h: In function 'void* absl::lts_2020_02_25::base_internal::DirectMmap(void*, size_t, int, int, int, off64_t)': libabseil-cpp-20200225/absl/base/internal/direct_mmap.h:121:39: error: static assertion failed: Platform is not 64-bit 121 | static_assert(sizeof(unsigned long) == 8, "Platform is not 64-bit"); | ~~~~~~~~~~~~~~~~~~~~~~^~~~ libabseil-cpp-20200225/absl/base/internal/direct_mmap.h:123:15: error: 'SYS_mmap' was not declared in this scope; did you mean 'SYS_mmap2'? 123 | syscall(SYS_mmap, start, length, prot, flags, fd, offset)); | ^~~~~~~~ | SYS_mmap2 Indeed, on 32-bit architectures, libabseil-cpp has some special code to use the mmap2() system call, and it white-lists the supported architectures. It is therefore trivial to add support for more architectures. However, once this is fixed, another issue arises: absl/debugging/internal/examine_stack.cc uses the ucontext data structures, which are not provided by uClibc-ng on all CPU architectures, and even the code of libabseil-cpp does not exist for all CPU architectures. So, this commit solves that by simply making libabseil-cpp available on architectures/C libraries where it is supported: it needs ucontext support in the toolchain + a CPU architecture where absl/debugging/internal/examine_stack.cc has the appropriate logic. This new dependency is propagated to the reverse dependencies of libabseil-cpp. With this commit, libabseil-cpp passes a test-pkg -a test (so all external toolchains used by the autobuilders): andes-nds32 [ 1/45]: SKIPPED arm-aarch64 [ 2/45]: OK br-aarch64-glibc [ 3/45]: OK br-arcle-hs38 [ 4/45]: SKIPPED br-arm-basic [ 5/45]: SKIPPED br-arm-cortex-a9-glibc [ 6/45]: OK br-arm-cortex-a9-musl [ 7/45]: OK br-arm-cortex-m4-full [ 8/45]: SKIPPED br-arm-full [ 9/45]: OK br-arm-full-nothread [10/45]: SKIPPED br-arm-full-static [11/45]: SKIPPED br-i386-pentium4-full [12/45]: OK br-i386-pentium-mmx-musl [13/45]: OK br-m68k-5208-full [14/45]: SKIPPED br-m68k-68040-full [15/45]: SKIPPED br-microblazeel-full [16/45]: SKIPPED br-mips32r6-el-hf-glibc [17/45]: OK br-mips64-n64-full [18/45]: OK br-mips64r6-el-hf-glibc [19/45]: OK br-mipsel-o32-full [20/45]: OK br-nios2-glibc [21/45]: SKIPPED br-openrisc-uclibc [22/45]: SKIPPED br-powerpc-603e-basic-cpp [23/45]: SKIPPED br-powerpc64le-power8-glibc [24/45]: OK br-powerpc64-power7-glibc [25/45]: OK br-powerpc-e500mc-full [26/45]: SKIPPED br-riscv32 [27/45]: OK br-riscv64 [28/45]: OK br-riscv64-musl [29/45]: OK br-sh4-full [30/45]: SKIPPED br-sparc64-glibc [31/45]: SKIPPED br-sparc-uclibc [32/45]: SKIPPED br-x86-64-core2-full [33/45]: OK br-x86-64-musl [34/45]: OK br-xtensa-full [35/45]: SKIPPED linaro-aarch64-be [36/45]: OK linaro-aarch64 [37/45]: OK linaro-arm [38/45]: OK sourcery-arm-armv4t [39/45]: OK sourcery-arm [40/45]: OK sourcery-arm-thumb2 [41/45]: OK sourcery-mips64 [42/45]: OK sourcery-mips [43/45]: OK sourcery-nios2 [44/45]: SKIPPED sourcery-x86-64 [45/45]: OK 45 builds, 18 skipped, 0 build failed, 0 legal-info failed Fixes: http://autobuild.buildroot.net/results/ead663b4b67b0b57ed003a46db3182d95cc01bc0/ (and many similar build failures) Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> |
||
---|---|---|
arch | ||
board | ||
boot | ||
configs | ||
docs | ||
fs | ||
linux | ||
package | ||
support | ||
system | ||
toolchain | ||
utils | ||
.defconfig | ||
.flake8 | ||
.gitignore | ||
.gitlab-ci.yml | ||
CHANGES | ||
Config.in | ||
Config.in.legacy | ||
COPYING | ||
DEVELOPERS | ||
Makefile | ||
Makefile.legacy | ||
README |
Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation. The documentation can be found in docs/manual. You can generate a text document with 'make manual-text' and read output/docs/manual/manual.text. Online documentation can be found at http://buildroot.org/docs.html To build and use the buildroot stuff, do the following: 1) run 'make menuconfig' 2) select the target architecture and the packages you wish to compile 3) run 'make' 4) wait while it compiles 5) find the kernel, bootloader, root filesystem, etc. in output/images You do not need to be root to build or run buildroot. Have fun! Buildroot comes with a basic configuration for a number of boards. Run 'make list-defconfigs' to view the list of provided configurations. Please feed suggestions, bug reports, insults, and bribes back to the buildroot mailing list: buildroot@buildroot.org You can also find us on #buildroot on Freenode IRC. If you would like to contribute patches, please read https://buildroot.org/manual.html#submitting-patches