The 2018.11 release of Buildroot was published a few days ago. As is well-known, Bootlin is a strong contributor to this project, and this blog post proposes a summary of the new features provided by 2018.11, and highlights the contributions made by Bootlin.
What’s new in 2018.11 ?
- From a CPU architecture support point of view, by far the most important addition is support for the RISC-V 64 architecture. For now, only the 64-bit version of the architecture is supported, but the patches for the 32-bit version have been posted already, and will hopefully be merged for the next release. It is worth mentioning that we have already used the RISC-V 64 support in Buildroot to provide a pre-built toolchain for this architecture on our toolchains.bootlin.com site.
- In the toolchain support area, the most important change is that glibc was upgraded to version 2.28. This caused a number of build issues with various packages, which were detected by the project autobuilders and fixed. musl was bumped to version 1.1.20, and the ARM (formerly Linaro) pre-built toolchains for ARM and AArch64 were updated.
- The support for hardening flags, i.e flags passed to gcc to improve the “security” of programs, has been changed, and is now done directly as part of the compiler wrapper that Buildroot has. Indeed, when using Buildroot, arm-linux-gcc is not directly the usual gcc compiler, but a small wrapper program that Buildroot uses to make sure we always pass the appropriate flags when calling the cross-compiler. Passing those hardening flags through the wrapper allowed to solve a number of build issues. Options such as
BR2_RELRO_PARTIAL
,BR2_RELRO_FULL
,BR2_SSP_REGULAR
,BR2_SSP_STRONG
andBR2_SSP_ALL
should therefore work better now. - In terms of filesystem images, while Buildroot already supports the most popular filesystem types, two additional filesystems are now supported: btrfs and f2fs.
- A number of new default configuration for various boards have been added: Amarula a64-relic, Bananapi m2 ultra, Embest riotboard, Hardkernel Odroid XU-4, QEMU riscv64-virt.
- A number of packages have been added: bird, bluez5_utils-headers, btrfs-progs, checksec, davici, duktape, ell, haproxy, libclc, libcorrect, libopencl, libopenresolv, nss-myhostname, riscv-pk, sedutil, spandsp, tini, waffle, xapian, not counting the dozens of new Perl and Python modules that have been added.
Bootlin contributions
By far and large, the most significant contribution from Bootlin to Buildroot is the activity of Thomas Petazzoni as a co-maintainer for the project. Out of the 1366 commits made between the 2018.08 and 2018.11 release, Thomas authored 126 commits, but more importantly reviewed and merged 883 patches from other developers, or in other words 64% of the commits that have been made.
As part of the 127 commits Bootlin contributed, we:
- Fixed a large number of build issues reported by the autobuilder, or by the CI testing the build of our defconfigs.
- Introduced a
make check-package
target to more easily use Buildroot check-package tool to verify the coding style of packages. - Updated the musl C library to 1.1.20.
- Updated the Solidrun MacchiatoBin defconfigs (board powered by a Marvell Armada 8K processor) to use the most recent kernel, U-Boot and ATF versions.
- Started adding a virtual package for opencl.
- Fixed a number of missing dependencies on host-pkgconf (i.e pkg-config) which were detected by our work on per-package directories, that we will discuss in a future blog post.
Here is the detailed list of our contributions to this release:
- Antoine Ténart (1):
- Thomas Petazzoni (126):
- configs/orangepi_zero_plus2: needs host-openssl to build Linux
- configs/pc_x86_64_efi: needs host-openssl to build Linux
- configs/pc_x86_64_bios: needs host-openssl to build Linux
- package/dtc: backport upstream fix solving Assertion Error with some .dts files
- package/dtc: renumber patches correctly
- package/libmicrohttpd: defining _REENTRANT on ARC is no longer needed
- Revert “libmicrohttpd: fix build on riscv”
- Revert “libkrb5: fix build on riscv”
- Revert “shadowsocks-libev: fix build on riscv”
- Revert “mtd: fix build on riscv”
- configs/riotboard: add missing dependency on host-openssl
- board/pc: use frame pointer unwinder in linux.config
- configs/orangepi_zero_plus2: U-Boot needs pylibfdt
- configs/olimex_a20_olinuxino_lime_legacy: use gcc 6.x and not the default version
- configs/armadeus_apf27: fix U-Boot configuration
- configs/cubieboard2: U-Boot needs pylibfdt
- configs/imx6-sabresd_qt5: add missing dependency on host-openssl
- rpm: really take DEPENDENCIES into account
- utils/genrandconfig: add missing new line when creating the configuration
- package/openocd: add missing host-pkgconf dependency
- package/libassuan: fixup libassuan-config
- libsigsegv: add RISC-V support
- libsemanage: define installation location of semanage.conf for host
- package/x11r7/xlib_libfontenc: add missing dependency on host-pkgconf
- support/testing/tests/fs/test_f2fs: fix flake8 warning
- .gitlab-ci.yml: update after addition of TestF2FS test case
- package/alsa-lib: update upstream status of patches
- package/alsa-lib: drop patch 0002-alsa-lib-provide-dummy-definitions-of-RTLD_-if-neces.patch
- package/alsa-utils: re-enable in BR2_STATIC_LIBS configuration
- fs/f2fs/Config.in: remove consecutive empty lines
- DEVELOPERS: add entry for fs/f2fs/
- package/bdwgc: drop AUTORECONF = YES
- nfs-utils: add patch to fix build with glibc 2.28
- package/libv4l: renumber patches
- python-async-timeout: add missing blank line in .mk file
- python-yarl: add missing blank line in .mk file
- lighttpd: adjust Config.in to make check-package happy
- python-typing: rewrap Config.in help text
- configs/{at91, atmel}*_dev*: drop Dropbear as it duplicates OpenSSH
- mysql: properly order “depends on” vs. bool
- tar: adjust Config.in comment dependency
- package/mongoose: bump to version 6.13
- package/mongoose: add hash for license file
- package/mongoose: add security patch fixing CVE-2018-10945
- package/opengl/opencl: new virtual package
- package/gcc: remove BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE
- package/gcc: introduce BR2_GCC_SUPPORTS_LIBCILKRTS
- package/gcc: disable libcilkrts when there is no thread support
- Revert “cargo-bin: bump version to 0.30.0”
- toolchain-external-arm-aarch64-be: fix check-package warning
- package/glibc: fix typo in hash file
- package/mesa3d: add explanation for the AUTORECONF = YES
- support/config-fragments/autobuild: test the ARM AArch64 toolchain
- docs/website: add TkOS to the sponsors
- mdadm: also install mdmon
- mdadm: move from /usr/sbin to /sbin
- mdadm: convert to generic-package
- boot/uboot: fix environment image generation on big endian systems
- support/testing: fix TestATFMarvell test case
- support/testing: fix TestATFAllwinner test case
- ustr: remove source code from target
- ptpd2: fix patch 0002 so that it applies properly
- freetype: drop calling autogen, no longer needed
- configs/solidrun_macchiatobin_marvell: bump component versions
- configs/solidrun_macchiatobin_mainline: bump component versions
- boot/arm-trusted-firmware: don’t pass TARGET_CONFIGURE_OPTS when building
- boot/binaries-marvell: bump version to marvell-armada-18.06
- boot/mv-ddr-marvell: bump version to armada-18.09.2
- boost: update upstream status of 0005-fix-static-detection-of-lock-free-atomic-ints.patch
- package/pkg-generic.mk: increase precision of timestamps
- glibc: split hash files for licenses, fixes ARC
- perl-plack: re-indent Config.in help text
- ljlinenoise: fix upstream URL in Config.in
- qt5serialbus: split 5.11.2 license file hashes into a separate file
- bitstream: fix hash file
- docs/website/sponsors: add sponsors of the Buildroot Developers Meeting @ ELCE 2018
- docs/website/sponsors: credit Scaleway for the Hackathon
- docs/website/sponsors: remove “current sponsors”, update “past sponsors”
- cups-filters: fix autoreconf justification
- crda: fix check-package warning
- toolchain-external: drop no longer needed CC_TARGET_
_ variables - arch: drop BR2_GCC_TARGET_CPU_REVISION option
- DEVELOPERS: remove Nathan Lynch
- xlib_libXdmcp: add missing dependency on host-pkgconf
- package/x11r7/xutil_makedepend: add missing dependency on host-pkgconf
- xlib_libxshmfence: drop AUTORECONF
- package/pkg-waf: properly escape HOST_DIR when defining
_WAF - glibc: move autoconf cache variables to GLIBC_CONF_ENV
- arch/arch.mk: fix check-package warnings
- musl: add upstream patch to fix race condition in file locking
- system: update Config.in comment about systemd dependencies
- perl-sys-cpu: improve Config.in description
- feh: fix typo in xlib_libXinerama dependency
- stress-ng: add hash for license file
- feh: add hash for license file
- pdbg: add hash for license file
- docs/website: add paragraph about the IRC channel restrictions
- docs/website: use https:// link for patchwork
- musl: bump to 1.1.20
- libtorrent: use patch file names generated by git format-patch
- e2fsprogs: simplify handling of ldconfig for target variant
- e2fsprogs: do not use ldconfig when building the host variant
- circus: fix build with Python 3.7.0
- synergy: change upstream location to fix download
- luarocks: add hash for license file
- libsoup: add patch to fix build on hosts without Python 3.x
- python-mimeparse: remove SOURCE variable
- e2fsprogs: group disable and enable together
- btrfs-progs: make e2fsprogs an optional dependency
- btrfs-progs: drop dependency on e2fsprogs by not building btrfs-convert
- e2fsprogs: build shared library for the host
- lzo: build shared library for the host
- sunxi-mali-mainline-driver: free-electrons is now bootlin
- sunxi-mali-mainline: free-electrons is now bootlin
- configs/arm_juno: bump ATF to v1.3
- libaio: bump to 0.3.111
- lvm2: host variant needs host-libaio
- libaio: add host variant
- libssh: fix download location
- botan: fix minor typo in Config.in file
- uboot: add option to depend on host-lzop
- kodi: drop trailing backslash
- package/samba4: drop patch numbering in patch 0003
- package/samba4: reformat patch 0002 as Git-formatted patch
- package/perl-device-serialport: fix LICENSE variable
- Makefile: introduce check-package target