From 9e8d671b7c86222a68447e101c553d46ef060e99 Mon Sep 17 00:00:00 2001 From: PartialVolume <22084881+PartialVolume@users.noreply.github.com> Date: Wed, 8 Nov 2023 19:10:58 +0000 Subject: [PATCH] Update to buildroot 2023.08.2, updated nwipe to v0.35, added ChromeOS and Microsoft Surface drivers, fibre channel drivers. --- .gitlab-ci.yml | 12 +- CHANGES | 314 + Config.in | 2 +- Config.in.legacy | 52 + DEVELOPERS | 152 +- Makefile | 16 +- arch/Config.in | 9 + arch/Config.in.riscv | 10 +- arch/Config.in.x86 | 210 +- arch/arch.mk.riscv | 3 + ...iscv-Fix-build-against-binutils-2.38.patch | 58 + board/bsh/imx8mn-bsh-smm-s2/readme.txt | 2 +- ...iscv-Fix-build-against-binutils-2.38.patch | 58 + ...dd-support-for-new-binutils-versions.patch | 61 + ...Makefile-Suppress-array-bounds-error.patch | 51 + board/orangepi/orangepi-lite2/readme.txt | 2 +- board/orangepi/orangepi-one-plus/readme.txt | 2 +- board/orangepi/orangepi-zero-plus/readme.txt | 2 +- board/orangepi/orangepi-zero-plus2/readme.txt | 2 +- board/qemu/aarch64-virt/linux.config | 5 +- ...001-m68k-Fix-invalid-.section-syntax.patch | 97 + ...001-m68k-Fix-invalid-.section-syntax.patch | 97 + board/qemu/ppc64le-powernv8/readme.txt | 2 +- board/radxa/rock5b/boot.cmd | 3 + board/radxa/rock5b/genimage.cfg | 34 + board/radxa/rock5b/linux.fragment | 4 + ...st-ether_addr-prototypes-to-silence-.patch | 64 + ...x-building-error-on-Werror-array-com.patch | 43 + board/radxa/rock5b/post-image.sh | 7 + board/radxa/rock5b/readme.txt | 82 + board/radxa/rock5b/rock5b.its | 46 + board/raspberrypi/genimage-raspberrypi0.cfg | 1 + board/raspberrypi/genimage-raspberrypi2.cfg | 1 + board/raspberrypi/post-build.sh | 8 + board/shredos/bootx64.efi | Bin 737280 -> 1097728 bytes board/shredos/bootx64.efi.2021.08 | Bin 643072 -> 0 bytes board/shredos/bootx64.efi.original | Bin 555008 -> 0 bytes ...x64.efi.recent.build.without.efigop.efiuga | Bin 479232 -> 0 bytes .../shredos/bootx64.efi.used.up.to.01-Jun-23 | Bin 528384 -> 0 bytes board/shredos/genimage.cfg | 2 +- board/shredos/kernel-4.14-defconfig.config | 4430 --------- board/shredos/kernel-5.13-defconfig.config | 1230 --- board/shredos/kernel-5.6-defconfig.config | 1082 -- ...fig.config => kernel-6.4-defconfig.config} | 42 +- board/shredos/version.txt | 2 +- .../common/stm32f4xx/busybox.fragment | 21 + .../common/stm32f4xx/stm32-post-build.sh | 3 + ...dd-support-for-new-binutils-versions.patch | 1 + board/versal/post-build.sh | 5 +- board/versal/post-image.sh | 14 +- board/zynq/post-image.sh | 2 +- ...dd-support-for-new-binutils-versions.patch | 1 + boot/Config.in | 1 - ...-add-support-for-new-binutils-versio.patch | 59 + ...dd-support-for-new-binutils-versions.patch | 61 + ...dd-support-for-new-binutils-versions.patch | 61 + ...dd-support-for-new-binutils-versions.patch | 61 + ...dd-support-for-new-binutils-versions.patch | 61 + ...dd-support-for-new-binutils-versions.patch | 61 + ...dd-support-for-new-binutils-versions.patch | 61 + ...2-build-tools-avoid-unnecessary-link.patch | 77 + ...1-build-tools-avoid-unnecessary-link.patch | 77 + boot/at91bootstrap/at91bootstrap.mk | 8 +- boot/at91dataflashboot/at91dataflashboot.mk | 7 +- boot/barebox/Config.in | 12 + boot/barebox/barebox.mk | 14 + boot/edk2/Config.in | 15 + boot/edk2/edk2.hash | 2 +- boot/edk2/edk2.mk | 9 +- ...onfig-Restore-umask-for-the-grub.cfg.patch | 6 +- ...hainloader-Simplify-the-loader-state.patch | 126 + ...ot-Add-API-to-pass-context-to-loader.patch | 165 + ...i-chainloader-Use-grub_loader_set_ex.patch | 80 + ...ct-non-kernel-files-in-the-shim_lock.patch | 105 + ...07-video-Remove-trailing-whitespaces.patch | 689 ++ ...g-Abort-sooner-if-a-read-operation-f.patch | 204 + ...g-Refuse-to-handle-multiple-image-he.patch | 34 + ...g-Drop-greyscale-support-to-fix-heap.patch | 173 + ...g-Avoid-heap-OOB-R-W-inserting-huff-.patch | 44 + ...eg-Block-int-underflow-wild-pointer-.patch | 78 + ...3-net-ip-Do-IP-fragment-maths-safely.patch | 56 + ...Fix-OOB-write-for-split-http-headers.patch | 50 + ...or-out-on-headers-with-LF-without-CR.patch | 52 + ...erflow-in-grub_font_get_glyph_intern.patch | 116 + ...-integer-overflows-in-grub_font_cons.patch | 83 + ...ix-an-integer-underflow-in-blit_comb.patch | 93 + ...gnore-checksum-seed-incompat-feature.patch | 61 + ...gnore-the-large_dir-incompat-feature.patch | 60 + boot/grub2/grub2.mk | 19 + ...-access-to-low-addresses-with-gcc-12.patch | 49 + ...02-Makefile-disable-stack-protection.patch | 33 + boot/opensbi/Config.in | 6 +- boot/opensbi/opensbi.hash | 2 +- boot/uboot/Config.in | 19 + boot/uboot/uboot.mk | 22 +- configs/andes_ae350_45_defconfig | 1 - configs/avenger96_defconfig | 3 +- configs/beaglebone_defconfig | 1 + configs/beaglebone_qt5_defconfig | 2 +- configs/beaglev_defconfig | 2 + configs/ci20_defconfig | 2 +- configs/freescale_imx6qsabresd_defconfig | 1 - configs/freescale_imx8mmevk_defconfig | 1 + configs/freescale_imx8mnevk_defconfig | 1 + configs/freescale_imx8mpevk_defconfig | 1 + configs/freescale_imx8mqevk_defconfig | 1 + configs/freescale_imx8qmmek_defconfig | 1 + configs/freescale_imx8qxpmek_defconfig | 1 + configs/grinn_chiliboard_defconfig | 1 + configs/hifive_unleashed_defconfig | 14 +- configs/imx7d-sdb_defconfig | 6 +- configs/ls1028ardb_defconfig | 3 + configs/mx53loco_defconfig | 1 + configs/nitrogen6sx_defconfig | 11 +- configs/nitrogen6x_defconfig | 11 +- configs/nitrogen7_defconfig | 11 +- configs/nitrogen8m_defconfig | 15 +- configs/nitrogen8mm_defconfig | 15 +- configs/nitrogen8mn_defconfig | 15 +- configs/nitrogen8mp_defconfig | 17 +- configs/olimex_a20_olinuxino_lime2_defconfig | 4 +- configs/olimex_a20_olinuxino_lime_defconfig | 4 +- .../olimex_stmp157_olinuxino_lime_defconfig | 9 +- configs/pc_x86_64_bios_defconfig | 1 + configs/pc_x86_64_efi_defconfig | 1 + configs/qemu_m68k_mcf5208_defconfig | 1 + configs/qemu_m68k_q800_defconfig | 1 + configs/qemu_ppc64_e5500_defconfig | 1 - configs/qemu_ppc64_pseries_defconfig | 1 - configs/qemu_ppc64le_powernv8_defconfig | 1 - configs/qemu_ppc64le_pseries_defconfig | 1 - configs/rock5b_defconfig | 41 + configs/shredos_defconfig | 9 +- configs/sipeed_maix_bit_sdcard_defconfig | 1 + configs/sipeed_maix_dock_sdcard_defconfig | 1 + configs/sipeed_maix_go_sdcard_defconfig | 1 + configs/sipeed_maixduino_sdcard_defconfig | 1 + configs/stm32f429_disco_xip_defconfig | 1 + configs/stm32f469_disco_sd_defconfig | 1 + configs/stm32f469_disco_xip_defconfig | 1 + configs/stm32mp157a_dk1_defconfig | 3 +- configs/stm32mp157c_dk2_defconfig | 3 +- configs/stm32mp157c_odyssey_defconfig | 1 + configs/versal_vck190_defconfig | 1 + configs/visionfive2_defconfig | 2 +- configs/zynq_microzed_defconfig | 7 +- configs/zynq_zc706_defconfig | 7 +- configs/zynq_zed_defconfig | 7 +- configs/zynqmp_kria_kv260_defconfig | 2 +- configs/zynqmp_zcu102_defconfig | 1 + configs/zynqmp_zcu106_defconfig | 1 + docs/manual/contribute.txt | 17 + docs/manual/docbook-xsl.css | 329 + docs/manual/github_hash_mongrel2.png | Bin 0 -> 19029 bytes docs/manual/logo.png | Bin 0 -> 117499 bytes docs/manual/manual.html | 6107 ++++++++++++ docs/manual/manual.pdf | Bin 0 -> 615586 bytes docs/manual/manual.text | 8758 +++++++++++++++++ docs/website/download.html | 54 +- docs/website/news.html | 179 +- linux/Config.in | 6 +- linux/linux.hash | 14 +- linux/linux.mk | 5 +- package/Config.in | 31 +- package/Config.in.host | 7 +- package/Makefile.in | 4 +- .../acpica/0001-build-do-not-use-Werror.patch | 82 - package/acpica/Config.in | 5 +- package/acpica/acpica.hash | 6 +- package/acpica/acpica.mk | 8 +- ...mpx-fix-const-nonconst-type-mismatch.patch | 51 + package/agentpp/agentpp.mk | 1 + ...ver-build-error-on-non-ELF-platforms.patch | 84 + package/alsa-lib/alsa-lib.hash | 2 +- package/alsa-lib/alsa-lib.mk | 2 +- package/alsa-plugins/alsa-plugins.mk | 4 + package/alsa-utils/alsa-utils.hash | 2 +- package/alsa-utils/alsa-utils.mk | 2 +- package/assimp/Config.in | 10 +- package/asterisk/asterisk.hash | 2 +- package/asterisk/asterisk.mk | 2 +- package/at-spi2-atk/Config.in | 22 - package/at-spi2-atk/at-spi2-atk.hash | 5 - package/at-spi2-atk/at-spi2-atk.mk | 19 - package/aubio/aubio.mk | 1 + ...ine-__attribute_malloc__-when-needed.patch | 35 + package/audit/audit.hash | 2 +- package/audit/audit.mk | 2 +- .../autoconf-archive/autoconf-archive.hash | 4 +- package/autoconf-archive/autoconf-archive.mk | 2 +- package/azure-iot-sdk-c/azure-iot-sdk-c.hash | 2 +- package/azure-iot-sdk-c/azure-iot-sdk-c.mk | 2 +- package/batman-adv/batman-adv.hash | 7 +- package/batman-adv/batman-adv.mk | 2 +- package/berkeleydb/Config.in | 5 + package/berkeleydb/berkeleydb.mk | 1 + package/bind/Config.in | 6 +- package/bind/bind.hash | 4 +- package/bind/bind.mk | 13 +- ...or1k-fix-building-with-gcc-version-5.patch | 50 - ...tive-relocation-against-dynamic-on-P.patch | 59 - ...K_GOT16-signed-overflow-by-using-spe.patch | 75 - ...le-descriptor-if-there-is-no-archive.patch | 236 - ...OT32-relocations-against-ABS-symbols.patch | 47 - ...or1k-fix-building-with-gcc-version-5.patch | 50 - ...K_GOT16-signed-overflow-by-using-spe.patch | 75 - ...binutils-2.38-vs.-ppc32-linux-kernel.patch | 55 - .../{2.37 => 2.40}/0001-sh-conf.patch | 14 +- .../0002-poison-system-directories.patch | 65 +- .../{2.38 => 2.41}/0001-sh-conf.patch | 14 +- .../0002-poison-system-directories.patch | 65 +- package/binutils/Config.in.host | 28 +- package/binutils/binutils.hash | 6 +- package/binutils/binutils.mk | 15 +- ...includes-to-fix-gcc-13-compile-error.patch | 48 + ...efactor-add-most-of-src-util-to-iwyu.patch | 34 + .../0004-src-util-string-h-fix-gcc13.patch | 23 + package/bitwise/bitwise.hash | 2 +- package/bitwise/bitwise.mk | 2 +- package/bluez-alsa/Config.in | 3 + package/bluez-alsa/bluez-alsa.hash | 4 +- package/bluez-alsa/bluez-alsa.mk | 6 +- .../bluez5_utils-headers.mk | 2 +- .../0001-configure-Check-ell-path.patch | 35 + .../bluez5_utils/0001-musl-max-input.patch | 37 - package/bluez5_utils/bluez5_utils.hash | 2 +- package/bluez5_utils/bluez5_utils.mk | 4 +- ...x-build-on-machines-with-modern-flex.patch | 133 - ...n-machines-with-modern-flex-versions.patch | 69 + package/bootgen/bootgen.hash | 2 +- package/bootgen/bootgen.mk | 2 +- package/bpftool/Config.in | 1 + package/busybox/busybox.config | 14 +- package/busybox/busybox.hash | 4 +- package/busybox/busybox.mk | 2 +- package/bwm-ng/bwm-ng.mk | 1 + package/c-ares/c-ares.hash | 2 +- package/c-ares/c-ares.mk | 2 +- package/cairo/cairo.mk | 2 +- package/canfestival/Config.in | 90 - package/canfestival/canfestival.hash | 3 - package/canfestival/canfestival.mk | 59 - package/capnproto/capnproto.hash | 2 +- package/capnproto/capnproto.mk | 2 +- ...-fix-Work-around-GCC-12.3-bug-109241.patch | 29 + package/ccache/ccache.hash | 4 +- package/ccache/ccache.mk | 2 +- package/check/check.hash | 2 +- package/check/check.mk | 16 +- package/chocolate-doom/chocolate-doom.mk | 2 + package/clamav/clamav.hash | 2 +- package/clamav/clamav.mk | 2 +- .../cmake/0001-rename-cmake-rootfile.patch | 6 +- package/cmake/Config.in | 6 +- package/cmake/Config.in.host | 25 + package/cmake/cmake.hash | 6 +- package/cmake/cmake.mk | 5 +- package/cmocka/cmocka.mk | 5 + package/composer/Config.in.host | 8 + package/composer/composer.hash | 4 + package/composer/composer.mk | 33 + package/conmon/Config.in | 14 + package/conmon/conmon.hash | 3 + package/conmon/conmon.mk | 36 + ...-gweb-Fix-OOB-write-in-received_data.patch | 36 - ...-reference-counter-to-portal-context.patch | 142 - ...spr-Update-portal-context-references.patch | 175 - package/connman/connman.hash | 2 +- package/connman/connman.mk | 9 +- package/containerd/containerd.hash | 2 +- package/containerd/containerd.mk | 2 +- package/cpio/cpio.mk | 4 - package/crucible/crucible.hash | 2 +- package/crucible/crucible.mk | 2 +- package/crudini/crudini.mk | 3 + package/cryptodev-linux/Config.in | 14 + package/cryptodev-linux/cryptodev-linux.hash | 2 +- package/cryptodev-linux/cryptodev-linux.mk | 4 +- package/cryptodev/Config.in | 50 - package/cryptodev/cryptodev.mk | 7 - ...raster-interpret.c-Fix-CVE-2023-4504.patch | 45 + package/cups/cups.hash | 4 +- package/cups/cups.mk | 5 +- .../0005-Fix-build-on-Linux-6.3.patch | 116 + .../0006-Fix-build-on-Linux-6.4.patch | 69 + package/dav1d/dav1d.hash | 4 +- package/dav1d/dav1d.mk | 3 +- package/dbus-broker/session.conf | 15 + package/dbus-broker/system.conf | 25 +- package/dbus/dbus.hash | 6 +- package/dbus/dbus.mk | 3 +- package/dfu-programmer/Config.in | 17 + package/dfu-programmer/dfu-programmer.hash | 3 + package/dfu-programmer/dfu-programmer.mk | 25 + package/diffutils/diffutils.hash | 4 +- package/diffutils/diffutils.mk | 3 +- package/dmidecode/dmidecode.hash | 5 +- package/dmidecode/dmidecode.mk | 2 +- package/dnsmasq/S80dnsmasq | 8 +- package/docker-cli/docker-cli.hash | 2 +- package/docker-cli/docker-cli.mk | 2 +- package/docker-compose/docker-compose.hash | 2 +- package/docker-compose/docker-compose.mk | 2 +- package/docker-engine/docker-engine.hash | 2 +- package/docker-engine/docker-engine.mk | 2 +- package/dos2unix/dos2unix.hash | 6 +- package/dos2unix/dos2unix.mk | 2 +- package/dracut/dracut.mk | 1 + package/dt/Config.in | 2 +- ...-sanity-check-to-extent-manipulation.patch | 59 - package/e2fsprogs/e2fsprogs.hash | 4 +- package/e2fsprogs/e2fsprogs.mk | 10 +- package/edk2-non-osi/edk2-non-osi.hash | 2 +- package/edk2-non-osi/edk2-non-osi.mk | 2 +- package/edk2-platforms/edk2-platforms.hash | 2 +- package/edk2-platforms/edk2-platforms.mk | 2 +- package/efl/efl.hash | 4 +- package/efl/efl.mk | 2 +- ...not-download-or-compile-dependencies.patch | 12 +- package/ejabberd/0002-fix-ejabberdctl.patch | 4 +- package/ejabberd/0003-correct-includes.patch | 362 +- package/ejabberd/ejabberd.hash | 3 +- package/ejabberd/ejabberd.mk | 5 +- .../0001-elf2flt-handle-binutils-2.34.patch | 4 +- ...tate-32-byte-alignment-for-.data-sec.patch | 4 +- ...03-elf2flt-add-riscv-64-bits-support.patch | 8 +- ...2flt-create-a-common-helper-function.patch | 20 +- ...l-error-regression-on-m68k-xtensa-ri.patch | 8 +- ...=> 0006-xtensa-fix-text-relocations.patch} | 10 +- ...07-elf2flt-remove-use-of-BFD_VMA_FMT.patch | 169 + ...e-relocations-required-to-be-handled.patch | 40 + package/elf2flt/elf2flt.mk | 17 +- ...e-Werror-conditional-to-BUILD_WERROR.patch | 4 +- package/elfutils/elfutils.hash | 4 +- package/elfutils/elfutils.mk | 8 +- package/ell/ell.hash | 2 +- package/ell/ell.mk | 2 +- .../emlog/0001-Fix-build-on-Linux-6.4.patch | 34 + package/enlightenment/enlightenment.hash | 5 +- package/enlightenment/enlightenment.mk | 2 +- package/erlang-eimp/erlang-eimp.hash | 2 +- package/erlang-eimp/erlang-eimp.mk | 2 +- package/erlang-goldrush/erlang-goldrush.hash | 2 +- package/erlang-goldrush/erlang-goldrush.mk | 2 +- package/erlang-jose/erlang-jose.hash | 2 +- package/erlang-jose/erlang-jose.mk | 2 +- package/erlang-lager/erlang-lager.hash | 2 +- package/erlang-lager/erlang-lager.mk | 2 +- package/erlang-p1-acme/erlang-p1-acme.hash | 2 +- package/erlang-p1-acme/erlang-p1-acme.mk | 2 +- .../erlang-p1-cache-tab.hash | 2 +- .../erlang-p1-cache-tab.mk | 2 +- .../erlang-p1-mqtree/erlang-p1-mqtree.hash | 2 +- package/erlang-p1-mqtree/erlang-p1-mqtree.mk | 2 +- .../erlang-p1-oauth2/erlang-p1-oauth2.hash | 2 +- package/erlang-p1-oauth2/erlang-p1-oauth2.mk | 2 +- package/erlang-p1-pkix/erlang-p1-pkix.hash | 2 +- package/erlang-p1-pkix/erlang-p1-pkix.mk | 2 +- package/erlang-p1-sip/erlang-p1-sip.hash | 2 +- package/erlang-p1-sip/erlang-p1-sip.mk | 2 +- .../erlang-p1-stringprep.hash | 2 +- .../erlang-p1-stringprep.mk | 2 +- package/erlang-p1-stun/erlang-p1-stun.hash | 2 +- package/erlang-p1-stun/erlang-p1-stun.mk | 2 +- package/erlang-p1-tls/erlang-p1-tls.hash | 4 +- package/erlang-p1-tls/erlang-p1-tls.mk | 2 +- package/erlang-p1-utils/erlang-p1-utils.hash | 2 +- package/erlang-p1-utils/erlang-p1-utils.mk | 2 +- package/erlang-p1-xmpp/erlang-p1-xmpp.hash | 2 +- package/erlang-p1-xmpp/erlang-p1-xmpp.mk | 2 +- package/erlang-p1-yaml/erlang-p1-yaml.hash | 2 +- package/erlang-p1-yaml/erlang-p1-yaml.mk | 9 +- package/erlang-p1-yconf/erlang-p1-yconf.hash | 2 +- package/erlang-p1-yconf/erlang-p1-yconf.mk | 2 +- package/erlang-p1-zlib/erlang-p1-zlib.hash | 4 +- package/erlang-p1-zlib/erlang-p1-zlib.mk | 2 +- .../0001-erts-check-for-sys-auxv.h.patch | 44 + ...truct-libatomic_ops-we-do-require-CA.patch | 70 - ...ulator-reorder-inclued-headers-paths.patch | 46 - ...0003-crypto-Fixes-for-LibreSSL-3-5-0.patch | 30 - package/erlang/Config.in | 7 +- package/erlang/erlang.hash | 4 +- package/erlang/erlang.mk | 16 +- ...st-fix-build-failure-when-CONFIG_PM-.patch | 33 + package/esp-hosted/Config.in | 31 + package/esp-hosted/esp-hosted.hash | 3 + package/esp-hosted/esp-hosted.mk | 32 + package/ethtool/ethtool.hash | 2 +- package/ethtool/ethtool.mk | 2 +- ...-pragma-for-ignoring-diagnostics-if-.patch | 39 - ...mpile-time-issue-on-very-old-kernels.patch | 44 - package/eudev/eudev.hash | 2 +- package/eudev/eudev.mk | 2 +- package/exim/exim.hash | 4 +- package/exim/exim.mk | 2 +- package/expect/Config.in | 2 +- ...1-configure-ac-fix-cross-compilation.patch | 88 - ...ls-convert-to-lseek-and-kill-lseek64.patch | 459 + ...s-tools-fix-build-error-on-lz4-1-9-4.patch | 34 - package/f2fs-tools/f2fs-tools.hash | 2 +- package/f2fs-tools/f2fs-tools.mk | 2 +- package/fail2ban/fail2ban.mk | 3 - package/fakeroot/fakeroot.hash | 4 +- package/fakeroot/fakeroot.mk | 4 +- package/fetchmail/fetchmail.hash | 4 +- package/fetchmail/fetchmail.mk | 2 +- ...xes-assembling-with-binutils-as-2.41.patch | 84 + package/ffmpeg/ffmpeg.mk | 11 +- package/fftw/fftw.hash | 6 +- package/fftw/fftw.mk | 2 +- package/fio/fio.hash | 2 +- package/fio/fio.mk | 11 +- package/flac/flac.hash | 4 +- package/flac/flac.mk | 4 +- package/flatbuffers/flatbuffers.hash | 2 +- package/flatbuffers/flatbuffers.mk | 2 +- package/flite/flite.mk | 1 + ...-the-system-provided-LuaJIT-if-found.patch | 62 + .../0001-lib-cfl-fixup-static_assert.patch | 33 - .../0002-lib-c-ares-fixup-static_assert.patch | 56 - ...MakeLists.txt-allow-compilation-with.patch | 117 + ...isable-cxx-support-for-librdkafka-77.patch | 29 + .../fluent-bit/0003-fix-build-without-C.patch | 131 - package/fluent-bit/Config.in | 20 +- package/fluent-bit/fluent-bit.hash | 2 +- package/fluent-bit/fluent-bit.mk | 21 +- package/fluidsynth/fluidsynth.hash | 2 +- package/fluidsynth/fluidsynth.mk | 2 +- package/fmt/fmt.hash | 4 +- package/fmt/fmt.mk | 2 +- ...e-sha3-and-shake-hashes-for-libressl.patch | 38 - package/freerdp/freerdp.hash | 4 +- package/freerdp/freerdp.mk | 2 +- .../firmware-imx/firmware-imx.mk | 4 + package/freescale-imx/imx-seco/Config.in | 9 +- package/freeswitch/freeswitch.hash | 4 +- package/freeswitch/freeswitch.mk | 2 +- package/freetype/freetype.hash | 6 +- package/freetype/freetype.mk | 2 +- package/fstrcmp/fstrcmp.mk | 6 + package/fwts/fwts.hash | 4 +- package/fwts/fwts.mk | 6 +- .../0001-Fix-a-bug-with-Node_elem_new.patch | 29 - package/gawk/gawk.hash | 4 +- package/gawk/gawk.mk | 2 +- ...get-92095-internal-error-with-O1-mcp.patch | 328 - ...-mcmodel-option-to-handle-large-GOTs.patch | 200 - ...-cmodel-large-when-building-crtstuff.patch | 60 - ...TRANT-for-OpenRISC-when-pthread-is-p.patch | 31 - ...-machine-names-in-__has_include-.-PR.patch | 124 - ...ine-TARGET_HAVE_TLS-when-HAVE_AS_TLS.patch | 49 + ...ine-TARGET_HAVE_TLS-when-HAVE_AS_TLS.patch | 49 + ...add-.note.GNU-stack-section-on-linux.patch | 105 + ...ine-TARGET_HAVE_TLS-when-HAVE_AS_TLS.patch | 48 + ...add-.note.GNU-stack-section-on-linux.patch | 105 + ...e-split-stack-for-non-thread-builds.patch} | 2 +- ...ISC-V-fix-build-issue-with-gcc-4.9.x.patch | 48 + package/gcc/Config.in.host | 32 +- package/gcc/gcc.hash | 2 + package/gcc/gcc.mk | 17 +- package/gd/gd.mk | 7 + package/gdb/Config.in | 2 +- ...t-define-basic_string_view-to_string.patch | 114 + package/gdb/gdb.hash | 2 +- package/gdb/gdb.mk | 18 +- .../gerbera/0001-Fix-build-with-fmt-9-0.patch | 36 - .../0001-buildfix-support-fmtlib-10.patch | 166 + package/gerbera/gerbera.hash | 2 +- package/gerbera/gerbera.mk | 2 +- .../0001-Fix-build-without-BUILD_PDF.patch | 34 + package/ghostscript/ghostscript.hash | 4 +- package/ghostscript/ghostscript.mk | 3 +- package/git-crypt/git-crypt.mk | 3 +- package/git/git.hash | 2 +- package/git/git.mk | 2 +- package/gkrellm/gkrellm.mk | 8 +- package/glibc/glibc.hash | 2 +- package/glibc/glibc.mk | 2 +- .../glslsandbox-player.hash | 4 +- .../glslsandbox-player/glslsandbox-player.mk | 2 +- package/gmp/gmp.mk | 5 + package/gnu-efi/Config.in | 1 - package/gnu-efi/gnu-efi.mk | 2 - package/gnupg2/gnupg2.hash | 10 +- package/gnupg2/gnupg2.mk | 2 +- package/gnuplot/gnuplot.hash | 8 +- package/gnuplot/gnuplot.mk | 2 +- ...g-missing-vector-in-blockinterleaver.patch | 42 - ...rleaving.h-add-missing-cstddef-heade.patch | 33 - package/gnuradio/gnuradio.hash | 2 +- package/gnuradio/gnuradio.mk | 9 +- package/gnutls/gnutls.hash | 8 +- package/gnutls/gnutls.mk | 6 +- package/go-bootstrap-stage1/Config.in.host | 6 + .../go-bootstrap-stage1.hash} | 0 .../go-bootstrap-stage1.mk | 43 + package/go-bootstrap-stage2/Config.in.host | 4 + .../go-bootstrap-stage2.hash | 3 + .../go-bootstrap-stage2.mk | 53 + package/go-bootstrap/Config.in.host | 7 - package/go-bootstrap/go-bootstrap.mk | 50 - ...ldvcs-false-when-building-go-bootstr.patch | 73 + ...03-runtime-support-riscv64-SV57-mode.patch | 65 - package/go/Config.in.host | 6 +- package/go/go.hash | 2 +- package/go/go.mk | 17 +- .../0001-disable-tests.patch | 2 +- .../0002-Add-rpath-links-to-ccompiler.patch | 2 +- .../gobject-introspection.hash | 4 +- .../gobject-introspection.mk | 4 +- ...to-deal-with-minor-change-in-libuuid.patch | 41 + package/gptfdisk/gptfdisk.mk | 2 + package/graphicsmagick/graphicsmagick.hash | 2 +- package/graphicsmagick/graphicsmagick.mk | 2 +- package/gstreamer1/gst-omx/gst-omx.hash | 4 +- package/gstreamer1/gst-omx/gst-omx.mk | 2 +- .../gst1-devtools/gst1-devtools.hash | 4 +- .../gstreamer1/gst1-devtools/gst1-devtools.mk | 2 +- package/gstreamer1/gst1-libav/gst1-libav.hash | 4 +- package/gstreamer1/gst1-libav/gst1-libav.mk | 2 +- .../gst1-plugins-bad/gst1-plugins-bad.hash | 4 +- .../gst1-plugins-bad/gst1-plugins-bad.mk | 2 +- .../gst1-plugins-base/gst1-plugins-base.hash | 4 +- .../gst1-plugins-base/gst1-plugins-base.mk | 2 +- .../gstreamer1/gst1-plugins-good/Config.in | 5 + .../gst1-plugins-good/gst1-plugins-good.hash | 4 +- .../gst1-plugins-good/gst1-plugins-good.mk | 9 +- .../gst1-plugins-ugly/gst1-plugins-ugly.hash | 4 +- .../gst1-plugins-ugly/gst1-plugins-ugly.mk | 2 +- .../gstreamer1/gst1-python/gst1-python.hash | 4 +- package/gstreamer1/gst1-python/gst1-python.mk | 2 +- .../gst1-rtsp-server/gst1-rtsp-server.hash | 4 +- .../gst1-rtsp-server/gst1-rtsp-server.mk | 2 +- package/gstreamer1/gst1-vaapi/gst1-vaapi.hash | 4 +- package/gstreamer1/gst1-vaapi/gst1-vaapi.mk | 2 +- .../gstreamer1-editing-services.hash | 4 +- .../gstreamer1-editing-services.mk | 2 +- package/gstreamer1/gstreamer1/gstreamer1.hash | 4 +- package/gstreamer1/gstreamer1/gstreamer1.mk | 2 +- package/gtkmm3/gtkmm3.hash | 4 +- package/gtkmm3/gtkmm3.mk | 2 +- .../gupnp-av/0001-libxml2.11-support.patch | 41 + .../0001-all-Drop-xmlRecoverMemory.patch | 113 + ...properly-spell-provide-in-wrap-files.patch | 30 + ...mic.h-may-need-compiler.h-on-ARMv8.2.patch | 36 + package/haproxy/haproxy.hash | 4 +- package/haproxy/haproxy.mk | 2 +- package/harfbuzz/harfbuzz.hash | 2 +- package/harfbuzz/harfbuzz.mk | 2 +- ...JSON-PP-part-of-core-instead-of-JSON.patch | 57 + package/heirloom-mailx/heirloom-mailx.mk | 4 +- package/hexedit/hexedit.hash | 2 +- package/hexedit/hexedit.mk | 2 +- ...eLists.txt-respect-BUILD_SHARED_LIBS.patch | 171 - package/hiredis/hiredis.hash | 2 +- package/hiredis/hiredis.mk | 2 +- package/hwdata/hwdata.hash | 2 +- package/hwdata/hwdata.mk | 18 +- package/hwloc/hwloc.hash | 5 +- package/hwloc/hwloc.mk | 2 +- ...01-Use-LONG_BIT-to-define-RADIX_BITS.patch | 14 +- package/ibm-sw-tpm2/ibm-sw-tpm2.hash | 5 +- package/ibm-sw-tpm2/ibm-sw-tpm2.mk | 6 +- package/icu/icu.hash | 4 +- package/icu/icu.mk | 5 +- package/igh-ethercat/igh-ethercat.hash | 2 +- package/igh-ethercat/igh-ethercat.mk | 8 +- package/imagemagick/imagemagick.mk | 8 +- package/inadyn/Config.in | 10 +- package/inadyn/inadyn.hash | 2 +- package/inadyn/inadyn.mk | 2 +- package/intel-gmmlib/intel-gmmlib.hash | 2 +- package/intel-gmmlib/intel-gmmlib.mk | 2 +- .../intel-mediadriver/intel-mediadriver.hash | 2 +- .../intel-mediadriver/intel-mediadriver.mk | 2 +- ...dd-missing-stdint.h-to-mfxparser-cpp.patch | 31 + package/intel-mediasdk/intel-mediasdk.hash | 2 +- package/intel-mediasdk/intel-mediasdk.mk | 2 +- package/intel-microcode/intel-microcode.hash | 2 +- package/intel-microcode/intel-microcode.mk | 2 +- package/iperf3/iperf3.hash | 4 +- package/iperf3/iperf3.mk | 2 +- package/iproute2/iproute2.mk | 10 +- package/irssi/irssi.hash | 2 +- package/irssi/irssi.mk | 2 +- package/iwd/iwd.hash | 2 +- package/iwd/iwd.mk | 2 +- .../0001-Update-for-more-minimal-builds.patch | 29 - package/janet/janet.hash | 2 +- package/janet/janet.mk | 2 +- package/jhead/jhead.hash | 4 +- package/jhead/jhead.mk | 2 +- package/jpeg-turbo/jpeg-turbo.hash | 10 +- package/jpeg-turbo/jpeg-turbo.mk | 2 +- ...001-MidiScan-include-missing-cstdint.patch | 29 + ...de-missing-cstdint-to-support-gcc-13.patch | 31 + package/kodi-imagedecoder-heif/Config.in | 18 + .../kodi-imagedecoder-heif.hash | 3 + .../kodi-imagedecoder-heif.mk | 13 + package/kodi-imagedecoder-raw/Config.in | 15 + .../kodi-imagedecoder-raw.hash | 3 + .../kodi-imagedecoder-raw.mk | 13 + ...de-missing-cstdint-to-support-gcc-13.patch | 103 + .../kodi-inputstream-adaptive.hash | 2 +- .../kodi-inputstream-adaptive.mk | 2 +- ...de-missing-cstdint-to-support-gcc-13.patch | 49 + .../kodi-jsonschemabuilder.mk | 2 +- .../kodi-peripheral-joystick.hash | 2 +- .../kodi-peripheral-joystick.mk | 2 +- .../kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash | 2 +- package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk | 2 +- package/kodi-pvr-waipu/kodi-pvr-waipu.hash | 2 +- package/kodi-pvr-waipu/kodi-pvr-waipu.mk | 2 +- package/kodi-pvr-zattoo/kodi-pvr-zattoo.hash | 2 +- package/kodi-pvr-zattoo/kodi-pvr-zattoo.mk | 2 +- .../kodi-texturepacker/kodi-texturepacker.mk | 2 +- ...se-AnnouncementFlagToString-when-log.patch | 31 + ...2-cmake-modules-fix-python-detection.patch | 28 - ...ontrol-use-explicit-cast-to-UTILS-CO.patch | 32 + ...-fmt-enums-format_as-for-explicit-en.patch | 33 + ...er-for-std-atomic-for-explicit-atomi.patch | 37 + package/kodi/Config.in | 6 + package/kodi/kodi.hash | 2 +- package/kodi/kodi.mk | 3 +- package/lcms2/lcms2.hash | 6 +- package/lcms2/lcms2.mk | 2 +- package/leafnode2/0001-cross_makefile.patch | 10 +- package/leafnode2/Config.in | 9 +- package/leafnode2/leafnode2.hash | 4 +- package/leafnode2/leafnode2.mk | 6 +- package/leafpad/leafpad.hash | 2 +- package/leafpad/leafpad.mk | 2 +- ...-on-invalid-embedded-escape-sequence.patch | 27 - package/less/less.hash | 4 +- package/less/less.mk | 9 +- ...asplib_CPUTimer.h-Fix-time.h-include.patch | 39 - package/libasplib/Config.in | 11 - package/libasplib/libasplib.hash | 3 - package/libasplib/libasplib.mk | 21 - package/libatomic_ops/libatomic_ops.hash | 4 +- package/libatomic_ops/libatomic_ops.mk | 4 +- ...01-src-local-elf.h-fix-big-endian-sh.patch | 39 - package/libbsd/libbsd.hash | 8 +- package/libbsd/libbsd.mk | 2 +- package/libcamera-apps/libcamera-apps.hash | 2 +- package/libcamera-apps/libcamera-apps.mk | 2 +- package/libcap/libcap.hash | 4 +- package/libcap/libcap.mk | 2 +- package/libcgroup/Config.in | 7 +- package/libcgroup/libcgroup.hash | 4 +- package/libcgroup/libcgroup.mk | 7 +- ...0001-Backport-fix-for-CVE-2023-30362.patch | 59 + package/libcoap/libcoap.mk | 5 + package/libcodec2/0001-update-cmake.patch | 301 - package/libcodec2/libcodec2.hash | 2 +- package/libcodec2/libcodec2.mk | 2 +- package/libcue/libcue.hash | 2 +- package/libcue/libcue.mk | 2 +- package/libcurl/libcurl.hash | 4 +- package/libcurl/libcurl.mk | 2 +- package/libde265/Config.in | 12 + package/libde265/libde265.hash | 3 + package/libde265/libde265.mk | 14 + package/libdecor/Config.in | 25 + package/libdecor/libdecor.hash | 3 + package/libdecor/libdecor.mk | 22 + ...-target-when-required-due-to-gcc-bug.patch | 90 - ...or-due-to-PMULL-enabled-without-NEON.patch | 35 - package/libdeflate/libdeflate.hash | 2 +- package/libdeflate/libdeflate.mk | 2 +- ...0001-displayid.c-Include-sys-types.h.patch | 36 + package/libdisplay-info/Config.in | 8 + package/libdisplay-info/libdisplay-info.hash | 3 + package/libdisplay-info/libdisplay-info.mk | 18 + .../0001-check-bsd-functions-in-libbsd.patch | 8 +- package/libedit/0002-add-sys-types_h.patch | 15 + package/libedit/libedit.hash | 2 +- package/libedit/libedit.mk | 4 +- package/libfastjson/libfastjson.hash | 2 +- package/libfastjson/libfastjson.mk | 2 +- package/libfribidi/libfribidi.hash | 2 +- package/libfribidi/libfribidi.mk | 2 +- ...ix-MS_LAZYTIME-not-defined-on-uclibc.patch | 48 - ...est-applications-for-cross-compiler-.patch | 43 + package/libfuse3/libfuse3.hash | 2 +- package/libfuse3/libfuse3.mk | 2 +- package/libgcrypt/libgcrypt.hash | 8 +- package/libgcrypt/libgcrypt.mk | 6 +- package/libgeos/libgeos.hash | 2 +- package/libgeos/libgeos.mk | 2 +- package/libglib2/libglib2.mk | 5 - package/libglu/libglu.hash | 6 +- package/libglu/libglu.mk | 5 +- package/libgpg-error/libgpg-error.hash | 8 +- package/libgpg-error/libgpg-error.mk | 2 +- package/libgpgme/libgpgme.hash | 7 +- package/libgpgme/libgpgme.mk | 6 +- package/libgtk3/libgtk3.hash | 4 +- package/libgtk3/libgtk3.mk | 2 +- package/libheif/Config.in | 13 + package/libheif/libheif.hash | 3 + package/libheif/libheif.mk | 60 + package/libhtp/libhtp.hash | 2 +- package/libhtp/libhtp.mk | 2 +- package/libiberty/libiberty.hash | 6 +- package/libiberty/libiberty.mk | 2 +- package/libiec61850/libiec61850.mk | 3 + package/libinput/libinput.hash | 2 +- package/libinput/libinput.mk | 2 +- ...ic-content-to-fix-gcc-compilation-fo.patch | 47 + package/libjxl/libjxl.hash | 2 +- package/libjxl/libjxl.mk | 2 +- package/libkrb5/libkrb5.hash | 4 +- package/libkrb5/libkrb5.mk | 5 +- package/libks/libks.hash | 4 +- package/libks/libks.mk | 2 +- package/libksba/libksba.mk | 2 +- ...x-use-after-free-warning-in-server.c.patch | 29 + package/libmd/libmd.hash | 5 +- package/libmd/libmd.mk | 2 +- package/libmdbx/libmdbx.hash | 2 +- package/libmdbx/libmdbx.mk | 2 +- package/libmemcached/0001-disable-tests.patch | 42 - .../libmemcached/0002-disable-sanitizer.patch | 25 - .../0003-move-ac_config_aux_dir.patch | 25 - .../0004-disable-doc-and-man.patch | 37 - .../0005-fix-pointer-comparaison.patch | 30 - package/libmemcached/Config.in | 2 +- package/libmemcached/libmemcached.hash | 6 +- package/libmemcached/libmemcached.mk | 38 +- package/libmicrohttpd/libmicrohttpd.hash | 2 +- package/libmicrohttpd/libmicrohttpd.mk | 2 +- package/libminiupnpc/libminiupnpc.hash | 4 +- package/libminiupnpc/libminiupnpc.mk | 2 +- ...ache-copy-of-can.h-and-can-netlink.h.patch | 548 ++ package/libmnl/Config.in | 4 - package/libmnl/libmnl.mk | 1 + package/libmodplug/0001-fix-cctype-ub.patch | 957 ++ package/libmodplug/libmodplug.hash | 2 +- package/libmodplug/libmodplug.mk | 2 +- ...-drop-usage-of-git-at-configure-time.patch | 17 +- .../0002-modsecurity.pc.in-add-lstdc.patch | 5 +- package/libmodsecurity/libmodsecurity.hash | 4 +- package/libmodsecurity/libmodsecurity.mk | 2 +- package/libnatpmp/libnatpmp.hash | 4 +- package/libnatpmp/libnatpmp.mk | 4 +- package/libnss/libnss.hash | 4 +- package/libnss/libnss.mk | 2 +- ...building-manpages-if-we-re-not-going.patch | 8 +- ...ible-build-do-not-leak-compiler-path.patch | 8 +- ...ENSSL_NO_MADVISE-to-disable-call-to-.patch | 2 +- .../0005-Revert-Fix-static-builds.patch | 43 + ...m-ppc-xlate.pl-add-linux64v2-flavour.patch | 64 - .../0006-Add-linux-x86-latomic-target.patch | 30 + ...ort-for-io_pgetevents_time64-syscall.patch | 61 - ...ort-for-io_pgetevents_time64-syscall.patch | 98 - package/libopenssl/Config.in | 8 +- package/libopenssl/libopenssl.hash | 6 +- package/libopenssl/libopenssl.mk | 16 +- package/libostree/libostree.hash | 2 +- package/libostree/libostree.mk | 2 +- ...ull-request-from-GHSA-9pfh-r8x4-w26w.patch | 99 - ...ull-request-from-GHSA-cxwq-5g9x-x7fr.patch | 54 - package/libpjsip/libpjsip.hash | 2 +- package/libpjsip/libpjsip.mk | 8 +- package/libplist/libplist.hash | 2 +- package/libplist/libplist.mk | 2 +- package/libpng/libpng.hash | 8 +- package/libpng/libpng.mk | 2 +- .../libpthread-stubs/libpthread-stubs.hash | 4 +- package/libpthread-stubs/libpthread-stubs.mk | 4 +- .../libqb/0001-Add-disable-tests-option.patch | 62 - package/libqb/libqb.hash | 4 +- package/libqb/libqb.mk | 4 +- ...shrink-flag-for-3-4-component-images.patch | 24 + package/libraw/libraw.mk | 3 + package/librsvg/librsvg.hash | 4 +- package/librsvg/librsvg.mk | 2 +- ...sing-cstdint-header-for-uint8_t-type.patch | 28 + package/libssh/libssh.mk | 8 + .../0001-Opaque-structs-in-LibreSSL-3-5.patch | 27 - ...more-size_t-to-sync-up-with-crypto-h.patch | 106 + package/libssh2/libssh2.hash | 4 +- package/libssh2/libssh2.mk | 5 +- ...bn_mp_set_double-c-on-more-platforms.patch | 2 +- package/libtommath/libtommath.hash | 2 +- package/libtommath/libtommath.mk | 2 +- ...xt-do-not-force-the-build-of-a-share.patch | 9 +- ...-fix-bug-when-SPI-flash-write-size-s.patch | 71 + package/libubootenv/Config.in | 1 + package/libubootenv/libubootenv.hash | 2 +- package/libubootenv/libubootenv.mk | 4 +- package/libubox/libubox.hash | 2 +- package/libubox/libubox.mk | 2 +- .../0002-compatibility-for-openssl-3.0.patch | 31 + package/libuhttpd/Config.in | 2 +- package/libuv/Config.in | 6 +- package/libuv/libuv.hash | 5 +- package/libuv/libuv.mk | 20 +- package/libva-utils/libva-utils.hash | 2 +- package/libva-utils/libva-utils.mk | 2 +- package/libva/libva.hash | 2 +- package/libva/libva.mk | 2 +- package/libvips/libvips.mk | 7 + ...02-VP8-disallow-thread-count-changes.patch | 38 + package/libvpx/libvpx.mk | 3 + package/libwebsockets/Config.in | 12 + package/libwebsockets/libwebsockets.mk | 4 + package/libwpe/libwpe.hash | 7 +- package/libwpe/libwpe.mk | 2 +- ...ommon.pm-compatible-with-latest-perl.patch | 50 + ...ve-smartmatch-usage-from-gen-crypt-h.patch | 61 + package/libxcrypt/libxcrypt.hash | 2 +- package/libxcrypt/libxcrypt.mk | 2 +- package/libxml2/libxml2.hash | 4 +- package/libxml2/libxml2.mk | 2 +- package/libxslt/libxslt.hash | 4 +- package/libxslt/libxslt.mk | 2 +- package/libyang/libyang.hash | 2 +- package/libyang/libyang.mk | 2 +- .../0001-lib-jit_disasm.c-fix-build.patch | 42 - package/lightning/Config.in | 6 +- package/lightning/lightning.hash | 2 +- package/lightning/lightning.mk | 2 +- package/linux-firmware/Config.in | 12 +- package/linux-firmware/linux-firmware.hash | 8 +- package/linux-firmware/linux-firmware.mk | 20 +- package/linux-headers/Config.in.host | 28 +- ...-examples-tty_conv-fix-build-on-musl.patch | 40 + ...Fix-build-if-crypt_r-isn-t-available.patch | 37 + package/linux-pam/Config.in | 5 +- package/linux-pam/linux-pam.hash | 4 +- package/linux-pam/linux-pam.mk | 2 +- package/linux-tools/S10hyperv | 8 +- package/linux-tools/linux-tool-perf.mk.in | 10 +- ...g.h-drop-clock_nanosleep-replacement.patch | 49 - ...itional-assignment-for-KBUILD_OUTPUT.patch | 43 - package/linuxptp/linuxptp.hash | 6 +- package/linuxptp/linuxptp.mk | 2 +- package/liquid-dsp/liquid-dsp.hash | 2 +- package/liquid-dsp/liquid-dsp.mk | 2 +- ...-overflow-when-parsing-CDP-addresses.patch | 24 + package/lldpd/lldpd.mk | 3 + ...hains-Gnu-Use-GCC_INSTALL_PREFIX-in-.patch | 0 package/{ => llvm-project}/clang/Config.in | 10 +- package/{ => llvm-project}/clang/clang.hash | 2 +- package/{ => llvm-project}/clang/clang.mk | 15 +- .../{ => llvm-project}/compiler-rt/Config.in | 6 +- .../compiler-rt/compiler-rt.hash | 2 +- .../compiler-rt/compiler-rt.mk | 11 +- .../0001-support-out-of-tree-build.patch | 0 package/{ => llvm-project}/libclc/Config.in | 6 +- package/{ => llvm-project}/libclc/libclc.hash | 2 +- package/{ => llvm-project}/libclc/libclc.mk | 4 +- package/{ => llvm-project}/lld/Config.in.host | 6 +- package/{ => llvm-project}/lld/lld.hash | 2 +- package/{ => llvm-project}/lld/lld.mk | 13 +- .../llvm-project/llvm-cmake/llvm-cmake.hash | 2 + package/llvm-project/llvm-cmake/llvm-cmake.mk | 17 + .../llvm-libunwind/llvm-libunwind.hash | 3 + .../llvm-libunwind/llvm-libunwind.mk | 19 + package/llvm-project/llvm-project.mk | 11 + package/{ => llvm-project}/llvm/Config.in | 10 +- package/{ => llvm-project}/llvm/llvm.hash | 2 +- package/{ => llvm-project}/llvm/llvm.mk | 27 +- .../llvm/0001-nfc-Fix-missing-include.patch | 24 - ...-missing-cstdint-header-to-Signals.h.patch | 34 - package/localedef/localedef.mk | 2 +- .../0001-Make-ODBC-and-SMTP-opt-in-191.patch | 73 + package/log4cxx/log4cxx.mk | 10 +- package/lsof/lsof.hash | 2 +- package/lsof/lsof.mk | 5 +- package/lua-dkjson/Config.in | 9 + package/lua-dkjson/lua-dkjson.hash | 5 + package/lua-dkjson/lua-dkjson.mk | 12 + package/lua-livr-extra/lua-livr-extra.hash | 4 +- package/lua-livr-extra/lua-livr-extra.mk | 2 +- package/lua-livr/lua-livr.hash | 4 +- package/lua-livr/lua-livr.mk | 2 +- package/lua-rotas/lua-rotas.hash | 4 +- package/lua-rotas/lua-rotas.mk | 2 +- package/luajit/luajit.hash | 2 +- package/luajit/luajit.mk | 2 +- package/luaposix/luaposix.hash | 2 +- package/luaposix/luaposix.mk | 2 +- package/luv/Config.in | 6 +- package/luvi/Config.in | 6 +- package/luvi/luvi.hash | 2 +- package/luvi/luvi.mk | 2 +- ...pport-GLIBC-glob-interface-version-2.patch | 31 - ...b-Do-not-assume-glibc-glob-internals.patch | 70 - package/make/make.hash | 8 +- package/make/make.mk | 7 +- package/mali-driver/mali-driver.hash | 2 +- package/mali-driver/mali-driver.mk | 2 +- ...mpat.h-fix-build-with-libressl-3.5.0.patch | 39 - package/mariadb/mariadb.hash | 6 +- package/mariadb/mariadb.mk | 15 +- package/mariadb/mysqld.service | 2 + package/mbedtls/mbedtls.hash | 4 +- package/mbedtls/mbedtls.mk | 2 +- ...dd-LANGUAGES-option-to-project-varia.patch | 30 + package/mbpoll/Config.in | 8 + package/mbpoll/mbpoll.hash | 3 + package/mbpoll/mbpoll.mk | 14 + ...1-CMakeLists.txt-fix-build-without-C.patch | 38 - package/mbw/mbw.hash | 4 +- package/mbw/mbw.mk | 6 +- package/mc/mc.hash | 4 +- package/mc/mc.mk | 2 +- package/mcelog/mcelog.hash | 2 +- package/mcelog/mcelog.mk | 2 +- package/mdadm/mdadm.mk | 1 + package/mdio-tools/mdio-tools.hash | 2 +- package/mdio-tools/mdio-tools.mk | 2 +- package/mdnsd/Config.in | 49 + package/mdnsd/S50mdnsd | 51 + package/mdnsd/ftp.service | 2 + package/mdnsd/http.service | 2 + package/mdnsd/ipp.service | 2 + package/mdnsd/mdnsd.hash | 5 + package/mdnsd/mdnsd.mk | 50 + package/mdnsd/printer.service | 2 + package/mdnsd/ssh.service | 2 + ...s-makes-opengl-an-optional-component.patch | 99 +- ...eson-fix-glx-detection-without-glvnd.patch | 47 + package/mesa3d-demos/Config.in | 7 + package/mesa3d-demos/mesa3d-demos.hash | 6 +- package/mesa3d-demos/mesa3d-demos.mk | 10 +- package/mesa3d-headers/mesa3d-headers.mk | 2 +- ...tion-to-disable-optional-neon-suppor.patch | 22 +- ...arly-when-trying-to-create-an-unsupp.patch | 50 - package/mesa3d/Config.in | 10 +- package/mesa3d/mesa3d.hash | 6 +- package/mesa3d/mesa3d.mk | 2 +- package/meson/meson.hash | 4 +- package/meson/meson.mk | 2 +- package/mhz/Config.in | 6 + package/mhz/mhz.hash | 3 + package/mhz/mhz.mk | 20 + package/moarvm/Config.in | 6 +- package/moarvm/moarvm.hash | 2 +- package/moarvm/moarvm.mk | 2 +- package/mono/Config.in | 4 +- package/mosquitto/Config.in | 1 + package/mosquitto/mosquitto.hash | 4 +- package/mosquitto/mosquitto.mk | 2 +- package/mpd/Config.in | 5 +- package/mpd/mpd.mk | 26 +- package/mpg123/0001-mpg123-buildfix.patch | 24 + package/mpg123/mpg123.hash | 9 +- package/mpg123/mpg123.mk | 11 +- package/mpir/mpir.mk | 4 + package/mpv/Config.in | 1 + package/mpv/mpv.mk | 8 +- package/mrouted/mrouted.hash | 4 +- package/mrouted/mrouted.mk | 3 +- package/msmtp/msmtp.hash | 4 +- package/msmtp/msmtp.mk | 2 +- ...rameter-name-in-internal-netlink.h-R.patch | 33 - package/musl/Config.in | 3 +- package/musl/musl.hash | 4 +- package/musl/musl.mk | 4 +- package/mutt/mutt.hash | 2 +- package/mutt/mutt.mk | 8 +- package/mysql/Config.in | 9 +- package/ncurses/ncurses.hash | 2 +- package/ncurses/ncurses.mk | 2 +- package/ne10/ne10.mk | 2 + ...se-TS_SSL-feature-with-OpenSSL-1.1.0.patch | 76 - .../0002-configure.ac-fix-autoreconf.patch | 28 - package/neon/neon.mk | 2 - ...ng-of-LD_LIBRARY_FLAGS-shlibpath_var.patch | 48 - ..._compat.h-fix-build-with-libressl-2..patch | 43 - package/netatalk/netatalk.hash | 10 +- package/netatalk/netatalk.mk | 8 +- package/netdata/Config.in | 6 +- ...onfiguration-of-NETSNMP_FD_MASK_TYPE.patch | 38 + package/netsnmp/netsnmp.hash | 6 +- package/netsnmp/netsnmp.mk | 4 +- package/nettle/nettle.hash | 4 +- package/nettle/nettle.mk | 2 +- package/network-manager/Config.in | 1 - ...-guard-dlfcn.h-include-with-HAVE_DLF.patch | 44 + package/nftables/Config.in | 5 + package/nftables/nftables-python/Config.in | 4 + .../nftables-python/nftables-python.hash | 1 + .../nftables-python/nftables-python.mk | 22 + package/nftables/nftables.mk | 18 +- ...pto.cc-fix-build-with-libressl-3.5.0.patch | 39 + package/nodejs/nodejs.hash | 6 +- package/nodejs/nodejs.mk | 8 +- package/nodejs/v8-qemu-wrapper.in | 1 + package/nodm/Config.in | 5 +- package/ntp/0003-override-shell.patch | 20 - ...o-not-use-PTHREAD_STACK_MIN-on-glibc.patch | 33 - package/ntp/Config.in | 1 + package/ntp/ntp.hash | 9 +- package/ntp/ntp.mk | 2 +- package/ntpsec/ntpsec.hash | 2 +- package/ntpsec/ntpsec.mk | 2 +- package/nut/nut.mk | 8 +- package/nwipe/Config.in | 1 + package/nwipe/nwipe.hash | 3 +- package/nwipe/nwipe.mk | 2 +- package/ocf-linux/ocf-linux.hash | 2 - package/ocf-linux/ocf-linux.mk | 26 - .../olsr/0006-build-patch-for-gpsd-3-25.patch | 31 + package/oniguruma/oniguruma.mk | 1 + ...0002-plc-plc.h-fix-build-with-gcc-10.patch | 37 - package/open-plc-utils/open-plc-utils.hash | 2 +- package/open-plc-utils/open-plc-utils.mk | 2 +- package/open62541/open62541.hash | 2 +- package/open62541/open62541.mk | 2 +- package/openblas/Config.in | 73 +- package/openblas/openblas.mk | 6 + package/opencsd/Config.in | 27 + package/opencsd/opencsd.hash | 3 + package/opencsd/opencsd.mk | 31 + package/openjdk-bin/openjdk-bin.hash | 8 +- package/openjdk-bin/openjdk-bin.mk | 4 +- ...ARCv2-ISA-processors-support-to-Zero.patch | 0 package/openjdk/openjdk.hash | 4 +- package/openjdk/openjdk.mk | 4 +- .../0001-Fix-maybe-uninitialized-errors.patch | 82 - ...ed-compatibility-with-LibreSSL-3.5.0.patch | 54 + ...02-added-compatibility-with-LibreSSL.patch | 173 - ...ed-compatibility-with-LibreSSL-3.7.0.patch | 28 + .../0003-Fix-build-with-libressl-3.5.0.patch | 47 - ...onfigure-add-option-to-disable-tests.patch | 67 + ...alculation-to-fix-buffer-overrun-bug.patch | 51 + package/opensc/opensc.hash | 2 +- package/opensc/opensc.mk | 9 +- package/openssh/openssh.hash | 4 +- package/openssh/openssh.mk | 6 +- package/openswan/openswan.mk | 3 - package/openvmtools/Config.in | 5 +- package/openvpn/Config.in | 1 + package/openvpn/openvpn.hash | 2 +- package/openvpn/openvpn.mk | 11 +- package/opkg-utils/opkg-utils.mk | 2 +- package/optee-client/Config.in | 2 + package/optee-examples/Config.in | 2 + ...-xtest-add-DOPENSSL_API_COMPAT-10100.patch | 57 + package/optee-test/Config.in | 2 + package/opus/opus.hash | 2 +- package/opus/opus.mk | 2 +- package/parted/parted.hash | 2 +- package/parted/parted.mk | 2 +- package/pciutils/pciutils.hash | 2 +- package/pciutils/pciutils.mk | 2 +- package/pcm-tools/pcm-tools.hash | 2 +- package/pcm-tools/pcm-tools.mk | 16 +- package/perftest/Config.in | 3 +- package/perftest/perftest.hash | 2 +- package/perftest/perftest.mk | 4 +- .../perl-data-optlist/perl-data-optlist.hash | 6 +- .../perl-data-optlist/perl-data-optlist.mk | 2 +- package/perl-date-manip/perl-date-manip.hash | 6 +- package/perl-date-manip/perl-date-manip.mk | 2 +- package/perl-gd/Config.in | 2 +- package/perl-gd/perl-gd.hash | 6 +- package/perl-gd/perl-gd.mk | 2 +- .../perl-html-parser/perl-html-parser.hash | 3 +- package/perl-html-parser/perl-html-parser.mk | 2 +- .../perl-http-daemon/perl-http-daemon.hash | 3 +- package/perl-http-daemon/perl-http-daemon.mk | 2 +- package/perl-mail-dkim/perl-mail-dkim.hash | 3 +- package/perl-mail-dkim/perl-mail-dkim.mk | 2 +- .../perl-mojolicious/perl-mojolicious.hash | 6 +- package/perl-mojolicious/perl-mojolicious.mk | 2 +- package/perl-net-dns/perl-net-dns.hash | 3 +- package/perl-net-dns/perl-net-dns.mk | 2 +- package/perl-net-http/perl-net-http.hash | 3 +- package/perl-net-http/perl-net-http.mk | 2 +- package/perl-uri/perl-uri.hash | 3 +- package/perl-uri/perl-uri.mk | 4 +- package/petitboot/S15pb-discover | 57 + package/petitboot/petitboot.mk | 7 +- package/php-pam/Config.in | 5 +- ...0003-configure-disable-the-phar-tool.patch | 2 +- package/php/php.hash | 2 +- package/php/php.mk | 30 +- package/piglit/Config.in | 2 +- package/pipewire/Config.in | 2 +- package/pipewire/pipewire.hash | 2 +- package/pipewire/pipewire.mk | 19 +- package/pixman/pixman.mk | 7 + package/pkg-generic.mk | 6 +- package/pkg-meson.mk | 1 + package/pkg-python.mk | 14 +- package/pkg-utils.mk | 2 +- package/pkgconf/pkgconf.mk | 2 +- package/pngquant/pngquant.hash | 2 +- package/pngquant/pngquant.mk | 2 +- ...optional-JSON-support-for-MySQL-3753.patch | 45 - package/poco/poco.hash | 2 +- package/poco/poco.mk | 2 +- ...em-open-Fix-crash-on-malformed-files.patch | 45 + package/poppler/poppler.hash | 2 +- package/poppler/poppler.mk | 4 +- package/postgresql/postgresql.hash | 4 +- package/postgresql/postgresql.mk | 2 +- package/pound/0001-fix-openssl-1.0.2.patch | 127 - package/pound/0001-include-limits.h.patch | 75 + package/pound/0002-fix-openssl-1.1.0.patch | 334 - ...bressl-coexisting-with-openssl-1.1.x.patch | 140 - package/pound/Config.in | 3 +- package/pound/pound.hash | 4 +- package/pound/pound.mk | 17 +- package/powertop/Config.in | 1 - package/powertop/powertop.mk | 10 +- package/pppd/pppd.mk | 9 - package/privoxy/privoxy.hash | 7 +- package/privoxy/privoxy.mk | 4 +- ...1-unix-uxutils.h-fix-build-on-uclibc.patch | 41 - package/putty/Config.in | 6 +- package/putty/putty.hash | 11 +- package/putty/putty.mk | 13 +- .../python-aioconsole/python-aioconsole.hash | 6 +- .../python-aioconsole/python-aioconsole.mk | 4 +- package/python-aiohttp/python-aiohttp.hash | 4 +- package/python-aiohttp/python-aiohttp.mk | 4 +- package/python-attrs/python-attrs.hash | 4 +- package/python-attrs/python-attrs.mk | 10 +- package/python-autobahn/python-autobahn.hash | 4 +- package/python-autobahn/python-autobahn.mk | 4 +- package/python-babel/python-babel.mk | 13 + package/python-bleak/python-bleak.hash | 4 +- package/python-bleak/python-bleak.mk | 4 +- package/python-blinker/Config.in | 6 + package/python-blinker/python-blinker.hash | 5 + package/python-blinker/python-blinker.mk | 14 + package/python-botocore/python-botocore.hash | 4 +- package/python-botocore/python-botocore.mk | 4 +- package/python-certifi/python-certifi.hash | 4 +- package/python-certifi/python-certifi.mk | 4 +- .../python-charset-normalizer.hash | 4 +- .../python-charset-normalizer.mk | 4 +- package/python-click/python-click.hash | 4 +- package/python-click/python-click.mk | 4 +- .../python-cryptography.hash | 2 +- .../python-cryptography.mk | 4 +- package/python-cython/python-cython.hash | 4 +- package/python-cython/python-cython.mk | 4 +- package/python-dbus-fast/Config.in | 1 - .../python-dbus-fast/python-dbus-fast.hash | 4 +- package/python-dbus-fast/python-dbus-fast.mk | 4 +- package/python-django/python-django.hash | 4 +- package/python-django/python-django.mk | 5 +- package/python-docker/Config.in | 3 +- package/python-docker/python-docker.hash | 4 +- package/python-docker/python-docker.mk | 4 +- .../python-flask-babel.hash | 6 +- .../python-flask-babel/python-flask-babel.mk | 6 +- .../python-flask-smorest.hash | 4 +- .../python-flask-smorest.mk | 4 +- .../python-flask-wtf/python-flask-wtf.hash | 4 +- package/python-flask-wtf/python-flask-wtf.mk | 4 +- package/python-flask/Config.in | 1 + package/python-flask/python-flask.hash | 6 +- package/python-flask/python-flask.mk | 4 +- .../python-flit-core/python-flit-core.hash | 4 +- package/python-flit-core/python-flit-core.mk | 4 +- .../python-fonttools/python-fonttools.hash | 4 +- package/python-fonttools/python-fonttools.mk | 12 +- .../python-frozenlist/python-frozenlist.hash | 4 +- .../python-frozenlist/python-frozenlist.mk | 4 +- package/python-gast/python-gast.hash | 4 +- package/python-gast/python-gast.mk | 4 +- package/python-gnupg/python-gnupg.hash | 7 +- package/python-gnupg/python-gnupg.mk | 4 +- .../0001-Migrate-to-setup.cfg.patch | 855 ++ ...0001-setup.py-fix-build-with-gcc-4.8.patch | 43 - package/python-hiredis/python-hiredis.hash | 6 +- package/python-hiredis/python-hiredis.mk | 6 +- package/python-iniparse/python-iniparse.mk | 3 + .../python-installer/python-installer.hash | 4 +- package/python-installer/python-installer.mk | 4 +- package/python-iptables/python-iptables.mk | 1 + package/python-ipython/python-ipython.mk | 2 + package/python-jinja2/Config.in | 2 +- package/python-libconf/python-libconf.hash | 4 + package/python-libconf/python-libconf.mk | 13 + package/python-mako/Config.in | 19 + .../python-markupsafe/python-markupsafe.hash | 4 +- .../python-markupsafe/python-markupsafe.mk | 4 +- package/python-maturin/python-maturin.hash | 2 +- package/python-maturin/python-maturin.mk | 4 +- package/python-midiutil/Config.in | 6 + package/python-midiutil/python-midiutil.hash | 5 + package/python-midiutil/python-midiutil.mk | 14 + package/python-msgpack/python-msgpack.hash | 4 +- package/python-msgpack/python-msgpack.mk | 4 +- package/python-orjson/python-orjson.hash | 2 +- package/python-orjson/python-orjson.mk | 4 +- .../python-packaging/python-packaging.hash | 4 +- package/python-packaging/python-packaging.mk | 4 +- package/python-pam/Config.in | 16 - package/python-pam/python-pam.hash | 3 - package/python-pam/python-pam.mk | 16 - package/python-pillow/python-pillow.hash | 6 +- package/python-pillow/python-pillow.mk | 4 +- package/python-pip/python-pip.mk | 3 + package/python-pybind/python-pybind.hash | 2 +- package/python-pybind/python-pybind.mk | 2 +- .../python-pycryptodomex.hash | 4 +- .../python-pycryptodomex.mk | 4 +- package/python-pydal/python-pydal.hash | 4 +- package/python-pydal/python-pydal.mk | 4 +- package/python-pydantic/python-pydantic.hash | 4 +- package/python-pydantic/python-pydantic.mk | 4 +- package/python-pydyf/python-pydyf.hash | 4 +- package/python-pydyf/python-pydyf.mk | 4 +- package/python-pygments/python-pygments.hash | 4 +- package/python-pygments/python-pygments.mk | 4 +- package/python-pyicu/Config.in | 2 +- package/python-pyicu/python-pyicu.hash | 4 +- package/python-pyicu/python-pyicu.mk | 10 +- package/python-pyjwt/python-pyjwt.hash | 4 +- package/python-pyjwt/python-pyjwt.mk | 4 +- package/python-pylibfdt/python-pylibfdt.hash | 4 +- package/python-pylibfdt/python-pylibfdt.mk | 8 +- .../python-pyparsing/python-pyparsing.hash | 4 +- package/python-pyparsing/python-pyparsing.mk | 4 +- package/python-pyphen/python-pyphen.hash | 4 +- package/python-pyphen/python-pyphen.mk | 4 +- package/python-pysmb/Config.in | 1 + .../python-pytest-asyncio.hash | 4 +- .../python-pytest-asyncio.mk | 4 +- package/python-pytest/Config.in | 1 + package/python-pytest/python-pytest.hash | 4 +- package/python-pytest/python-pytest.mk | 4 +- package/python-pythran/python-pythran.hash | 4 +- package/python-pythran/python-pythran.mk | 4 +- package/python-pytz/python-pytz.hash | 4 +- package/python-pytz/python-pytz.mk | 4 +- package/python-pyyaml/python-pyyaml.hash | 4 +- package/python-pyyaml/python-pyyaml.mk | 4 +- package/python-redis/python-redis.hash | 4 +- package/python-redis/python-redis.mk | 4 +- package/python-requests/python-requests.hash | 4 +- package/python-requests/python-requests.mk | 4 +- package/python-rpds-py/Config.in | 8 + package/python-rpds-py/python-rpds-py.hash | 4 + package/python-rpds-py/python-rpds-py.mk | 22 + .../python-rpi-ws281x/python-rpi-ws281x.hash | 4 +- .../python-rpi-ws281x/python-rpi-ws281x.mk | 4 +- package/python-selenium/python-selenium.hash | 4 +- package/python-selenium/python-selenium.mk | 4 +- .../python-setuptools-rust.hash | 4 +- .../python-setuptools-rust.mk | 6 +- package/python-setuptools/Config.in | 2 +- .../python-setuptools/python-setuptools.hash | 6 +- .../python-setuptools/python-setuptools.mk | 8 +- ...n-open-redirect-in-StaticFileHandler.patch | 42 + package/python-tornado/python-tornado.mk | 2 + package/python-txaio/python-txaio.hash | 6 +- package/python-txaio/python-txaio.mk | 4 +- .../python-typing-extensions.hash | 6 +- .../python-typing-extensions.mk | 4 +- package/python-urllib3/python-urllib3.hash | 6 +- package/python-urllib3/python-urllib3.mk | 8 +- package/python-uvloop/Config.in | 6 +- .../python-weasyprint/python-weasyprint.hash | 4 +- .../python-weasyprint/python-weasyprint.mk | 4 +- package/python-werkzeug/python-werkzeug.hash | 4 +- package/python-werkzeug/python-werkzeug.mk | 4 +- package/python-wheel/python-wheel.hash | 5 + package/python-wheel/python-wheel.mk | 14 + package/python-xmodem/python-xmodem.hash | 8 +- package/python-xmodem/python-xmodem.mk | 6 +- package/python-yarl/python-yarl.hash | 6 +- package/python-yarl/python-yarl.mk | 4 +- package/python/Config.in | 139 - package/python/Config.in.host | 16 - package/python/python.hash | 5 - package/python/python.mk | 302 - .../python3-requests/python3-requests.hash | 1 - package/python3-requests/python3-requests.mk | 19 - ...012-Add-an-option-to-disable-lib2to3.patch | 8 +- ...d-an-option-to-disable-the-tk-module.patch | 15 +- package/python3/Config.in | 1 + package/python3/python3.hash | 4 +- package/python3/python3.mk | 5 +- ...fp-disable-fp-bench-build-by-default.patch | 2 +- ...tall-keyboard-maps-only-if-necessary.patch | 38 + package/qemu/Config.in | 1 + package/qemu/qemu.hash | 2 +- package/qemu/qemu.mk | 2 +- package/qt5/qt5.mk | 2 +- package/qt5/qt5base/qt5base.hash | 2 +- package/qt5/qt5base/qt5base.mk | 2 +- package/qt5/qt5charts/qt5charts.hash | 2 +- package/qt5/qt5charts/qt5charts.mk | 2 +- package/qt5/qt5coap/qt5coap.mk | 2 +- .../qt5/qt5declarative/qt5declarative.hash | 2 +- package/qt5/qt5declarative/qt5declarative.mk | 2 +- .../qt5graphicaleffects.hash | 2 +- .../qt5graphicaleffects.mk | 2 +- .../qt5/qt5imageformats/qt5imageformats.hash | 2 +- .../qt5/qt5imageformats/qt5imageformats.mk | 2 +- package/qt5/qt5knx/qt5knx.mk | 2 +- package/qt5/qt5location/qt5location.hash | 2 +- package/qt5/qt5location/qt5location.mk | 2 +- package/qt5/qt5lottie/qt5lottie.hash | 2 +- package/qt5/qt5lottie/qt5lottie.mk | 2 +- package/qt5/qt5mqtt/qt5mqtt.mk | 2 +- package/qt5/qt5multimedia/qt5multimedia.hash | 2 +- package/qt5/qt5multimedia/qt5multimedia.mk | 2 +- .../qt5quickcontrols/qt5quickcontrols.hash | 2 +- .../qt5/qt5quickcontrols/qt5quickcontrols.mk | 2 +- .../qt5quickcontrols2/qt5quickcontrols2.hash | 2 +- .../qt5quickcontrols2/qt5quickcontrols2.mk | 2 +- .../qt5quicktimeline/qt5quicktimeline.hash | 2 +- .../qt5/qt5quicktimeline/qt5quicktimeline.mk | 2 +- .../qt5remoteobjects/qt5remoteobjects.hash | 2 +- .../qt5/qt5remoteobjects/qt5remoteobjects.mk | 2 +- package/qt5/qt5script/qt5script.hash | 2 +- package/qt5/qt5script/qt5script.mk | 2 +- package/qt5/qt5scxml/qt5scxml.hash | 2 +- package/qt5/qt5scxml/qt5scxml.mk | 2 +- package/qt5/qt5sensors/qt5sensors.hash | 2 +- package/qt5/qt5sensors/qt5sensors.mk | 2 +- package/qt5/qt5serialbus/qt5serialbus.hash | 2 +- package/qt5/qt5serialbus/qt5serialbus.mk | 2 +- package/qt5/qt5serialport/qt5serialport.hash | 2 +- package/qt5/qt5serialport/qt5serialport.mk | 2 +- package/qt5/qt5svg/qt5svg.hash | 2 +- package/qt5/qt5svg/qt5svg.mk | 2 +- package/qt5/qt5tools/Config.in | 4 +- package/qt5/qt5tools/qt5tools.hash | 2 +- package/qt5/qt5tools/qt5tools.mk | 2 +- .../qt5virtualkeyboard.hash | 2 +- .../qt5virtualkeyboard/qt5virtualkeyboard.mk | 2 +- .../0001-Add-missing-define-guards.patch | 35 - package/qt5/qt5wayland/qt5wayland.hash | 2 +- package/qt5/qt5wayland/qt5wayland.mk | 2 +- ...ro-don-t-link-statically-with-libstc.patch | 15 +- package/qt5/qt5webengine/qt5webengine.hash | 2 +- package/qt5/qt5webview/qt5webview.hash | 2 +- package/qt5/qt5webview/qt5webview.mk | 2 +- package/qt5/qt5x11extras/qt5x11extras.hash | 2 +- package/qt5/qt5x11extras/qt5x11extras.mk | 2 +- .../qt5/qt5xmlpatterns/qt5xmlpatterns.hash | 2 +- package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk | 2 +- package/qt6/Config.in | 1 + package/qt6/qt6.mk | 2 +- package/qt6/qt6base/qt6base.hash | 4 +- package/qt6/qt6serialbus/qt6serialbus.hash | 4 +- package/qt6/qt6serialport/qt6serialport.hash | 4 +- package/qt6/qt6svg/Config.in | 11 + package/qt6/qt6svg/qt6svg.hash | 10 + package/qt6/qt6svg/qt6svg.mk | 51 + package/quickjs/Config.in | 4 + package/ramspeed/Config.in | 4 + ...pace-declarations-correctly-for-XML-.patch | 47 - ...s-to-entities-checked-private-symbol.patch | 35 + ...are-namespace-declarations-correctly.patch | 33 - package/raptor/raptor.hash | 4 +- package/raptor/raptor.mk | 8 +- package/rauc/rauc.hash | 2 +- package/rauc/rauc.mk | 2 +- package/rdma-core/rdma-core.hash | 2 +- package/rdma-core/rdma-core.mk | 2 +- package/redis-plus-plus/Config.in | 15 + package/redis-plus-plus/redis-plus-plus.hash | 3 + package/redis-plus-plus/redis-plus-plus.mk | 28 + ...e-issue-compiling-with-Visual-Studio.patch | 4 +- ...t-disable-use-of-legacy-OpenSSL-memo.patch | 38 + ...l-fix-typo-in-preprocessor-condition.patch | 25 + ...Security-cxx-remove-deprecated-OpenS.patch | 26 + package/rockchip-mali/rockchip-mali.hash | 2 +- package/rockchip-mali/rockchip-mali.mk | 10 +- package/rockchip-rkbin/Config.in | 27 + package/rockchip-rkbin/rockchip-rkbin.hash | 3 + package/rockchip-rkbin/rockchip-rkbin.mk | 30 + package/rrdtool/rrdtool.hash | 2 +- package/rrdtool/rrdtool.mk | 4 +- package/rsh-redone/Config.in | 11 +- package/rtl8189es/rtl8189es.hash | 2 +- package/rtl8189es/rtl8189es.mk | 2 +- ...TRA_CFLAGS-USER_EXTRA_CFLAGS-at-the-.patch | 41 + package/rtl8189fs/rtl8189fs.hash | 2 +- package/rtl8189fs/rtl8189fs.mk | 13 +- ...02-Fix-conflicting-get_ra-on-PowerPC.patch | 124 - package/rtl8192eu/rtl8192eu.hash | 2 +- package/rtl8192eu/rtl8192eu.mk | 2 +- package/rtl8723bs/Config.in | 10 - package/rtl8723bs/rtl8723bs.mk | 27 - .../rtl8812au-aircrack-ng.hash | 2 +- .../rtl8812au-aircrack-ng.mk | 2 +- package/rtl8821cu/rtl8821cu.hash | 2 +- package/rtl8821cu/rtl8821cu.mk | 8 +- package/rtl8822cs/Config.in | 13 + package/rtl8822cs/rtl8822cs.hash | 2 + package/rtl8822cs/rtl8822cs.mk | 25 + package/rust-bin/rust-bin.hash | 252 +- package/rust-bin/rust-bin.mk | 2 +- package/rust/rust.hash | 6 +- package/rust/rust.mk | 2 +- package/rygel/Config.in | 8 +- package/s390-tools/s390-tools.hash | 2 +- package/s390-tools/s390-tools.mk | 2 +- package/sam-ba/Config.in.host | 1 - ...-Use-perl-module-JSON-part-of-core-i.patch | 6 +- package/samba4/samba4.hash | 4 +- package/samba4/samba4.mk | 9 +- package/sconeserver/Config.in | 1 + package/sconeserver/sconeserver.mk | 2 +- ...-as-an-alternative-for-bcopy-memmov.patch} | 47 +- ...eate-backup-of-old-installed-binary.patch} | 9 +- ...ermission-flags-even-if-chown-fails.patch} | 11 +- ...g-SCREEN-to-get-a-non-versioned-bin.patch} | 11 +- ...0005-Renamed-sched.h-to-eventqueue.h.patch | 39 + package/screen/0005-rename-sched_h.patch | 142 - ...> 0006-comm.h-now-depends-on-term.h.patch} | 20 +- ...-needed-for-list_-display-generic-.o.patch | 10 +- package/screen/screen.hash | 4 +- package/screen/screen.mk | 2 +- .../0001-Detect-which-awk-to-use.patch | 783 ++ package/sdl2/sdl2.hash | 4 +- package/sdl2/sdl2.mk | 2 +- package/seatd/seatd.hash | 2 +- package/seatd/seatd.mk | 4 +- ...able-SSL-support-for-the-curl-module.patch | 62 + .../shadow/0001-Fix-yescrypt-support.patch | 38 + package/shadow/Config.in | 6 +- package/sngrep/sngrep.hash | 6 +- package/sngrep/sngrep.mk | 3 +- package/sofia-sip/sofia-sip.hash | 2 +- package/sofia-sip/sofia-sip.mk | 2 +- package/spdlog/spdlog.hash | 2 +- package/spdlog/spdlog.mk | 2 +- package/speex/speex.mk | 4 + .../spirv-llvm-translator.hash | 2 +- .../spirv-llvm-translator.mk | 4 +- package/sqlite/sqlite.hash | 2 +- package/sqlite/sqlite.mk | 4 +- package/ssdp-responder/ssdp-responder.hash | 4 +- package/ssdp-responder/ssdp-responder.mk | 6 +- package/sshpass/sshpass.hash | 2 +- package/sshpass/sshpass.mk | 2 +- package/sslh/sslh.mk | 1 + .../stellarium/0001-add-missing-include.patch | 32 - package/stellarium/stellarium.hash | 2 +- package/stellarium/stellarium.mk | 13 +- package/strace/strace.hash | 4 +- package/strace/strace.mk | 2 +- package/stress-ng/stress-ng.mk | 4 + package/strongswan/strongswan.hash | 6 +- package/strongswan/strongswan.mk | 2 +- .../sunxi-mali-utgard-driver.hash | 2 +- .../sunxi-mali-utgard-driver.mk | 2 +- package/supertuxkart/supertuxkart.mk | 1 + ...ow-the-user-to-override-RUST_TARGET.patch} | 0 ...ure-proper-shabang-on-python-scripts.patch | 47 - package/suricata/suricata.hash | 2 +- package/suricata/suricata.mk | 5 +- package/swaybg/Config.in | 13 + package/swaybg/swaybg.hash | 3 + package/swaybg/swaybg.mk | 28 + package/swugenerator/Config.in.host | 6 + package/swugenerator/swugenerator.hash | 4 + package/swugenerator/swugenerator.mk | 14 + ...BUNDLED_DEPS-before-getting-nlohmann.patch | 52 - .../syslog-ng/0001-fix-build-on-uclibc.patch | 3 +- ...ort-tls-context.c-fix-libressl-build.patch | 97 + package/syslog-ng/syslog-ng.conf | 2 +- package/syslog-ng/syslog-ng.hash | 2 +- package/syslog-ng/syslog-ng.mk | 14 +- package/sysstat/sysstat.mk | 3 - package/systemd/Config.in | 16 +- package/systemd/systemd.hash | 4 +- package/systemd/systemd.mk | 45 +- package/taglib/taglib.hash | 2 +- package/taglib/taglib.mk | 2 +- package/tar/tar.hash | 6 +- package/tar/tar.mk | 4 +- ...01-Disable-tcl-compatibility-layers.patch} | 16 +- package/tcl/Config.in | 1 + package/tcl/tcl.mk | 3 +- ...rect-simple-copy-paste-error-Fix-488.patch | 28 - package/tiff/tiff.hash | 2 +- package/tiff/tiff.mk | 5 +- package/timescaledb/timescaledb.hash | 2 +- package/timescaledb/timescaledb.mk | 2 +- package/tor/tor.hash | 4 +- package/tor/tor.mk | 2 +- package/tovid/0001-manpage.patch | 25 - package/tovid/Config.in | 50 - package/tovid/tovid.hash | 3 - package/tovid/tovid.mk | 13 - package/tpm2-pkcs11/tpm2-pkcs11.hash | 2 +- package/tpm2-pkcs11/tpm2-pkcs11.mk | 2 +- package/tpm2-tss/tpm2-tss.hash | 2 +- package/tpm2-tss/tpm2-tss.mk | 5 +- package/transmission/Config.in | 9 +- package/transmission/transmission.mk | 2 +- package/tree/tree.hash | 2 +- package/tree/tree.mk | 2 +- ...-i810-mga-r128-and-savage-support-44.patch | 113 + ...06-kvm-drop-KVM_SET_MEMORY_REGION-42.patch | 30 + package/ttyd/Config.in | 6 +- package/tvheadend/Config.in | 4 +- package/tvheadend/tvheadend.hash | 2 +- package/tvheadend/tvheadend.mk | 2 +- package/ubus/ubus.hash | 2 +- package/ubus/ubus.mk | 2 +- .../0001-aarch64-add-hwcap-header-file.patch | 163 + .../0001-gettimeofday-fix-static-build.patch | 29 - ...are-f_owner_ex-for-all-architectures.patch | 85 + package/uclibc/uclibc.hash | 4 +- package/uclibc/uclibc.mk | 2 +- package/unifdef/unifdef.mk | 2 +- package/unzip/unzip.mk | 14 + package/urandom-scripts/S01seedrng | 40 + package/urandom-scripts/urandom-scripts.mk | 4 +- ...tHub-Actions-cover-build-with-GCC-13.patch | 114 + .../0001-libmount-ifdef-statx-call.patch | 57 + ...improve-dependence-on-NS_GET_-ioctls.patch | 34 - package/util-linux/Config.in | 11 + .../util-linux-libs/util-linux-libs.mk | 3 + package/util-linux/util-linux.hash | 6 +- package/util-linux/util-linux.mk | 20 +- package/uuu/uuu.hash | 4 +- package/uuu/uuu.mk | 4 +- package/uvw/uvw.hash | 4 +- package/uvw/uvw.mk | 2 +- package/valgrind/valgrind.hash | 4 +- package/valgrind/valgrind.mk | 2 +- package/vim/vim.hash | 6 +- package/vim/vim.mk | 2 +- package/vuejs/vuejs.hash | 2 +- package/vuejs/vuejs.mk | 2 +- package/vulkan-headers/vulkan-headers.hash | 2 +- package/vulkan-headers/vulkan-headers.mk | 2 +- package/wampcc/Config.in | 6 +- .../wayland-protocols/wayland-protocols.hash | 6 +- .../wayland-protocols/wayland-protocols.mk | 2 +- ...ayland-info-Fix-build-without-libdrm.patch | 46 - package/wayland-utils/wayland-utils.hash | 8 +- package/wayland-utils/wayland-utils.mk | 2 +- package/wayland/wayland.hash | 6 +- package/wayland/wayland.mk | 2 +- .../0001-add-missing-cstdint-include.patch | 61 + package/waylandpp/waylandpp.hash | 4 +- package/waylandpp/waylandpp.mk | 2 +- ...e-when-gstreamer-support-is-disabled.patch | 36 + package/webkitgtk/Config.in | 6 +- package/webkitgtk/webkitgtk.hash | 7 +- package/webkitgtk/webkitgtk.mk | 5 +- package/webp/webp.hash | 2 +- package/webp/webp.mk | 2 +- ...ncy-on-screenshooter-client-protocol.patch | 38 - package/weston/Config.in | 23 +- package/weston/weston.hash | 6 +- package/weston/weston.mk | 53 +- package/wget/wget.hash | 8 +- package/wget/wget.mk | 2 +- .../wilc-driver/0006-Support-Linux-6.3.patch | 43 + .../wilc-driver/0007-Support-Linux-6.4.patch | 36 + package/wine/wine.hash | 2 +- package/wine/wine.mk | 2 +- package/wireless-regdb/wireless-regdb.hash | 2 +- package/wireless-regdb/wireless-regdb.mk | 2 +- package/wireshark/wireshark.hash | 6 +- package/wireshark/wireshark.mk | 2 +- package/wolfssl/Config.in | 2 +- package/wolfssl/wolfssl.hash | 2 +- package/wolfssl/wolfssl.mk | 2 +- package/wpebackend-fdo/wpebackend-fdo.hash | 7 +- package/wpebackend-fdo/wpebackend-fdo.mk | 2 +- package/wpewebkit/Config.in | 6 +- package/wpewebkit/wpewebkit.hash | 7 +- package/wpewebkit/wpewebkit.mk | 7 +- package/x11r7/Config.in | 1 + .../x11r7/xapp_setxkbmap/xapp_setxkbmap.hash | 6 +- .../x11r7/xapp_setxkbmap/xapp_setxkbmap.mk | 2 +- package/x11r7/xapp_xrdb/xapp_xrdb.hash | 6 +- package/x11r7/xapp_xrdb/xapp_xrdb.mk | 4 +- package/x11r7/xapp_xwd/xapp_xwd.hash | 6 +- package/x11r7/xapp_xwd/xapp_xwd.mk | 4 +- .../xdriver_xf86-video-dummy.hash | 6 +- .../xdriver_xf86-video-dummy.mk | 2 +- .../xdriver_xf86-video-i128.hash | 8 +- .../xdriver_xf86-video-i128.mk | 6 +- .../xfont_font-adobe-100dpi.hash | 2 +- .../xfont_font-adobe-100dpi.mk | 6 +- .../xfont_font-adobe-75dpi.hash | 2 +- .../xfont_font-adobe-75dpi.mk | 6 +- .../xfont_font-adobe-utopia-100dpi.hash | 2 +- .../xfont_font-adobe-utopia-100dpi.mk | 6 +- .../xfont_font-adobe-utopia-type1.hash | 2 +- .../xfont_font-adobe-utopia-type1.mk | 6 +- .../xfont_font-alias/xfont_font-alias.hash | 4 +- .../xfont_font-alias/xfont_font-alias.mk | 6 +- .../xfont_font-arabic-misc.hash | 2 +- .../xfont_font-arabic-misc.mk | 6 +- .../xfont_font-bh-100dpi.hash | 2 +- .../xfont_font-bh-100dpi.mk | 6 +- .../xfont_font-bh-75dpi.hash | 2 +- .../xfont_font-bh-75dpi.mk | 6 +- ...xfont_font-bh-lucidatypewriter-100dpi.hash | 2 +- .../xfont_font-bh-lucidatypewriter-100dpi.mk | 6 +- .../xfont_font-bh-lucidatypewriter-75dpi.hash | 2 +- .../xfont_font-bh-lucidatypewriter-75dpi.mk | 6 +- .../xfont_font-bh-ttf/xfont_font-bh-ttf.hash | 3 +- .../xfont_font-bh-ttf/xfont_font-bh-ttf.mk | 6 +- .../xfont_font-bh-type1.hash | 2 +- .../xfont_font-bh-type1.mk | 6 +- .../xfont_font-bitstream-100dpi.hash | 2 +- .../xfont_font-bitstream-100dpi.mk | 6 +- .../xfont_font-bitstream-75dpi.hash | 2 +- .../xfont_font-bitstream-75dpi.mk | 6 +- .../xfont_font-bitstream-type1.hash | 2 +- .../xfont_font-bitstream-type1.mk | 6 +- .../xfont_font-cronyx-cyrillic.hash | 2 +- .../xfont_font-cronyx-cyrillic.mk | 6 +- .../xfont_font-cursor-misc.hash | 2 +- .../xfont_font-cursor-misc.mk | 6 +- .../xfont_font-daewoo-misc.hash | 3 +- .../xfont_font-daewoo-misc.mk | 6 +- .../xfont_font-dec-misc.hash | 2 +- .../xfont_font-dec-misc.mk | 6 +- .../xfont_font-ibm-type1.hash | 2 +- .../xfont_font-ibm-type1.mk | 6 +- .../xfont_font-isas-misc.hash | 2 +- .../xfont_font-isas-misc.mk | 6 +- .../xfont_font-jis-misc.hash | 3 +- .../xfont_font-jis-misc.mk | 6 +- .../xfont_font-micro-misc.hash | 2 +- .../xfont_font-micro-misc.mk | 6 +- .../xfont_font-misc-cyrillic.hash | 2 +- .../xfont_font-misc-cyrillic.mk | 6 +- .../xfont_font-misc-ethiopic.hash | 4 +- .../xfont_font-misc-ethiopic.mk | 6 +- .../xfont_font-misc-meltho.hash | 2 +- .../xfont_font-misc-meltho.mk | 6 +- .../xfont_font-misc-misc.hash | 2 +- .../xfont_font-misc-misc.mk | 6 +- .../xfont_font-mutt-misc.hash | 2 +- .../xfont_font-mutt-misc.mk | 6 +- .../xfont_font-schumacher-misc.hash | 2 +- .../xfont_font-schumacher-misc.mk | 6 +- .../xfont_font-screen-cyrillic.hash | 3 +- .../xfont_font-screen-cyrillic.mk | 6 +- .../xfont_font-sony-misc.hash | 3 +- .../xfont_font-sony-misc.mk | 6 +- .../xfont_font-sun-misc.hash | 5 +- .../xfont_font-sun-misc.mk | 6 +- .../xfont_font-winitzki-cyrillic.hash | 3 +- .../xfont_font-winitzki-cyrillic.mk | 6 +- .../xfont_font-xfree86-type1.hash | 3 +- .../xfont_font-xfree86-type1.mk | 6 +- .../xkeyboard-config/xkeyboard-config.hash | 2 +- .../xkeyboard-config/xkeyboard-config.mk | 2 +- package/x11r7/xlib_libX11/xlib_libX11.hash | 6 +- package/x11r7/xlib_libX11/xlib_libX11.mk | 2 +- package/x11r7/xlib_libXpresent/Config.in | 9 + .../xlib_libXpresent/xlib_libXpresent.hash | 6 + .../xlib_libXpresent/xlib_libXpresent.mk | 21 + package/x11r7/xlib_libdmx/xlib_libdmx.hash | 8 +- package/x11r7/xlib_libdmx/xlib_libdmx.mk | 6 +- package/x11r7/xlib_xtrans/xlib_xtrans.hash | 10 +- package/x11r7/xlib_xtrans/xlib_xtrans.mk | 7 +- package/x11r7/xorgproto/xorgproto.hash | 17 +- package/x11r7/xorgproto/xorgproto.mk | 5 +- .../xserver_xorg-server.mk | 9 +- package/x11r7/xwayland/xwayland.hash | 6 +- package/x11r7/xwayland/xwayland.mk | 2 +- package/xenomai/xenomai.mk | 16 +- package/xfsprogs/xfsprogs.mk | 4 + package/xmrig/Config.in | 6 +- package/xmrig/xmrig.hash | 2 +- package/xmrig/xmrig.mk | 2 +- package/xterm/xterm.hash | 4 +- package/xterm/xterm.mk | 2 +- ...psmouse-back.c-fix-build-with-gcc-11.patch | 115 - package/xvisor/xvisor.hash | 2 +- package/xvisor/xvisor.mk | 2 +- ...0001-Detect-symver-attribute-support.patch | 70 - package/xz/xz.hash | 8 +- package/xz/xz.mk | 2 +- package/yajl/yajl.mk | 1 + package/yaml-cpp/yaml-cpp.mk | 1 + package/yavta/yavta.mk | 2 +- package/z3/z3.hash | 2 +- package/z3/z3.mk | 2 +- package/zbar/zbar.mk | 1 + .../0001-define-missing-rebind-type.patch | 62 + ...LegacyVersion-broke-ax_python_dev.m4.patch | 134 - package/zfs/Config.in | 1 + package/zfs/zfs.hash | 4 +- package/zfs/zfs.mk | 8 +- ...rd-for-vec_sumsu-to-prevent-undefine.patch | 27 - ...ix-version-in-zlib.pc-when-building-.patch | 53 - ...-sys-auxv.h-exists-at-configure-time.patch | 90 - package/zlib-ng/zlib-ng.hash | 2 +- package/zlib-ng/zlib-ng.mk | 8 +- package/zxing-cpp/zxing-cpp.hash | 2 +- package/zxing-cpp/zxing-cpp.mk | 7 +- ...1-MidiIn-Add-stdint.h-header-include.patch | 26 + ...002-Bank-Add-stdint.h-header-include.patch | 28 + support/dependencies/dependencies.sh | 1 + support/download/git | 14 +- support/download/helpers | 3 + support/misc/Vagrantfile | 2 +- support/misc/gitlab-ci.yml.in | 39 +- support/scripts/gen-bootlin-toolchains | 2 + support/scripts/generate-gitlab-ci-yml | 1 + support/scripts/pkg-stats | 8 +- support/testing/infra/basetest.py | 10 +- support/testing/run-tests | 14 + support/testing/tests/boot/test_edk2.py | 2 + support/testing/tests/boot/test_grub.py | 20 +- support/testing/tests/core/test_timezone.py | 19 +- support/testing/tests/fs/test_iso9660.py | 11 +- .../tests/init/test_systemd_selinux.py | 3 +- .../tests/package/sample_python_docker.py | 12 + .../tests/package/sample_python_midiutil.py | 23 + .../tests/package/sample_python_pysmb.py | 2 + support/testing/tests/package/test_acpica.py | 91 + .../test_acpica/rootfs-overlay/root/dsdt.asl | 9 + support/testing/tests/package/test_brotli.py | 13 + support/testing/tests/package/test_bzip2.py | 12 + .../tests/package/test_compressor_base.py | 126 + .../tests/package/test_docker_compose.py | 10 +- .../testing/tests/package/test_dos2unix.py | 45 + .../testing/tests/package/test_fluidsynth.py | 61 + .../rootfs-overlay/root/check_notes.py | 24 + .../rootfs-overlay/root/gen_midi_file.py | 23 + support/testing/tests/package/test_gawk.py | 120 + .../tests/package/test_glslsandbox_player.py | 50 + .../linux-vkms.fragment | 1 + support/testing/tests/package/test_glxinfo.py | 12 +- .../testing/tests/package/test_gnuradio.py | 42 + .../rootfs-overlay/root/test_gnuradio.py | 68 + support/testing/tests/package/test_gzip.py | 13 + support/testing/tests/package/test_lrzip.py | 12 + support/testing/tests/package/test_lxc.py | 1 + support/testing/tests/package/test_lz4.py | 11 + support/testing/tests/package/test_lzip.py | 12 + support/testing/tests/package/test_lzop.py | 12 + support/testing/tests/package/test_mtools.py | 8 +- .../testing/tests/package/test_nftables.py | 109 + .../test_nftables/rootfs-overlay/root/nft.py | 22 + support/testing/tests/package/test_openssh.py | 8 +- .../testing/tests/package/test_perftest.py | 2 +- support/testing/tests/package/test_pigz.py | 12 + support/testing/tests/package/test_pixz.py | 46 +- support/testing/tests/package/test_polkit.py | 2 +- support/testing/tests/package/test_python.py | 2 +- .../tests/package/test_python_autobahn.py | 8 +- .../tests/package/test_python_boto3.py | 2 +- .../tests/package/test_python_botocore.py | 2 +- .../tests/package/test_python_crossbar.py | 8 +- .../tests/package/test_python_cryptography.py | 8 +- .../package/test_python_magic_wormhole.py | 12 +- .../tests/package/test_python_midiutil.py | 11 + .../tests/package/test_python_pysmb.py | 12 + .../tests/package/test_python_s3transfer.py | 2 +- .../tests/package/test_python_scipy.py | 8 +- .../package/test_python_service_identity.py | 8 +- .../testing/tests/package/test_python_treq.py | 8 +- .../tests/package/test_python_txtorcon.py | 8 +- support/testing/tests/package/test_shadow.py | 9 +- support/testing/tests/package/test_tmux.py | 1 + support/testing/tests/package/test_xz.py | 10 + support/testing/tests/package/test_z3.py | 8 +- support/testing/tests/package/test_zchunk.py | 16 + support/testing/tests/package/test_zstd.py | 11 + system/Config.in | 6 +- toolchain/Config.in | 34 + toolchain/helpers.mk | 53 +- .../pkg-toolchain-external.mk | 16 +- .../Config.in | 5 +- .../toolchain-external-arm-aarch64-be.hash | 6 +- .../toolchain-external-arm-aarch64-be.mk | 6 +- .../toolchain-external-arm-aarch64/Config.in | 5 +- .../toolchain-external-arm-aarch64.hash | 6 +- .../toolchain-external-arm-aarch64.mk | 6 +- .../toolchain-external-arm-arm/Config.in | 9 +- .../toolchain-external-arm-arm.hash | 11 +- .../toolchain-external-arm-arm.mk | 6 +- .../Config.in.options | 394 + .../Config.in | 1 + .../Config.in | 1 + .../Config.in.options | 26 +- .../Config.in | 1 + .../Config.in | 1 + .../toolchain-external-linaro-arm/Config.in | 1 + .../toolchain-external-linaro-armeb/Config.in | 1 + .../toolchain-external-synopsys-arc/Config.in | 2 +- utils/checksymbolslib/test_makefile.py | 3 - utils/docker-run | 24 +- utils/genrandconfig | 18 +- utils/getdeveloperlib.py | 2 +- 1798 files changed, 36091 insertions(+), 18209 deletions(-) create mode 100644 board/beaglev/patches/uboot/0001-riscv-Fix-build-against-binutils-2.38.patch create mode 100644 board/canaan/k210-soc/patches/uboot/0001-riscv-Fix-build-against-binutils-2.38.patch create mode 100644 board/freescale/common/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch create mode 100644 board/freescale/common/patches/arm-trusted-firmware/0002-LF-7968-01-fix-Makefile-Suppress-array-bounds-error.patch create mode 100644 board/qemu/m68k-mcf5208/0001-m68k-Fix-invalid-.section-syntax.patch create mode 100644 board/qemu/m68k-q800/0001-m68k-Fix-invalid-.section-syntax.patch create mode 100644 board/radxa/rock5b/boot.cmd create mode 100644 board/radxa/rock5b/genimage.cfg create mode 100644 board/radxa/rock5b/linux.fragment create mode 100644 board/radxa/rock5b/patches/linux/0001-etherdevice-Adjust-ether_addr-prototypes-to-silence-.patch create mode 100644 board/radxa/rock5b/patches/linux/0002-mm-page_alloc-fix-building-error-on-Werror-array-com.patch create mode 100755 board/radxa/rock5b/post-image.sh create mode 100644 board/radxa/rock5b/readme.txt create mode 100644 board/radxa/rock5b/rock5b.its delete mode 100644 board/shredos/bootx64.efi.2021.08 delete mode 100755 board/shredos/bootx64.efi.original delete mode 100755 board/shredos/bootx64.efi.recent.build.without.efigop.efiuga delete mode 100755 board/shredos/bootx64.efi.used.up.to.01-Jun-23 delete mode 100644 board/shredos/kernel-4.14-defconfig.config delete mode 100644 board/shredos/kernel-5.13-defconfig.config delete mode 100644 board/shredos/kernel-5.6-defconfig.config rename board/shredos/{kernel-6.3-defconfig.config => kernel-6.4-defconfig.config} (97%) create mode 100644 board/stmicroelectronics/common/stm32f4xx/busybox.fragment create mode 120000 board/versal/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch create mode 120000 board/zynqmp/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch create mode 100644 boot/arm-trusted-firmware/v2.2/0001-PATCH-feat-build-add-support-for-new-binutils-versio.patch create mode 100644 boot/arm-trusted-firmware/v2.3/0001-feat-build-add-support-for-new-binutils-versions.patch create mode 100644 boot/arm-trusted-firmware/v2.4/0001-feat-build-add-support-for-new-binutils-versions.patch create mode 100644 boot/arm-trusted-firmware/v2.5/0001-feat-build-add-support-for-new-binutils-versions.patch create mode 100644 boot/arm-trusted-firmware/v2.6/0001-feat-build-add-support-for-new-binutils-versions.patch create mode 100644 boot/arm-trusted-firmware/v2.7/0001-feat-build-add-support-for-new-binutils-versions.patch create mode 100644 boot/arm-trusted-firmware/v2.8/0001-feat-build-add-support-for-new-binutils-versions.patch create mode 100644 boot/arm-trusted-firmware/v2.8/0002-build-tools-avoid-unnecessary-link.patch create mode 100644 boot/arm-trusted-firmware/v2.9/0001-build-tools-avoid-unnecessary-link.patch create mode 100644 boot/grub2/0003-loader-efi-chainloader-Simplify-the-loader-state.patch create mode 100644 boot/grub2/0004-commands-boot-Add-API-to-pass-context-to-loader.patch create mode 100644 boot/grub2/0005-loader-efi-chainloader-Use-grub_loader_set_ex.patch create mode 100644 boot/grub2/0006-kern-efi-sb-Reject-non-kernel-files-in-the-shim_lock.patch create mode 100644 boot/grub2/0007-video-Remove-trailing-whitespaces.patch create mode 100644 boot/grub2/0008-video-readers-png-Abort-sooner-if-a-read-operation-f.patch create mode 100644 boot/grub2/0009-video-readers-png-Refuse-to-handle-multiple-image-he.patch create mode 100644 boot/grub2/0010-video-readers-png-Drop-greyscale-support-to-fix-heap.patch create mode 100644 boot/grub2/0011-video-readers-png-Avoid-heap-OOB-R-W-inserting-huff-.patch create mode 100644 boot/grub2/0012-video-readers-jpeg-Block-int-underflow-wild-pointer-.patch create mode 100644 boot/grub2/0013-net-ip-Do-IP-fragment-maths-safely.patch create mode 100644 boot/grub2/0014-net-http-Fix-OOB-write-for-split-http-headers.patch create mode 100644 boot/grub2/0015-net-http-Error-out-on-headers-with-LF-without-CR.patch create mode 100644 boot/grub2/0016-font-Fix-size-overflow-in-grub_font_get_glyph_intern.patch create mode 100644 boot/grub2/0017-font-Fix-several-integer-overflows-in-grub_font_cons.patch create mode 100644 boot/grub2/0018-font-Fix-an-integer-underflow-in-blit_comb.patch create mode 100644 boot/grub2/0019-fs-ext2-Ignore-checksum-seed-incompat-feature.patch create mode 100644 boot/grub2/0020-fs-ext2-Ignore-the-large_dir-incompat-feature.patch create mode 100644 boot/mv-ddr-marvell/0001-Allow-access-to-low-addresses-with-gcc-12.patch create mode 100644 boot/mv-ddr-marvell/0002-Makefile-disable-stack-protection.patch create mode 100644 configs/rock5b_defconfig create mode 100644 docs/manual/docbook-xsl.css create mode 100644 docs/manual/github_hash_mongrel2.png create mode 100644 docs/manual/logo.png create mode 100644 docs/manual/manual.html create mode 100644 docs/manual/manual.pdf create mode 100644 docs/manual/manual.text delete mode 100644 package/acpica/0001-build-do-not-use-Werror.patch create mode 100644 package/agentpp/0001-Snmpx-fix-const-nonconst-type-mismatch.patch create mode 100644 package/alsa-lib/0002-Fix-symver-build-error-on-non-ELF-platforms.patch delete mode 100644 package/at-spi2-atk/Config.in delete mode 100644 package/at-spi2-atk/at-spi2-atk.hash delete mode 100644 package/at-spi2-atk/at-spi2-atk.mk create mode 100644 package/audit/0001-Define-__attribute_malloc__-when-needed.patch delete mode 100644 package/binutils/2.37/0003-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch delete mode 100644 package/binutils/2.37/0004-or1k-fix-pc-relative-relocation-against-dynamic-on-P.patch delete mode 100644 package/binutils/2.37/0005-or1k-Avoid-R_OR1K_GOT16-signed-overflow-by-using-spe.patch delete mode 100644 package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch delete mode 100644 package/binutils/2.37/0007-i386-Allow-GOT32-relocations-against-ABS-symbols.patch delete mode 100644 package/binutils/2.38/0003-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch delete mode 100644 package/binutils/2.38/0004-or1k-Avoid-R_OR1K_GOT16-signed-overflow-by-using-spe.patch delete mode 100644 package/binutils/2.38/0005-binutils-2.38-vs.-ppc32-linux-kernel.patch rename package/binutils/{2.37 => 2.40}/0001-sh-conf.patch (82%) rename package/binutils/{2.37 => 2.40}/0002-poison-system-directories.patch (87%) rename package/binutils/{2.38 => 2.41}/0001-sh-conf.patch (82%) rename package/binutils/{2.38 => 2.41}/0002-poison-system-directories.patch (87%) create mode 100644 package/bitcoin/0002-Add-missing-includes-to-fix-gcc-13-compile-error.patch create mode 100644 package/bitcoin/0003-refactor-add-most-of-src-util-to-iwyu.patch create mode 100644 package/bitcoin/0004-src-util-string-h-fix-gcc13.patch create mode 100644 package/bluez5_utils/0001-configure-Check-ell-path.patch delete mode 100644 package/bluez5_utils/0001-musl-max-input.patch delete mode 100644 package/bootgen/0001-Fix-build-on-machines-with-modern-flex.patch create mode 100644 package/bootgen/0001-Refix-builds-on-machines-with-modern-flex-versions.patch delete mode 100644 package/canfestival/Config.in delete mode 100644 package/canfestival/canfestival.hash delete mode 100644 package/canfestival/canfestival.mk create mode 100644 package/ccache/0001-fix-Work-around-GCC-12.3-bug-109241.patch create mode 100644 package/composer/Config.in.host create mode 100644 package/composer/composer.hash create mode 100644 package/composer/composer.mk create mode 100644 package/conmon/Config.in create mode 100644 package/conmon/conmon.hash create mode 100644 package/conmon/conmon.mk delete mode 100644 package/connman/0001-gweb-Fix-OOB-write-in-received_data.patch delete mode 100644 package/connman/0002-wispr-Add-reference-counter-to-portal-context.patch delete mode 100644 package/connman/0003-wispr-Update-portal-context-references.patch create mode 100644 package/cryptodev-linux/Config.in delete mode 100644 package/cryptodev/Config.in delete mode 100644 package/cryptodev/cryptodev.mk create mode 100644 package/cups/0005-raster-interpret.c-Fix-CVE-2023-4504.patch create mode 100644 package/dahdi-linux/0005-Fix-build-on-Linux-6.3.patch create mode 100644 package/dahdi-linux/0006-Fix-build-on-Linux-6.4.patch create mode 100644 package/dfu-programmer/Config.in create mode 100644 package/dfu-programmer/dfu-programmer.hash create mode 100644 package/dfu-programmer/dfu-programmer.mk delete mode 100644 package/e2fsprogs/0001-libext2fs-add-sanity-check-to-extent-manipulation.patch rename package/elf2flt/{0006-elf2flt-xtensa-fix-text-relocations.patch => 0006-xtensa-fix-text-relocations.patch} (88%) create mode 100644 package/elf2flt/0007-elf2flt-remove-use-of-BFD_VMA_FMT.patch create mode 100644 package/elf2flt/0008-riscv64-add-more-relocations-required-to-be-handled.patch create mode 100644 package/emlog/0001-Fix-build-on-Linux-6.4.patch create mode 100644 package/erlang/0001-erts-check-for-sys-auxv.h.patch delete mode 100644 package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch delete mode 100644 package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch delete mode 100644 package/erlang/0003-crypto-Fixes-for-LibreSSL-3-5-0.patch create mode 100644 package/esp-hosted/0001-esp_hosted_ng-host-fix-build-failure-when-CONFIG_PM-.patch create mode 100644 package/esp-hosted/Config.in create mode 100644 package/esp-hosted/esp-hosted.hash create mode 100644 package/esp-hosted/esp-hosted.mk delete mode 100644 package/eudev/0001-Only-use-pragma-for-ignoring-diagnostics-if-.patch delete mode 100644 package/eudev/0002-Fix-compile-time-issue-on-very-old-kernels.patch delete mode 100644 package/f2fs-tools/0001-configure-ac-fix-cross-compilation.patch create mode 100644 package/f2fs-tools/0001-f2fs-tools-convert-to-lseek-and-kill-lseek64.patch delete mode 100644 package/f2fs-tools/0002-f2fs-tools-fix-build-error-on-lz4-1-9-4.patch create mode 100644 package/ffmpeg/0005-Fixes-assembling-with-binutils-as-2.41.patch create mode 100644 package/fluent-bit/0001-build-use-the-system-provided-LuaJIT-if-found.patch delete mode 100644 package/fluent-bit/0001-lib-cfl-fixup-static_assert.patch delete mode 100644 package/fluent-bit/0002-lib-c-ares-fixup-static_assert.patch create mode 100644 package/fluent-bit/0002-lib-librdkafka-CMakeLists.txt-allow-compilation-with.patch create mode 100644 package/fluent-bit/0003-CMakeLists.txt-disable-cxx-support-for-librdkafka-77.patch delete mode 100644 package/fluent-bit/0003-fix-build-without-C.patch delete mode 100644 package/freerdp/0004-Fix-8702-Disable-sha3-and-shake-hashes-for-libressl.patch delete mode 100644 package/gawk/0001-Fix-a-bug-with-Node_elem_new.patch delete mode 100644 package/gcc/10.4.0/0001-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch delete mode 100644 package/gcc/10.4.0/0002-or1k-Add-mcmodel-option-to-handle-large-GOTs.patch delete mode 100644 package/gcc/10.4.0/0003-or1k-Use-cmodel-large-when-building-crtstuff.patch delete mode 100644 package/gcc/10.4.0/0004-gcc-define-_REENTRANT-for-OpenRISC-when-pthread-is-p.patch delete mode 100644 package/gcc/10.4.0/0006-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch create mode 100644 package/gcc/10.4.0/0007-or1k-Only-define-TARGET_HAVE_TLS-when-HAVE_AS_TLS.patch create mode 100644 package/gcc/11.4.0/0006-or1k-Only-define-TARGET_HAVE_TLS-when-HAVE_AS_TLS.patch create mode 100644 package/gcc/11.4.0/0007-xtensa-add-.note.GNU-stack-section-on-linux.patch create mode 100644 package/gcc/12.3.0/0002-or1k-Only-define-TARGET_HAVE_TLS-when-HAVE_AS_TLS.patch create mode 100644 package/gcc/12.3.0/0003-xtensa-add-.note.GNU-stack-section-on-linux.patch rename package/gcc/{10.4.0/0005-disable-split-stack-for-non-thread-builds.patch => 13.2.0/0001-disable-split-stack-for-non-thread-builds.patch} (92%) create mode 100644 package/gcc/13.2.0/0002-RISC-V-fix-build-issue-with-gcc-4.9.x.patch create mode 100644 package/gdb/arc-2020.09-release-gdb/0001-Do-not-define-basic_string_view-to_string.patch delete mode 100644 package/gerbera/0001-Fix-build-with-fmt-9-0.patch create mode 100644 package/gerbera/0001-buildfix-support-fmtlib-10.patch create mode 100644 package/ghostscript/0001-Fix-build-without-BUILD_PDF.patch delete mode 100644 package/gnuradio/0001-blocks-Including-missing-vector-in-blockinterleaver.patch delete mode 100644 package/gnuradio/0002-blocks-blockinterleaving.h-add-missing-cstddef-heade.patch create mode 100644 package/go-bootstrap-stage1/Config.in.host rename package/{go-bootstrap/go-bootstrap.hash => go-bootstrap-stage1/go-bootstrap-stage1.hash} (100%) create mode 100644 package/go-bootstrap-stage1/go-bootstrap-stage1.mk create mode 100644 package/go-bootstrap-stage2/Config.in.host create mode 100644 package/go-bootstrap-stage2/go-bootstrap-stage2.hash create mode 100644 package/go-bootstrap-stage2/go-bootstrap-stage2.mk delete mode 100644 package/go-bootstrap/Config.in.host delete mode 100644 package/go-bootstrap/go-bootstrap.mk create mode 100644 package/go/0002-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch delete mode 100644 package/go/0003-runtime-support-riscv64-SV57-mode.patch create mode 100644 package/gptfdisk/0004-Updated-guid.cc-to-deal-with-minor-change-in-libuuid.patch create mode 100644 package/gupnp-av/0001-libxml2.11-support.patch create mode 100644 package/gupnp/0001-all-Drop-xmlRecoverMemory.patch create mode 100644 package/gupnp/0002-build-properly-spell-provide-in-wrap-files.patch create mode 100644 package/haproxy/0001-BUILD-atomic-atomic.h-may-need-compiler.h-on-ARMv8.2.patch create mode 100644 package/heimdal/0001-Use-perl-module-JSON-PP-part-of-core-instead-of-JSON.patch delete mode 100644 package/hiredis/0001-CMakeLists.txt-respect-BUILD_SHARED_LIBS.patch create mode 100644 package/intel-mediasdk/0002-add-missing-stdint.h-to-mfxparser-cpp.patch delete mode 100644 package/janet/0001-Update-for-more-minimal-builds.patch create mode 100644 package/kodi-audiodecoder-timidity/0001-MidiScan-include-missing-cstdint.patch create mode 100644 package/kodi-imagedecoder-heif/0001-include-missing-cstdint-to-support-gcc-13.patch create mode 100644 package/kodi-imagedecoder-heif/Config.in create mode 100644 package/kodi-imagedecoder-heif/kodi-imagedecoder-heif.hash create mode 100644 package/kodi-imagedecoder-heif/kodi-imagedecoder-heif.mk create mode 100644 package/kodi-imagedecoder-raw/Config.in create mode 100644 package/kodi-imagedecoder-raw/kodi-imagedecoder-raw.hash create mode 100644 package/kodi-imagedecoder-raw/kodi-imagedecoder-raw.mk create mode 100644 package/kodi-inputstream-adaptive/0001-include-missing-cstdint-to-support-gcc-13.patch create mode 100644 package/kodi-inputstream-ffmpegdirect/0001-include-missing-cstdint-to-support-gcc-13.patch create mode 100644 package/kodi/0002-CGUIWindowHome-use-AnnouncementFlagToString-when-log.patch delete mode 100644 package/kodi/0002-cmake-modules-fix-python-detection.patch create mode 100644 package/kodi/0003-CGUIColorButtonControl-use-explicit-cast-to-UTILS-CO.patch create mode 100644 package/kodi/0004-CLog-allow-using-fmt-enums-format_as-for-explicit-en.patch create mode 100644 package/kodi/0005-CLog-add-formatter-for-std-atomic-for-explicit-atomi.patch delete mode 100644 package/less/0001-End-OSC8-hyperlink-on-invalid-embedded-escape-sequence.patch delete mode 100644 package/libasplib/0001-asplib_CPUTimer.h-Fix-time.h-include.patch delete mode 100644 package/libasplib/Config.in delete mode 100644 package/libasplib/libasplib.hash delete mode 100644 package/libasplib/libasplib.mk delete mode 100644 package/libbsd/0001-src-local-elf.h-fix-big-endian-sh.patch create mode 100644 package/libcoap/0001-Backport-fix-for-CVE-2023-30362.patch delete mode 100644 package/libcodec2/0001-update-cmake.patch create mode 100644 package/libde265/Config.in create mode 100644 package/libde265/libde265.hash create mode 100644 package/libde265/libde265.mk create mode 100644 package/libdecor/Config.in create mode 100644 package/libdecor/libdecor.hash create mode 100644 package/libdecor/libdecor.mk delete mode 100644 package/libdeflate/0001-lib-arm-crc32-use-crypto-target-when-required-due-to-gcc-bug.patch delete mode 100644 package/libdeflate/0002-lib-arm-cpu_features-fix-build-error-due-to-PMULL-enabled-without-NEON.patch create mode 100644 package/libdisplay-info/0001-displayid.c-Include-sys-types.h.patch create mode 100644 package/libdisplay-info/Config.in create mode 100644 package/libdisplay-info/libdisplay-info.hash create mode 100644 package/libdisplay-info/libdisplay-info.mk create mode 100644 package/libedit/0002-add-sys-types_h.patch delete mode 100644 package/libfuse3/0001-Fix-MS_LAZYTIME-not-defined-on-uclibc.patch create mode 100644 package/libfuse3/0001-Wrapper-around-test-applications-for-cross-compiler-.patch create mode 100644 package/libheif/Config.in create mode 100644 package/libheif/libheif.hash create mode 100644 package/libheif/libheif.mk mode change 100644 => 120000 package/libiberty/libiberty.hash create mode 100644 package/libjxl/0002-Add-missing-atomic-content-to-fix-gcc-compilation-fo.patch create mode 100644 package/liblo/0001-Fix-use-after-free-warning-in-server.c.patch delete mode 100644 package/libmemcached/0001-disable-tests.patch delete mode 100644 package/libmemcached/0002-disable-sanitizer.patch delete mode 100644 package/libmemcached/0003-move-ac_config_aux_dir.patch delete mode 100644 package/libmemcached/0004-disable-doc-and-man.patch delete mode 100644 package/libmemcached/0005-fix-pointer-comparaison.patch create mode 100644 package/libmnl/0002-include-cache-copy-of-can.h-and-can-netlink.h.patch create mode 100644 package/libmodplug/0001-fix-cctype-ub.patch create mode 100644 package/libopenssl/0005-Revert-Fix-static-builds.patch delete mode 100644 package/libopenssl/0005-crypto-perlasm-ppc-xlate.pl-add-linux64v2-flavour.patch create mode 100644 package/libopenssl/0006-Add-linux-x86-latomic-target.patch delete mode 100644 package/libopenssl/0006-Add-support-for-io_pgetevents_time64-syscall.patch delete mode 100644 package/libopenssl/0007-Fixup-support-for-io_pgetevents_time64-syscall.patch delete mode 100644 package/libpjsip/0001-Merge-pull-request-from-GHSA-9pfh-r8x4-w26w.patch delete mode 100644 package/libpjsip/0002-Merge-pull-request-from-GHSA-cxwq-5g9x-x7fr.patch delete mode 100644 package/libqb/0001-Add-disable-tests-option.patch create mode 100644 package/libraw/0001-do-not-set-shrink-flag-for-3-4-component-images.patch create mode 100644 package/libserial/0003-Add-missing-cstdint-header-for-uint8_t-type.patch delete mode 100644 package/libssh2/0001-Opaque-structs-in-LibreSSL-3-5.patch create mode 100644 package/libssh2/0001-mbedtls-use-more-size_t-to-sync-up-with-crypto-h.patch create mode 100644 package/libubootenv/0002-Revert-fw_setenv-fix-bug-when-SPI-flash-write-size-s.patch create mode 100644 package/libuhttpd/0002-compatibility-for-openssl-3.0.patch create mode 100644 package/libvpx/0002-VP8-disallow-thread-count-changes.patch create mode 100644 package/libxcrypt/0001-Make-BuildCommon.pm-compatible-with-latest-perl.patch create mode 100644 package/libxcrypt/0002-Remove-smartmatch-usage-from-gen-crypt-h.patch delete mode 100644 package/lightning/0001-lib-jit_disasm.c-fix-build.patch create mode 100644 package/linux-pam/0001-examples-tty_conv-fix-build-on-musl.patch create mode 100644 package/linux-pam/0002-Fix-build-if-crypt_r-isn-t-available.patch delete mode 100644 package/linuxptp/0001-missing.h-drop-clock_nanosleep-replacement.patch delete mode 100644 package/linuxptp/0002-makefile-use-conditional-assignment-for-KBUILD_OUTPUT.patch create mode 100644 package/lldpd/0001-daemon-fix-read-overflow-when-parsing-CDP-addresses.patch rename package/{ => llvm-project}/clang/0001-lib-Driver-ToolChains-Gnu-Use-GCC_INSTALL_PREFIX-in-.patch (100%) rename package/{ => llvm-project}/clang/Config.in (82%) rename package/{ => llvm-project}/clang/clang.hash (52%) rename package/{ => llvm-project}/clang/clang.mk (89%) rename package/{ => llvm-project}/compiler-rt/Config.in (87%) rename package/{ => llvm-project}/compiler-rt/compiler-rt.hash (50%) rename package/{ => llvm-project}/compiler-rt/compiler-rt.mk (82%) rename package/{ => llvm-project}/libclc/0001-support-out-of-tree-build.patch (100%) rename package/{ => llvm-project}/libclc/Config.in (73%) rename package/{ => llvm-project}/libclc/libclc.hash (51%) rename package/{ => llvm-project}/libclc/libclc.mk (92%) rename package/{ => llvm-project}/lld/Config.in.host (74%) rename package/{ => llvm-project}/lld/lld.hash (52%) rename package/{ => llvm-project}/lld/lld.mk (61%) create mode 100644 package/llvm-project/llvm-cmake/llvm-cmake.hash create mode 100644 package/llvm-project/llvm-cmake/llvm-cmake.mk create mode 100644 package/llvm-project/llvm-libunwind/llvm-libunwind.hash create mode 100644 package/llvm-project/llvm-libunwind/llvm-libunwind.mk create mode 100644 package/llvm-project/llvm-project.mk rename package/{ => llvm-project}/llvm/Config.in (88%) rename package/{ => llvm-project}/llvm/llvm.hash (52%) rename package/{ => llvm-project}/llvm/llvm.mk (94%) delete mode 100644 package/llvm/0001-nfc-Fix-missing-include.patch delete mode 100644 package/llvm/0002-Add-missing-cstdint-header-to-Signals.h.patch create mode 100644 package/log4cxx/0001-Make-ODBC-and-SMTP-opt-in-191.patch create mode 100644 package/lua-dkjson/Config.in create mode 100644 package/lua-dkjson/lua-dkjson.hash create mode 100644 package/lua-dkjson/lua-dkjson.mk delete mode 100644 package/make/0001-configure.ac-Support-GLIBC-glob-interface-version-2.patch delete mode 100644 package/make/0001-glob-Do-not-assume-glibc-glob-internals.patch delete mode 100644 package/mariadb/0002-include-ssl_compat.h-fix-build-with-libressl-3.5.0.patch create mode 100644 package/mbpoll/0001-CMakeLists.txt-Add-LANGUAGES-option-to-project-varia.patch create mode 100644 package/mbpoll/Config.in create mode 100644 package/mbpoll/mbpoll.hash create mode 100644 package/mbpoll/mbpoll.mk delete mode 100644 package/mbw/0001-CMakeLists.txt-fix-build-without-C.patch create mode 100644 package/mdnsd/Config.in create mode 100644 package/mdnsd/S50mdnsd create mode 100644 package/mdnsd/ftp.service create mode 100644 package/mdnsd/http.service create mode 100644 package/mdnsd/ipp.service create mode 100644 package/mdnsd/mdnsd.hash create mode 100644 package/mdnsd/mdnsd.mk create mode 100644 package/mdnsd/printer.service create mode 100644 package/mdnsd/ssh.service create mode 100644 package/mesa3d-demos/0002-meson-fix-glx-detection-without-glvnd.patch delete mode 100644 package/mesa3d/0005-mesa-main-Exit-early-when-trying-to-create-an-unsupp.patch create mode 100644 package/mhz/Config.in create mode 100644 package/mhz/mhz.hash create mode 100644 package/mhz/mhz.mk create mode 100644 package/mpg123/0001-mpg123-buildfix.patch delete mode 100644 package/musl/0003-fix-incorrect-parameter-name-in-internal-netlink.h-R.patch delete mode 100644 package/neon/0001-Revert-Advertise-TS_SSL-feature-with-OpenSSL-1.1.0.patch delete mode 100644 package/neon/0002-configure.ac-fix-autoreconf.patch delete mode 100644 package/netatalk/0001-Fix-setting-of-LD_LIBRARY_FLAGS-shlibpath_var.patch delete mode 100644 package/netatalk/0002-etc-uams-openssl_compat.h-fix-build-with-libressl-2..patch create mode 100644 package/netsnmp/0001-Fix-configuration-of-NETSNMP_FD_MASK_TYPE.patch create mode 100644 package/nfs-utils/0002-support-reexport-guard-dlfcn.h-include-with-HAVE_DLF.patch create mode 100644 package/nftables/nftables-python/Config.in create mode 120000 package/nftables/nftables-python/nftables-python.hash create mode 100644 package/nftables/nftables-python/nftables-python.mk create mode 100644 package/nmap/0002-nping-Crypto.cc-fix-build-with-libressl-3.5.0.patch delete mode 100644 package/ntp/0003-override-shell.patch delete mode 100644 package/ntp/0004-libntp-Do-not-use-PTHREAD_STACK_MIN-on-glibc.patch delete mode 100644 package/ocf-linux/ocf-linux.hash delete mode 100644 package/ocf-linux/ocf-linux.mk create mode 100644 package/olsr/0006-build-patch-for-gpsd-3-25.patch delete mode 100644 package/open-plc-utils/0002-plc-plc.h-fix-build-with-gcc-10.patch create mode 100644 package/opencsd/Config.in create mode 100644 package/opencsd/opencsd.hash create mode 100644 package/opencsd/opencsd.mk rename package/openjdk/{17.0.7+7 => 17.0.8+7}/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch (100%) delete mode 100644 package/opensc/0001-Fix-maybe-uninitialized-errors.patch create mode 100644 package/opensc/0001-fixed-compatibility-with-LibreSSL-3.5.0.patch delete mode 100644 package/opensc/0002-added-compatibility-with-LibreSSL.patch create mode 100644 package/opensc/0002-fixed-compatibility-with-LibreSSL-3.7.0.patch delete mode 100644 package/opensc/0003-Fix-build-with-libressl-3.5.0.patch create mode 100644 package/opensc/0003-configure-add-option-to-disable-tests.patch create mode 100644 package/opensc/0004-pkcs15init-correct-left-length-calculation-to-fix-buffer-overrun-bug.patch create mode 100644 package/optee-test/0001-xtest-add-DOPENSSL_API_COMPAT-10100.patch create mode 100644 package/petitboot/S15pb-discover delete mode 100644 package/poco/0001-Fix-optional-JSON-support-for-MySQL-3753.patch create mode 100644 package/poppler/0001-OutlineItem-open-Fix-crash-on-malformed-files.patch delete mode 100644 package/pound/0001-fix-openssl-1.0.2.patch create mode 100644 package/pound/0001-include-limits.h.patch delete mode 100644 package/pound/0002-fix-openssl-1.1.0.patch delete mode 100644 package/pound/0003-Support-for-libressl-coexisting-with-openssl-1.1.x.patch delete mode 100644 package/putty/0001-unix-uxutils.h-fix-build-on-uclibc.patch create mode 100644 package/python-blinker/Config.in create mode 100644 package/python-blinker/python-blinker.hash create mode 100644 package/python-blinker/python-blinker.mk create mode 100644 package/python-gpiozero/0001-Migrate-to-setup.cfg.patch delete mode 100644 package/python-hiredis/0001-setup.py-fix-build-with-gcc-4.8.patch create mode 100644 package/python-libconf/python-libconf.hash create mode 100644 package/python-libconf/python-libconf.mk create mode 100644 package/python-midiutil/Config.in create mode 100644 package/python-midiutil/python-midiutil.hash create mode 100644 package/python-midiutil/python-midiutil.mk delete mode 100644 package/python-pam/Config.in delete mode 100644 package/python-pam/python-pam.hash delete mode 100644 package/python-pam/python-pam.mk create mode 100644 package/python-rpds-py/Config.in create mode 100644 package/python-rpds-py/python-rpds-py.hash create mode 100644 package/python-rpds-py/python-rpds-py.mk create mode 100644 package/python-tornado/0001-web-Fix-an-open-redirect-in-StaticFileHandler.patch create mode 100644 package/python-wheel/python-wheel.hash create mode 100644 package/python-wheel/python-wheel.mk delete mode 100644 package/python/Config.in delete mode 100644 package/python/Config.in.host delete mode 100644 package/python/python.hash delete mode 100644 package/python/python.mk delete mode 120000 package/python3-requests/python3-requests.hash delete mode 100644 package/python3-requests/python3-requests.mk create mode 100644 package/qemu/0003-meson-install-keyboard-maps-only-if-necessary.patch delete mode 100644 package/qt5/qt5wayland/0001-Add-missing-define-guards.patch create mode 100644 package/qt6/qt6svg/Config.in create mode 100644 package/qt6/qt6svg/qt6svg.hash create mode 100644 package/qt6/qt6svg/qt6svg.mk delete mode 100644 package/raptor/0002-Calcualte-max-nspace-declarations-correctly-for-XML-.patch create mode 100644 package/raptor/0002-Remove-the-access-to-entities-checked-private-symbol.patch delete mode 100644 package/raptor/0003-XML-Writer-compare-namespace-declarations-correctly.patch create mode 100644 package/redis-plus-plus/Config.in create mode 100644 package/redis-plus-plus/redis-plus-plus.hash create mode 100644 package/redis-plus-plus/redis-plus-plus.mk create mode 100644 package/resiprocate/0002-rutil-OpenSSLInit-disable-use-of-legacy-OpenSSL-memo.patch create mode 100644 package/resiprocate/0003-rutil-fix-typo-in-preprocessor-condition.patch create mode 100644 package/resiprocate/0004-resip-stack-ssl-Security-cxx-remove-deprecated-OpenS.patch create mode 100644 package/rockchip-rkbin/Config.in create mode 100644 package/rockchip-rkbin/rockchip-rkbin.hash create mode 100644 package/rockchip-rkbin/rockchip-rkbin.mk create mode 100644 package/rtl8189fs/0001-Makefile-move-EXTRA_CFLAGS-USER_EXTRA_CFLAGS-at-the-.patch delete mode 100644 package/rtl8192eu/0002-Fix-conflicting-get_ra-on-PowerPC.patch delete mode 100644 package/rtl8723bs/Config.in delete mode 100644 package/rtl8723bs/rtl8723bs.mk create mode 100644 package/rtl8822cs/Config.in create mode 100644 package/rtl8822cs/rtl8822cs.hash create mode 100644 package/rtl8822cs/rtl8822cs.mk rename package/screen/{0001-no-memcpy-fallback.patch => 0001-Do-not-use-memcpy-as-an-alternative-for-bcopy-memmov.patch} (77%) rename package/screen/{0002-install-no-backup-binary.patch => 0002-Do-not-create-backup-of-old-installed-binary.patch} (85%) rename package/screen/{0003-install-always-chmod.patch => 0003-Change-binary-permission-flags-even-if-chown-fails.patch} (73%) rename package/screen/{0004-install-nonversioned-binary.patch => 0004-Support-overriding-SCREEN-to-get-a-non-versioned-bin.patch} (72%) create mode 100644 package/screen/0005-Renamed-sched.h-to-eventqueue.h.patch delete mode 100644 package/screen/0005-rename-sched_h.patch rename package/screen/{0006-comm-h-now-depends-on-term-h.patch => 0006-comm.h-now-depends-on-term.h.patch} (59%) create mode 100644 package/screenfetch/0001-Detect-which-awk-to-use.patch create mode 100644 package/sentry-cli/0001-Disable-SSL-support-for-the-curl-module.patch create mode 100644 package/shadow/0001-Fix-yescrypt-support.patch delete mode 100644 package/stellarium/0001-add-missing-include.patch rename package/suricata/{0002-configure.ac-allow-the-user-to-override-RUST_TARGET.patch => 0001-configure.ac-allow-the-user-to-override-RUST_TARGET.patch} (100%) delete mode 100644 package/suricata/0001-python-ensure-proper-shabang-on-python-scripts.patch create mode 100644 package/swaybg/Config.in create mode 100644 package/swaybg/swaybg.hash create mode 100644 package/swaybg/swaybg.mk create mode 100644 package/swugenerator/Config.in.host create mode 100644 package/swugenerator/swugenerator.hash create mode 100644 package/swugenerator/swugenerator.mk delete mode 100644 package/sysdig/0001-cmake-Check-USE_BUNDLED_DEPS-before-getting-nlohmann.patch create mode 100644 package/syslog-ng/0002-lib-transport-tls-context.c-fix-libressl-build.patch rename package/tcl/{0001-dont-build-compat.patch => 0001-Disable-tcl-compatibility-layers.patch} (61%) delete mode 100644 package/tiff/0001-tiffcrop-Correct-simple-copy-paste-error-Fix-488.patch delete mode 100644 package/tovid/0001-manpage.patch delete mode 100644 package/tovid/Config.in delete mode 100644 package/tovid/tovid.hash delete mode 100644 package/tovid/tovid.mk create mode 100644 package/trinity/0005-ioctls-drm-check-i810-mga-r128-and-savage-support-44.patch create mode 100644 package/trinity/0006-kvm-drop-KVM_SET_MEMORY_REGION-42.patch create mode 100644 package/uclibc/0001-aarch64-add-hwcap-header-file.patch delete mode 100644 package/uclibc/0001-gettimeofday-fix-static-build.patch create mode 100644 package/uclibc/0002-fcntl.h-declare-f_owner_ex-for-all-architectures.patch create mode 100644 package/urandom-scripts/S01seedrng create mode 100644 package/usbguard/0001-Fix-build-for-GCC-13-make-GitHub-Actions-cover-build-with-GCC-13.patch create mode 100644 package/util-linux/0001-libmount-ifdef-statx-call.patch delete mode 100644 package/util-linux/0001-lsns-improve-dependence-on-NS_GET_-ioctls.patch delete mode 100644 package/wayland-utils/0001-wayland-info-Fix-build-without-libdrm.patch create mode 100644 package/waylandpp/0001-add-missing-cstdint-include.patch create mode 100644 package/webkitgtk/0001-Fix-build-failure-when-gstreamer-support-is-disabled.patch delete mode 100644 package/weston/0001-tests-Add-dependency-on-screenshooter-client-protocol.patch create mode 100644 package/wilc-driver/0006-Support-Linux-6.3.patch create mode 100644 package/wilc-driver/0007-Support-Linux-6.4.patch create mode 100644 package/x11r7/xlib_libXpresent/Config.in create mode 100644 package/x11r7/xlib_libXpresent/xlib_libXpresent.hash create mode 100644 package/x11r7/xlib_libXpresent/xlib_libXpresent.mk delete mode 100644 package/xvisor/0001-psmouse-back.c-fix-build-with-gcc-11.patch delete mode 100644 package/xz/0001-Detect-symver-attribute-support.patch create mode 100644 package/zeromq/0001-define-missing-rebind-type.patch delete mode 100644 package/zfs/0001-removal-of-LegacyVersion-broke-ax_python_dev.m4.patch delete mode 100644 package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch delete mode 100644 package/zlib-ng/0002-CMakeLists.txt-fix-version-in-zlib.pc-when-building-.patch delete mode 100644 package/zlib-ng/0003-zlib-ng-check-that-sys-auxv.h-exists-at-configure-time.patch create mode 100644 package/zynaddsubfx/0001-MidiIn-Add-stdint.h-header-include.patch create mode 100644 package/zynaddsubfx/0002-Bank-Add-stdint.h-header-include.patch create mode 100644 support/testing/tests/package/sample_python_docker.py create mode 100644 support/testing/tests/package/sample_python_midiutil.py create mode 100644 support/testing/tests/package/sample_python_pysmb.py create mode 100644 support/testing/tests/package/test_acpica.py create mode 100644 support/testing/tests/package/test_acpica/rootfs-overlay/root/dsdt.asl create mode 100644 support/testing/tests/package/test_brotli.py create mode 100644 support/testing/tests/package/test_bzip2.py create mode 100644 support/testing/tests/package/test_compressor_base.py create mode 100644 support/testing/tests/package/test_dos2unix.py create mode 100644 support/testing/tests/package/test_fluidsynth.py create mode 100755 support/testing/tests/package/test_fluidsynth/rootfs-overlay/root/check_notes.py create mode 100755 support/testing/tests/package/test_fluidsynth/rootfs-overlay/root/gen_midi_file.py create mode 100644 support/testing/tests/package/test_gawk.py create mode 100644 support/testing/tests/package/test_glslsandbox_player.py create mode 100644 support/testing/tests/package/test_glslsandbox_player/linux-vkms.fragment create mode 100644 support/testing/tests/package/test_gnuradio.py create mode 100755 support/testing/tests/package/test_gnuradio/rootfs-overlay/root/test_gnuradio.py create mode 100644 support/testing/tests/package/test_gzip.py create mode 100644 support/testing/tests/package/test_lrzip.py create mode 100644 support/testing/tests/package/test_lz4.py create mode 100644 support/testing/tests/package/test_lzip.py create mode 100644 support/testing/tests/package/test_lzop.py create mode 100644 support/testing/tests/package/test_nftables.py create mode 100755 support/testing/tests/package/test_nftables/rootfs-overlay/root/nft.py create mode 100644 support/testing/tests/package/test_pigz.py create mode 100644 support/testing/tests/package/test_python_midiutil.py create mode 100644 support/testing/tests/package/test_python_pysmb.py create mode 100644 support/testing/tests/package/test_xz.py create mode 100644 support/testing/tests/package/test_zchunk.py create mode 100644 support/testing/tests/package/test_zstd.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e85ac32033..3d7719568f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ # Configuration for Gitlab-CI. # Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines -image: buildroot/base:20200814.2228 +image: $CI_REGISTRY/buildroot.org/buildroot/base:20230207.1123 stages: - generate-gitlab-ci @@ -10,9 +10,17 @@ stages: generate-gitlab-ci-yml: stage: generate-gitlab-ci script: ./support/scripts/generate-gitlab-ci-yml support/misc/gitlab-ci.yml.in > generated-gitlab-ci.yml + retry: + max: 2 + when: + - runner_system_failure + - stuck_or_timeout_failure artifacts: + when: always paths: - generated-gitlab-ci.yml + - br-test-pkg/*/.config + - br-test-pkg/*/missing.config buildroot-pipeline: stage: build @@ -21,3 +29,5 @@ buildroot-pipeline: - artifact: generated-gitlab-ci.yml job: generate-gitlab-ci-yml strategy: depend + variables: + PARENT_PIPELINE_ID: $CI_PIPELINE_ID diff --git a/CHANGES b/CHANGES index fec806a215..6ebaa4f773 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,224 @@ +2023.08.2, released October 15th, 2023 + + Important / security related fixes. + + Defconfigs: Freescale ARM: Add ATF patch to fix build issue + with binutils 2.39+. QEMU Aarch64-virt: Enable ACPI support + for EDK2. Visionfive2: Bump kernel to fix build issue with GCC + 13. + + Per-package builds: Do not use hard links for host / target + dirs, fixing issues with package rebuilds or post-build + scripts modifications. + + Infrastructure: Explicitly disable shuffle mode for Make >= + 4.4 where needed. + + Urandom-scripts: Move seedrng init script to S01 for earlier + random number entrophy initialization. + + Updated/fixed packages: at91bootstrap, batman-adv, bind, cups, + efl, enlightenment, exim, gcc, glibc, gnu-efi, go, gptfdisk, + grub2, gst-omx, gst1-devtools, gst1-libav, gst1-plugins-bad, + gst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly, + gst1-python, gst1-rstp-server, gst1-rtsp-vaapi, gstreamer1, + gstreamer1-editing-services, gtkmm3, libcue, libcurl, + libfastjson, libhtp, libmodplug, librsvg, libvpx, libyang, + linux-pam, linux-tools, mbedtls, mosquitto, mutt, neon, + netsnmp, nmap, nodejs, olsr, openblas, opkg-utils, php, pound, + powertop, python-mako, python3, rauc, rockchip-mali, samba4, + sslh, stress-ng, suricata, syslog-ng, systemd, tar, unifdef, + urandom-scripts, usbguard, webkitgtk, wilc-driver, + wireless-regdb, wpewebkit + + Issues resolved (http://bugs.uclibc.org): + + #15628: Missing dependencies in BR2_PACKAGE_PYTHON_MAKO + #15808: connman is not supported on musl + #15814: C++ not supported by bootlin toolchain + +2023.08.1, released September 27th, 2023 + + Important / security related fixes. + + Updated/fixed packages: agentpp, asterisk, bind, binutils, + conmon, cpio, docker-cli, docker-engine, e2fsprogs, erlang, + esp-hosted, expect, fail2ban, fio, freerdp, fstrcmp, gcc, gdb, + ghostscript, go, haproxy, hwloc, icu, irssi, libcoap, libcurl, + libde265, libheif, libiec61850, libjxl, libopenssl, libpjsip, + libqb, libraw, libssh, libuv, lldpd, mdadm, mutt, ne10, + netatalk, nodejs, nut, openblas, opensc, openvpn, petitboot, + php, pound, pppd, python-pytest, python3, qt5, + rtl8812au-aircrack-ng, sngrep, stress-ng, strongswan, sysstat, + tar, tcl, timescaledb, util-linux, vim, webkitgtk, webp, + wireshark, xserver_xorg-server, xterm, zbar, zxing-cpp, + zynaddsubfx + + Issues resolved (http://bugs.uclibc.org): + + #14366: Nodejs fails with "version `GLIBC_2.34' not found".. + #15787: atmel_sama5d3_xplained_mmc_defconfig: Missing... + #15790: at91sam9x5ek_dev_defconfig: Missing... + +2023.08, released September 6th, 2023 + + Various fixes. + + Defconfigs: BeagleV: Fix build issue with binutils >= + 2.38. Hifive unleashed: U-Boot needs OpenSSL + + Updated/fixed packages: dt, grub2, heirloom-mailx, libgpgme, + libtommath, libxcrypt, log4cxx, mesa3d-demos, openjdk, + openjdk-bin, pam, pcm-tools, pixman, poppler, python-django, + python-ipython, python-pip, python-tornado, zeromq + + New packages: libdecor + +2023.08-rc3, released August 29th, 2023 + + Fixes all over the tree. + + Defconfigs: Avenger96: Bump ATF to 2.9 to fix build warnings + with binutils >= 2.39. CI20: Bump kernel to 5.4.254 to fix + build issue with GCC 12. Hifive unleashed: Add missing + pylibfdt dependency / bump kernel to 5.10.109 to fix build + issue GCC 12. PC x86-64 bios/elf: Add missing libelf + dependency. Sipeed maix sdcard: Fix build issues with + binutils >= 2.38 + + Updated/fixed packages: check, clamav, cups, esp-hosted, + f2fs-tools, freeswitch, gcc, gmp, libks, libmodsecurity, + mosquitto, mpg123, network-manager, php, postgresql, python3, + ramspeed, rtl8189fs, rust, rust-bin, samba4, screen, zlib-ng + +2023.08-rc2, released August 20th, 2023 + + Fixes all over the tree. + + Toolchains: Only show external toolchains based on a GCC + version supporting the selected architecture + variant. Correctly mark Codescape MIPS external toolchains as + not providing a gdbserver. + + Defconfigs: Andes ae350_45: Drop custom U-Boot march setting, + breaking builds with GCC 12. Nitrogen*: Bump + U-Boot/Linux. Nitrogen8*: Use ATF 2.8, fixing array bounds + errors. QEMU m68k: Add Linux patch to fix build issue with + binutils >= 2.41. Raspberrypi*: Enable console on HDMI when + using systemd as well. + + Updated/fixed packages: at91dataflashboot, aubio, berkeleydb, + bwm-ng, ccache, check, chocolate-doom, compiler-rt, composer, + conmon, connman, dav1d, diffutils, dracut, e2fsprogs, elf2flt, + esp-hosted, flite, gcc, gdb, go-bootstrap-stage2, + intel-microcode, kodi-imagedecoder-heif, less, libcoap, + libedit, libglib2, libksba, liblo, libserial, log4cxx, lsof, + luvi, meson, mosquitto, mpd, mpv, mv-ddr-marvell, nftables, + ntpsec, openssh, optee-test, perftest, python-botocore, + python-docker, python-pylibfdt, python3, screenfetch, + sentry-cli, sngrep, stellarium, trinity, tvheadend, uboot, + uclibc, util-linux, xfsprogs, yajl + + New packages: nftables-python, xlib_libXpresent + + Removed packages: lpc32xxcdl + +2023.08-rc1, released August 5, 2023 + + Numerous package updates and fixes, additional runtime tests. + + Toolchain: + - Toolchains from ARM (for ARM, AArch64 and AArch64 BE) + updated to 12.2. + - Support for binutils 2.40 and 2.41 added, binutils 2.37 and + 2.38 removed, binutils 2.40 is now the default + - Support for gcc 13 added, gcc 10 removed, gcc 12 is now the + default + + Architectures: + - Additional x86-64 variants added + - RISC-V vector extension support added + + Infrastructure: + - Go now built in 3 stages to be able to update to Go 1.20.x. + + New defconfigs: rock5b + + Removed defconfigs: qemu_sparc_ss10 + + New packages: composer, conmon, dfu-programmer, esp-hosted, + kodi-imagedecoder-heif, kodi-imagedecoder-raw, libde2654, + libdisplay-info, libheif, llvm-cmake, llvm-libunwind, + lua-dkjson, mbpoll, mdnsd, mhz, opencsd, python-libconf, + python-blinker, python-midiutil, python-rdps-py, python-wheel, + qt6svg, redis-plus-plus, rockchip-rkbin, rtl8822cs, swaybg, + swugenerator + + Removed packages: libasplib, ocf-linux, tovid + +2023.05.2, released August 31th, 2023 + + Important / security related fixes. + + Toolchains: Correctly mark Bootlin external toolchains as + having OpenMP support. + + Arch: Mark Alderlake x86 variants as no AVX512 support. + + Utils: Ensure utils/docker-run correctly supports git + worktrees. + + Defconfigs: Beaglebone: U-Boot needs OpenSSL. Beaglebone qt5: + Enable support for green wireless variant. + + Updated/fixed packages: arm-trusted-firmware, bind, cairo, + cmocka, containerd, crudini, cryptodev-linux, dmidecode, + ffmpeg, firmware-imx, gcc, gdb, ghostscript, gkrellm, + gnuradio, go, igh-ethercat, iperf3, kodi, libcurl, libopenssl, + libssh, libubootenv, libuhttpd, linux-tools, mali-driver, + nfs-utils, ntp, openssh, php, pipewire, python-pysmb, + python-iniparse, python-iptables, rtl8189es, rtl8189fs, + sam-ba, samba4, seatd, shadow, speex, + sunxi-mali-utgard-driver, supertuxkart, sysdig, systemd, tor, + tpm2-tss, transmission, uboot, unzip, webkitgtk, + wireless-regdb, wolfssl, wpebackend-fdo, wpewebkit, xenomai, + yaml-cpp, yavta + + Issues resolved (http://bugs.uclibc.org): + + #15634: fluidsynths refers to missing libgomp.so.1 + +2023.05.1, released July 17th, 2023 + + Important / security related fixes. + + Defconfigs: Chiliboard, mx53loco: fix build on hosts without + openssl development headers. + Nitrogen*: fix build on hosts without openssl or pylibfdt. + Hifive unleased: Bump OpenSBI to 1.2 to fix a build issue. + Raspberrypi: Handle DTB overlays for all variants + + Updated/fixed packages: agentpp, alsa-plugins, assimp, audit, + bind, busybox, c-ares, check, cups, dav1d, dbus, fftw, + fluidsynth, freetype, fwts, ghostscript, gnupg2, gnuradio, + graphicsmagick, gupnp, haproxy, heimdal, hwdata, jhead, kodi, + libcap, libgcrypt, libgpg-error, libgtk3, libmdbx, libxslt, + mesa3d, mesa3d-demos, mpir, nodejs, php, pkgconf, + python-cryptography, python-dbus-fast, python-django, + python-docker, python-pyicu, python-requests, python3, qemu, + qt6, quickjs, rtl8192eu, samba4, sconeserver, syslog-ng, + taglib, tiff, wine, wireshark, xdriver_xf86-video-dummy, + xlib_libX11, + + Issues resolved (http://bugs.uclibc.org): + + #15643: ERROR: No hash found for linux-6.3.8.tar.xz + #15658: hifive_unleashed_defconfig: Linker errors in opensbi-0.9 + #15661: mx53loco_defconfig: Dependency on OpenSSL missing + #15664: Can't compile mesa3d with v3d driver + #15673: PKGCONF_SITE in pkgconf.mk points to parked domain + #15682: pkgconf: no longer able to download source from... + 2023.05, released June 7th, 2023 Fixes all over the tree. @@ -72,6 +293,99 @@ #15376: Libiconv config #15461: QtVirtualKeyboard segfaults +2023.02.4, released August 31th, 2023 + + Important / security related fixes. + + Toolchains: Correctly mark Bootlin external toolchains as + having OpenMP support. + + Arch: Mark Alderlake x86 variants as having no AVX512 support. + + Utils: Ensure utils/docker-run correctly supports git + worktrees. + + Defconfigs: Beaglebone qt5: Enable support for green wireless + variant. + + Updated/fixed packages: arm-trusted-firmware, bind, cairo, + cmocka, containerd, crudini, dmidecode, ffmpeg, freescale-imx, + gcc, gdb, ghostscript, gkrellm, gnuradio, go, heimdall, + iperf3, libcurl, libmodsecurity, libopenssl, libssh, + libubootenv, libuhttpd, linux-tools, ntp, openssh, php, + pipewire, python-iniparse, python-iptables, python-pysmb, + rtl8189fs, sam-ba, samba4, seatd, speex, supertuxkart, sysdig, + tor, tpm2-tss, uboot, unzip, webkitgtk, wireless-regdb, + wolfssl, wpebackend-fdo wpewebkit, xenomai, yaml-cpp, yavta + + Issues resolved (http://bugs.uclibc.org): + + #15634: fluidsynths refers to missing libgomp.so.1 + +2023.02.3, released July 17th, 2023 + + Important / security related fixes. + + Defconfigs: Chiliboard: fix build on hosts without openssl + development headers. + Nitrogen*: fix build on hosts without openssl or pylibfdt. + Raspberrypi: Handle DTB overlays for all variants + + Updated/fixed packages: agentpp, alsa-plugins, assimp, bind, + busybox, dbus, c-ares, check, dav1d, fluidsynth, fftw, fwts, + ghostscript, gnupg2, gnuradio, gupnp, haproxy, heimdal, + hwdata, jhead, libcap, libgcrypt, libgpg-error, libgtk3, + libxslt, mesa3d-demos, mpir, nodejs, php, pkgconf, + python-cryptography, python-dbus-fast, python-django, + python-pyicu, python-requests, python3, qt6, quickjs, + sconeserver, taglib, tiff, wireshark, xdriver_xf86-video-dummy + + Issues resolved (http://bugs.uclibc.org): + + #15643: ERROR: No hash found for linux-6.3.8.tar.xz + #15673: PKGCONF_SITE in pkgconf.mk points to parked domain + #15682: pkgconf: no longer able to download source from... + +2023.02.2, released June 16th, 2023 + + Important / security related fixes. + + Infrastructure: Add BR2_HOST_CMAKE_AT_LEAST_* for packages + needing a newer host-cmake than what is currently enforced + (3.18) - Up to the version provided by the cmake package (3.22). + + utils/docker-run: Now correctly handles git + workdirs/worktrees. + + Defconfigs: QEMU s390x: Bump rootfs size to make room for + kernel modules, Stm32f4xx: Tweak config to save RAM, Xilinx + Versal vck190: Use correct (A72) CPU variant + + Updated/fixed packages: atkmm, bird, busybox, cairomm1_14, + cmake, containerd, crudini, cups, delve, docker-cli, + docker-engine, earlyoom, edid-decode, fluent-bit, freeswitch, + gcc, gdb, glibmm_2_66, gnupg2, go, gptfdisk, graphicsmagick, + intel-microcode, libass, libcurl, libdeflate, libgeos, + libgtk3, libjxl, libnftl, libopenssl, libressl, libssh, llvm, + lua, mesa3d, micropython, minidlna, moby-buildkit, mpd, mupdf, + ncurses, nftables, openjdk, openjdk-bin, php, postgresql, + python-can, python-django, python-django, python-ipython, + python-matplotlib, python-mupdf, python-requests, python3, + qemu, redis, rpm, runc, sdl2_mixer, tzdata, uclibc, vdr, + wilc-firmware, xapp_xcalc, xapp_xdpyinfo, xapp_xinput, + xapp_xwininfo, xdata_xbitmaps, xdata_xcursor-themes, + xdriver_xf86-input-mouse, xdriver_xf86-video-ark, + xdriver_xf86-video-geode, xdriver_xf86-video-neomagic, + xfont_encodings, xlib_libX11, xlib_libXaw, xlib_libXi, + xlib_libXfixes, xlib_libXft, xlib_libXpm, zfs, znc + + New packages: perl-clone, perl-http-message, python-asttokens, + python-executing, python-pure-eval, python-stack-data + + Issues resolved (http://bugs.uclibc.org): + + #15421: qemu_aarch64_ebbr_defconfig: Missing Linux kernel source code + 2023.02.1, released May 9th, 2023 Important / security related fixes. diff --git a/Config.in b/Config.in index 0d7641633c..670e199c0b 100644 --- a/Config.in +++ b/Config.in @@ -65,7 +65,7 @@ config BR2_NEEDS_HOST_JAVA # Hidden boolean selected by pre-built packages for x86, when they # need to run on x86-64 machines (example: pre-built external -# toolchains, binary tools like SAM-BA, etc.). +# toolchains, binary tools, etc.). config BR2_HOSTARCH_NEEDS_IA32_LIBS bool diff --git a/Config.in.legacy b/Config.in.legacy index ac2e302a6b..d6f0eeeee8 100644 --- a/Config.in.legacy +++ b/Config.in.legacy @@ -144,6 +144,58 @@ endif ############################################################################### +comment "Legacy options removed in 2023.08" + +config BR2_TARGET_LPC32XXCDL + bool "lpc32xxcdl has been removed" + select BR2_LEGACY + help + lpc32xxcdl has been removed, due to licensing concerns. + +config BR2_BINUTILS_VERSION_2_38_X + bool "binutils 2.38.x has been removed" + select BR2_LEGACY + help + binutils 2.38 has been removed, use a newer version. + +config BR2_GCC_VERSION_10_X + bool "gcc 10.x support removed" + select BR2_LEGACY + help + Support for gcc version 10.x has been removed. The current + default version (12.x or later) has been selected instead. + +config BR2_KERNEL_HEADERS_6_3 + bool "kernel headers version 6.3.x are no longer supported" + select BR2_LEGACY + help + Version 6.3.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_TOVID + bool "tovid removed" + select BR2_LEGACY + help + tovid was removed + +config BR2_PACKAGE_LIBASPLIB + bool "libasplib removed" + select BR2_LEGACY + help + libasplib is no longer needed. + +config BR2_PACKAGE_OCF_LINUX + bool "ocf-linux has been removed" + select BR2_LEGACY + help + ocf-linux is incompatible with newer kernels. + +config BR2_BINUTILS_VERSION_2_37_X + bool "binutils 2.37.x has been removed" + select BR2_LEGACY + help + binutils 2.37 has been removed, use a newer version. + comment "Legacy options removed in 2023.05" config BR2_KERNEL_HEADERS_6_2 diff --git a/DEVELOPERS b/DEVELOPERS index 7aa5980df7..885cc28ed7 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -311,7 +311,7 @@ F: package/taskd/ N: Benjamin Kamath F: package/lapack/ -N: Bernd Kuhls +N: Bernd Kuhls F: package/alsa-lib/ F: package/alsa-utils/ F: package/apache/ @@ -321,19 +321,19 @@ F: package/apr-util/ F: package/bcg729/ F: package/bento4/ F: package/bitcoin/ -F: package/bluez-tools/ -F: package/boinc/ F: package/clamav/ F: package/dav1d/ F: package/dht/ F: package/dovecot/ F: package/dovecot-pigeonhole/ F: package/dtv-scan-tables/ +F: package/ethtool/ F: package/eudev/ F: package/exim/ F: package/fetchmail/ F: package/ffmpeg/ F: package/flac/ +F: package/flatbuffers/ F: package/freeswitch/ F: package/freeswitch-mod-bcg729/ F: package/freetype/ @@ -341,13 +341,10 @@ F: package/fstrcmp/ F: package/ghostscript/ F: package/giflib/ F: package/gkrellm/ -F: package/gli/ -F: package/glmark2/ F: package/gpsd/ F: package/gptfdisk/ -F: package/hdparm/ F: package/hddtemp/ -F: package/inih/ +F: package/hdparm/ F: package/intel-gmmlib/ F: package/intel-mediadriver/ F: package/intel-mediasdk/ @@ -355,18 +352,22 @@ F: package/intel-microcode/ F: package/jsoncpp/ F: package/kodi* F: package/lame/ +F: package/lcms2/ F: package/leafnode2/ F: package/libaacs/ -F: package/libasplib/ F: package/libass/ F: package/libbdplus/ F: package/libbluray/ F: package/libbroadvoice/ +F: package/libcap/ F: package/libcdio/ F: package/libcec/ F: package/libcodec2/ F: package/libcrossguid/ +F: package/libde265/ +F: package/libdecor/ F: package/libdeflate/ +F: package/libdisplay-info/ F: package/libdrm/ F: package/libdvbcsa/ F: package/libdvdcss/ @@ -374,11 +375,13 @@ F: package/libdvdnav/ F: package/libdvdread/ F: package/libebur128/ F: package/libfreeglut/ +F: package/libfribidi/ F: package/libg7221/ F: package/libglew/ F: package/libglfw/ F: package/libglu/ F: package/libhdhomerun/ +F: package/libheif/ F: package/libilbc/ F: package/libks/ F: package/libldns/ @@ -396,21 +399,27 @@ F: package/libsidplay2/ F: package/libsilk/ F: package/libsndfile/ F: package/libsoundtouch/ -F: package/libsquish/ F: package/libudfread/ F: package/libunibreak/ F: package/liburiparser/ F: package/libutp/ +F: package/libuv/ F: package/libva/ F: package/libva-intel-driver/ F: package/libva-utils/ F: package/libvorbis/ F: package/libvpx/ F: package/libyuv/ +F: package/linux-firmware/ +F: package/mc/ F: package/mesa3d/ F: package/minidlna/ F: package/mjpg-streamer/ +F: package/mpg123/ +F: package/ntp/ F: package/nut/ +F: package/opus/ +F: package/pciutils/ F: package/perl-crypt-openssl-guess/ F: package/perl-crypt-openssl-random/ F: package/perl-crypt-openssl-rsa/ @@ -429,33 +438,34 @@ F: package/perl-io-html/ F: package/perl-lwp-mediatypes/ F: package/perl-mail-dkim/ F: package/perl-mailtools/ +F: package/perl-netaddr-ip/ F: package/perl-net-dns/ F: package/perl-net-http/ -F: package/perl-netaddr-ip/ F: package/perl-timedate/ F: package/perl-uri/ F: package/perl-www-robotrules/ F: package/php/ -F: package/pixman/ F: package/pngquant/ -F: package/pound/ +F: package/pppd/ +F: package/privoxy/ F: package/pure-ftpd/ F: package/python-couchdb/ F: package/python-cssutils/ F: package/python-glslang/ +F: package/python-mako/ F: package/python-mwclient/ F: package/python-mwscrape/ F: package/python-mwscrape2slob/ -F: package/python-mako/ F: package/python-oauthlib/ F: package/python-pyicu/ F: package/python-pylru/ F: package/python-requests-oauthlib/ F: package/python-slob/ +F: package/rrdtool/ F: package/rsync/ F: package/rtmpdump/ F: package/samba4/ -F: package/softether/ +F: package/sofia-sip/ F: package/spandsp/ F: package/sqlite/ F: package/stellarium/ @@ -465,13 +475,10 @@ F: package/tor/ F: package/transmission/ F: package/tvheadend/ F: package/unixodbc/ -F: package/utf8proc/ -F: package/vdr/ -F: package/vdr-plugin-vnsiserver/ F: package/vlc/ -F: package/vnstat/ -F: package/waylandpp/ -F: package/x11r7/ +F: package/wget/ +F: package/wireless-regdb/ +F: package/wireless_tools/ F: package/x264/ F: package/x265/ F: package/xmrig/ @@ -543,6 +550,7 @@ F: package/balena-engine/ F: package/batman-adv/ F: package/catatonit/ F: package/cni-plugins/ +F: package/conmon/ F: package/containerd/ F: package/crun/ F: package/delve/ @@ -552,6 +560,8 @@ F: package/docker-engine/ F: package/embiggen-disk/ F: package/fuse-overlayfs/ F: package/go/ +F: package/go-bootstrap-stage1/ +F: package/go-bootstrap-stage2/ F: package/gocryptfs/ F: package/mbpfan/ F: package/moby-buildkit/ @@ -643,7 +653,7 @@ F: package/odroidc2-firmware/ N: Daniel J. Leach F: package/dacapo/ -N: Daniel Lang +N: Daniel Lang F: package/atkmm/ F: package/atkmm2_28/ F: package/cairomm/ @@ -654,9 +664,11 @@ F: package/glibmm2_66/ F: package/gtkmm3/ F: package/libsigc/ F: package/libsigc2/ +F: package/llvm-project/ F: package/paho-mqtt-cpp/ F: package/pangomm/ F: package/pangomm2_46/ +F: package/sam-ba/ N: Damien Lanson F: package/libvdpau/ @@ -1014,6 +1026,7 @@ F: package/tinycbor/ F: package/tinydtls/ F: package/tinymembench/ F: package/whois/ +F: package/x11r7/xlib_libXpresent/ F: package/zeek/ N: Fabrice Goucem @@ -1163,6 +1176,7 @@ F: package/at/ F: package/binutils/ F: package/cryptsetup/ F: package/erlang-jiffy/ +F: package/esp-hosted/ F: package/gcc/ F: package/harfbuzz/ F: package/libfuse3/ @@ -1172,6 +1186,7 @@ F: package/mali-driver/ F: package/minicom/ F: package/mmc-utils/ F: package/nfs-utils/ +F: package/python-libconf/ F: package/python-uvloop/ F: package/qt5/ F: package/rockchip-mali/ @@ -1186,6 +1201,7 @@ F: package/rtl8821cu/ F: package/sunxi-mali-utgard/ F: package/sunxi-mali-utgard-driver/ F: package/sunxi-tools/ +F: package/swugenerator/ F: package/trace-cmd/ F: package/udisks/ F: package/wilc-driver/ @@ -1416,6 +1432,7 @@ F: package/python-pydyf/ F: package/python-pypa-build/ F: package/python-pyphen/ F: package/python-pyproject-hooks/ +F: package/python-rpds-py/ F: package/python-rtoml/ F: package/python-selenium/ F: package/python-snappy/ @@ -1451,6 +1468,7 @@ F: package/gtkmm3/ F: package/libpqxx/ F: package/pangomm/ F: package/rpm/ +F: package/swaybg/ F: package/yad/ N: Jan Heylen @@ -1525,6 +1543,7 @@ F: package/libnet/ F: package/libteam/ F: package/libuev/ F: package/mg/ +F: package/mdnsd/ F: package/mini-snmpd/ F: package/mrouted/ F: package/netcalc/ @@ -1594,6 +1613,9 @@ N: John Faith F: package/python-inflection/ F: package/sdbusplus/ +N: Jon Ringle +F: package/mbpoll/ + N: Jonathan Ben Avraham F: arch/Config.in.xtensa F: package/autofs/ @@ -1619,27 +1641,14 @@ N: José Luis Salvador Rufo F: package/zfs/ F: support/testing/tests/package/test_zfs.py -N: José Pekkarinen -F: package/alfred/ -F: package/avocado/ -F: package/bmx7/ -F: package/opensc/ -F: package/python-aexpect/ -F: package/python-alembic/ -F: package/python-lark/ -F: package/softhsm2/ -F: support/testing/tests/package/sample_python_aexpect.py -F: support/testing/tests/package/test_avocado.py -F: support/testing/tests/package/test_python_aexpect.py - N: Joseph Kogut F: package/at-spi2-core/ -F: package/clang/ F: package/earlyoom/ F: package/gconf/ F: package/libnss/ -F: package/lld/ -F: package/llvm/ +F: package/llvm-project/clang/ +F: package/llvm-project/lld/ +F: package/llvm-project/llvm/ F: package/python-cython/ F: package/python-pycups/ F: package/python-raven/ @@ -1713,6 +1722,7 @@ F: package/libjxl/ F: package/octave/ F: package/ola/ F: package/openblas/ +F: package/opencsd/ F: package/openmpi/ F: package/perftest/ F: package/ptm2human/ @@ -1723,6 +1733,7 @@ F: package/python-hwdata/ F: package/python-magic-wormhole/ F: package/python-magic-wormhole-mailbox-server/ F: package/python-magic-wormhole-transit-relay/ +F: package/python-midiutil/ F: package/python-pyalsa/ F: package/python-spake2/ F: package/rdma-core/ @@ -1733,37 +1744,63 @@ F: package/zynaddsubfx/ F: support/testing/tests/package/sample_python_distro.py F: support/testing/tests/package/sample_python_gnupg.py F: support/testing/tests/package/sample_python_hwdata.py +F: support/testing/tests/package/sample_python_midiutil.py F: support/testing/tests/package/sample_python_pyalsa.py F: support/testing/tests/package/sample_python_spake2.py +F: support/testing/tests/package/test_acpica.py +F: support/testing/tests/package/test_acpica/ +F: support/testing/tests/package/test_brotli.py +F: support/testing/tests/package/test_bzip2.py +F: support/testing/tests/package/test_compressor_base.py F: support/testing/tests/package/test_ddrescue.py F: support/testing/tests/package/test_ddrescue/ +F: support/testing/tests/package/test_dos2unix.py +F: support/testing/tests/package/test_fluidsynth.py +F: support/testing/tests/package/test_fluidsynth/ +F: support/testing/tests/package/test_gawk.py +F: support/testing/tests/package/test_glslsandbox_player.py +F: support/testing/tests/package/test_glslsandbox_player/ F: support/testing/tests/package/test_gnupg2.py +F: support/testing/tests/package/test_gnuradio.py +F: support/testing/tests/package/test_gnuradio/ +F: support/testing/tests/package/test_gzip.py F: support/testing/tests/package/test_highway.py F: support/testing/tests/package/test_hwloc.py F: support/testing/tests/package/test_iperf3.py F: support/testing/tests/package/test_kexec.py F: support/testing/tests/package/test_kexec/ F: support/testing/tests/package/test_libjxl.py +F: support/testing/tests/package/test_lrzip.py +F: support/testing/tests/package/test_lzip.py F: support/testing/tests/package/test_lsof.py +F: support/testing/tests/package/test_lz4.py +F: support/testing/tests/package/test_lzop.py F: support/testing/tests/package/test_mtools.py F: support/testing/tests/package/test_ncdu.py +F: support/testing/tests/package/test_nftables.py +F: support/testing/tests/package/test_nftables/ F: support/testing/tests/package/test_octave.py F: support/testing/tests/package/test_ola.py F: support/testing/tests/package/test_ola/ F: support/testing/tests/package/test_openblas.py F: support/testing/tests/package/test_perftest.py +F: support/testing/tests/package/test_pigz.py F: support/testing/tests/package/test_python_distro.py F: support/testing/tests/package/test_python_gnupg.py F: support/testing/tests/package/test_python_hkdf.py F: support/testing/tests/package/test_python_hwdata.py F: support/testing/tests/package/test_python_magic_wormhole.py +F: support/testing/tests/package/test_python_midiutil.py F: support/testing/tests/package/test_python_pyalsa.py F: support/testing/tests/package/test_python_spake2.py F: support/testing/tests/package/test_rdma_core.py F: support/testing/tests/package/test_rdma_core/ F: support/testing/tests/package/test_stress_ng.py +F: support/testing/tests/package/test_xz.py F: support/testing/tests/package/test_z3.py F: support/testing/tests/package/test_z3/ +F: support/testing/tests/package/test_zchunk.py +F: support/testing/tests/package/test_zstd.py N: Julien Viard de Galbert F: package/dieharder/ @@ -1790,6 +1827,11 @@ F: package/ramsmp/ N: Kieran Bingham F: package/libcamera/ +N: Kilian Zinnecker +F: package/rockchip-rkbin/ +F: configs/rock5b_defconfig +F: board/radxa/rock5b/ + N: Klaus Heinrich Kiwi F: package/wqy-zenhei/ @@ -2085,11 +2127,6 @@ F: package/protobuf/ F: package/re2/ F: package/spdlog/ -N: Michael Rommel -F: package/knock/ -F: package/python-crc16/ -F: package/python-pyzmq/ - N: Michael Trimarchi F: board/bsh/ F: configs/imx8mn_bsh_smm_s2_defconfig @@ -2149,12 +2186,11 @@ N: Neal Frager F: board/versal/ F: board/zynq/ F: board/zynqmp/ -F: board/zynqmp/kria/ F: configs/versal_vck190_defconfig F: configs/zynq_zc706_defconfig +F: configs/zynqmp_kria_kv260_defconfig F: configs/zynqmp_zcu102_defconfig F: configs/zynqmp_zcu106_defconfig -F: configs/zynqmp_kria_kv260_defconfig F: package/bootgen/ F: package/versal-firmware/ @@ -2167,6 +2203,7 @@ F: configs/galileo_defconfig N: Nicolas Carrier F: package/bmap-tools/ +F: package/composer/ F: package/libdbi/ F: package/libdbi-drivers/ F: package/lua-augeas/ @@ -2308,6 +2345,7 @@ F: configs/roseapplepi_defconfig F: configs/sheevaplug_defconfig F: configs/visionfive_defconfig F: package/bats-core/ +F: package/dfu-programmer/ F: package/docker-compose/ F: package/dump1090/ F: package/fatcat/ @@ -2342,6 +2380,7 @@ F: support/testing/tests/package/test_docker_compose.py N: Peter Seiderer F: package/dotconf/ +F: package/python-blinker/ F: package/qt5/qt5speech/ F: package/speechd/ @@ -2418,11 +2457,14 @@ F: package/tree/ N: Pieter De Gendt F: package/libvips/ -N: Pieterjan Camerlynck +N: Pieterjan Camerlynck F: package/libdvbpsi/ F: package/mraa/ F: package/synergy/ +N: Prabhu Sannachi +F: package/redis-plus-plus/ + N: Rafal Susz F: board/avnet/s6lx9_microboard/ F: configs/s6lx9_microboard_defconfig @@ -2502,6 +2544,7 @@ F: package/azmq/ N: Robert Marko F: package/mdio-tools/ +F: package/mhz/ N: Robert Rose F: package/grpc/ @@ -2518,7 +2561,6 @@ F: package/alure/ F: package/aubio/ F: package/binutils/ F: package/bullet/ -F: package/clang/ F: package/clinfo/ F: package/efl/ F: package/enet/ @@ -2532,12 +2574,13 @@ F: package/irrlicht/ F: package/liblinear/ F: package/lensfun/ F: package/libbpf/ -F: package/libclc/ F: package/libgta/ F: package/libiec61850/ F: package/libspatialindex/ F: package/linux-syscall-support/ -F: package/llvm/ +F: package/llvm-project/clang/ +F: package/llvm-project/libclc/ +F: package/llvm-project/llvm/ F: package/lugaru/ F: package/mcelog/ F: package/mesa3d/ @@ -2724,7 +2767,6 @@ F: package/dvdauthor/ F: package/dvdrw-tools/ F: package/memtest86/ F: package/mjpegtools/ -F: package/tovid/ F: package/udftools/ F: package/xorriso/ @@ -2873,6 +2915,7 @@ F: package/msmtp/ F: package/musl/ F: package/musl-fts/ F: package/ne10/ +F: package/nodejs/ F: package/pkg-python.mk F: package/pkg-autotools.mk F: package/pkg-generic.mk @@ -2945,14 +2988,17 @@ F: package/gettext-tiny/ F: package/tinyssh/ N: Valentin Korenblit -F: package/clang/ F: package/clinfo/ -F: package/libclc/ -F: package/llvm/ +F: package/llvm-project/clang/ +F: package/llvm-project/libclc/ +F: package/llvm-project/llvm/ N: Vanya Sergeev F: package/lua-periphery/ +N: Viacheslav Bocharov +F: package/rtl8822cs/ + N: Victor Huesca F: support/testing/tests/core/test_root_password.py @@ -3130,11 +3176,13 @@ F: package/zlog/ F: support/testing/tests/package/sample_python_dicttoxml2.py F: support/testing/tests/package/sample_python_dtschema.py F: support/testing/tests/package/sample_python_munch.py +F: support/testing/tests/package/sample_python_pysmb.py F: support/testing/tests/package/test_libftdi1.py F: support/testing/tests/package/test_python_can.py F: support/testing/tests/package/test_python_dicttoxml2.py F: support/testing/tests/package/test_python_dtschema.py F: support/testing/tests/package/test_python_munch.py +F: support/testing/tests/package/test_python_pysmb.py F: utils/scanpypi N: Yunhao Tian diff --git a/Makefile b/Makefile index 3187791d9b..3c0e27ce16 100644 --- a/Makefile +++ b/Makefile @@ -90,9 +90,9 @@ all: .PHONY: all # Set and export the version string -export BR2_VERSION := 2023.05 +export BR2_VERSION := 2023.08.2 # Actual time the release is cut (for reproducible builds) -BR2_VERSION_EPOCH = 1686172000 +BR2_VERSION_EPOCH = 1697404000 # Save running make version since it's clobbered by the make package RUNNING_MAKE_VERSION := $(MAKE_VERSION) @@ -927,14 +927,6 @@ pkg-stats: --html $(O)/pkg-stats.html \ --nvd-path $(DL_DIR)/buildroot-nvd -.PHONY: missing-cpe -missing-cpe: - $(Q)mkdir -p $(CPE_UPDATES_DIR) - $(Q)cd "$(CONFIG_DIR)" ; \ - $(TOPDIR)/support/scripts/gen-missing-cpe \ - --nvd-path $(DL_DIR)/buildroot-nvd \ - --output $(CPE_UPDATES_DIR) - else # ifeq ($(BR2_HAVE_DOT_CONFIG),y) # Some subdirectories are also package names. To avoid that "make linux" @@ -1191,7 +1183,6 @@ help: @echo ' legal-info - generate info about license compliance' @echo ' show-info - generate info about packages, as a JSON blurb' @echo ' pkg-stats - generate info about packages as JSON and HTML' - @echo ' missing-cpe - generate XML snippets for missing CPE identifiers' @echo ' printvars - dump internal variables selected with VARS=...' @echo ' show-vars - dump all internal variables as a JSON blurb; use VARS=...' @echo ' to limit the list to variables names matching that pattern' @@ -1263,4 +1254,7 @@ include docs/manual/manual.mk .PHONY: $(noconfig_targets) +# .WAIT was introduced in make 4.4. For older make, define it as phony. +.PHONY: .WAIT + endif #umask / $(CURDIR) / $(O) diff --git a/arch/Config.in b/arch/Config.in index 1c0c400a98..e37f4dab1d 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -216,6 +216,11 @@ config BR2_sh config BR2_sparc bool "SPARC" select BR2_USE_MMU + # uClibc-ng broken on sparc due to recent gcc changes + # that need to be reverted since gcc 8.4, 9.3 and 10.1. + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 + # gcc <= 10.x has been removed from Buildroot. + select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT help SPARC (from Scalable Processor Architecture) is a RISC instruction set architecture (ISA) developed by Sun @@ -304,6 +309,10 @@ config BR2_ARCH_NEEDS_GCC_AT_LEAST_12 bool select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 +config BR2_ARCH_NEEDS_GCC_AT_LEAST_13 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_12 + # The following string values are defined by the individual # Config.in.$ARCH files config BR2_ARCH diff --git a/arch/Config.in.riscv b/arch/Config.in.riscv index b5e84389e0..3dfbb4165f 100644 --- a/arch/Config.in.riscv +++ b/arch/Config.in.riscv @@ -18,6 +18,9 @@ config BR2_RISCV_ISA_RVD config BR2_RISCV_ISA_RVC bool +config BR2_RISCV_ISA_RVV + bool + choice prompt "Target Architecture Variant" default BR2_riscv_g @@ -35,7 +38,6 @@ config BR2_riscv_g config BR2_riscv_custom bool "Custom architecture" select BR2_RISCV_ISA_RVI - select BR2_RISCV_ISA_CUSTOM_RVA endchoice @@ -63,6 +65,12 @@ config BR2_RISCV_ISA_CUSTOM_RVD config BR2_RISCV_ISA_CUSTOM_RVC bool "Compressed Instructions (C)" select BR2_RISCV_ISA_RVC + +config BR2_RISCV_ISA_CUSTOM_RVV + bool "Vector Instructions (V)" + select BR2_RISCV_ISA_RVV + select BR2_ARCH_NEEDS_GCC_AT_LEAST_12 + endif choice diff --git a/arch/Config.in.x86 b/arch/Config.in.x86 index c770ae3ffe..49823fe885 100644 --- a/arch/Config.in.x86 +++ b/arch/Config.in.x86 @@ -19,12 +19,20 @@ config BR2_X86_CPU_HAS_AVX bool config BR2_X86_CPU_HAS_AVX2 bool + +# BR2_X86_CPU_HAS_AVX512 implies the following AVX512 extensions: +# AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL +# This subset is common to Intel Xeon (excl Xeon Phi), AMD Zen 4, and +# the x86-64-v4 psABI. +# +# Only select BR2_X86_CPU_HAS_AVX512 if the CPU supports this entire +# subset of extensions. config BR2_X86_CPU_HAS_AVX512 bool # This list of CPU architecture variant is (loosely) ordered according # to the gcc documentation at -# https://gcc.gnu.org/onlinedocs/gcc-11.2.0/gcc/x86-Options.html +# https://gcc.gnu.org/onlinedocs/gcc-13.2.0/gcc/x86-Options.html choice prompt "Target Architecture Variant" default BR2_x86_i586 if BR2_i386 @@ -227,6 +235,17 @@ config BR2_x86_sandybridge select BR2_X86_CPU_HAS_SSE42 select BR2_X86_CPU_HAS_AVX select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_x86_ivybridge + bool "ivybridge" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 config BR2_x86_core_avx2 bool "core-avx2" select BR2_X86_CPU_HAS_MMX @@ -335,6 +354,54 @@ config BR2_x86_tremont select BR2_X86_CPU_HAS_SSE4 select BR2_X86_CPU_HAS_SSE42 select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_x86_sierraforest + bool "sierraforest" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_13 +config BR2_x86_grandridge + bool "grandridge" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_13 +config BR2_x86_knightslanding + bool "knightslanding" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_x86_knightsmill + bool "knightsmill" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 config BR2_x86_skylake_avx512 bool "skylake-avx512" select BR2_X86_CPU_HAS_MMX @@ -439,6 +506,8 @@ config BR2_x86_sapphirerapids select BR2_X86_CPU_HAS_AVX2 select BR2_X86_CPU_HAS_AVX512 select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 + help + Use for Sapphire Rapids, Emerald Rapids config BR2_x86_alderlake bool "alderlake" select BR2_X86_CPU_HAS_MMX @@ -450,8 +519,9 @@ config BR2_x86_alderlake select BR2_X86_CPU_HAS_SSE42 select BR2_X86_CPU_HAS_AVX select BR2_X86_CPU_HAS_AVX2 - select BR2_X86_CPU_HAS_AVX512 select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 + help + Use for Alder Lake, Raptor Lake, Meteor Lake config BR2_x86_rocketlake bool "rocketlake" select BR2_X86_CPU_HAS_MMX @@ -465,6 +535,32 @@ config BR2_x86_rocketlake select BR2_X86_CPU_HAS_AVX2 select BR2_X86_CPU_HAS_AVX512 select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 +config BR2_x86_graniterapids + bool "graniterapids" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_13 +config BR2_x86_graniterapids_d + bool "graniterapids-d" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_13 config BR2_x86_k6 bool "k6" depends on !BR2_x86_64 @@ -502,6 +598,13 @@ config BR2_x86_barcelona select BR2_X86_CPU_HAS_SSE select BR2_X86_CPU_HAS_SSE2 select BR2_X86_CPU_HAS_SSE3 +config BR2_x86_bobcat + bool "bobcat" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 config BR2_x86_jaguar bool "jaguar" select BR2_X86_CPU_HAS_MMX @@ -511,6 +614,25 @@ config BR2_x86_jaguar select BR2_X86_CPU_HAS_SSSE3 select BR2_X86_CPU_HAS_SSE4 select BR2_X86_CPU_HAS_SSE42 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 +config BR2_x86_bulldozer + bool "bulldozer" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 +config BR2_x86_piledriver + bool "piledriver" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 config BR2_x86_steamroller bool "steamroller" select BR2_X86_CPU_HAS_MMX @@ -520,12 +642,73 @@ config BR2_x86_steamroller select BR2_X86_CPU_HAS_SSSE3 select BR2_X86_CPU_HAS_SSE4 select BR2_X86_CPU_HAS_SSE42 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 +config BR2_x86_excavator + bool "excavator" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_x86_zen + bool "zen" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_x86_zen2 + bool "zen 2" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_x86_zen3 + bool "zen 3" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_11 +config BR2_x86_zen4 + bool "zen 4" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 + select BR2_X86_CPU_HAS_AVX512 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_13 config BR2_x86_geode - bool "geode" - # Don't include MMX support because there several variant of geode - # processor, some with MMX support, some without. - # See: http://en.wikipedia.org/wiki/Geode_%28processor%29 + bool "AMD Geode" depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_3DNOW config BR2_x86_c3 bool "Via/Cyrix C3 (Samuel/Ezra cores)" depends on !BR2_x86_64 @@ -593,6 +776,7 @@ config BR2_GCC_TARGET_ARCH default "nehalem" if BR2_x86_nehalem default "corei7-avx" if BR2_x86_corei7_avx default "sandybridge" if BR2_x86_sandybridge + default "ivybridge" if BR2_x86_ivybridge default "core-avx2" if BR2_x86_core_avx2 default "haswell" if BR2_x86_haswell default "broadwell" if BR2_x86_broadwell @@ -604,6 +788,10 @@ config BR2_GCC_TARGET_ARCH default "goldmont" if BR2_x86_goldmont default "goldmont-plus" if BR2_x86_goldmont_plus default "tremont" if BR2_x86_tremont + default "sierraforest" if BR2_x86_sierraforest + default "grandridge" if BR2_x86_grandridge + default "knl" if BR2_x86_knightslanding + default "knm" if BR2_x86_knightsmill default "skylake-avx512" if BR2_x86_skylake_avx512 default "cannonlake" if BR2_x86_cannonlake default "icelake-client" if BR2_x86_icelake_client @@ -614,11 +802,21 @@ config BR2_GCC_TARGET_ARCH default "sapphirerapids" if BR2_x86_sapphirerapids default "alderlake" if BR2_x86_alderlake default "rocketlake" if BR2_x86_rocketlake + default "graniterapids" if BR2_x86_graniterapids + default "graniterapids-d" if BR2_x86_graniterapids_d default "k8" if BR2_x86_opteron default "k8-sse3" if BR2_x86_opteron_sse3 default "barcelona" if BR2_x86_barcelona + default "btver1" if BR2_x86_bobcat default "btver2" if BR2_x86_jaguar + default "bdver1" if BR2_x86_bulldozer + default "bdver2" if BR2_x86_piledriver default "bdver3" if BR2_x86_steamroller + default "bdver4" if BR2_x86_excavator + default "znver1" if BR2_x86_zen + default "znver2" if BR2_x86_zen2 + default "znver3" if BR2_x86_zen3 + default "znver4" if BR2_x86_zen4 default "k6" if BR2_x86_k6 default "k6-2" if BR2_x86_k6_2 default "athlon" if BR2_x86_athlon diff --git a/arch/arch.mk.riscv b/arch/arch.mk.riscv index 8d2236147c..ee5c434b97 100644 --- a/arch/arch.mk.riscv +++ b/arch/arch.mk.riscv @@ -26,6 +26,9 @@ endif ifeq ($(BR2_RISCV_ISA_RVC),y) GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)c endif +ifeq ($(BR2_RISCV_ISA_RVV),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)v +endif # Starting from gcc 12.x, csr and fence instructions have been # separated from the base I instruction set, and special -march diff --git a/board/beaglev/patches/uboot/0001-riscv-Fix-build-against-binutils-2.38.patch b/board/beaglev/patches/uboot/0001-riscv-Fix-build-against-binutils-2.38.patch new file mode 100644 index 0000000000..52b496f054 --- /dev/null +++ b/board/beaglev/patches/uboot/0001-riscv-Fix-build-against-binutils-2.38.patch @@ -0,0 +1,58 @@ +From 0cf11f3c0478f4286adcfb09bf9137f8b00212e3 Mon Sep 17 00:00:00 2001 +From: Alexandre Ghiti +Date: Mon, 3 Oct 2022 18:07:54 +0200 +Subject: [PATCH] riscv: Fix build against binutils 2.38 + +The following description is copied from the equivalent patch for the +Linux Kernel proposed by Aurelien Jarno: + +>From version 2.38, binutils default to ISA spec version 20191213. This +means that the csr read/write (csrr*/csrw*) instructions and fence.i +instruction has separated from the `I` extension, become two standalone +extensions: Zicsr and Zifencei. As the kernel uses those instruction, +this causes the following build failure: + +arch/riscv/cpu/mtrap.S: Assembler messages: +arch/riscv/cpu/mtrap.S:65: Error: unrecognized opcode `csrr a0,scause' +arch/riscv/cpu/mtrap.S:66: Error: unrecognized opcode `csrr a1,sepc' +arch/riscv/cpu/mtrap.S:67: Error: unrecognized opcode `csrr a2,stval' +arch/riscv/cpu/mtrap.S:70: Error: unrecognized opcode `csrw sepc,a0' + +Signed-off-by: Alexandre Ghiti +Reviewed-by: Bin Meng +Tested-by: Heinrich Schuchardt +Tested-by: Heiko Stuebner +Tested-by: Christian Stewart +Reviewed-by: Rick Chen +(cherry picked from commit 1dde977518f13824b847e23275001191139bc384) +Upstream: https://gitlab.com/u-boot/u-boot/-/commit/1dde977518f13824b847e23275001191139bc384 +Signed-off-by: Romain Naour +--- + arch/riscv/Makefile | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile +index 0b80eb8d864..53d1194ffb6 100644 +--- a/arch/riscv/Makefile ++++ b/arch/riscv/Makefile +@@ -24,7 +24,16 @@ ifeq ($(CONFIG_CMODEL_MEDANY),y) + CMODEL = medany + endif + +-ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_C) -mabi=$(ABI) \ ++RISCV_MARCH = $(ARCH_BASE)$(ARCH_A)$(ARCH_C) ++ ++# Newer binutils versions default to ISA spec version 20191213 which moves some ++# instructions from the I extension to the Zicsr and Zifencei extensions. ++toolchain-need-zicsr-zifencei := $(call cc-option-yn, -mabi=$(ABI) -march=$(RISCV_MARCH)_zicsr_zifencei) ++ifeq ($(toolchain-need-zicsr-zifencei),y) ++ RISCV_MARCH := $(RISCV_MARCH)_zicsr_zifencei ++endif ++ ++ARCH_FLAGS = -march=$(RISCV_MARCH) -mabi=$(ABI) \ + -mcmodel=$(CMODEL) + + PLATFORM_CPPFLAGS += $(ARCH_FLAGS) +-- +2.41.0 + diff --git a/board/bsh/imx8mn-bsh-smm-s2/readme.txt b/board/bsh/imx8mn-bsh-smm-s2/readme.txt index 37081091e8..6b8cd03199 100644 --- a/board/bsh/imx8mn-bsh-smm-s2/readme.txt +++ b/board/bsh/imx8mn-bsh-smm-s2/readme.txt @@ -2,7 +2,7 @@ i.MX8MN BSH SMM S2 ================== This tutorial describes how to use the predefined Buildroot -configuration for the i.MX8MN BSH SMM S2 PRO board. +configuration for the i.MX8MN BSH SMM S2 board. Building -------- diff --git a/board/canaan/k210-soc/patches/uboot/0001-riscv-Fix-build-against-binutils-2.38.patch b/board/canaan/k210-soc/patches/uboot/0001-riscv-Fix-build-against-binutils-2.38.patch new file mode 100644 index 0000000000..52b496f054 --- /dev/null +++ b/board/canaan/k210-soc/patches/uboot/0001-riscv-Fix-build-against-binutils-2.38.patch @@ -0,0 +1,58 @@ +From 0cf11f3c0478f4286adcfb09bf9137f8b00212e3 Mon Sep 17 00:00:00 2001 +From: Alexandre Ghiti +Date: Mon, 3 Oct 2022 18:07:54 +0200 +Subject: [PATCH] riscv: Fix build against binutils 2.38 + +The following description is copied from the equivalent patch for the +Linux Kernel proposed by Aurelien Jarno: + +>From version 2.38, binutils default to ISA spec version 20191213. This +means that the csr read/write (csrr*/csrw*) instructions and fence.i +instruction has separated from the `I` extension, become two standalone +extensions: Zicsr and Zifencei. As the kernel uses those instruction, +this causes the following build failure: + +arch/riscv/cpu/mtrap.S: Assembler messages: +arch/riscv/cpu/mtrap.S:65: Error: unrecognized opcode `csrr a0,scause' +arch/riscv/cpu/mtrap.S:66: Error: unrecognized opcode `csrr a1,sepc' +arch/riscv/cpu/mtrap.S:67: Error: unrecognized opcode `csrr a2,stval' +arch/riscv/cpu/mtrap.S:70: Error: unrecognized opcode `csrw sepc,a0' + +Signed-off-by: Alexandre Ghiti +Reviewed-by: Bin Meng +Tested-by: Heinrich Schuchardt +Tested-by: Heiko Stuebner +Tested-by: Christian Stewart +Reviewed-by: Rick Chen +(cherry picked from commit 1dde977518f13824b847e23275001191139bc384) +Upstream: https://gitlab.com/u-boot/u-boot/-/commit/1dde977518f13824b847e23275001191139bc384 +Signed-off-by: Romain Naour +--- + arch/riscv/Makefile | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile +index 0b80eb8d864..53d1194ffb6 100644 +--- a/arch/riscv/Makefile ++++ b/arch/riscv/Makefile +@@ -24,7 +24,16 @@ ifeq ($(CONFIG_CMODEL_MEDANY),y) + CMODEL = medany + endif + +-ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_C) -mabi=$(ABI) \ ++RISCV_MARCH = $(ARCH_BASE)$(ARCH_A)$(ARCH_C) ++ ++# Newer binutils versions default to ISA spec version 20191213 which moves some ++# instructions from the I extension to the Zicsr and Zifencei extensions. ++toolchain-need-zicsr-zifencei := $(call cc-option-yn, -mabi=$(ABI) -march=$(RISCV_MARCH)_zicsr_zifencei) ++ifeq ($(toolchain-need-zicsr-zifencei),y) ++ RISCV_MARCH := $(RISCV_MARCH)_zicsr_zifencei ++endif ++ ++ARCH_FLAGS = -march=$(RISCV_MARCH) -mabi=$(ABI) \ + -mcmodel=$(CMODEL) + + PLATFORM_CPPFLAGS += $(ARCH_FLAGS) +-- +2.41.0 + diff --git a/board/freescale/common/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch b/board/freescale/common/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 0000000000..335c18553a --- /dev/null +++ b/board/freescale/common/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/board/freescale/common/patches/arm-trusted-firmware/0002-LF-7968-01-fix-Makefile-Suppress-array-bounds-error.patch b/board/freescale/common/patches/arm-trusted-firmware/0002-LF-7968-01-fix-Makefile-Suppress-array-bounds-error.patch new file mode 100644 index 0000000000..7a7a7bbc28 --- /dev/null +++ b/board/freescale/common/patches/arm-trusted-firmware/0002-LF-7968-01-fix-Makefile-Suppress-array-bounds-error.patch @@ -0,0 +1,51 @@ +From b2a94de52ae4a940a87d569815b19d3fa92dd32a Mon Sep 17 00:00:00 2001 +From: Tom Hochstein +Date: Mon, 16 May 2022 13:45:16 -0500 +Subject: [PATCH] LF-7968-01 fix(Makefile): Suppress array-bounds error + +The array-bounds error is triggered now in cases where it was silent +before, causing errors like: + +``` +plat/imx/imx8m/hab.c: In function 'imx_hab_handler': +plat/imx/imx8m/hab.c:64:57: error: array subscript 0 is outside array bounds of 'uint32_t[0]' {aka 'unsigned int[]'} [-Werror=array-bounds] + 64 | #define HAB_RVT_CHECK_TARGET_ARM64 ((unsigned long)*(uint32_t *)(HAB_RVT_BASE + 0x18)) + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +``` + +The error is a false-positive and is entered as a bug [1]. The problem +is fixed partially in GCC 12 and fully in GCC 13 [2]. + +The partial fix does not work here because the constant addresses used +are less than the 4kB boundary chosen for the partial fix, so suppress +the error until GCC is upgraded to 13. + +[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578 +[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578#c39 + +Upstream-Status: Inappropriate [other] +Signed-off-by: Tom Hochstein +Signed-off-by: Jacky Bai +Reviewed-by: Ye Li +Signed-off-by: Brandon Maier +Upstream: https://github.com/nxp-imx/imx-atf/commit/058bf0f104115037d03e277f079825ef3659c5b9 +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index c87c3ae08..2d6b90f47 100644 +--- a/Makefile ++++ b/Makefile +@@ -346,7 +346,7 @@ WARNINGS += -Wshift-overflow -Wshift-sign-overflow \ + endif + + ifneq (${E},0) +-ERRORS := -Werror ++ERRORS := -Werror -Wno-error=array-bounds + endif + + CPPFLAGS = ${DEFINES} ${INCLUDES} ${MBEDTLS_INC} -nostdinc \ +-- +2.41.0 + diff --git a/board/orangepi/orangepi-lite2/readme.txt b/board/orangepi/orangepi-lite2/readme.txt index bed561b562..7f88250418 100644 --- a/board/orangepi/orangepi-lite2/readme.txt +++ b/board/orangepi/orangepi-lite2/readme.txt @@ -6,7 +6,7 @@ buildroot environment for the Orangepi Lite2. With the current configuration it will bring-up the board, and allow access through the serial console. Orangepi Lite2 link: -http://www.orangepi.org/Orange%20Pi%20Lite%202/ +http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Lite-2.html Wiki link: https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+Lite2 diff --git a/board/orangepi/orangepi-one-plus/readme.txt b/board/orangepi/orangepi-one-plus/readme.txt index 87f6de8510..547f874288 100644 --- a/board/orangepi/orangepi-one-plus/readme.txt +++ b/board/orangepi/orangepi-one-plus/readme.txt @@ -6,7 +6,7 @@ buildroot environment for the Orangepi One Plus. With the current configuration it will bring-up the board, and allow access through the serial console. Orangepi One Plus link: -http://www.orangepi.org/OrangePiOneplus/ +http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-One-Plus.html Wiki link: https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+One+Plus diff --git a/board/orangepi/orangepi-zero-plus/readme.txt b/board/orangepi/orangepi-zero-plus/readme.txt index 5556eae890..1e60e0f825 100644 --- a/board/orangepi/orangepi-zero-plus/readme.txt +++ b/board/orangepi/orangepi-zero-plus/readme.txt @@ -6,7 +6,7 @@ buildroot environment for the Orangepi Zero Plus. With the current configuration it will bring-up the board, and allow access through the serial console. Orangepi Zero Plus link: -http://www.orangepi.org/OrangePiZeroPlus/ +http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-Plus.html This configuration uses U-Boot mainline and kernel mainline. diff --git a/board/orangepi/orangepi-zero-plus2/readme.txt b/board/orangepi/orangepi-zero-plus2/readme.txt index 322ba0e12a..2df6dd9b11 100644 --- a/board/orangepi/orangepi-zero-plus2/readme.txt +++ b/board/orangepi/orangepi-zero-plus2/readme.txt @@ -6,7 +6,7 @@ buildroot environment for the Orangepi Zero Plus2. With the current configuratio it will bring-up the board, and allow access through the serial console. Orangepi Zero Plus2 link: -http://www.orangepi.org/OrangePiZeroPlus2/ +http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-Plus-2.html Wiki link: https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+Zero+Plus2 diff --git a/board/qemu/aarch64-virt/linux.config b/board/qemu/aarch64-virt/linux.config index f9763b73b7..971b9fcf86 100644 --- a/board/qemu/aarch64-virt/linux.config +++ b/board/qemu/aarch64-virt/linux.config @@ -12,8 +12,7 @@ CONFIG_SCHED_AUTOGROUP=y CONFIG_PROFILING=y CONFIG_ARCH_VEXPRESS=y CONFIG_COMPAT=y -CONFIG_FW_CFG_SYSFS=y -CONFIG_FW_CFG_SYSFS_CMDLINE=y +CONFIG_ACPI=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_BLK_DEV_BSGLIB=y @@ -34,6 +33,8 @@ CONFIG_PCI=y CONFIG_PCI_HOST_GENERIC=y CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y +CONFIG_FW_CFG_SYSFS=y +CONFIG_FW_CFG_SYSFS_CMDLINE=y CONFIG_VIRTIO_BLK=y CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_SG=y diff --git a/board/qemu/m68k-mcf5208/0001-m68k-Fix-invalid-.section-syntax.patch b/board/qemu/m68k-mcf5208/0001-m68k-Fix-invalid-.section-syntax.patch new file mode 100644 index 0000000000..1f1ed75ae0 --- /dev/null +++ b/board/qemu/m68k-mcf5208/0001-m68k-Fix-invalid-.section-syntax.patch @@ -0,0 +1,97 @@ +From 0bb6b7477f5dcfafbdd76eea9c7aa7a5f78d7613 Mon Sep 17 00:00:00 2001 +From: Ben Hutchings +Date: Fri, 16 Jun 2023 17:36:10 +0200 +Subject: [PATCH] m68k: Fix invalid .section syntax + +gas supports several different forms for .section for ELF targets, +including: + .section NAME [, "FLAGS"[, @TYPE[,FLAG_SPECIFIC_ARGUMENTS]]] +and: + .section "NAME"[, #FLAGS...] + +In several places we use a mix of these two forms: + .section NAME, #FLAGS... + +A current development snapshot of binutils (2.40.50.20230611) treats +this mixed syntax as an error. + +Change to consistently use: + .section NAME, "FLAGS" +as is used elsewhere in the kernel. + +Link: https://buildd.debian.org/status/fetch.php?pkg=linux&arch=m68k&ver=6.4%7Erc6-1%7Eexp1&stamp=1686907300&raw=1 +Signed-off-by: Ben Hutchings +Tested-by: Jan-Benedict Glaw +Link: https://lore.kernel.org/r/ZIyBaueWT9jnTwRC@decadent.org.uk +Signed-off-by: Geert Uytterhoeven +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=922a9bd138101e3e5718f0f4d40dba68ef89bb43 +Signed-off-by: Thomas Petazzoni +--- + arch/m68k/fpsp040/skeleton.S | 4 ++-- + arch/m68k/ifpsp060/os.S | 4 ++-- + arch/m68k/kernel/relocate_kernel.S | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/arch/m68k/fpsp040/skeleton.S b/arch/m68k/fpsp040/skeleton.S +index 439395aa6fb4..081922c72daa 100644 +--- a/arch/m68k/fpsp040/skeleton.S ++++ b/arch/m68k/fpsp040/skeleton.S +@@ -499,13 +499,13 @@ in_ea: + dbf %d0,morein + rts + +- .section .fixup,#alloc,#execinstr ++ .section .fixup,"ax" + .even + 1: + jbsr fpsp040_die + jbra .Lnotkern + +- .section __ex_table,#alloc ++ .section __ex_table,"a" + .align 4 + + .long in_ea,1b +diff --git a/arch/m68k/ifpsp060/os.S b/arch/m68k/ifpsp060/os.S +index 7a0d6e428066..89e2ec224ab6 100644 +--- a/arch/m68k/ifpsp060/os.S ++++ b/arch/m68k/ifpsp060/os.S +@@ -379,11 +379,11 @@ _060_real_access: + + + | Execption handling for movs access to illegal memory +- .section .fixup,#alloc,#execinstr ++ .section .fixup,"ax" + .even + 1: moveq #-1,%d1 + rts +-.section __ex_table,#alloc ++.section __ex_table,"a" + .align 4 + .long dmrbuae,1b + .long dmrwuae,1b +diff --git a/arch/m68k/kernel/relocate_kernel.S b/arch/m68k/kernel/relocate_kernel.S +index ab0f1e7d4653..f7667079e08e 100644 +--- a/arch/m68k/kernel/relocate_kernel.S ++++ b/arch/m68k/kernel/relocate_kernel.S +@@ -26,7 +26,7 @@ ENTRY(relocate_new_kernel) + lea %pc@(.Lcopy),%a4 + 2: addl #0x00000000,%a4 /* virt_to_phys() */ + +- .section ".m68k_fixup","aw" ++ .section .m68k_fixup,"aw" + .long M68K_FIXUP_MEMOFFSET, 2b+2 + .previous + +@@ -49,7 +49,7 @@ ENTRY(relocate_new_kernel) + lea %pc@(.Lcont040),%a4 + 5: addl #0x00000000,%a4 /* virt_to_phys() */ + +- .section ".m68k_fixup","aw" ++ .section .m68k_fixup,"aw" + .long M68K_FIXUP_MEMOFFSET, 5b+2 + .previous + +-- +2.41.0 + diff --git a/board/qemu/m68k-q800/0001-m68k-Fix-invalid-.section-syntax.patch b/board/qemu/m68k-q800/0001-m68k-Fix-invalid-.section-syntax.patch new file mode 100644 index 0000000000..1f1ed75ae0 --- /dev/null +++ b/board/qemu/m68k-q800/0001-m68k-Fix-invalid-.section-syntax.patch @@ -0,0 +1,97 @@ +From 0bb6b7477f5dcfafbdd76eea9c7aa7a5f78d7613 Mon Sep 17 00:00:00 2001 +From: Ben Hutchings +Date: Fri, 16 Jun 2023 17:36:10 +0200 +Subject: [PATCH] m68k: Fix invalid .section syntax + +gas supports several different forms for .section for ELF targets, +including: + .section NAME [, "FLAGS"[, @TYPE[,FLAG_SPECIFIC_ARGUMENTS]]] +and: + .section "NAME"[, #FLAGS...] + +In several places we use a mix of these two forms: + .section NAME, #FLAGS... + +A current development snapshot of binutils (2.40.50.20230611) treats +this mixed syntax as an error. + +Change to consistently use: + .section NAME, "FLAGS" +as is used elsewhere in the kernel. + +Link: https://buildd.debian.org/status/fetch.php?pkg=linux&arch=m68k&ver=6.4%7Erc6-1%7Eexp1&stamp=1686907300&raw=1 +Signed-off-by: Ben Hutchings +Tested-by: Jan-Benedict Glaw +Link: https://lore.kernel.org/r/ZIyBaueWT9jnTwRC@decadent.org.uk +Signed-off-by: Geert Uytterhoeven +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=922a9bd138101e3e5718f0f4d40dba68ef89bb43 +Signed-off-by: Thomas Petazzoni +--- + arch/m68k/fpsp040/skeleton.S | 4 ++-- + arch/m68k/ifpsp060/os.S | 4 ++-- + arch/m68k/kernel/relocate_kernel.S | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/arch/m68k/fpsp040/skeleton.S b/arch/m68k/fpsp040/skeleton.S +index 439395aa6fb4..081922c72daa 100644 +--- a/arch/m68k/fpsp040/skeleton.S ++++ b/arch/m68k/fpsp040/skeleton.S +@@ -499,13 +499,13 @@ in_ea: + dbf %d0,morein + rts + +- .section .fixup,#alloc,#execinstr ++ .section .fixup,"ax" + .even + 1: + jbsr fpsp040_die + jbra .Lnotkern + +- .section __ex_table,#alloc ++ .section __ex_table,"a" + .align 4 + + .long in_ea,1b +diff --git a/arch/m68k/ifpsp060/os.S b/arch/m68k/ifpsp060/os.S +index 7a0d6e428066..89e2ec224ab6 100644 +--- a/arch/m68k/ifpsp060/os.S ++++ b/arch/m68k/ifpsp060/os.S +@@ -379,11 +379,11 @@ _060_real_access: + + + | Execption handling for movs access to illegal memory +- .section .fixup,#alloc,#execinstr ++ .section .fixup,"ax" + .even + 1: moveq #-1,%d1 + rts +-.section __ex_table,#alloc ++.section __ex_table,"a" + .align 4 + .long dmrbuae,1b + .long dmrwuae,1b +diff --git a/arch/m68k/kernel/relocate_kernel.S b/arch/m68k/kernel/relocate_kernel.S +index ab0f1e7d4653..f7667079e08e 100644 +--- a/arch/m68k/kernel/relocate_kernel.S ++++ b/arch/m68k/kernel/relocate_kernel.S +@@ -26,7 +26,7 @@ ENTRY(relocate_new_kernel) + lea %pc@(.Lcopy),%a4 + 2: addl #0x00000000,%a4 /* virt_to_phys() */ + +- .section ".m68k_fixup","aw" ++ .section .m68k_fixup,"aw" + .long M68K_FIXUP_MEMOFFSET, 2b+2 + .previous + +@@ -49,7 +49,7 @@ ENTRY(relocate_new_kernel) + lea %pc@(.Lcont040),%a4 + 5: addl #0x00000000,%a4 /* virt_to_phys() */ + +- .section ".m68k_fixup","aw" ++ .section .m68k_fixup,"aw" + .long M68K_FIXUP_MEMOFFSET, 5b+2 + .previous + +-- +2.41.0 + diff --git a/board/qemu/ppc64le-powernv8/readme.txt b/board/qemu/ppc64le-powernv8/readme.txt index 059f55fbc9..b57c97464a 100644 --- a/board/qemu/ppc64le-powernv8/readme.txt +++ b/board/qemu/ppc64le-powernv8/readme.txt @@ -1,5 +1,5 @@ Run the emulation with: -qemu-system-ppc64 -M powernv9 -kernel vmlinux -append "console=hvc0 rootwait root=/dev/nvme0n1" -device nvme,bus=pcie.3,addr=0x0,drive=drive0,serial=1234 -drive file=./rootfs.ext2,if=none,id=drive0,format=raw,cache=none -device e1000e,netdev=net0,mac=C0:FF:EE:00:01:03,bus=pcie.1,addr=0x0 -netdev user,id=net0 -serial mon:stdio -nographic # qemu_ppc64le_powernv8_defconfig +qemu-system-ppc64 -M powernv9 -kernel output/images/vmlinux -append "console=hvc0 rootwait root=/dev/nvme0n1" -device nvme,bus=pcie.3,addr=0x0,drive=drive0,serial=1234 -drive file=output/images/rootfs.ext2,if=none,id=drive0,format=raw,cache=none -device e1000e,netdev=net0,mac=C0:FF:EE:00:01:03,bus=pcie.1,addr=0x0 -netdev user,id=net0 -serial mon:stdio -nographic # qemu_ppc64le_powernv8_defconfig The login prompt will appear in the terminal window. diff --git a/board/radxa/rock5b/boot.cmd b/board/radxa/rock5b/boot.cmd new file mode 100644 index 0000000000..9a3e73e003 --- /dev/null +++ b/board/radxa/rock5b/boot.cmd @@ -0,0 +1,3 @@ +setenv bootargs root=/dev/mmcblk0p2 rw rootfstype=ext4 clkin_hz=(25000000) earlycon clk_ignore_unused earlyprintk console=ttyS2,1500000n8 rootwait +fatload mmc 1:1 ${loadaddr} image.itb +bootm ${loadaddr} diff --git a/board/radxa/rock5b/genimage.cfg b/board/radxa/rock5b/genimage.cfg new file mode 100644 index 0000000000..2943232fc3 --- /dev/null +++ b/board/radxa/rock5b/genimage.cfg @@ -0,0 +1,34 @@ +# SD card image for Radxa Rock 5b + +image boot.vfat { + vfat { + files = { + "image.itb", + "boot.scr" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + partition-table-type = "hybrid" + } + + partition uboot { + in-partition-table = "false" + image = "u-boot-rockchip.bin" + offset = 32K + } + + partition boot { + partition-type = "0xC" + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/radxa/rock5b/linux.fragment b/board/radxa/rock5b/linux.fragment new file mode 100644 index 0000000000..6d65cb7bb8 --- /dev/null +++ b/board/radxa/rock5b/linux.fragment @@ -0,0 +1,4 @@ +CONFIG_R8169=y +# Disable Rockchip specific WiFi drivers, as the kernel +# code cannot be build with GCC 12 due to several Werrors +# CONFIG_WL_ROCKCHIP is not set diff --git a/board/radxa/rock5b/patches/linux/0001-etherdevice-Adjust-ether_addr-prototypes-to-silence-.patch b/board/radxa/rock5b/patches/linux/0001-etherdevice-Adjust-ether_addr-prototypes-to-silence-.patch new file mode 100644 index 0000000000..5632c5a627 --- /dev/null +++ b/board/radxa/rock5b/patches/linux/0001-etherdevice-Adjust-ether_addr-prototypes-to-silence-.patch @@ -0,0 +1,64 @@ +From 2618a0dae09ef37728dab89ff60418cbe25ae6bd Mon Sep 17 00:00:00 2001 +From: Kees Cook +Date: Sat, 12 Feb 2022 09:14:49 -0800 +Subject: etherdevice: Adjust ether_addr* prototypes to silence + -Wstringop-overead +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +With GCC 12, -Wstringop-overread was warning about an implicit cast from +char[6] to char[8]. However, the extra 2 bytes are always thrown away, +alignment doesn't matter, and the risk of hitting the edge of unallocated +memory has been accepted, so this prototype can just be converted to a +regular char *. Silences: + +net/core/dev.c: In function ‘bpf_prog_run_generic_xdp’: net/core/dev.c:4618:21: warning: ‘ether_addr_equal_64bits’ reading 8 bytes from a region of size 6 [-Wstringop-overread] + 4618 | orig_host = ether_addr_equal_64bits(eth->h_dest, > skb->dev->dev_addr); + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +net/core/dev.c:4618:21: note: referencing argument 1 of type ‘const u8[8]’ {aka ‘const unsigned char[8]’} +net/core/dev.c:4618:21: note: referencing argument 2 of type ‘const u8[8]’ {aka ‘const unsigned char[8]’} +In file included from net/core/dev.c:91: include/linux/etherdevice.h:375:20: note: in a call to function ‘ether_addr_equal_64bits’ + 375 | static inline bool ether_addr_equal_64bits(const u8 addr1[6+2], + | ^~~~~~~~~~~~~~~~~~~~~~~ + +Reported-by: Marc Kleine-Budde +Tested-by: Marc Kleine-Budde +Link: https://lore.kernel.org/netdev/20220212090811.uuzk6d76agw2vv73@pengutronix.de +Cc: Jakub Kicinski +Cc: "David S. Miller" +Cc: netdev@vger.kernel.org +Signed-off-by: Kees Cook +Signed-off-by: David S. Miller +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2618a0dae09ef37728dab89ff60418cbe25ae6bd +Signed-off-by: Kilian Zinnecker +--- + include/linux/etherdevice.h | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h +index 2ad71cc90b37d..92b10e67d5f87 100644 +--- a/include/linux/etherdevice.h ++++ b/include/linux/etherdevice.h +@@ -134,7 +134,7 @@ static inline bool is_multicast_ether_addr(const u8 *addr) + #endif + } + +-static inline bool is_multicast_ether_addr_64bits(const u8 addr[6+2]) ++static inline bool is_multicast_ether_addr_64bits(const u8 *addr) + { + #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) && BITS_PER_LONG == 64 + #ifdef __BIG_ENDIAN +@@ -372,8 +372,7 @@ static inline bool ether_addr_equal(const u8 *addr1, const u8 *addr2) + * Please note that alignment of addr1 & addr2 are only guaranteed to be 16 bits. + */ + +-static inline bool ether_addr_equal_64bits(const u8 addr1[6+2], +- const u8 addr2[6+2]) ++static inline bool ether_addr_equal_64bits(const u8 *addr1, const u8 *addr2) + { + #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) && BITS_PER_LONG == 64 + u64 fold = (*(const u64 *)addr1) ^ (*(const u64 *)addr2); +-- +cgit + diff --git a/board/radxa/rock5b/patches/linux/0002-mm-page_alloc-fix-building-error-on-Werror-array-com.patch b/board/radxa/rock5b/patches/linux/0002-mm-page_alloc-fix-building-error-on-Werror-array-com.patch new file mode 100644 index 0000000000..10de6c72d3 --- /dev/null +++ b/board/radxa/rock5b/patches/linux/0002-mm-page_alloc-fix-building-error-on-Werror-array-com.patch @@ -0,0 +1,43 @@ +From ca831f29f8f25c97182e726429b38c0802200c8f Mon Sep 17 00:00:00 2001 +From: Xiongwei Song +Date: Fri, 14 Jan 2022 14:07:24 -0800 +Subject: mm: page_alloc: fix building error on -Werror=array-compare + +Arthur Marsh reported we would hit the error below when building kernel +with gcc-12: + + CC mm/page_alloc.o + mm/page_alloc.c: In function `mem_init_print_info': + mm/page_alloc.c:8173:27: error: comparison between two arrays [-Werror=array-compare] + 8173 | if (start <= pos && pos < end && size > adj) \ + | + +In C++20, the comparision between arrays should be warned. + +Link: https://lkml.kernel.org/r/20211125130928.32465-1-sxwjean@me.com +Signed-off-by: Xiongwei Song +Reported-by: Arthur Marsh +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ca831f29f8f25c97182e726429b38c0802200c8f +Signed-off-by: Kilian Zinnecker +--- + mm/page_alloc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mm/page_alloc.c b/mm/page_alloc.c +index 806f317c2e7e2..c4ef450ac4428 100644 +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c +@@ -8228,7 +8228,7 @@ void __init mem_init_print_info(void) + */ + #define adj_init_size(start, end, size, pos, adj) \ + do { \ +- if (start <= pos && pos < end && size > adj) \ ++ if (&start[0] <= &pos[0] && &pos[0] < &end[0] && size > adj) \ + size -= adj; \ + } while (0) + +-- +cgit + diff --git a/board/radxa/rock5b/post-image.sh b/board/radxa/rock5b/post-image.sh new file mode 100755 index 0000000000..c706a5ee78 --- /dev/null +++ b/board/radxa/rock5b/post-image.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -e + +gzip -fk "${BINARIES_DIR}/Image" +cp board/radxa/rock5b/rock5b.its "${BINARIES_DIR}" +(cd "${BINARIES_DIR}" && mkimage -f rock5b.its image.itb) +support/scripts/genimage.sh -c board/radxa/rock5b/genimage.cfg diff --git a/board/radxa/rock5b/readme.txt b/board/radxa/rock5b/readme.txt new file mode 100644 index 0000000000..f02f3d380e --- /dev/null +++ b/board/radxa/rock5b/readme.txt @@ -0,0 +1,82 @@ +RADXA ROCK 5B +============== +https://wiki.radxa.com/Rock5/hardware/5b + +Build: +====== + $ make rock5b_defconfig + $ make + +Files created in output directory +================================= + +output/images +. +├── Image +├── Image.gz +├── boot.scr +├── boot.vfat +├── image.itb +├── rk3588-rock-5b.dtb +├── rk3588_bl31_v1.40.elf +├── rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin +├── rock5b.its +├── rootfs.ext2 +├── rootfs.ext4 +├── rootfs.tar +├── sdcard.img +├── u-boot-rockchip.bin +└── u-boot.bin + +Creating bootable SD card: +========================== + +Simply invoke (as root) + +sudo dd if=output/images/sdcard.img of=/dev/sdX && sync + +Where X is your SD card device. + +Booting: +======== + +Serial console: +--------------- +The Rock 5B has a 40-pin GPIO header. Its layout can be seen here: +https://wiki.radxa.com/Rock5/hardware/5b/gpio + +The Uart pins are as follows: + +pin 6: gnd +pin 8: tx +pin 10: rx + +Baudrate for this board is 1500000. + +Login: +------ +Enter 'root' as login user, and the prompt is ready. + +wiki link: +---------- +https://forum.radxa.com/c/rock5 + +Issues: +======= + +The custom Radxa kernel provides custom code to support WiFi. However, +that code does not compile with GCC 12, which is the current default +version in buildroot. Hence, the WiFi kernel drivers are disabled, until +the issues get fixed (if ever). If they are desperately needed, one may +apply the following workaround, as long as buildroot still supports GCC +version 11: + +1. Set GCC version 11, by adding the following line to +configs/rock5b_defconfig: + +BR2_GCC_VERSION_11_X=y + +2. Re-enable custom WiFi drivers by removing the following line from +board/radxa/rock5b/linux.fragment: + +# CONFIG_WL_ROCKCHIP is not set diff --git a/board/radxa/rock5b/rock5b.its b/board/radxa/rock5b/rock5b.its new file mode 100644 index 0000000000..d73659a56e --- /dev/null +++ b/board/radxa/rock5b/rock5b.its @@ -0,0 +1,46 @@ +/dts-v1/; + +/ { + description = "Rock 5B FIT Image"; + #address-cells = <1>; + + images { + kernel { + description = "Kernel"; + data = /incbin/("Image.gz"); + type = "kernel"; + arch = "arm64"; + os = "linux"; + compression = "gzip"; + load = <0x0a200000>; + entry = <0x0a200000>; + hash { + algo = "sha256"; + }; + }; + fdt { + description = "Device Tree"; + data = /incbin/("rk3588-rock-5b.dtb"); + type = "flat_dt"; + arch = "arm64"; + compression = "none"; + load = <0x0e000000>; + entry = <0x0e000000>; + hash { + algo = "sha256"; + }; + }; + }; + + configurations { + default = "standard"; + standard { + description = "Standard Boot"; + kernel = "kernel"; + fdt = "fdt"; + hash { + algo = "sha256"; + }; + }; + }; +}; diff --git a/board/raspberrypi/genimage-raspberrypi0.cfg b/board/raspberrypi/genimage-raspberrypi0.cfg index 1fa3f5096f..313f85f651 100644 --- a/board/raspberrypi/genimage-raspberrypi0.cfg +++ b/board/raspberrypi/genimage-raspberrypi0.cfg @@ -7,6 +7,7 @@ image boot.vfat { "rpi-firmware/config.txt", "rpi-firmware/fixup.dat", "rpi-firmware/start.elf", + "rpi-firmware/overlays", "zImage" } } diff --git a/board/raspberrypi/genimage-raspberrypi2.cfg b/board/raspberrypi/genimage-raspberrypi2.cfg index acd23e7ca8..dad9275537 100644 --- a/board/raspberrypi/genimage-raspberrypi2.cfg +++ b/board/raspberrypi/genimage-raspberrypi2.cfg @@ -7,6 +7,7 @@ image boot.vfat { "rpi-firmware/config.txt", "rpi-firmware/fixup.dat", "rpi-firmware/start.elf", + "rpi-firmware/overlays", "zImage" } } diff --git a/board/raspberrypi/post-build.sh b/board/raspberrypi/post-build.sh index 5e5eb71100..0bd7bc3d17 100755 --- a/board/raspberrypi/post-build.sh +++ b/board/raspberrypi/post-build.sh @@ -8,4 +8,12 @@ if [ -e ${TARGET_DIR}/etc/inittab ]; then grep -qE '^tty1::' ${TARGET_DIR}/etc/inittab || \ sed -i '/GENERIC_SERIAL/a\ tty1::respawn:/sbin/getty -L tty1 0 vt100 # HDMI console' ${TARGET_DIR}/etc/inittab +# systemd doesn't use /etc/inittab, enable getty.tty1.service instead +elif [ -d ${TARGET_DIR}/etc/systemd ]; then + mkdir -p "${TARGET_DIR}/etc/systemd/system/getty.target.wants" + ln -sf /lib/systemd/system/getty@.service \ + "${TARGET_DIR}/etc/systemd/system/getty.target.wants/getty@tty1.service" fi + +# ensure overlays exists for genimage +mkdir -p "${BINARIES_DIR}/rpi-firmware/overlays" diff --git a/board/shredos/bootx64.efi b/board/shredos/bootx64.efi index 29af2e324f0acdc18d78ccea15409deafa584922..2f95641783aeee11c4910eb1e233faa2fa337910 100644 GIT binary patch delta 289169 zcmc${3t&`5mOp%Ncc;4(8g76<8VS%~qeSJ=4h}>R)6jw2+R^Y5L>&l_2=XQ!Kt(#S ziRRi9SA3Q8MrUWnnVlVVc2|@cAqkHlJ8A$?e2fC)D4~6T&X9mg|9_`$-R`25*>%_N z+Y6n0@2OL#s!p9cb*k>Es=B)2b#;>-c-(ea+w}7hw&wgz2fn91&7Qd~xA37-+tm*> zsyF5x?x85{s-hh3@laA7lJ|7JqTs*sbbh?hwx!Ufo_@)$zuDv7-t8)WHvH`PIq=KD z&xxN4KR154TY9(WeK~#8D2J_a02|n@UZU2qBRSoAvzy!1VZOvk%KJ`Yy3P4*x|N~%3vwxUw>`Gn%nyG_z>+PwLwa@bB-64BQN&Z4lHRF{>P3;F}H~}Jh@uA(J95b1D z!M2d!gW@USruF{(tzJ9@PRaQT-WT%cPmdq|BEClrHsU#)n4+WH(W}BuQNI_3O|^py z&R|`{pKr^=Y~%S%7DkLCy74j4^sQFTgQ;0w{SWNV8|;NK9q|u%us?7r)!un1=`^3_>>$M8tmmmZ1I@u3f-{50!QhPWAFae@>c*F- z^Uw77hl_NSanxu3f+CNlBI^t6u~5k|tx0z)N>ha`RB~Kvih(owHY>KCSij31OudQ{ z_6NEiZ?@@)=q`oeCpf&LhJ+&%0Z8dM(LbFh0HkV16R}tpwNmYowo>icRHoQExI8M= z9=F>&u1lp-62WvbM9phv4Y}eJk+qg%gN(N1v*(M@k4K16Ijk5B&86B;+mdzXi&FHJ zG$_W;+B&ZN2N@gil}MfKMqA4#gF5;lR_uIfT^3FYI`LBprd|)CshZr)r?-;brP{-7 z9qnh&&y@d~NQ|ibq^%?IzoJ4!z=p}+oJcIIKtFBkP`^2qEFwQ{>-giB=jX~WiM3S! zU(4H$wdbKw+Yglx*snKvc2OhYvJ*)}y5}bcNp&f=0EQq;Mnm!jrJf^ zb?L?wggw@#r&@y>yK4WE+M_?FZ7Xo1mgC1q#n0rHYLB)xG;2R=)l+*)H@;qbR3e{P z-qlVgtCf4-@vEHPUyrIN; z|9CTD z(6Nx3EcBld@q4mLV&Uow5SG!}4b4Vd?WnSbRMZtmZk6bOQz5_C7QG&~Qd?Bl?H<2A zF5=gzEhMklP8v3OIq+*e9G?Sf2M1DSG%t@9i}sY_{n*rfT;uKU=>0j*VpE0674vV; z)w8DHLNTKh=!5a<{tB;%t1t*Q&PLSI`_}tQlUe#kiE$lHB>d+m!RdDN`v>U<&L5f5 ze*>)G>36;!|3K~7i&r5yF?viF#nf=M3purI7b-R-Q@dnuG*iFpDT6e}*Oe+k?UCI) zYaw)>l7y54Ny`8tMjON}9WMIio6HPQ`cejn5qS{JU2bjLSjbUYx-)sKy#z>s6i2EX ztB?-<3g6>)TgUIZPIXYbJ0z(P19!1j?b2p^)e#}yHqz0!bI_sIY#_wIJIG@ zzF@bMtHk=&E}4G3OAW@~Rzk*6%7O>%l0$<=bD+75n=R=|*sij{eeJz3K>FNlqBO}g znyM#O4?AUdMAxvqf6tlr-ICU*BhZ|@OmDg?pX(#k#&gu1Kl?>n88;S_`Eptf&B>SN z+{8}IanH=D*M})Krk=15aq~w-xrx;;&Fjb7$2%{Kja05uuDVJYe3dd@8Gn^BL78xs zGQ4V)GW^ym{G!V6rMNG}eL3zc39ypC;b8@S3xTW*uU3ZF07Dsmhf=HzQwA%;D-o>R zqEuHdt*KJV)>JO7t&CRrDwq4J)~#G!Ra3Kg#qtqK+3bqIw6f{b!`ENuyG6N)-o>jD zt*VKlc#-g=vg@XoT{Wd5vgSLNDg&J3+7H>h>JEaiMMs@p_T)RNm+fiJ@u~`Y ze7vnt?P1>fv1g7tM?N~u;b8wf(OJUYxZmY@Xz!`KhpIm8$^Lz*tLH<*KJCNqt|}+jQ2iV0 zxg9xG*uLj+D`0^qkqhq;V13cw?oofwQ~&}mk-Xrd8~v)f(VL>YCBgfeApZ9l+ehiT zHOk0GP7hnxmg6ZW9$QzV&3qyP^eA4H=d<7r5n+E8+{J>6a(lBsexQ1K4xzpqmqja& zsXw;$j!_Izn@U3#ij@`KSxQlR5*=J8vhWK`u#zkCLrKvuPh{%~2~Hr4yuQbyTqgy{ z5$=%S6rqS?E6PI>T*lun!3p2To;jUY7_-uMV4Oo2MWJ9nz2F)k!DVt`2~POKIJTn9 zm*6t~eG;7TFEjDkl>Xhi&m=%V5GW*z2bYx*fv60Z;9ySr`i%r9I^Pu`|IVJ7;erJD zocUoIXVay*%sbJhp9Q}(3vMxGiUcRxSF%-S@=Up~k})I{B57THF@~heD#ir!RVk6+ zau#Mwa7rpD@b8r10)GS#dPEAK2q6*SISI}qu*#3r-Z_Lag-spo?9JY;b$Qg`Z0hHE zg>38!H0rO9KEuRNrb{Rk>jnW|ngzd6z@L%el$3R;LJL_Xy;%h0 zOK{Q9&H5f81;}|0NpQ-L*>n|UI@{C;?f01!Y$*;(s+-U*R{9G?`u*6+f5|BfUYHfU zUIY)9;1u;;QM@q{oN{5XV5hV9GJ3QqS7f0i1j$MXE|Xj$!HLeJ0>4&*lcp0wha^va z*Hzf>vGWA~l2u;oEJUY3SX&N#qUNjW4%Tr(9h0|GXwJ=UcF9TgySW#3HOjn_qSFsYBbM9Cqfk?aEl7x#5(y@jsAU@P^E=EjTl>;A6}j8L!R^d^DX; z80D8FH)!F+_z(5eE{qt%>aOHR8N-K9ePL4Vals-*Z}=z*o9b9#f60LjL&6EqtEKmq z=$N%gwO}Hyv~gXk?)H>YTY7xA(}!Vi^3C0)DNF~RW4F<3dZG+At0%P|7NiHJW4<*# zwu1%6xvNKK?3~rN)-J1B9o?9V8ya!mCF~_DAQ+53tuw>7=r-3Vw(c3cZhqf6 zlGXi_Ybg7v$L@75t6aKt#R4{Ne(un`>eW?MoM120YM5jiAL}Zhbc%imYo!Qwh5FCz z2$>{ZFhsb*^0Q}tZtKmy|EcPMrgA`2!SLw!p~#ulYDS9pQ>?NcCWws%%A8RAr(n&D zFLQd-LEJRia?I`Ws%kMC{6Nkiw(pk5VS@R@d|N)-+|A|9eO=&i(HxsE-mLVx zvB3rQk-1)xjUTgThC9dPo^Y6SYe`lwWPkG6FSEIw?6#n5-1Hl^Q!knkIhx)4yD6j7 z`P8wt@j)PDgc#x&c#9@Cnq~}8#^*)njPD-3LECns(bhEiaJ=h#YrSmLD5p23H`O>v z)KWV##5uue4oxWkO9l$8RC{v3Zktlp@X-bzT7w_+xtVYTc6;0`0ml11GXXqepgAqI zG*N4bHk&ZcePd|o0%dwt)VHQ`_2SC;ORIcq7e^QQYHO-i`xY->SsNXp+*Eem4L1a* z-J-0ns)Rzzw$BL)Irg!lWqIX3k%w$CzEo7g02W*YwX&!Pvgezh=Vi^y@TaT7;bkX| z09IEHY56`2Ov&lb92eLxVD~?2D|+aIzjyChwR-jP70RuvYv<3swJN%#>ULIo%sH41 zSO!sEdrNNbVjg4)zlp|$pF^vbubEp@MS}}m-MO@@Be>X-9qv`Dd9zU0n~mf_w(92) z=-;zd-R*_ycGJ-QPYz^<&~gTlMjp&*DN3ifQ~3yPXM@Xgdb9Nx!Gg{&?B?lCz)J*D zAKoNb7n$|cM%Xd3_<3uYzzuexn{~6bl+Huz9yHDAwmk;vC++;CVB<)sk-VO1B!@&J zIVRA|Mv`m2nyNbYga}>4`W4v6eJmI^|Q7&K4i}EVd%L2`qrTha^e`7CVPqo-{*tREK-Py=i`wi@= z6Lx2*Ia&;@@GV~vU9@=lt(W;~Y8NcPXtBC>>C)RrDAComRf-&3yZjskR@Yti+JVLD zJ1t#0OeDWT+$~+o#Cw1Xp*oh20H5AybFdF5=M=C9qP8J?Am@Rstypa$cW3pVV*EIe zOG`h~2F#e3!U$F-aLHlrC!m7r{;IkImbGPxg-;~CK-?|(Q1QNuJq}@GT|aPoawyEj zp82b4s$lhgR(~4u_!AR_j|q#mLv3#%xOdANpQxIu?jgN3h>^(THIvNYst{5$OjLMK zlA6V7sbQP%cRAQ)FXfE4)v24#_GNX@x4Cs9j_BSS#p@x3ckj9LL=rcdLNm%?=R)%< zbo1qAH(wEETWj;KjNR8)H@fr`y5F|OS*f}W=z2fo^B&rk$?l-h9#)&foy`!Pl-BSv zG98@7KOfDYPlP+PEmPdp!IEa}-X{?h(zaZe7c};it9#0gSJJVX5L6u+HziNI_ij9D zPwgoS>@N$vrS2^&c{jFZb(zs#X1p3S_R%+~_+eMDNN42^x zU&lvWda|MZYdWUJX6wcb|F8%qtlhd1^^c{eQoZ3+ z)RhS4R~wV_bxifSm8b`KDFfNq&3?CG4{F=X2yz!{Gcn5viz**KoxnYeea3o!g&p5L zt6Mtk0DJL^Q1mNaMKiT-D%qz2R?&(b)fiQo;d<yI?G0Vz>Y=kgX|h5UJQkk{v2;hA8}? z^DN9p0Dbl-CZ-jT8a*_X8l+rxJz{7Z-v+9lnBn(TC#Kn|!I#n1Eyr`}&g|7TE=JJW zqSW5H*qIBpd)E_UdhS80H}70*D>n<9Q` z9@E4>p=~^Zc6hc`+jtf39YcYei1=q{TV~}2pTmn{?6F7uk>d6r1UtKm_ZY1mT{N|e zEEXl*gk{H5BILARd=!jrbsr`AfrhQyE%}z10mb#s-9u*XP|-7CHE_A9S9^hY2n# zkfrh->K<+Tezg^KnWwgPzNu|L1se;Tl(Jp2LyH{h7>ayf^=nKbX!o{*>Q%qukN4m) zXHM53h1W8scC~xSF8^<3aq!n?F(&euv;}Ag5rHVr=(rJ|eeg1aPnw|&)rnbo)%%WX zTlOP3(lH6aNHee6KBY(Jq3VX_n4c4;8qSoz^E77&(N8sle6zN_{n8nT?nd;S8$>B$ zO1#V2@m+vSRWmEkWQewCt-7WY-Q`lp*El>w(VNJEC&|vg9zU#!%5F8!P z;=3D{1Z~SqH*eP^5GbQlD@SAH1l0D7K~OxSEw!Ix;VV#nF<#1{D|(>DCg+zNx+|wT zXnfC78QrLH0Vgm8wCGta(H^d+yy06IGE z@-?WWJ&~sQUcI<0iEm0>$u}Y;N7gul<3{_V?y|sp9qW-=7?qu`H@u}aETOdHce$Zt z=h0(Y9K&h%oK$-dV(5kvm#Ye2bny-`Mjw3;-(6z2SO9#fCP2CMo@c&aWxadM_uBgRteX;Jmi-oQkSn~3Qf=tHvIIH8|iPzdwyYX@GNf&(?jOplg z!s_k}Vz_C8m+E2{F{)WNhE+qlooEMT)cv4;G|KV_lt)hNM1i_5C)1;t|LY=)n0Bag+Gz;HqCB8ZY<+P2>Vu2 zlMm}6TSCG_n!;IJG7g7&NUcI+s_#ixAA#1{RK97uCsRlRsb{v6b8PL=jm-_h>px&kYU+2 zDj!gcGMEd^wS(E?+noJbo!jmjc$1kQ-f$9AJZM)8AY$~J1bz@SO-n6clZsc#JFx}AI)orEuZmDUK^!+7P`@0O|+V})>neoxJ z3CG8hU)hd8GtYVk6Q8iPhEIubT2QB(SxeV5Re&A**Ea3}o=6;7GV_BvqI`XslhTcq zZq{`8Whf%QKtXRl71c~nir!YrWw))=Ctisi1RkZZk3F_RN7KYFt69$_ zw%&c)6g!HO2)e6(PB?TK?Pl1myA}1O9cFvsqZhM-AgLI8pUY^CAN{=U%%xGs_+hpE zGkQF`S=MA^S~t#09)<_ZzOD9qEU*z{#On&(&hD3G>SlWmYnhu<6uTUQQPHo67}~}n zz%rFh?G3JiAE2%y#&|z?+3+k(wv2d)R=M8q%Y5-h^E8rNr)P%!B*fz}l{0=O_3^uvd zZl_Yx1@S;!wC}PD7Lp=Nrw@rW!<-bhN6I#zgztFw9G|&Nu6S-^Mc~(*46&@>fe0Oc z-cTPx2WDbq@OUwYfEh!iqM9Wo?p%i)b&zh|>Y#xTaaR^?@JMUe1P+GK-T0rUFJ^)L zA)~qTB&G@)_D6eV5(;53H42y<2`GX6+emaePa0*z&UJ-BKQW5ysYysTldBl`Ycso% zv1A@m_J&Z-2)qp@mV}#X$CN^HUa%fcH5j7Yvk##mj6OZ#rnQc($OWVkt@t$GI8Qj%HigT4FttnD6Evo{%Z!%LxMjn%_+{`hr1=f*ga#QV z;`)*oy}G@8RM>b$$Dqw>m8(IrECI`APnqGuOtiL3fLxE zXe^9|XkNiodq**4uKvrjRK9zMkT51@js;(+HvRybL!9(xowU>DBSOij?RO+y*Mq{_(po z>ga>Gqm*b5z49TneCs!(TzpWA9*ygFl@;w z0s4eBT`&ZNA^eY`Bc(ooW+&Rpc>jb3l(;LO{~g8uj>TVc*#?#PPKeVn%V-PEWtAVe zdb6fyTs>pq#4WH`-ij7R5(|*($Mn?zRf&9Eswes<-^ zOY)U7KDi}zIKxkqm4{7JD?L3(qc7ugbg^EFEj9nLz(VwpYlxFkV$vr%p+9#yqE;tXU7&5B zI#Aml_F$+}t7?_4>Ic%?nGVyBLuN_E8n(=z^D+qd}`1K}7 zSJEDDzC5tMdR)x~+9Rz^1rMt2aH`&rC^vS&5iuDrH;$o>(QUJq@7w#v2rR~)@ehaH zH`x(NOrR;bd|E+)Yz6B-pt+cq_XpI!j||p5X^T4RX(y zy16Loz^BtA!FX!1)^Hr;gWCgW(KHC~hH}rI+o5AbfJ(yJiJi5@A>%AWP*^nmGnE`N zQdBE6h}Sm$GYFQWIpkrU08>#I^(dWXjzLP7E2eF1L|}DinG@x}ID=0%y28f0fwz*< zdJ(gqPtK)6i;2IILu-Zv6Jw|mgyU_F`uAxjk2D+ArfxXiz-PGRD-kG5v{Nv&+~}ZH z6KSnQ-pik8^r0=deGC*gS5oYgCH5h+!^Rgnyg&JX2xHPzJHC0);55>NQA~yc>D9!! zqg8aY`TFB15x+1Sm!EXd(1(UR!JFACr@ObcXoix=nsh*l!>F%l))U?Etr3IgbZ*hy zg;qIt9Zka5@dN6Y;^P#m50A-7tzjd8g2&p%wRiyw$m!B+Rwetz%QkJY_Ec+N|C27r zDGh5QO-pUw@{$oX7fHz`#--Y?ZCXEE>dnH&1hQzbB7={yE=rG|oUx9NNodlUju^*j zVF{E|7?u|51#`Rhh8MMsZ9t<8HSE_m{sGU%9&O9XYGabyXwgefXbrytENJY<1RDB} z>3QLj{aV9AM0x=+Mce*qwL!B#pK1+vaVVLT+V;*^wQ*+;y`)oXxD{Y+d#X&^(u&{B z{yfYh2GuUiT&?%_DATs1g9{n&gw%I~#ruNAU8l+%sv0ThMS z@C+WbExQBz(dA>>wuO5BaWn83r!QEcraRP-+KMTLkkO?*HN)@Go@xuJdsFDu51>T{ zjn-iNFD_J2Fn-h(D(PH9Up4UQ17A2i_`C;rJj^u`gvSffMi;L{ZLO&GMHf~1 z;H0$rc3;inJE~AECPULy%s7je!-;7@)$)b-An#kTdSTV-D}6&_wZ8FJ`G(diAv9Qp zYRArGV)rdS!iT~lkGGc);bNQ0xE7mUmI<72R41aJCuUWCI%D1{|Rqf){ zRSSI!E2EW4WJTpdJQJI1u2hEBfG`-jypk~CNscw-hu-C?pT$ghg)@u0$3?P>3Z2vC>3%4TZ8z584W2>+jzBo8R2`!v}HQ z{ovh}E1=oX=x?1;cg^uRFVbD9o5|lxS}(tEmGnNYC1A+!cedQ#a=R3Md+Qyo^7|dF zcedUk!ec}>u=kF=VJSk*Ui_2Z2X4YY>3zr(6P_3%z56!%Hcyb=hdeRlVYl=?Ve^E| zKIwfR@C7~ePzV^fx#;fk=OCQ>Uh<2fzbKKySM9xKuUz79`W`-h+gsOgdNGrwqg($m z3%|2-%FfYJ2B<`GiLcD6lG|HvZ@yE)ANat)2lA!&9uM?=um`;l5p`PhV9~?9B!pfM z_Il7`zHb^_5ObTC;^xD(A-FOULQlPV_1fU~Z_st!gu5q%^|3v2!xK0@W*x4%X0+Sg zx43w+8D2DGNP)MwY~th+dMDy0T>N#o-TC}-yB!3&#+RRO<{&@cCve>1ONuTDXW}88 zvMEBXn-`R^hMn?=UmH31;~Ci4$#} ze4ua0ycgMQ6DJZ$Tn0zFRv0moP~0eJ3Hug?FN5c54Gx8EBYnz1Y3X$nCr-W+FSsZ&PfsK`!K?tcdx9B02>iko3JH!(4Cxi~=2hq+ zflq1iOC&gPVs-VLIYiZrKXLy2Y16K`X7XgbQ~Hzv^AdGLrCZM_m=Q$yoa*tIq{PL; z^$^OL4lf<$v86d+H4>{z1@&}zFc?I;DJVcVPoI}~&YbFMi{QkGe!rLV-AsV+ft{8S zk{PN&!O|WUgWT>OJVGhz7|q0Cv+>uJW)q^nD*=Frn`H5K($xxJv*+L(Wib74BY=TT)Ihn$(dgF{l?TT;@l3Q=4EaKa)4589|U?)*X z(-);it5wiQ=`t%CO~_+bwL>3eMxdHbSF}J*;{#<)*t|r7idg`Qt?8N;^{j~S`8SuA zQVdjvRU(_oIYK}_&0s8_YpWNpP}VG7Sha#|99offAv@ES_q|6;oxZ`h4lrrO&6{F*93B^Nu__JT z+m4~V6r0kkkBKPOXz;Zj1g{YA5$t3P?$VpFP_17BP$_JK2y@d&1lO+$g0Zop{)0W+gW(kwYex_srV~ z^Y#TB{D^HNTl6MY@?FAu9>!9>x;F)ZhlJeaAwjyPnc?%^b9yUpg#=ScREwD=igE|w zJr%1uAVdOg2>kv6zfiz`Cg39kUl$AbZZoZ8hq2P{2pjxYXaDY$+&B@v538S+JBppY z&Xw;c8;wW&=xYPIl)}bwDY{C7V{FxnRZe8o0?WK$=8Zgut?fXLQvP2@zRh_4PReH7h4e z;ouEho&2qfJQx=&UOadH;^?xS3XUp;s6^2O|g$6gdmQ=(CZ zl+C5E-KAGzDX*&*U|J>j=1w zb06|_K13qC!b^mR(T#rnm^#_nyE{G7hdH|3Z19h5h2e2#C&{rOJBm*PKaKC4bkQsQ zsFl$5$$8+F5GptWCs<4WZiVbI-R9|6Y{uY!Uli@0s9ehawIZjmyBw^sz-{Lk6`|JN`lMLS|oU} zg#U^JAHi<_*pX@QH0vj=N0TXE zBEkEbiSfU)CHOE2K3{@U#R#3R{78b!C3@9_4@nov>UfVz5hz2YERe(k+zX_%dJAPr z+!!Lkuaw{vb)K;7zbC<|7qqSw5}fd@Ec_q~Ug{7_Nq;K^$O->Zf)k<5BH@#4@NdE6 z&!u2F{XD@Wt5z3@Xk`+dcxio-yIz9J<-0ixUMJ{OoA6kg$9Ic>+p{997x0EG_yz(0 zrz|)a!moW2TyAymN^n*A4t!ultNBn0ppxBU(oq!C8s-@#_^qt+LM%^RdWXXk9GD#@ z;*89KFBk9<3C<;y^}Np6n>&5|O|-I@gfh~~0`3nGM;*eAh> z&L63Rr|YN`FpOQ5$SJ%+ZWM!sbdW$$ycEU3bzK(R!8YCL=-p3F@-_*@$37ylBMKK1 zDO|Z?L~T*FmR}5z;1qU~sHiI?IMJCV=u~IHX9@Tk2`=cE1Ez!{H*J55?od)gG`a(1+Yv!it|?qPW0at^uLhc zBpIUoSO(vlqM4lsMd(I-J+5gIT<-E#OK`%^7x?ik_=N)Alm#DV!ea`P0{lEl^Ups^ za7tjbAoM#4E||h2d?3LIf4so&lHhV%aPrcio`^F;hy<%oq5Hd(9>q0=^^Cw~xt2Yi zau&uO7Uic1gDn)?H%o9i_C5(NYvPa21OJ||wTV9cb_pR`X2J(@AO*Z5%#j~U5iVu7 zT!cKz!P}%@89qh`3c-Y`!IPrQmEaU+rT?!IT<+zqu8?r)_iw5Yr_rL1v;quaXxt*f zi6K^XER*0A=N^&D1_@61R*(4;2~PMH{jFZ9Im-zg%!*(o@Sy~k6ByPHRB;h;f(!Mb zT%HAY6B4eO7Mu`e#j}_Vc3@UAZiORQruVP}mpS`u2`;zlN-+Yp7%R|}brM`Icfy35 zeLF=$6`5C&d81dWa0FQ>!9_335jRS3YFxL8#`RAUTy&cp{|6HMl8lnU*k1~e+sbwc zP6@0N3A`x5MIm_tA4zb+UoY^_N^ncOc=|oWga(yZ=s-^B3JES(!6XSz3EVFdz`AID z5uJ1bcwQ#KFE&y5-*td0ugn-ME(QLSAziG{A;rnd`}kKs;hPr zp3!tx0*A69Sn$JHaH}xKvfvi}iSxj_&Vi$)TZA~95NL^-MaY^3&4ydMJ!HeZ1o#>{ zzAU(%#E&$MWwl#`EEbUyFkKeBPE_mIEVzYVdLFob9(V=dX-!8s7AIz(C&Iie_zsaF z%Q~lE`dJxTnT2n`*Ja>l{aXQbnSgT$HJ%6lKo4s6 z7W^Kp(YH-xUVoqdLx&0V<6+Mb)>xkj{)`1)#s+Jp_va1Hz0d^t+z(xHdLXN-w0UjwE@eNg zv`xsZ6P@vMtP;EDJUZXzO@lmaQ-f_x?)L?T*o)yY@%l9Dc@IMQ7afqdv&ZM-b&qZ) zbvNIX#8x+v-G9nRagodAc-tDu4+|^7vHGC8eu2}~brTzWG5i__-0sf3dV1h3cw6gATiFas zH+rS)A2s&zbY7k+D}n=OzHtb9r7US4rmJo6drIzSEsgHJuC23y7dU0EkD0K?)`xv3 zg$*4>{Sdor6y5I5i%sXAW!T0Q?xN?qVA0ZG9#pJV*2ip|i^+M*Y1wx|UfPSp-d7Np;kx#`CzESyX_ z+Oz9Q*yb_r3r1l}$aB1wjaFWRa3+@4@Fm<$p`NM0{?3zgnD2-7q8#j-1gEZjkLC24 z9MqnIGik}OHRCf*rdaZ~OJDNVFuiHKJ(DQ7l4dpuOdZ6@)uj(E@Ft&O{a7ZaO8u2lN1DbypCynNi1Sj&6mxYdrkx)~?ZVH|VZME8c=G>Fj0 zP4q|*E{iDWs-UqKKGV19W7742y%au&_cvC!VNZvQ!+i9LOlbnA67E1MQSn9U0BafG zzJOhQtIZjs#kGgv0C^Mq7emIoa56U~K215HI}$5B39J>CBsX=K_B1(%IVKC#6XPZp zY4Q8esDiVMF1~FAUwwzn@r|pz+EcfAb#<5E>~KWWmwW`--PKu!W*bwqjaMVGp15Na zt-VWUgB+pT*vO%dzA=r$(`myUdR9JGfLFsk(V4+djD1=q4|51YAqhffC{gYUC1(2h zl8z9$OJaMA!y!Z3HY=1El_sk_^+{%dXGnYM1J&A(h&m$3Al7I?lHLiy1sBUkPGnNX z#u>)PA>(!9%~U&I1wx*(PIN~=2A#k}}#Ucte_)xwJWPqhH-I?ncxX*;W~rCRP<> zoYg~#%KXG)pSHci*EIQTD6x1viv1y+c&D_Y_-U@tR}0RS*Qoq&5(hrP76xonv$G$z zk_WpGaFj2FNaq5@yD9U6qMcJRI-4MM?#kOVGM4mS*3e86l@^d%kIYW&Hht(Ot0~14 zb0K0ny76gnM$7Shtg_IyoSJSNDA~Q*-n1x{4lilN`|MO^y+_bodhf|3mulCx>@vYt zGEo0J($7)J$Gumo{ia(oQQ>TQn5i)gOzPx%9&TEsX3)|2v1fHU7!I&ec(P{Ju!Y%?efHj0hZ9$0u@U(Nb0=VFwGcTB z7f^qYFS9b?POSSI)J9?@+-hG7v%!nqy|Iku%7}r5f3#Hy8Q?R^;OT4}L)~ZcGo8G# zkEhxvHhC@$&Ys*98LEWSx-x^77#mL5f^!n1N=~jWO_VxPO}}vU^_qprWHxlE?g?F5>Sk9jwG~c?uftw0+Dw!c#p6EE)027PHE?P= zRx;0?gRJDkSHB3_LF^Io8u(6YCE>-4zWC|4vF%gyM|sZJAIzel-m!2YerE*~AZ@0V z$y8=3YDOXHRM*n-Dm1Xv!Nl|e?WyS%(DQee(q<+HGc>Tc>=qR(fBu+G%xX7m$pKe) zROfiVj2~Z@F9{a(Vp+czgYgy{uLDVR(gK5}L7CJN?hNZp!GQ#UEs1W}4?JBz+EbG% zP_q-*?wr;0&h+CknsToF_pg)^^^PvTO=Kc--+dQURL>MS3mZ0qdS+q(HGmd z{pc4ij~msXpbZ~j&-BIG?f!4dfzVS0wvTGE(Aud{|hL$z#R% zL}{rp-Dgbli>)oNSn36n<@mS5$0N>8jCRr1c7ev(m{2~M@gk_XZy%t#Y$E0Csv zy&hiEmz=`h7yHqzpG~!=BS58UPu=28ziXxedqGBL;jkE(vMI}yJ(xx%OET5`b2!wP z7g@`F#|GX?BM7T*N6m#_OD&T5ygAN3Y|$HP{s3w@2Z9NYpC84LE<`AyB-V|8 zWR<%gd;4EuG2iusyI;&&XO}5B-yXzE-M|dA+g7w&>>p+Pop1dU?{aAyp8`m99(^-; z;QK;A$CARrDnp~S{wSF~@iX1ANDePw@)vjQ204j?@rSU zsV9QiKgzpCGBvZ3Tz$?44oOebL^Yk+G#y@n-b{1K^jkq}f#TEE9kEQ!a$6m?hw(0{ zIpbZ?9?-B}uTI>B)oq{HOY2g$HQ%KZYxwj?h9BU&F$s&PXt{B8Xmw(yQ%}_Lb$_(S zRLfCYvO6s#*PHJ2ZgoT2(yEQmK-8hi)U2j%O!B3Rfkw7w3YMV^djb4Yl4H^Vrhw{8 z+J{NSP+Rqq12u&x0d3=Yu>L}7zZ5%I^6}c8a-Knl9eymwc|G`@W*%q!YJUdL%vhqr z(a{ZhO6Ic=LTOnV_yCiVov^w4vfTynmD>DUK6a*j^D#hhmQ)8f1h@H!8Q2p?5`TVz z5&ErAVyS--wmvI>UG1f{N0XXv9?q9%=Tnz~4NYDR8zVDHhsK9kNH;HRe5j{O1Ar%1 zdmhNVUboael}M7PQzQZ zIe(zqG!F62F)~rp6{Kx19oXP()ee)oo2qJazHfO9IV&-4Pr7vaN538ZLbu@3<3xw5Pf-;#t?{Lb!i3rhBfMwMa4 zBNt+AZRIqZ%v*_G^c9n?zTHs?Ej0U_%~wJ+JMZeH7-1v z*#<1IADtQ8iHVsulnJfWc;mLb3Q9q;?vb5>R6AdfH=B*x>*_N&I3tsxnY0WKZO4sm zXRu#b?GS9{P|D>iCurWmp|PC_@{@ zld%)DC3d3x#^E{a$feLb+n#pyV5uLu`>-#@IJ-xndB1K(>Y(=QwGhMU5W^aX;hor< z3OWRsMp-GC_cftLS%|&zGgrSsi3)e3)MFGH&aAl&Zbtjq$=~20igw+eJ0Ll7YDR3S zq|&0nIc(n(IemLco6yj1C$G%j!D9P!irBCA=V+DW5P7AKJCo8HD=f0ATzzX5t+uLO z9K~8JU(EvSKD`_cM%C-EK5f}tih$K_=F%*4#TA7uTd}Z8sjQ8zz*?_y{4OG3Q{fHl zL?yOo4b8U|u=Wi(J$n)f(+N9+G=$y!v~A(kS>hA#T9OJ}eIctVaM%W-Aw1?C&kCjM}bV&FZmv_b#!*fi)_;~a7o@g z)#1g?t=xV367x2O-&p$+m-o@7E-$P2J-n8GXaXN7=;rO$3P~n6;RzzE)(6ga%=jJV z?eFF-pSu{V!_3=N=52;~!+u0?g;rOaxBJZ7PuMe$*!puf?}ftEL%1|3Z6-$2yq#iG zC)oP4hmWWQYEQQ52%M@{zJ)D_pZ=@UtKP-|>fQX-Z@*{VlvB_pgV zC+Fl_SFfmDEO*{Sy$K-uS)r;8hIk^{HX!-J* zgsp_RFZN>W;Z7&juvMkDfo$IOuKpLB8KTfNi>ubIT(MgA2$me5x80IE;Gx-_y{sMB z|N0j-;9tOZV?Q^cngxrh7S_V^dUe&x%Eee|IN&`vv0v~5ThXJx%E@Eje^0%D?Rro3 z4z}_MHVEhKEFWg}`g`iYhh~1J#jHYLn`^jQFJHJ~t(hiwVula1q6lv@{t1UZ1N!iz zYmj+M!^evE(OGbxc%PpIFQs?Zr{1RVuZyMZ2<=?_Cw^+p51pO?q@^Dt99*xPw{%*i z?3o`rdk>)OG>V|JStzsFk!ozHy%a~=gfHV7-~60Kak!a+`&C)+QbA*i1ee_&ZeWiW zcB5tzd&+k6v*1?jiT^g8(=+>xJP*%v zok+)xK?q%x9OY{rJ5t!KcR!1>6f{IaDP%wC%q!#+Zl^F@S4hD`p_HldoZg&wOGP23 zXQ8ZQ`$EXvWfYxl((GnFE7;@j=%N_(8^L<6a+ulnvHHtg=A)lg z9<`Y=F^sTrEtet^Sw9Qx$?4sX9xarIWE9qYIJ_b#csx7VmDjtRQX42R+GR|@e~TYo zf6aoAH^Iu^v*2S{{ayG-D}8v!Yc9cwh1Pl5#>Q{G%G~L$crx2>g)}{2~FP z+tm`B=%A&U`r{_nb2W~ix{D2d1x?4>znj@oo@4b7D2BclsQ@OQpe?kQG(OgJ?pxe?Rzn&u-|Gam{PSg&3&vT>L~2@uoNs) zeU6>PIvTbofT__xMREMfA}pZc+H50JSLF7N6D!K0yL zrn6uNR!(692!2rs>DQMi;o2y{31n5){Sut;tyc9It6%H7FifbM@uTZG36=c&A{rI@e)00VvL;#C8kJ}3SS@?UU;2}IXI0TC^C?}Q*{76C}3YISYLV^>%r71>x zh)$+mTD&aHf?Ewak_AT*t2u$$QUK2zhr&}Xkq1$>PJ=S3CphqK_13Ha|=@IzZ+ zV7C-ZGU(W;olub=S#Cl3gWhga^>OcuDvt^hBC;a;b`779_FY^kE<+Vd{w7F6= zg3o6AW(WhVQDpSKEEKEaesCW6Z?fQ}g3i_~_-p}xISY<-zsH0AA_d4rIw`>^&+`PK z&n39rc0Ixso@fyMD0bwu(=_ZtY}Fkw_qf(!l^uCv2bS!Z_Bf+IY#FXyRN**adDawK`)F6M@(rD4a(>|wrZAWr55V~5{jHuFbi&}#oHt}ksL3wP@e_2 z+5?l|M1QAcptVZ@M5t5{`fC<^rGTfh;2{C`Nb8q`sPYg@67kC_yDsnt_PY4ofQSgV zF)Km^TlJ-oS1S)|vrw$=sy+)oPmuhD1eXQqX$ekcw*=x3S#XrmoTPg(E8u3CMY_mRd=mZ(wKf~*L`LZRx-B&_=-xE*jyPJY5;2cDFIeNwdFOK_RoHZ##z`K{l(5|$;DMC215%+@`QgY+IK z!l{E#&dSLT9}?1Gr9&m9-}kA`aaj~B_!437Ssb$9^T4!pq+`jUr`HRy4~-U6}>nRIugD&utf}w$p{?x`aK0 zO$=+*VK?&})Efn#=d-EyZe!iz?EzMKf6kb^(yPokV^#K>zuCs9{n#DP}Myv=K30ajXx#p*s&{K8l8L))Duj z{wDbBWN)nb%5A9m1|j>^IIwfxKi9j+5`?n4ysYSi0WKcvMJ+T_-b)2Qx5-$3kCs#RC_!{2Ns zc4KdT6~WkN7#r(q!KQ0+;-@v79|lZp^gIAxqI;N*bAeP4&X3`y*`Egw9BDc3(2bkn zH{Eoj3eahM0LOW2!FVg2r;hP+(!%j$c>i40?wCZz65?F}_;P?236YBZx(3AUUagmeS1hl)Fc#h(XK z4f{*AhudOhC2wrN;WT@L`%Wi6GxoNeK_2$&-=4%#NUeHtYm?(3 z&v{G4XimT(=j?&w9Z$eND46=s+M)5&zL+oG;!3^TavJ+2kM`>eUewh+dhxMjK5Dle zwVQO|flC24DaJm$H->RsDS5DxTSd5S=X1b;CtUr9Ua(P5Z1h*qog7@2;{kgt_rt-7 zx^WPPCYEDM_W0+qH8Uek3+nZFa)Z7vsW(kmaSEAsFYO!@XpWS;zt#h)lwikjfQ;P$ z)l?a+`;MntBkJD!@|rsw!A8%R`(nMCbQP6NqSsiUC2_d$bX8=CQ~U(w4mV9z_0-G3 z=SewX6ZcG0psmQ^HBLLML(;W-TY$iKG~YU!P@lsee!-_B6*v{->r9NUNXg-v3nOZm z_H2Hv?o2oB-f75aD)b0^La^s`bE@sY;eB1|?&NE9ls7+Q?uFN$^MO$O(?Lc{@xJ(J zk9O}sMA?qAQ3El~960*?AUqd;s=e@O{M4Z0lLtO1Iioe4MjaKOnAGUFI2CGu>yd*_ z-@E58fIg{e4R4)I6`=}umKjxOYYWt*%PM*OPO1pDasjrAil?gAN((no4+%#X*HejE z?%;FOiN(*9u3dwp%<}bdQ+%rj82hkAHq;g!JUPp)7w^#x1SP;aSMqv2vDS;-#cMSn zAYKqFq;NQBa*VMrY_uQ-okR)`YpTVU*W?*3F_UY>Cykd|j@b3$6UBQ4IihX2z%bJ% zBTW0nu<(+N+#F4vmT*h<^k1sIrw!=MW9%MI+`_+r$fJ-bhPA+{g29zR})(r$ba zx|Bpkhl?4=t<6U+oj8)~Y{YQs@iRGVXM~?e2KY50nDXz_p1r{dhs044G;O00Z#j5_ zZ!A4J@Cc_!dbHyaOKRxRhR1yKQN^QMj}f@%#{JPg+6(*n*@(zbaZA&Ty&cHXjBO|@ZcZSc z()jcW=c3tFYm;B$!hYZbs8guRmJe*~pPsb!jfLBq_k$z#XHv+8cJCsHExZmzpCS(6 z!>O?KAJU#4yy1)j3j7+Y$*T}2v7#%au7fwtNYfMtnyIm~8vB?JRF&ZGRobWhzaSRe8QwenB#JD@|_+e$Z{issParUN775i3ra`GnR_NXtIR#|dJ0m>-|8?>LtK zHLbVV;i%PIG6M-;RHntYdu~9EOHOX+gB|K8HO_dzrgnt}ca`i~-HGkx-`8=T#H-=> z9xPyjFVdC4l2_MU4s{xN#ECN?BEF`T;6pUx(_YvUKRKu=((TBB!@;UFm6Fyq1>o4dh}9Un*V!1k*G2p}_LZ~D_&Tr|<;G5!EPvOH*K}j=bY1-t z=S+ScXrL$kg+mM+eqK)$v>5}vYGLt#9XY;gTq&5Z4%a_M2t*`S9W;B zc^YqWYVZ>S^R6i`IbKsH5rJHXGm9^RI6Q{zq+sL3FT}GO&tFP#oY8Rrpj7fV;q;mf zWd3Y<$wBRI6&cPDr&zET8f{1$=lE$God^y?Y{MnHw7aP@HgWm+Q$Q|ny3NKTltH1J zG5RA$xp6%CQ;QAcD=HWE+h9Ws%p^Xf%Oe%{f53*CTqu&QXwS(z&dUopR^uQy&g#^G z*;xMpw%E!VC#uPiV9@G6q$7L3jyKU9;!Bet13Tz|NyQE-Hof=|yqYUmOAj}8zjV5t zF@9Jx&L)NMg^fLAGV8`Zeqey9Rm74O_$^biMNl0@q>LzwKC%s9|8+I4oeA$r?>IO% zuf3Yi+#pmR9bF>X2psPc-RQWcsbE|=n!Q2mOJdZta7BtwbK^Rh8*XbOlR0T8+E%;l zlG-ILt&BAN*snCBuc-f!cBs(f9={SPdAs%#G!<{~d77Whq%G_i5c8IbK}h0yXmMBP zJ9-RF_awA6SIz&wbouA@__2S`<Wt;EOf+VK|wf*EC)U-T?DDh_lHLTE`(ly^;Wb zIF?R4JwqoUBBHzH7>*A*XLW(8Y0p5a%Cu+Sjx=3%X*j;ykx{2S8dOubY37$$v7p88 z1}e1b1|ASHV((zlg5#Xi%y2YJxXCg3J~v#)Rh+S%-+1j8=rOSx3*BNms8m&38?XKH zd;w=gfJMnfPZ6|ZF_}_Zkq=y9{4e?Q8XqY09O2la)P5-v))O>dn@UP6oj4l#feYJ5 z*UEN5bBtvHmUBVu|CXEY;9SK2OKw7GeM{WT(rUq3g4?D&z{iY-P<=XRe%Nf6QIa@e#uR+=*)b2N!h8tOW3zSjGo0CDg)c*RSbYaa zG3iZz^w%NBQ0`V>1p=>a8a;w{&VTejiBK!(3QiY?>gb6g9FmEAWV+hSS_2FNX813| zh>~iZmRNbQV45Pun_=1?vxVVQq0_(|M<%N$c*Y3}Es5JK=tOZ=IUdcN1#_)8%8B_F z;fF|LjgA}d5uE524Ma-D`?UvKBP9!QhSG!0?pCd#9s^`ESG?2GOK=3TcK1?1JA4=? zQl4-IIgV~F*---v8iQ>r5RMHC$9Fp5f-gX`abPYEJ$FpHj|Mm^)ew#(92;z$^+gCQ zA8X;6nN6eVK#Tb21siAhffu7kLD1xA8nG0J8~u$aTH{P$nvWJPRWv1R>YRuDPZI|k zyBXq1%A&w3Rf9O_z47`l&&^xRUx%0$DMD(2UF`?f*Jljr5mIwwIZ)1+AsKzsip7YqAr|Vh_%@Lef6^`qq_4AMNYJ(U+7P(}mwFK{W5Irp& zGdPc_OM*#0-vY7m7`uS6jhHM3%`r*3I1F9<45PoTjz-SB0&?3lj^Hl{C*Uc3Vn|#^lV<} zo!Q-Rx?sE;MiYzpsnlp-S*1qNAmbDi`}!~{H${_j%i~bN=XK1^DkK!knjxZ;v%{&K zS*7F|NhM#GjSQi|QZZgqXzm+eZ5+%lsfk6Dp=e-~@HEo(`mm`S%D;f{keWCbfg2Fz zU;cxzvj~fch;l(2%Sjw5pkwAaCFOc@%|$#HqNS#Gol{t$ugX)&1DQ^UB-s>SURaDi zNLXN6p;}{7y_#5{PAx_#1gWs5ii2ro>bP?dguj3TeK#=xiLZWlHZ;+@y(5i*tcp;d~;(WCUvmX<2U}VtO=q3 zD@CnxY>J3Tp(4{wZfCMU{^zerC` zkv+bPMB%_8W+&c*=MGu^+*<=Jb6r^Nj2LIF;9UqVSMd>%Pflz`mZiywClM%3PV7Ob z6|aet#pf&C9zx+jxWby9!1$kL7{-$2fMR1V>W_%XFFwnnJ&UOUYkERgTWDSeA0u1H zZvc7y9L$12fe&X>Y{thbPBEs! zuER`c%+6y)>_9|>2)=VRIpVqz+f5|^2&w~jO5u-w%01>XZS-wgeb`@zS2In_Aef0^ zz(TRVE;1F?icI{@2Zbjs3L-I{VT=PDanwI2f+-%JgM3j&nSvJ-+GPqrMhQ|<9=syD z*Z3IwcGxMlI>SF(i+yw~8$#Ns+UQ?LJ?zW!8CvF|*h_ z2M|lS*u=R1uZqoQxTw^z|4wcHZ;A~z@!FP)Es0x>Eye$8Z8tft=GAS9 z8btjoErZJi6mH%BWA9zSqpHsJ@tI6+KwzRE#4Cg5Xd<){i%Ps^Ab~x0qESGpmjeg^ zqCjG93tEXzKfEP637ND&nR7I^8wH4xcL9K`=-Mc1C#_god^-O_NfpoQH59cu8Ho8#HOJJ2FjR`f zTCT8&iaDt(9UUCOY)c4$fgvej`n=lB6iy+ z>Ot0mm>)S)=tJi_SW;wE@oWl&fwDFKLtwEpGZtV3)}7DXH( zVu}e14E-z0(ij6@d@$|iXD5E)94-_-1EgxtHc9b}EiFcq*xP~_~A}^r@GBa5#hyq&X1MSZDx+%ug%`llDgNsTLUx04U$#h=ukWs(%d0+dqn+m1SFlcWXB0pp3M zMdi?Vl_r8k6-E`H_)4KBh)M17D@Bn+6UWD7R#AtJFmwp=S4t#3I(BnipVE+xYG$Oa zWpe!yt`K1@a{vrQ-xc=#oPLg&${ICd)SSiQOCaYHS~>R@TSt*yKvtqcL6% z1iF~oM?mG{sA0Eek3^Iv@))aw3u?;_Qunakm5P3-U_Q=%v8m|9s>YP6NV6>krfQ=Q zYopwzG0a8jK`<$jg4sJrrB~HT#>i?Z7uC|!U_pFXE#=kgBZdrg~Ak*l<(3@{-!6f_#-%hW(PD z-L;G4P3_9-{2R5)b_O$!v?!&~rh4UR^@5qfMdOE4)5fN$yi4Sx@*-hs zR-SN3Y5rsmr<(68r1^fnHs3EtaBaRP1JZnN!+wuZqsx5Hk@P{B@4tZoxBV}TxWBmp zH}7`*`Xg=>Q&fN7#DLqznC|P3xWBmpH+oAvXSXJJ0ZNXjDny@7B>PK8p6GpOp)uJ9IpY522Hf`7F*JO0 z$xf!)_Vt+TuNZNQL6#}EZgz%)9dO&qzVh`(+@hiSMh4tAyHTnqbnqkYZ*IUn>0cXh z>#p#B2HgJ{aHBDlrb!qD{xjhI&wv|!REyI1t-u95fJ$UyRujEYvjTN=l<|3uhXqTGOuTd#L@Q$N?*g zjgskl!Z11c0q@3;DImRi_X`rVm;U>qu-gqrCSh~`>d3MhRGue#A+Wah!y} zEcgD-4{1e88fOKEo;h33DHBPbFEAsn zPyEI?+dowNe(h+35a#fo7i4;|LxD|@;mphW#N(mj4;n8Qfo+=W+y-wU*PiV~eT7*F z#1h9~sw6;5(P7;!MU+X(92)e&+*QL(9qTOGep*jy%^3V2b=0c=A9eiyRvm3#Fc_R7 zHb#nTZ93L*U#7g$sRNtJ(dG2unayWt;ofslbo@8?@LOR;{}{rq%IN+Jt@t%1*jw~8 zPsnkK0XJmgB0bpMdErL#e2ESaay(&?#|PNLhppfkvE#IWwyw6~Ep)NtsU01^iVKhk`2xhacN(#V& zX3mA*t@xB(up(rGTKIM$3~R$a0m@(DdeW4e>TMthBEM0MQqX4VzAA< zy(#b5@>$dtihhRu%4}S69`_>5#}7akb8tvqKMN-@5H|VxC@iiM1^Ga#lzSI4Hd*~2 zNV#_*+y5t0P7$oJnc9k+^KVMI_3F&*!_4jFQ05n~v7EsHYjIr09$AMRS{i*cLb%lTXoNf_c9ur}AOIA^sYRQD#hV&W z@~>EI_Y)k&(-+|mpkT~XiVI3vdBhj{{)%8_(Yz(uR#$t;lKI}mpD>S#x(dfpbO_o= zv#0O_8DU;&>?sjZJe-9E-|3Oyww-0(y@@xv)<<_0Zt?CznsRW-^(aK2Q@pwH*rKj* zJl$v6T^%^9sefrK=gHu<&a!CEs>Hip?Wnd!C0>c{8V*^?vwWhjgMiqAIlHXLm|(_; zIvkymUw~7Y{5RZ(N_-3wbuC#(MCrlkyS!HTsKQPGzXlk8v$0b#J6O05)l{Axo49zk zI3i;y{zW$+iFw=J#_G*LF-oYvg$MDVj><2O^E3`jH~tKX7A*1Pkdfo!Iaunur>uDs zx6Flu{`1?d=^JBOABr&UFP%R#E>(W z@xYL`g3*tSdDzhVhR!$^bC zMC?%!4aODT&(x_e@Ia9U3%7YcE%UzB{su*ORN@XW9f;?oMKOTD0Y}KSbnrD0@;a(? z$y78r8?e%HW^`oYAMlvXK4_?`!wZ3TR-gyI6oq92b_!K`>1gpbX7S77rdGg0Q)$ zcUdHLMXg$W6x6TNV1Yol_R4lOSpF634s86^nyl`XslDX?vdQXxDurzvOW|s>a&?=9 z!zyyVyv-^(*fuNKWNA6uv2Ues&|T2I$T@jjH%jX_*f;1d=w9S(qjT`B3fk;^p*QCA zy5wzc?8M=d=<5_Y)g9w0CJxxG;JC`oS47imEHl+g*e^Ja?p9pMHvs zgzX<>TUYHi4nM^H`B+7c|Dl(B71`0}{SVDg_l*`Ooq0E7pRPKx5!d2H-p#de*3q@- zFIvUV)?Oz%V_O>rISI0&=yJV?J5dv}urI)CI{8pgXgEvh7; z$2e{AIemZy8Wxyw(s9Vry4)}hQ^XbF7zl{7ba#Ur_`e;BtxJG{hr9(B2qVIkWy0%)W^ZW^-FO z`jUBzU!t$=q>HS7HQ%&9$sWEXu61qRT7OwN?$MiSMF-`Bfe`L=HyHp!ozz_9LB>W1NetOjw|`ORP@oM81+FPguh--JvfnEV~NCN7%EWUHzx&d`xo6P z{(NN0RY?3L$n}RkN}Mi8FXW0d)_RaQQZrJEoifKESARymb*y-hm_{1 z!E5I&0K(DFtoR_G8t)cjLys}i=53zmI}s(uI`1koE&##Chk7Hz+8ILuP?0&`dciYU z1O2X&`QyQZae?&tiNBn1*6)7526u>Wu%2$&oM?XJn$v!6wYLowNYP&FndxwDf`b6O zd)JC%lCBcv6UQWBplq5RFig&7^?~jq%ZV)ZUv;8V(&ws6&}o%nl45>hWUF_iZ=n6e zWW*#7@WrV%@to6SE>e3Z#Q*1!Sr-i!MJ95<@4ulR1_41HANhmb@!uAd9*25ve`);p zOhsvY>G?NooaQWX7KIEag>gJENYoJ+4dr8;FuF^-=JJWk@dM{RePkDwqSc(|FWt!{!^rBAsWPBl9;r$(6YjFPuknz zdlP+!ixd9HK{>C;f@5gK#Am(4*^VWQ8;hXz))Q5C#v+yCgV zdi5k|2F`blK8K+K;2gLwCby*n+Kw+{EOI1NTBBpLbO{kVN? zzp7W6g2bEA?a1AN_Fev>wN+~=%;?(oME|1gGA{nfE!yr>2`cl~gA5tqDO(@nFrwf^ zHjWRa(Gb?c_)(`JtFcAxz)=4UH`5LnAG;%j?2hiYo__JMw*P(qgm+NeQw6;*hE{78 z4?T6wDT97^9y8zjLdc6@DEH7sKL|aoeK^I8V?|N@(u9PJ$wm6F&$b@d1ti4cg42PL zT57d#V2Oc=lKTjudDrKr`VM*5JHA8h>xYK@4|SscKuN&{hwEWeTOV+TXfs0CD3S<* z6NO7@*J8L_X^cxU1?SyiXjY)y`_EAOI(mPD#{gi3&!JGFP&~K;^F~ym9k^@#4X99n zDimM|#*PPQk@b9s(?7xz;c#>ps)8(>whZGPdUtI(e2wnF+o5>t+Dc;`j@8B!y%_O) zTRcPY5ne1zcIIrt@mbm7;tZGpe8?J=W7Zo$3uq5!GFiha$xG8PrwOBJJyk zz?qR*PiQ@~9-pqW-YWjQ5l6h@+|3SnTVo+?`}%%(?M(a~hiOCGN8=2sVVBautX_A~ zv3=Lk0#8Qfe`r0gcy50$U={6Z9o8o;FYTF;tvBD5HMCz+x1O0S0B7Vg>4^~{&-PD< zehdQ=%R+Q#*OqvMRUP^==If!Nu$(7p&sb2djn}1si5QoRNV(k#7i&v-Vr4qA_}i?DON8-qtmJw!oU-XMB3h zMp+tk2F~{NH{r<0>(0V_>nlz~U0b}D7j&*bjlq`vK_u=;4CP=du7p4G<;dlg!hNXP zgx=`AAYwKVo64_0O4i!GvTRiBvR;ptiESP6>jT;?$8ZxjXUDHswY{$_*Kp&?!Qq!< z_Z;HyC@TOv9!+8pyus|GW3UHdyaJ0_#cr$kBmbgj;j=V$eRgTA0i&>wHJ1eE=9b3F z(3a6uAN^Y?q>Vq=TF2Ea@oQD17UT{9{?87!cc^x&tg1`4Sz?2299Mp$NyB#JT(V>* znv-oB8pOYFCIl>zZn9YvHBy;u980}zNIZ>eQE(jv*O51OmqzF2 zLMI02mPWyG@u>X9qvg?Us1cL7VHIMC@=6BmyO$TV9{4@3B0XIV$>pylE;@6H0`R#|+ zS-!E^s>((+Hdf5`$FCiY){#!Rh7;7B!Ag`<1*K-iL}`b4`ApSI{KhtTk|;gw!hGoI=l?SMmAH2k~ZTeaXQ zKB?qI5ej?TLdifv2>yrKtm1e4k?+bf6pmhNV=}1@hXTBbk=Rw(gHk^@5T=Y&AsT_I z;@ScyFRj8)pdBbfS6S?lv8D}PX3WT1t8`-*yja$|C|?E1@`bVBcnrvgqKtt#)WJjT z#)&wbK0Azp=X4svvGc(NH0D!qoyGnHI}A?OVIyGObwKAbrR(sl>^e|U#mDlll|?g~ zMH4*-Y~%gZ={eY<`F%o*mQoT((OR?Xu=YrRuYgoyC3`b0y6X$A`26jmcp17v>^#+|3+K%)l*T+FE0mJH3lu2Yal27;{4%%;jWg(^yuDCx4Y=I z{^I_$Of*33=i`KHSgNwPaWD_Yjj3trgK%lf7Z=er0H=mSoPzKJsyzn72m|jU*~Y(F zgmdjt!x)F065e$Qy~=1ALsvZ-Cw6L#xE#7&JA}`r;vi^in~h_jeNFNLg(#ltL}=|S zT|a%aceKoR;04a>a_4o9^V+6fJ6bj--~OWBB6~9%`>ew0avuNP(U;phvoDRj z;f>y00cWXPo4PhDBa8obyB$V?IC%6}#UD0Jbn z_*Znnm=hbc#qnzS2JME%dT|5BnoqYz-o#AnX0)ZZwS|WP-QrS6d4&V2J{<9$9kXlG zd78P;p=Mm!V8vQ2$OjjD)E8ROmZ^M4!#ljCf^UVmePX3}i?&V{PAlnKMt87Bbz`;5 z*Sa|4n?9=hvafk@#@9Zo`!M_B;FHW>9P=-XdSbmz8CK?C=?UzbWzoM*DurD$ettIl zO(iS6u*lv|eV~;u+KGEAqI2>`#>=~~P+$ZJmBG@{72Nh#(IyU1%Ay;1Wd#mjJOwva z)R%c?MhL{pHW$(u%F<|0UMrPLgzV zyGO7Cew4ZnTC(ErSJlRQP6 zil6(@;9zv^?D5fwFQpSXC z)z?<^$F&tp!rS`s){1E9wrpG!wQ@=6w!We+jio;fEQj;bk7E{>0&D%{Uwwn@NoCRX z&N1hZ$V+TZPp!_*7EuD2Enelro<|?w={j6xD>0DQ2%pyTK96xiaVR~ zF*wR8#|1`MKY}2GjUds#v0Ht)C!sH1O8Cl({tkIlsL54c$>nnB;^T&IXn{Ut*rPnM1zwMnNWYsPg(H`_fE3n^Qiyts|;g<&SfgsL#*ZAca8LT*W(Ta zE_oUX7I3SANR~5D8XYP`w-qLE+?E~QFYk_lc2h3G=+ym^E~tccv-vJx&b;!*yV z-{OysxR1YuYxpcLF1UiU5o2y1G(gCy^_u?a11{EazATc>XpTdG5U#KgIm)<25^*p+ zW;{YNmgAaAk})*FWR4KxBO*bMG_6;OZzIJrj;j&*l1}kyk?d z#KMD)NC{~36O8Ql)?W~ce38|ZjrX*M(-UV}vAXPqXP@?~k?%IV8ykleI@e;(?9HeM z<4~7c+BBdeQVLqoCM=f{m!eUom$Y8J%y*bAYE(5LFv%Ip1}9=`{}4)sV!42|ZDcKa zi0`B0&jD(v_^(axOqMd1a>Z~53&i`81BkT&kYs-)8E4Tad_Wd zMI#FA2F?!Kon2rHM-vP|3EPVyga3wi0N_>#tN4Su?_jJYW|L?cP3pXb0d;gxe%JFf z)8f7mOtQlM>^%fG*U@q?C=@#cEr%69*BgrVS$gP_imt>?bVH?up%8xd3p)b_`Gv2* zATI2)!*Os9?xCx@5FRc3nTkLDML%G!Vfu73hm*6d!fjUJ>*vPP&$iH@&35Em+gIFD zfiZsK6qs1#ZG=#J994AP(U3X1P+6hkKQ-np%}HC51Dj`C;$5Vl^Sfz@^jkmw>Crak z&h>QK!gpDVqHmLj9vR2oqr}%<}ah@&^E$8g&9Vy#_}(2 zg7P4!?Dp&z6S`|US{_8dhuKem5Lk=s4l&6w*=yqN+k#ljnN(-QvjCoBEmT1MTO$5Z zg}4%|0RMsNFH~fsVWy435FH*bm^Az6I}A+SvG@%u?@WWLW)wmBwb{KzaMwq-YH>VYUOy;u@y0 zReLXtzE)(PHynFVWRDej9(NUPs-J@qIPCYI`Rb9ei~q!&L$!-B`4*4WwW%Jn8#js! zw5Ts|3`ZXn|HVj6=5(UKvcW2|nVCgjWSykwTaW}!cPxX%sBK6oilbHqgJ0MOBKwYM z?5EuzQwG?>0DClO>OlxM#382py*8t~P3nmv>|81r_HGFm@3NxpmVfMRQq{cM!-bt> zmTHC*#sefHGRM1_DHiz^Pv3|WF0p2{#uvoS6Tr-}5bQ4S%v=kDfb?m1^U4fVUYUpV z%FtFSQQRK41HMAhOLvt=ui71oPT1Q84Wn-o=)4;T{0mLG`LEeb;$#Tm24wB!(Mb% z{=_;Xx1m0PwiqugJDg~RUP%q1P6}P5H!5V4)wS_!=%XZNLts+RNCm1&WlMaAk?_r} zmi#Yp)Iabp!&22YQPp}ZOEkBE#ragwLETboV|f$9zsm5qi>D`Hh;l8}MLIk81_>4@ z8Qk%4zu=ec0~$IZrsYKZV^u9l)`bwk43B)6&A_$@rF9tf1a6U(db@=eq$+*2aK5cz zK-WG!d7Lfc*VWT)LJuvsN60NeYE;t54qwz>oPQgbB8 z50kR@4Rj1nX0tT%-1w;D_)-JE`OD#l_qEjE9F@W1w0*HBgl$~s_iz_W7z>L_{EN7# z+={`zgeHHW6~RI`Eb^@g*)Zr?R(!FH3Z0FZmEDEo5b>RgZyvsr!?6-fgdrO7VT+7| zk8TuWCfVV_hLz4w$zyC`HXClF?+*Ay-z6M-Bv&A%`IbWhp&&@%#g6RDZVXV)%NZi_ z4w?>F#N#!_Y?iQPg`@JM6WPw88-UZPeu^Nf+kid3@_igP?8 zvDyc{1Cxc$ao{*?LnH-oNm&h4UWoH@_mzA1Bj!Tb*m!zaMXle$()y8UjafW-Haih0 z+6o&Cq8Nz_h{!wpL|to^=6G=}MusQxCcRr(O;hM#aW#g^o*ABg=8~YjG&8uQ%oAKX z4#CR2c&6c*hNllt!}=0SUxEW&oCJX3@1DA54=f0~y*{o?C zV?h-v8jlUfkQ|j@)c^d13bC!`opLXF#8i?BcAW-g@j%O(#{A&YL77YN54|UhFQqUY zMwn+9Jx0F3plTy}?95tS&SrV^V~zwmAH7j3AVf7E z>XY6^zW`-HV6BHgRKd}DvB$^%e|klByk-I%0zBj<3N_EKrKu!*kg(*7zA_5Q?CDpJRkfm{6l6 zVZUy&Bw4Z~1!PGIq*NWQf)sEHlGVK+L7uj`2+=4>&5!_!2dc5RI!B-{!z^Yy9c>mv z1^i<(9Bmdu1^ink{&A>~7@&+siBj3^QEh~UQeOfmHVjmtJkF>U7QBLe*iA=r;uW=Z zJb$<&8)Vt=8R#}GT(=6uZyoug!L~V8+AH!XIaVs*SP42$rPKqZaQ>*|C~349CEX`l zAvH?+yr)qTs*2<&sX~vEK(z#eBpbo!sK(T zheHbL0NW)oVjAv8wx59nc5mh?6U2~AR`ooP0!hUoF?IoyM2QH2<|H#um)?I0Y9Y-Iq- zK7^C!!7LdGtI@pG-RE-0C-VY6Z4tVgS5)nSA`(J!3@7?x@e#S_#!J5gLFiV5J+t+q zXZALl5cbSQ`xh<4t7x&q@fn99Ba-dNy2cVT8zop|%L!a?s~T&7lkpAUixR>Ek7QdS zn^akS5RC|XU06}jt=EMe2RlUj9Y$wyYS=E^ z6Dr=|zu_K`Q7#n(TApJ}sKv29{iE=3*h5(vlwkPC#-l`b!5|x~OHbL?(0Lxhh0)(Y zMQAvL*!_ZE^uTZ#0()SndhwHHHxA(agMnJil%g?74AosQ*p|};3+O4RE?7=_;;m5R zKvvTgj>5qzg#CTAcbqr<%!k?YO3xP^FRTz19WNXlEjnI2Iy0%JV=$#47fT*N`QgL9 z_hibEo#Vm-iNmdE>+>hVN=!g?zSyqCf7D}}ffS%2bs`8AegPX|IoE5k^VO}*$TB-$ z5Tg-PcfR(c^R<-v(ZxE~`(Ec{oNF#>qJ|Mv^)_%Fjp(L>rBazJ;l{EX6^2SS9qVZv zOpKA09MUsYG$KlERlD)ARrn5Wb;Y6`EKlR{6myOi)veY~G#soV7p~h2(&$(i7Gb%F z9aD|phSd#ohS)lDFlIND$bxU)>Sm(|pb0z(v)i|0b%QbC(WJqy1_h#PTQ6p}Z^!Cp zAGF!6M@zxKZFRE`+Uy3kXa9+L#hw$32zyumrq#_pXtNum{N}B0_CcH7z8$NZeb8pN zZ^!Cp(*%PK)mNL{*qtk2#wTlec1HePtDC*}tIfb{u#=WE_6#_*70USUTiu)`)=W(s zsrO=b`*y5uHWGu9bP#5@`&FS6mSeY#j5KH^X7{r~cvMEUo;)(k>59;=-|w5-;UMI z?#XnG{OE3W`*y5us{f6ZF<)hN`*y5uc5vxIn%%w~tDCLu*WHFtDfVlOHjQdW520wk zZbkw6H>_^97&{$|+3jGhZrztst=fBanp{d5ita7h(~*S%-ogW)0&G0a*j$gHWW0r5 zu@sXlU$IJ)%UC&~-G&A2V&%vM!W!$rS{%OQ;e}`Ij9$}lp|jE^*+0S-EgHf`ethpU zBn$e&%FxEe#K&6kRRK^xQLWCw*!<&rE%$QdwoBv+P;3BsJhOG$n2aG;fau5f3Q`5q zEg9Vt1#YDmL(Veo>lPJN&D;l*h&hgvnoz3&kKU}Qk5#FOINfNYpIXk zmU+1S!V?9^S-n^MlLnFs@JTm4GV#bkY9c_CsR9?7`4EUQX;crzosDvW>v-~$)guf!vA{gQ9 zoron?mL9}tY!Do<$|gO(^JKhXyNcL@m@+ek83g~L!EnXu%>2Bi6OZmfTpuAWF8F;v zBl5O)&zfw1^FKkTWbvMcb4r$Cu}e5U)(daD>Fu+&PG6+G?}E>;w2k|$Y#MMqk)2t% zZPMDdgA@AgyL?!+-+>Dl6KO?l(dQ#?_!fMYR)5$6tYZ|lrth!YuN_<>FJm{i=<1%B#J#93AF9>vOj|H?4l7FM)-z(As3 z4F3|C;KTzSEq__NkO+8#L~^jpnM+vC>gw`(8Z)2?X`Z%s(kO#mEL{%50(Ddn)-06m zOL$P}ku$hJ%39b_Q{(Ym5W9Ifs5q+_$8**E$+5_daD;|tpAnf2g=#2_Jh=>rr~U+- zjrB0zu>UZrbC?3ig@Jq(4In&3V+USZz0-Vy?V?Rm6;Up*9Oxsiy-$Xst&;l;5Z?e4 zqocg_1B59|toOpPLol?i8?DM)G7xos@BT)JUKWawJQxmop4NC4FJ|(u^h;%L-;wLJ zH%8l|8=l|Qj%O^dNeJ1ZZ?dz^?rn9y%X8%tM>(?8+GZ{+h8V52v)$@m)4}0 zYIYug!Exy^*m)L=z7~x9!xvnzKdrt1zrOkb!2^HxH{Xfe>I}nI^EgQn%$~FJu zb+lDR_N6yI8XM4-NQ=CM7@rNczn{L~^R)V77kuuk9~t@B+uk`~71!w( z3*X>N;%p-4cs%W$hZemm79J&rmqtIu5vJ)2cXq)`FnVBN7jxd7%y;&1sL6TDiiyRQ#~79Q|`dgBl)c70yaR;+o&Cd)M?*1~-yCCKv+ zVyn5t-oo0SaD4T4yfUc`g~8}&Xb7;)HykT7cI%}cz5t!LC~U{$TyGeT-#!}k2<*|r zu&*0}#>t1z%hUQ;jE$p25<|bjL)Vrc{I{HxxDqN7j;_uFTjA(qqw(lyrqEepnK2Dm z)MGa@UMpIb_x<>pr*$rYQ*?XVt~6-Encn(C&h*tE)0XgwLJnCc{%dCJm{rIq&&>8j zx_{-Xi9wuW@UJ{uWJ>#6x!%v=09pD%ajxUT8Co#oLaKkmL{m8azZ4M-p2@wZ>{p2C zuyFK$$*5ReXGQNKw_+J%YANcx8~z0W;lqkP#z37nrm}q~*babgxk8$JpAEi)PnnF5 zkc>~vB-7YypKdMuTx!RuoD;(ghJP_<$AV8$-4yFMdTrG4*k5g|AOQ2Bu5}m`Oa2Ax zw+@{**yhT;S%^^<7MzkHcIb2W(TWqB-)qS2zyb=jxVm#B{9#iL*II_L#4)np{?XYB z_d{Df4Z{HV%8Ng2OdgWqgJ=KBG2Zz7w8|z9D=&Vw@vV5-0{@CDz3`mYz9ZYaK2#A8 zrboXE6MF5&;8LvC`~ki&00&p$qDjQ{^5e(x`3!!<2S=6pqiZf|dnXfDM@|Z2n9LI3 zU$M1bw%g-P_LyE^Zi&jc0mZu zdM@@Hyc`tm*W*JGm!{qJPI`!@l3dgUZ~A(OW!l@Z0jayb^URdOZvG z@e#s=kJy~zAHOBKt9?f%R>c?Nu#j1m%6H)| z86SDU_}|%c+Uw%x7YW# z7OtKTIpE`MoQql4AI(O+m@8@rtmHmFecKMPGvvj_0Sm5ssqf&%G%VT0Zi)9rNiN(R zeSX^x?o>KCvbw^CdO;MZC(-5^eH1bMVjh*#wWTu*ZV-eacoxa1`Xhv|9zrLuB(RxP zLf8jUg(0s1O;t6PubDN9n6@A=+HWsjfodPVnZb}7t6UV2`5n#X!dmR>Y}N~FF(KA0 zw20+!7NnzHRFW%d2zIZ;jA*Ie2rv~Qi?{Y+_ri&?J zXQ`{m7csLNQ|te@Zq*jD58=pT|4QtS-!A5MNCLbwH@XFo)5|IT+mwH1klR0&@P(r7 zlK4i>88d>1MF37F$8F9aV^;lO{wle_Ye+ileBWKgJ%3 z>##uaV5g7s^z^ZPkn_i&e=zgMa{9PHP9Nv>IDMR#GJQPzo1H&~c=`Ft>Ei%<0X^2r#Ihq{|2W2}hs64$A>33(bsvr)AKS!*>)4=%TNf_&9eL6u z9!@JxQu!FeuskXzhh5M`qoW4^8`q2v+ei%Y()GkzUEC5a& z0U--xuB^tqSQZBL!j{mG6B~~`O>NntpDkv%-)HS$3=vpHu)*poj`_wpt4&Y@M~bE! zw_u>7W5p-h*jYZWWUKQ;LJC)=RETPqtGTS)Yt`a*A|%hK@TdOxjaj#aBbplt`WrOCl|bO zU@Jzr?ER=S@uUeS)-qd*IcB%~3h%JeL@-#{o6+QVPFg@)m7b<;Hp#^RIO{Q7EC|$d zxJu%kPoi&+k$xzOP3~K9(qB0=0}Yz7gAuJ*r)aA6qaU~e!!&qgvkY5wYwm(J~Q zi3#eoYD~j=y86DnlK64piQ|KOc*>!G(N3IqYKmhI5-u1{Tw0DhWm;_bEN|Z9U);#u zEix~$&#^rEt`iEw`jbLkFm?QlL*CduOi6k1oBl;(5!k8EA@xx)E-a1VR$ zxdTGbrliA_DMA0G(?_Zne?K7`)_Z10-NZN+!l(5AM-xp^k!-R9GNnHuw__on`;@7jekjw;bjm2 ze&*o)DD{q4c{K-EZTaGvt}gEO>}Z+oIL}e99W5g`{>BHTIzBeQ&7|=NN2X#=Db6X& z6|Yz<8j*&XvABQX($+`jXAHFeqPK3!%G2K>a*&o}Zlgp=@h^TDFVLo}rr}Tvrbe`W z5ix8T9^p_&9HH=lc#Gc3p-rM;;q@M|>-0~k$)Rc3B>}$PN5N#tPo^E`3-dM(xp@~| zH0%Pl#K=#`&Wma-azE+oc%KK55-(2jyj8{3bpl&*T5&r>vv{g>SIzqN zrky;ZvCv+dXiqXzZ&|TN)tUff^v=q%L*~UtsNFdmW)ALE1k~Tpvzw0VjIag3FqC|< zOE)sbH)_&Ho@P}gHwK`_6(1vxQihM0__(pRWw?kC$42Ae#T1q#KZl99#45VizaI~u zg&O~#SYgS{JkfOQHpY%5Hd&=O*VEK3?z};w+Aw0}-u`o-?Ht);lU)P|Vlz0W7UJWu zF&9%RVvob!@Px*z6s?VaG1JBtCl_-C76c%SWH$;jgK)hWY!Pf{!7-`Iw#bP;T!_QF zxrt%4h#$gjZ0M8=S8%{rAx>4pmWoFagDCwE;6+iy{xaCdQpPTd5Do-M6j`zKe4b+* zmflIIqp8}z;%cAR^=yoIRH(@6W#ZVH`r||hE57<+D6sJSw!^OGH7Ou0vkiOO!-X5r z^|Y{b{SI{Q5`&NoVX}oZ#ERtw;2Xx38c-C?*rBL}l%&FiA6dm)8m1-VKbtuPd5id+ znBiSCLD3vs)g#g_Cibv@B`5z3Z^N-xq#f$~etJ1Zb2t(ZUA@9jdBTKH_=JyIo2=A?`0r=h|KDEqePo^lkDWCA`M*C38-X~T%)&t=h#Vye+X9MKnX z;Oi|@QMq8OkqcdG$asSPf_v6wHI(D{y(SJKP6%OFG~rUH8iowUDR`pdZ&n3@GIkBO5L9J>~e;*7s3lmoXW@UwM z{Eb~tLzfH0z+f9>Vu{l(i{xA~&Z{Z=8o?S&T;NY})3tt3fb}hQ<53?fYc%&=N1sb1gWh6aV(S6bnR>nUgbS}xUY(!#< zmecTU`4%m}FL&mIaQ=v*F_hWa&#~q3E~>qyln#~4M|Q~hW20&cUVwTirS?G#dRfJ=-V3zK z0dWR8#x2S6n2a7%+aKTCdh`8h$O0c`P(ym~_Y;+v5qI-@^5WE2 zo}t$4pEwGAv}C;y6R*Nb6qyRTmtqb_6+j%sC=d37DdKT&YejCqL9HcOzCK6be{yc$ zNk()dJn_`_QKG_?bN?4O>Fj6`Qb5`}TJ+&=WD+@+u_~kWjrCar?V_zkdt^W@1|$36 zIr;#3)ZI!+k)3og&yBIl!;~{Vc)j0wUE;j1a$f(WUPWffEaGufZOo&Fqw%sGFU@-z z4u$E%7uk&ays#W-83HNoRJp1{^nt02%=PZtd)Vyg%3KCbYm*1<VImfb;yvjk?uee|)S;9D{hx1|BzgCB}N8ZJTo-t?**pWoz9Kb)(jW3{SI^b`) zkrRBe^HAK!WvioQtm1ZmOTEDBZO(1spp-*HINcrhBg##ZnD&xgQyMX8A;sUpIHwPX z^0D1PRUuA)7#WPLu7Nah4cqlFKn2nJ!awIc9@wf6HbNhv58+e?od8E51`CdXZ?KpY3+j@{7tD^95)#U*Hd7(B@h ziUZ8JCFRk_1R?JWou8r$8d9B2GRAr)6p{0q{>8Fyfssgg;oD)mc(=c0F&RgPw!j+B zQ}L6ODNRK8tk4KXgTEXn6t~w-6xqp{O@L^u-!6~Esr7Ok1A6=zLi#DWM}3Ubd6Drv zqrRhgHaf$i^*lE|!qfRW%5Nz4*q0HR1R}^rW>M1Kd?Wx`Sb`nR!hnfrLs3CGab_qc zWQpwRjV&J*J)=Gr{waM$1>-1BNKFL8r1XpjKga|j!BA8_&RD$+>BVtpaD%2TKw{E^ z&)|=z3_khS5hT(@4MP7Q+64_MFJ8R>VQc$`itXm*q!RffV~jPk!&e?3HH6AC()tcd zZWuYVXgQqAqaswfZ}oioimtu`k5Ke>66lPyplP7y7il2)I%`z0ENbZNr;*;`J1Pr(4zpejp=*@l7t{x+9=5Km=G@x z{cFfoFo}20(V3-;X z7uL*_ad5IweiuAY)nJ{6y}PZUFX{N3-@?oc#7xqX6`NTLL(OiaEGP7ruevVz~H2 zQJaMQ<33Z|h%Ku27eQ6AK(Cn)=rtekUt4Y{kxF0ajN4g|{E=h87)m~i8Lz4+-sg|> zBd;AI7r{DHM?(B`?*0s!ie?Rs&@P()hQp)*o7V6lSR;Z1tZ|$|Zo_rl96P!Jvm0^t zN^s*zFnT-RaG!wx=CvS$RIzhln7C<$ zc{~xmqXYRYu%b9H4V{T@w@z?TYS)&ING=%W2R+oj%OvyJm#+OoQQAws){5a7**3M4 zU;Sa~_|^FFcwdC?Fx2no;yEkZ;~~}tPYdu2Dg0^R9QBSsKsSC8@XZQes{Aj8ZTl29 zTXm=s7~n4DupAC&;r~K~CxCw+|Ifydr4-MfE4&;HI`Q8E=kpH=ZwFqE|3fjJ<8wl~ zq<A5wTD{9lLv=jF=hR+ZxE=z`q>d>NiUzO^XrPTQO2OV2aY?*x3O z;~T-(hgAB~K+T7w`j9jq*zpDMEx~sIz8-ID*N@YNpf>lxKLzqN6ZdbW4bh1V;f$S# zn37}S&%*b5eE0K7y=k_sgi zVy2!UGla(yA`3jN-Ye1$!!)MXOXb2RlN{lb&U^_#LQ01-lzRq=;FCcm<&#Q^PbS64 zCnMmKddDX@03ZxK&G#R&;FUd0G~OTESacfGW)QYqRPqi zwO*a>8*8JQz=gNY9|k<$5%s z{uwN#sPN#<0A3P;yJoy^21_&$xbt}wo{aHGJ`vyuKH=kVJo_-FJOZ~2JKQWDEEPiQ z_zWO5i~}Do!4Oa30sl=cq`ONCGqe`Uy!B>?tN_n4Z@n3^*ra8kxY!8q%LtG>5)BPP z#F-f-{OifeSRkI+nIf-|hoYn-bID}@0faN2no(8;z%w+XNiCEfQ9no){20R57T3en=fWHg{83syni3!nZ>&jLJ9Z2Edi z_|iYq6F}4cKcY`nMlbx5OMaRE{4yE*l38jYnIwa{Jx^(?Z}oad-dd7&oFEzeGLlU5 z!H^r;I&xZCwl}Tyf{!zXv`+mXJKLMyT6C0eps00P51EsJ;@!udG_S6va(dOws>&IG z%G%oM+Q9Vc8I_*%s@1<4mGza=>nmq?%7kOVtjc+nwN=v#J(K2LHLtp9USMYJw7Hdm z8I^U@YpZJNt7|e_1pGr`r2O7K-RZCj9_Noar)23Gju4u@gIa5l8f)>mNq-Relva@QQpmpoi*ABBM)J_l7fjf$^ zYTk5c0rXO7PSv~_mGkMq#7PkZ=LJG1ov)O*db&u?j6l=u%6X9XG-}dGb(NJ@QKO2! z`@Qd;ic*E)b7*YYc@xUc8eb7^WE=j&y80Qy0Y}k|#=tIoW0qwfic(&6uY|`bSJr&Q zA6X%RF$ynK_%FB)2On8u${r^DPgy1LljTEjhKf@IMBgH6ngr8!CXDk0~toS)k;h{&x-_t!ROFgrd z!*{ZTgBXwT?HYyWDP`1*-qL!=4(|~A=gRpuz=zssO)M z4u4fSaiYQ>R`?mN+Nw?AA6U|(PT5w4H=HMNU9G;Q@Q0KnhS8a-)TJEi?vw$pLn-6u zuuPfaaVo$u6801*yvn6|WeUGi`MXomnW%6*ta(^vu3NL>^0?#Xaw8ldcn4$2C6uwj`bBV$$ zC2o7tR3T6q;b~L>E`37!d>Q}w;bbp$H<2y>D`SLbxx!zcAn~R0;dxr&*Q%CN>+TB* zuMoNh-I=8Vya9(p#Lz?nD0JfUz6wyFB2blyCmoECp`kyJ{$5im(O2P@-zV|isO9)M zR^jrW8~_R39i<%BbG(Mndin5J3il~hnW^xZ3cv7N3FtyIU*Y#DiE0hFS>ahKr5pzG zb2o6IyLYKlrXy%m0Ul9#sdbdsIWWa9sg^)z!6yp8MYT|aBz+HchyI^Z42jYTw>*W< z&JyW|nN*3cKsoGxL{iYD^-P67r|RDystCdguTXhXs_;sM&r&JQSNPQm-(X3gP-p%U z3WrCKUer0iXmmI^KcV2Q#M;wu!Smu=M_FdrC2$8-fx|DDGJ+O<$SIZl+K}? zzLMN|S4cYC7SGS&3h%2_O#3fX_(+xRfbi|{j8XVws`PDAay?(-wr8ix;=wAwEEQnQ zcnK6Je7?d@QBAfgL!PAy_bEVY#;+CLSCwK_nRr$yymA@|qp)?V2-YiyhwhbtR*e@G z{!^u5XDk07D17^^62M>ap^bwXapy(ye~ZFTQ23F*mw*U{_&sMThq1^CeikWFU##%N zWQpqtsuW&&hr~}(nz2aX=P6avlK8p8k6tDH>nvLdTokt7DUN1Kch3eD;69Z#!xjFz z!dsLi4psO^3cpuHpmloyDp*Qli)wImr|ATRpS)5PHl4E5mBWDlm6Z3X2t1cem{>Z6 zhK9K{FhkUhp?yJu(gaXCp&nz$xf0@7w0h>06pSNb1x#t+n3*;Mk2T32XOJB=dCKgD zndi@&bIp{dtLkc|Trs!mWcV??6irsaC&ENfDSeEaP&Q>|ZDnPtz$6c)W9#QnsjI9n zpEmzujDf40CV(jytx=PUrr7l8!V!l+-HEQ8RW;9GUO3OgfIl>^rlEe~H8qto>RFZb z!XgBba11THsidFZP%rqHJlQ&R)D()&uCJU>4;xB17EboS)Avpm36nnL|Jl>(W{-oB z1s0gtD$zR{s`5$r6LHOi76`V-DjlwzK}PIknnViE zgF%XdKXsH6|McpbYkJP0B2y8yZ($FU{$;*X4PDuC#WfdJ!n9L~tnpl8vtX&z(r+@) zCXuvh*4` z<8Ut}H$`Yys$9p?aw_6yML+>nO&44w^{-LdM$c=Qdj-s%Zm%q)4*UG4Garmg7bEYL zC3Z?(70r*q+F5lX8MJQ6Isyfs6$}E}5PzMjuac3lP{XK3K~JnMP1brco=OGH)D3kfNxQ`*}{wiNjY?fD^UL|a#hEa*Me`Uoe? z`byzsB`T}Bh8oz@D?Loh6%AE$lx|I_oz~Z-1CPUUowLFj_G(xeqytC-n+L^Z*P(63Ul+A2@$ zDr@VFUM<*Fodrzk%rlfMse5QFgzBYcOKSTlyQfL5QO#abPnbWptRPa96AVsCEjxk) zz0ar&S7E|z+8osdPmNtGg`oo?qf$E{G6zM6xwOiLN~jF$x#OlKA!~XWwtHt@q)Bj@ z6p*Z+oZ_jkXCD2T2AZs30b+VfvSw`NuR=K$PYuB zF;!;@I60j?T2VSC%fT7u<#hS~3HGcW`+HKJ;&9PVN8!3!G#31uAoHHSl55 zi}-!Wz{L``xB~ucI>75)>VIElA7jM)HY-L(xbVLz#xHf@n-%`&9&lP9JYTpRu2K{;5s#vgX!f3sEI>~cBi09Oo2Wk}<< z_ky3B*R%hHz2Nq#hxZ&{o(tDmFzAR>|2hlCxp18Yn_ak;++QSa3yr3jbjqrf5m$>& z2UwtH@7(yw$|kFEP3Ngz@b^-1uyMw?_PzGCf zZWOt29YLSMZV?FJ3>U5$ttgc7C)Gw1s_!MhT`pYvf7ONS2zI-0?f-ixDn=PUQ>R5b zQ#&YJ6RL6Hnoz}XMaV^GfeY7kZgt_dCbY`spaZ<-!nOY))HM|;6QKQ{=)$%CMi;IU zYf}`ay8ig33)d2Q{N!F*?5W>NC8QbZe_AT82`%jff7*p>32jW`D*tr^%SZPd!B!Wp z3GH;@nohssR65%KC>I{L2S|^#E(aZ;#f9q#HoI^wiTy5I)5$tLl_5>X-sy7Cgod1v z8bA{|(S>V5=euz2zutvw|G$%X_ZGXomjM0GOl3$jTIRxa#OJ$k9r2lJs$Uj+}E?oP6*@f%+#MBJowcSpWwo^|4UuC_CL>d zIp_cnxNt4H*Ic-k+zF+r3~9-o?!tA#W-DCu|I8HBx&mm1LS?BD=oDP$!gU0=d0u?9 zgfyMsrs8%|bkC(aBwIz_xKu(q;=wLlM=-&KYsqak@be`}{38E9FdWFO7Tt*PsS)c4 zUNCS~#|V$R4cw$NTuq^CNpz?xeB1-vlN=QCQXMXE@5A+$5 z(yPD8aHf}*L!|eW25v_0J=Y;;`ajjctECt5dxwFeN5PLQRVxe!64HV_^83P*NVjTz z1aPK-J2`|jg&qH-qcdXSc|GGx&QqnDp0AO9#P2<>0Ggp4F8n1`$oeQQ+;k=wINh}W zB^qb^Hy9Bov;(j!47?AsA0HCoS2Hxuh2Nn%T-63{ChTzoCmmY{c;9fi5Dxlt!3FY- zo>hStK(&FJ3_a??b&A_uxYBLg^McDkr|byD1&Q;k89m;GYbCwZz|-Kr%_sQu+-u;Z zqjlmLfkXZTP33ys2+%BPh~G~PoDn>%A~_Gs)~`CHQ?n2PB%@b)`e?2zjWbu>0bRiE(ho*5l1ai>?WIla*cFieIOzxNwB z8M;CJ-_{HMc`tbG4@`!T|C-S36bIZ7r3g&A#0=oz*Ib&4|3vx!O)vOMJ>e|>eJ<;n z(6uhSTt(2~!ga)@m#5Ov2}t{I2UjEnkOy4UKNRQn(vSEZ(My0a25$Pl$iU6|V7Y;t zS+?52?UbrFe~RRSp3ML^_JXhI1^<%^*OI82no7TYvMqt&v{VPJ6Tfreno!FXJ^TN? z3)fk*$%SkB*V@xl3F!d0%t*y`fITi;>%^GKRR5aJCKs*~aPv&*KiR9-5j?IO+*$Cl z3)h6+ci}qX{<9p0*ia5ot!1%+!w#q94-c28I>^xYU1;E@_TFRQs@4`^HW|37jGr60 zqr8a!7gaJYrZ^4X<$n2pvkPCK@Vy4kFqyNZ{~=e(rM8lc5B0re8-~k|7Dq zyUHOnOumZW)8;rh!^~FxGUqwC>Yoar*ud$3zVhE};I>)kCkzLZ&@HKV7yaLs5#FZfSYwWkwINeKOa-Q}Po z$oo-h#5#hx25w5?re5$)12-ix)K>LBITGbnN#Z+#EhlTVBuZVlX7qX&t{Gj`3qEdv zP8d8eavj0Yh1wytn4RUqbuqing=;14vnZ90R?i3#+WGjrNS+ z(-Tew-RyGEdHI{Asf2XIXT?%+9dVxB={;R7+`aPceT@ISl zw|c>|ZgCi51X>bd7p^67gA3R6U$qT~VUni!{h}BA;vYK^o05pTa4m^D4cwH(?-icx z|7%VYt^k_T<8O5$CLxVK>cVv~+vmdns7lB8Z*%CNOQ7TrY>DB(2y}p78#q(E#V-jw zY~UwKNc?U#a5KdNZkL{j@%tmuQ$qa58V+Xv{6zzI0$^)wt3&8W`6_;=8~7*#j~lq@ z|2M>$eiB!4iD0iA0aO(r@W!8thw$G=zKY+)2Cho3z#lj8?;8GJF>pKEa9H|3@{bmg z&dWa-xGAA=cRKz}{OF%KIBC5P_-4w;10N>6h~FRff^QW# z0+VuO-1MLS zpyU5i`6_~w$xybEOyA#2PsDyGUp<}@yv#8i=%_ip$%WriBSURA@Nun2{{yr5s#6^j~k_-!<@J1HZ|@nIO88} zI1F4V|B$#DpuoUQkxn&mQ$qI}xGAB5s~q}+@tRcE<6I8X8<^__uQ2e#wP!qM8u*V5 zyw$)}ABwKF=TXDqY9qkCkIO%l#90RZHv>P{!23Vp_&2j`w1Kx8{xhEBAEciVFwc0v z51x4h;}7e`7B5oeN$*TU8hV||CTF8eGkyLI+azMR$@ zKf|uI`&Z-V!A~>tGopd%jF@c1=BOM5`C5S=* zH4O>e){cf9K@1@a0TL3DZU};QuoL9cMqzL)XWlF@Gdk+bJaxv0f(i*BppF{A1$V%W zwgJHf5S9LYPThO^R$3Xq@A=Q~4{vh&-g~O*)TvXaPVJ|7N|G~)k+|q##vQAETUlOF zY(~$NDCb`4cP4jc$Ez$!YMr3BFQ=S1a(QSqTdK5f$E~plen?=|RB`s^9CBVAT~WS;hxAz_?j?Jghj+ z)>2}8T7kDKaOq(+UB*rYepvPYRzgbrc{PgT3T)lWfDJPtZd~U%tf$gd&=YyR>TG3M zD`{h8p_<4#6`slAM!WLJ;g6oVs-u>)`_%6-igQ7f^ONegq#!9#9<%v_9X3|(nT zGFB__dIkP~&78t=SEB4Zybwv|KGrEdHYkq=6pzx4n)Aa79MX%VfNwlShqpr*dFcHL zVD?E!EFm@?RsfH$OHgB4cM>v0ewkDsr-nMOV1qsRRC9*W${$SnFL+E!MVUTAfm2e= z)}D6CWLz3kUQ|<^!-M#8qntm~cqYIp=+;<{#ZV9h|C7{!Z$?0ohtl+F7U|)!_}(8<}MB}3ai2&j)M19;o3qq z;?5FQd>l4E?^1Zge+$$albq=uxkPc4qTqv6cu5qzj|!h11y5Ds^P}LgOVsvCb(F*T z#Y)6lFHj?B-(MAYQQTkt<|z1K z75;D(Jne6af2|Fo;ZIfD5Kn9Vr>K$JRfl%XL4~hYEAstO@Cj;t-5CX+-u~2uTTKIv zrUSd!XQz!sTj&LPD;oo!iQ z%DBJ3*=`#D#>T83Z1Zp9a^ef#P+YsQEoG+BmJ<489nV?Qn0;z&%KZyWneiM3u!Uv) z)igSFwi=>dmB1usw3tUE?EgqXG$)B|-)*`&zT_%}jFoJoCDCELlKsJA9%9U87rrr# zweWNK*xk2T`t&+RXX5hXGHorX2;!VolozIhOwY2GgVS=73iDSxl5A`D zA{N(@&&RmTHI9P9K#@IAlu{_~_MeaS^j(pT<8M7<{KsSPTya$q4k5ZMG#p3xdTgOV z`0`%vY?~bpzZB{fC`z|&?Hq6Pnr&NO1JF45P{{HO5uEn|&eO`@zZ_>O?w2}_SQg@Z z@Ej>npF&5G$4UM>G7X_&QlKf5&H%+BJ#I&4p?nr+&ZX1Ix+%`^>vSG!3Qq7zr(@qT zaY&gdyh{pq*hn$-%pz& z1rWtMo>F(9JO_u{dT>(Kcn2c&Cb@7*la=0bLjCnKmiURQIHBrj-dUV61v>DaT^y)z zl!V%U;LG!N=p!jGH#hV!e!86wx zD7Lr0;F;zO%t-NHi1n;oF~WbrxZ>ubyt9S!Y2v$!*zRviF?eoshW8eY^V%Ce4nIF` zNuP!%f}{fc7ZSYJ&hTrYd@ZB9=^VsyttRdePjCwLJk-43erx6_J79N3 zlFd&szXIO)fmw6{u$_{R!+z}`9|vBkX9GLKI8RHGcOzO`%U+aT7fw6Jaa;U=td9M6BB^sl-lk2Z~t9ZL!^bGk5$IIpLf&RTp`%3+U{^ z$!-2U{D40c&9G;MD}R>NJ4C|aV*@D?yDM-Vj%?F?gTB^pKsiniN4ZE0bq9%dXMSAh zxXPGulXDvLRBllH#gE0t@tKo(4vf_ap~U6*$Ko`>e~~ww>zre-wNQni^O8<+vxhr_ z?@)|^$#&P^$+^fIEy;TRxa3*HSYnNTyd#Y0ay(WXHyGo)K0$rS@ALJb{`_EVSR)^@Q zY4r+sBAWL?)!}w1L)pxn8K}`}y2T{2&x3Js{qtRFuiStG`HtnC#rfO3M0}1f9JtN4 zbhq}lgcIlFwXv_F^gKOop&KWpnmQ=t0g2~%=3vlo&FI?C*-zcUal!%%I z1tKP|J>=FMqyUIJ>G@2fa)^J`7z5{8NeEoyw0=>TU!J@Agj?=@mRDn*V@gd4MFbi< zSVuQ&25WD!#112s#&deMB;@C(&}~Ral^!b?9qwe`Y>OM>qgU>HIZkgrHjis@UEw-! z(a*jOAC<~Wpk5{xkT%;lu@9YNB+1iIWG1G}&1;8JSB@9P;omMa7LeUz+yN<*N=Sc6 zJ|LM#qtuz}bES@>@hBpk94g$%)gyY8(55M&!S29KJfI-L2v0|lcJVqZQthZiY`}Gt zY85(HnAgcVBc@4fPH=TEoBd+@37>;6?KF#zMZQrp_E z5RBaG;Ygm-1JmpUXZISt$!!zDLoN6Zr1t#XYp)PaWw#QJffpGY<>M}suyt*(@o*OW_27l!qSK+X_ZIkf}Z=?K2 zzW1L`^2X8`sKm6@jwZJe%J3UHJ~L97rH)T6l6h5*QuclMAjv%#7;LSd5Osk*U=~%m z##^W^JB+qZykw-)A)(vt(Cu;P4p5pn?c@^c|X4-tJU4TZtcqfhBhJ+|8TO z0{31Qn209#zYA?!k9YWvLmu4@t2cvi1XdwcidV_@*qQL_p#(S5X61#xFt92Yd2=3Z zE)BEd)%hI7g02DzG?xq#729LqLpr7bC+HUItt1DKd;#~pM5_-zhCtYWQ34Vir1~Nb zqdkzQ$_yVs1f>BC54(1C_3wAbS#Vf9km3L|il!l;+>FM5**C!d_ciPZ2e1rI~Q;C)T7 zf|_VJ{yY%}_rkGYt1)!CpyjN`!sC@XjzN+S1UJCDv&|C|&VQr9H24iEf4^^q#cd3R zQqj`S-*3C?*6+gMwn;|G*g@=Q3f_osXaG(@a2h`3UH)U=`!9h0FOe-ex1k|o6^?ty zNLwh`bde(NOXmSsqZ3wNEFVRQMBX(?@(0Dn(`dfW9i=x@LL<8d>`82|Chx`a5uCn@ zKyKq11RBIPcA)CtnT!}vkaYEXfEu6apfX4!raapNtI~;S)kF;x6``!h*|R85$d4v8 z(*2*9Jeg8{r#C*5VNyP6tozzS8Q_UG!PQonjLL?TRz4)vwy7Q6mezJ3dVd`s#TOet z4Nk-%%+Ovg<6csfwzV{&QqcUV(UajiI&v#kJUYa=_k z#8CH`tHus#@BvUG*(P@2kX%p;UcDkAs~`i2e{TcGS#3d9U-UKD=w$QDTx}luKGSFw zbSwGowB30Nq)Ah+LFx@f(in8om#&*Kf0UQ6&JZmNQfVcz5_L<`n&RPaacWZO5frn?=H)4qg%`y5#Hlb-CXCa9gncG$>yFu zG;AW-snnt9f1{I><3`P{H{fu}wAyO1wKO8D1C4$14(7kHe5kZ!*BHq>u^=F&_`flF zQo!jne-qSbvcCz<9fK6O5|T}kdv9-yje z$q#qB4jK(&zr$(Cp2vJL6h?mibf9%z+bq+BbO_n<@lHP1N2TpbHt z8bgZL>g!A2X5TD&7(6BPFuLX4o_WFFB1Za5u(jTc*XGrZ`9|ATk7K?!4hm$xZR=NH zVUtw8+7Tm_pG9*nLJV~LcRsK~-W|#yU9%09IgVn7W{x>`X7Fw}zpHzO5b|T;)s&Cd zb9?6)1PdS30nlD_Ry10a&wFQz7(Pd}JBYU!O3->c=*dPYm{1_)&&jd*yAxcV19-cq zn3j*A-z-A;0Xky%LO-5b#^U#mF zs8b1wAw9l6dLPWCbT4hK0}w%Q4t`v6QHpC{Q6`B7>6?_D^C_+9)fVND+#-^8SK#)P zeFc5U%f5m!+$RQ~DqMjXImK;v#OUcSHlm_mED@pLPNpJx+b*IzF{T(Js zs}yKJmYw$gbHd)jYr|+`*XD4+;B2FD8WOZ3H2E-U5vVRe4+^FHA`V6eTdj(8%JZx{ z?3Ai~MfgP`-;s-QNrvUy?Q&5%iKtty%tW4u{D7{v0&@<>9O*)#zf&MfxlpGucTCtx zO(foBvbCh3Jc3@kjMi9zm5=mGa>*D<0&*1<-Sq_$RBm`T>V7nOr=SfvAtm&*9wR>p z9vOdIa4&DSG^KJMb>a($OVJ*xG8-yb)?NgnuLOVCOZO^WNi*knOQkeX;56W&F zWT>q$)GV(ZK|hNs@TkE1G@Q1ubdhiALVgfvp=;U=lU(lUMN@I~=ki53oYG#m)J|mE zvl|l(I{o~0g#JCe+~8VD7LZ|#9A51?L$YgXDu&X}V4NuFspG)xMw~Gt#LiJuX=1%C=HKw+q_UfD=TR;cVCtaP|#6+iPca&o0z<4!}_qKd0=mZhP# zuEJYWX`c@^;3!KvyOb;%BR2AJRl`7dnM62{Aq{0Kfi}UA-B=1P)>e!_w6zspFIYy4 zD`=Vqhsox!l6q50g3bY)S$jFV<#AKR{n6N~+0z$I zeY(@(DlevzH-ll8@-S53z}gJfyf`kCH5bQa8t>-ck1t5bWbLg9na2I}-SbWOPQ@bb z6g3p7TDm^xzMq~FlW9y~TgGGZxi53x7&n6DbXfYZ)o+>7u}Xu(Z)JH?V@9ytnz$H# za9wJ;f}w~8#&OYj1;wCU+S}h$xc03*cXPBXrO}j$>1>LkC!NbkNzA9l4XzgDfrW^4 zTw+fL>Me54x=ewerYZ?n0e3dK*%p^2pS^KUT+bZhbZK3E6VHUV?B%LFxFCT``S~v>5&tcv%4R%B=qG10Q2DG zI0B@hw931*T!{cjtS+tFwD!bcc4}UHEK9lp2mKB&jZbDrJ~Sq>Zb8hsf6_hiGIk5z zoB}nqWlJhyz<*K259q8}1RLet3OX0dE^)FmN#@?0_MYgQqUZ;1ue_9sE;~>j-@k_t z0g~DPQ`e2qA}rx!V?WBQM7HJ&V}`L0%evE)kvfs{P@j?=$WptR)A&);Ic&{dOIk9q zd7$cRBRf!R$@ukQtRHw6>r_&MY97!7*<*0vNVkME_U>LVb9Q}9604y#4r6TQq-1iw zQbkk9%5Jn|r0ygbE-mx~R#s$6D<1Qp@02ymLU)2>fhS?|OQ_Hb{IwmM`?$}3lr8ObXR z$-M%csJE*ao?^>F#*Ebcf^!-;jeYkK(w#FSF6kN$RKxVARwFJ-AK_Bfq+z50 zC%0K@CfvZLU@4oil;yReOg`|t*raT7ep7Y6R|qDqtNR1XLa?5^jSBA+gziMudneoS zs3pVqp%9v!C({qEL{-UY!Jbt8T^$A27&KLYQ=)P>7Mu$xz{TkIEAYjfCdyi~8u1%K z0K1BW9%eP)$eWl0X#$+w_Ns&q72up8cHmQ!Vu)B{Y_$1!E$#mjf{G}232-q(4+wBt zQLA0=32@avEB|9`D%T^ItLaTt){U*UR25YUCda za62N=t{fV#!bRQ&@Hge>1GZ(oCBrDOj{LX`<65?62EMi^U;koHT!cKoz??H7fM2UJ zOBjg!rD}{uwVtO>wYKD_2MciWzd`kXWfXjc3NIAkc8)>$xm{_5C`+>lk*2QiQClYz z-mduNzt0MAa?|+VDZoX^e^-EOrGyaWs;MCyChFt-hTd?E?c$&-yGa6ERJLUToD%Q? z$AVSN0-R85_02v3PK5R$|1@Frso!aJ95@|K$RF5Qiu~j|y-i zR9mb0B;b6)iXuo90_+n4sIT1hkO0pT{GSrwBBATm1|H#8R}=A2TXp!22DNN(hfdwW zkRe2H^b+v%0-O`XI#$J}`9#_lbXV{Y4Lt>vD+D+(v^ z&L2ZmRYZ6xg8xw?7%RYesb){Cj!$DJ2F4~Cm$9P*W2x9~EH-6aHD6@`1r)ilO@L?f zxRjq;s3v31GE-XLDz#FhplSi+ewIhPqjwZr`oC*xK<*#FP?3mWf|Uct6C&;)#%8LZVO9oH#M@9L1t-V zZVYQLHO)7z?8#TdrP@{6POBO)f#sbsj);Ft&CBOl);*Td@tf6xS-{HhnVK>}iD82p z5dzJz0X4X}kj6GdA`X%Q)8dFU##deRT-tiu2m_A!v;MdwScprpLA%^mKE| z7mCd38z-($Pg$29iy@=X5oOZ(X_ayevt4juvbp@CTi!)eOm6uVm-)6FspGTw@DXKd zxR?)HwS2u967GemyF#jc*WO{)Hh%xLC&U*)Mne;{zu@3)n zQ~qJwJ$sRovzX|JkqlwK4%Nag|PK4YqYuk~uC6!rK*^Ir$*m zCT|2jknd~86QuVAEpGWUA`nZQBDso@+InCC0xVC8q+E9gDupnW6Ewm_4H38eg@TGW zB4FDYMs#4r5E_^wIM?eK2|k6G;t){4bDn$E8LE$afuCIo(zC)Pze6<8B0w!O&bj5Y z2!Y{R@GME6GHd=KZ0z(&53G+d>OlW#47|4o#;+-8J{LB=xh6~mFHe@w7udFjJC0k8 z`$8d}9wY*Ib((C2=fj80$hrR%1afhVdjx+VBA_q{+0IcB-&w~xYmWpzU`XTihuC`$ zSo&a={6vZiYd4(o7l9Raotq_r$>}Bfr*lfN+<^rk@_|D6AO>nNyr>k>$fQ!(0O}$vRKC!*B?jYTat5SJHMtwe1;XRmhnW=xz zE8t8c9-pe-)D`gtCm*$`cbGF-2@U+5{tBCN>;v((!GnRNxBJE>`??Mr;8a0jq(XVU zO*!c85`zqiAASTI_n{|BA8z1ewW!2FPI*9CSj1OMQ|3Q`V~uEWXb5+DL7N;>(uYJnUmrU@&|i*pm{dCDL$@*SC__b*qVg6 zjQh_R?WrXyDYMmN#xrA%d4%a^3oQyiy}*>hX6KkQes)Sn&kSz_4la?I%o z+LHW>mQ7cD(~lh{&l)U|9bEv=Pj8FOj1Q=t`gp!>oV8acSmW(PFs=kvwmo)4{L^Z` z{66-?u-MV@533!rD#9|rR9&sqo0}`xc5gxErQnG&pa@irw(;&^x*=!613yxh8n!qvcqQLnGx%lqFJt4O(jH z#$Np}A>KE$NZyNTRDK!J%3sZpU!N9;!$Rn`5@TR;jGU3bYk9#A;;!>)Y9gNdM4lW| ze}mkPDLbpQ-pZ8?t^GY0nG2mU4bz)YUlL80VS*>g;aYP(95xzO6zMVTq_Pz5#59)) zjfg#JWj|b>pU-R0JGqluIr>ys_+ZcvK$SZ%6f1#tVTm7~tVC4yZIqQdc3Ng2b^R1{ zCM^k=4gY+88B~7y<%3*vVhRa!pJ-l4nEo8d)-=cV^kI?8LCOD8IJl1d)9fFnBB7>r z`97&n_O}~l4s1*ajaJ@5Biw;MQzY_U9h21Y31*FXdi?n?F`TjEPbgh9)sI=*o6th4aY(MVKJj{UVj7yS)D{ekmZtM& z1MxWA>747FM@h(|4DATTOMx*i%$nUS$?v00Fn7%{lo11{)RRXg%vp+6n33t=y!IWB zn%GUZ#b(yNq5D%>V^32r7VGhqlF65>V8wr+hkt)q%Fk#R%Gb25$X)s@wL8WdS>8PB0M_jlQ_@gfSVK2U{=Ig|zt6s% zx^X%^d|7PCjshW=PYHfW#X8moClV@NWONF`iyhpv6J^jwJu{R;lB7yfm)JV7tqULhAH?m*}w+ zwSMHiuJs)+n_q9~$2Q+?jp^T$T)b&IOQ5ZkT*7)ttTCT5Eg?N&25qz%fhk@da)3|w zjRL!~8AMUpru8bGY6&F;E0hIsLg^T^uaycLF@GmD7({1DZq*8rKn7F=E#aYEB)_I1 zp?$4XcBx*J|Wx4QDTUE%w}@YmeBTYA*rc3gwOVyBs7XCY$vX zP?<%U3B+K^#TS>xM*P;CQqYAW&oHU&=^>PC`S~3`Onz5%0;=n}KRZrcpJl`tiw>Vxw1YI^G&=Q%@e@XI^6kaa5pco8u=kcO}6+omPCF4c^9ae+4 zhmLh0AHAZ&pJdog{c!nJv=^>s8y}48gZgWZTC%hy+Gs97b&UyNsoxj2yLNzmSi^+1 zOj28E43;rTYrYR-&~^E>F8RIU!CzyoLN*pvX&NbgF5%i?s zC??6SHQy0+w!5AO^PVPTJ9(6Yk1JJgB)?RV^&O#HM6H~O<)%^_Ehq+qBEG0Xrj>AR zs;71RjSNM9?9K3j;1&dT=T~5fHg)`X?H`tGlQ2*rjiYr^ZKJNxv0)WDU~XfGH%mZ4 zV0taSyW*CNXcV~yzveQ&$)gC3(kMfBwo3y+U8CpCqPj1KmStnTW5_jlkIT3(?_}^H zTAl_MYbZt{T0N;GrXOvS0!Z)brPdlB}Q4VqSd)t$W z?@p{}byPM#>-e1LC3&#gTJ8Zw+q3YEmCL9n78gy&Dwl|8K_EX@DABLok&wR`Ye zD4(KL(4%-f+bE#4KGFXw)(6aZI&sEp*(x;~*=AJ@uH__OI!(eXD zZ8VO`nM*@U0#?fN7GTmD9mm$}iM^a{{?;7NN?(q(_;enlWf0wDpK~)fJd1KtNd^t- z2)Vr~u0`4&}4$fnI2pNcnvnjVq);jH9{9`jNL5 z`OPO;*g)Bw(f0ldUuqWs9#+RUjU(L$TxO~7n-)pF3Y zjt3|(mZXl~@oQQvK7gHm#2nK*GL+8S(ZM-rqDlVnh!vxDY}S1xMtp^y<@*nPg1V-I z!ch;B3aXHh@jRYLYNWuEj?EM^L7U>(ZLi#gBNJ*>F|&AR;Py2 zC8VC3HUvdF)Lf0Z2HSdyA(Jf*Eh5_bWOWDX(GM!hEFOF=n{z_OTG8VCZ&r-ftK%KJ z&FsvISPTOq`I90E3-0E{XkJQ{|MsBX{Q*7_C5dKv&jka#Af`E4Q1SD{S`O1~DDfTMOo(uQIQc$L!+!vo{=#O*i+q*(Ee zB=#tK&Gys`q01J$nqr6YQ~1NXo?#MHF0fkGpx@yh!pm|CmuMOousyc>`nEo~!3?69 zGB(^EZr^dv%<}rh^tb`pmV)XSs=jM^oCnqStb!a_Po;w{kX}60ZTwOiatkJFFyE4b zt!BVW5}87q$n6;Q^?y z=(Wmu4$TK8f-02m`Gp;}r%qEx)b`XHltshw@(Q@8cp=QhN=a6}HA-lgWgLSV=B zildJlN%Tlrr|`w??-$vgIvGiFq@)oK)fBt(UtVF;yYj(h*e_EoAJ;hG8ob{v?{#x& zpg_+m;-m5h&0AV~Z^Zc68}5LU2FTz-LI;-{+Q!2$KqPD2@_EiDFa@kp`2wAiLb(;X z5#t~mV%Wyjv39N%EP)xBJ2P2FsijYREh$83fXmrKO|kv5CebHWlNTWHe4bp}Bz(E# z4@h_Ic!*;eFeu(Rl`<>rMT5QAP(o!(Q4EObF)*HLt{iM(pN znEga$;&0ED@-a4W=OBzeSNSgtw%yeiZ&U|XLm~VPc#7q3s6iy3nk7{E9!D0WY}El>k?(_kBj&NMttvD#V=;o-`Ee>sNZ!n9W%(y$oeFpP!a zLOCXtj}I(I^053q^d{A$neMjQT#VI#>$yMyAwyf9ek3=xG3MIVO2|kzsA+~{vAM_! zrbI;44eHhr99gj=(+o3BahXG3!=47tj4nNDLP1_hr{$4<%BWo4#JH|Ms1E)YIf7mZ zU1P{52Hli_HmT!Oyq;)x0Go2Y;T`nrhyBK#0=^Ra5YTOVyR=y z>AiQ*E?pE@|Fsp=kHx^abbG@L%exKRk6>+Yu+Bf5#%E+ku1Xa z{5$OEJ`H#71q^|EFh4<#BP&EX*DW8N~d9W9;-!=HW%YWV%x4fG>5Ob|N zFJ=seBCR2GUtXmx@g1LIqyjbhlJI%AvE7aRuEuY$v)q$huzq}xg52>yw<~mt@@5QP zcL$59R}`rMXM!fQ+J$L@#jwgj!ayZ;1JZ%w`2Ze1N(b$mg*rg5;NJj2%6aNCb>)o~ z6M&G>>7nI%5l2S|`kmYWz%RgeWDN+(o++GWs2BwWgD)oXlqjOK^doFL{o197Cy z#(?PXe$t|taB`U^Td||6?IxovVFDzn(WZ~m2k)jpazmEn%ZN5s?4?GM}JrEu#Fx}CcdS64jba=y^2#NOjz3_sHDeT0?SelIK zjcWgHKAxaU35_bofpV2>DPSe5L4kU!)HbEk)-sz!YDwwYp6)icV+au>f3EatjhG;K zk*Yy*K<37rI~*Df))j!J@!P0pjo}|!O@qOgs3_3RE;LoT*Q@E1^ z&elpJEtJK>X`K8zZ}0Vmj;qHYv^SNYqX{aJ^jl$af-R`G^l^uZRIX=kYp1|KDU=|t zUI$RUM%}8t6Rp#weG^GaL7bUDE;-$?x5!|E^rT?!AZ+O|i>5e{q(d09oK0QJ;UNEN zBc*CI1-wK$ZlZKttE9twBUS&`d6Tfgaxyl9a(Y==y``@&)Q2*b#s;_D2V@xJ6SEd2 zdiGp((uho4a0?{G^7Aww!TC&+YE68wkD5?Ws`Tv@a7jJLO$5IO@-(O9i$?z~6FSfhZQqD#65Um&TIBtYA=rFKgW{o7*IA-zW zqjIxTHkME}O2qRzO8%`{Hd0I4o$qm!dgH)?g*Dig1Fb-Pa)PECRCcd@i`UA3rVwg=xvNPyyW4L(7mzc9No z3BS$0R6~S!#Ja(@t+P^^FPN8$E#k$f4XgaV%V=yr(t`Hw%%lL->nEqTw0n}r8*MFb z5rgyK8I@M|<_kvetw=91neY9_I`nFLvJ}};8(k$rbQiGl^jNWA^w34Jz z@uF2uoxyT=XgP>6Aw1oIQmjIwf%!zvH1B3@{22zeRE(hCq z-Nk@!flCCZA=VtI)pXU7;)g0n+{f@H1vZheuD?E|`5U7*%Wb|sTVwkBBDNQKkdV9i z8IIXY?sBXvSkgJucR%gaEa|_7z+S7p-gV;rP%nf8+ULjY&KwWPqCWg-_sN|QS1)PDnW&j z>5@;=lFmrHuE4KysVD^gIR+1!vpB-eq{a2A;!|kUidQET(81tJ5LF3MMAdo*1QUvS zyq$P1KabW9t=RyC_XyUT$B*!$2RPA4EWtebEtt#rtOem-MSZnn1P}B9>-e1|-KWVB zV88?}NXElzC<>|=8-X++?&dKjm`05BqWHQxYStX$8;f+l1!-`Hv^8ucbZZ_r+}8SQ zAP+92Dx07tj4%TL7q8FPyvjJ-yK*s-f0hROsJ4XGv^)1svL?CqO^Qb#OvVVSB1j+C zlRmB{ee6R!LFu@)eh9_pTtCT*dUS=Ybs(=L3LSN>{8(FSruvn$7gZo4X~H(&;F}N$ zA6f-=jA!fww+$5ObUlBr7I!s4MECmbCEN zpQ~WBD5Y_zsB)Lzq>q6}XivlP4YdL>(m}Do8V`2tM}&ro?jGur^#cFN3;*2$>iHG? z9=O$NU_MpBv%6Hil#UdVbX)6IWRgoeY>#v!RLBAM;G+@-jpp0hf^f$8%7ot37O{KM z@jkUT0np-_Zt7QTJQjMD#1acMZtF+wJ>nuw_xCn2=3W(R|I(BuFz7h%8VZ{_KV(2-oZEQM6v)WrgRm`M--cY z&9T;4-&w_U1FbFL`3Wxa(N!ho!W4{)lmnLbAk~8?5oiVr%i4$!GZh8M`z1&%e7R|O z1Qyps>JXHB^wuG*gVIfxO6;|01@4AI(^-KcfklakNOI0p#>Wsr0Wo$A5wwD6s8YHR zo<3M1YfkfV39APd#8o#P#<>8PNt$<|hj$?t5{+x!F%UPn!KVil}y^pK#;Nh1Rj z>bLEgcvaRBG@(HD(PP5$NVlU;>kGD)UF@g~CIa)M-mbPg`VoVhoa^1O{hWIXWBZY| zX>vB-(br_VZ`V46@gKPuk18E=AM5zQEsD1y5;O(}EHitrhcC=oIoG*+^dkT&JrH~o zna6U=r`=c-gL%;0+i&KcDPE+=rzL3+HCZAIaX$MszV{hW>I|V<^qRg{J{5YB6jvr# z)C}WXCK`)xhOgi#1R!xya{UKliSY!Fqd+UQ_a>mW2w_$6$d5!V0<}ddRZ^BbN2tN% zmVD&gVH7bcMr`J^1ecF?6Kz4f{DOWt?UWDbJ-TVgOsjl8@8G%4(86N*P~KU-1Y7}apt12($B|6FMzAf(&~d(hwzKZtetG-DFM2=U)*t>K z*1Ugq;5d2zd{lU^Q%-YXRnnS^q^n`7bfYu>z#SQKhjU~MjU{5$WJl2IyfW!dd4K4m zbC~Siy)g@xD~jW2te!52y>i*L7Xnq4Evl)6t&N(Ry7DqlrM=94TcfAKzQ9{mRoS4q z!e&T$L#5zcUboa!+2k>BzZGSkGJAPlLxZ>812Z0to`yyBmG6BMMS)rhaMVYqL>N>Am|1{fRR21+WI zd117Kn_?k45)6tr`+xM+6(bq9uvgSoa_c3vWuEeCd*cEyaEYBx;iAivfj=aWnaFi!NU_$*+`aN3=Ngw zI}F8uzr^}%{DbANSp(w~OSJ^&kcF3On4}rp#ZygXS(W_~ZjF^?4dvB~miiR4G&MZ$ zIBFgZqDqL$GEa4-y}TMWZ$NHiIfTJe*I>AZwShZrFtFox3z z*40!J#}talgiq--*Nv0iMPuzt8+}}?8|_)w*zL+!PT8c7=HBNE8>BcZ^vONIJhM^g^@27?;y`iqo0}&;YQ@ULyC~cUk`XN9s zsiY=(iL0(_@F1Fn-kP!on1rh20fkbPV5nSL-mtQsZ2546jo$itgh3ThURPV+0HsYX zo|UK!5UeT64+7Wm+JK0Q1Z78i#tueoJhDhogQ6fS7GbX+l*vkVq}FMU7x;-GapksFR}N(-H@j%hsGTO@=M0-rSZ{zlFCgsx#Ew zh5}m`*<{EoJ6;d4jlVMWW4E*<+;V?Gti4y}l}d%`Q0rAJ5k}2wGK{~HU2$3BwQRP- zoXeWaOfj2cjOpz3(b!ye7h#SH%h)7ii(*Y`gYx*3^4O|8I{1S<{!f^MdRGAj zmB;tW<1)q4Qx>=MG#I6^2HP6JguJHG3h+|N($dDVs!GG0Y10c!7c~|&G}JXHR-P^_ zi0L&*sfiWSP}~bu;gcH5YAYwI!7D4KExL^*m&f$UdHI}|TU~a0sq5R5`s-38+#!@oubpH*O0W5eg_G?D0LaA+r z((;KBmT@bm-v_{2=%P=N zES~`9W^~wr{;_E^rf9fR4GQ}`A7jTcnULbfq^{{jJsn)+P9A@wdK@CaMY6^V@ZK!> zgfWBLLOZ3V;&zt$0>rnekq%sgVX2-k3H}Lny!!nnJ1`)x8JCtUV(>EKbSN%4 zNeN96_h8om#E(nZPv5wn5}ZXDIwrvTDPH;S2?0*B_^FELY!tj%3nSQyBL67KO0PLV za3CCCr6?h8iGp9HN-Y!Mswo;C;Di9D2rg;_MZudD^sot}s&ewjDPm;HZKbPNAiSg`z7G#1h`1ETOfh(BkjXEqNRcZ(MEQU>1v9CH?y*_s*(po z`E|G8MNG@z1-O`&mjrk+yB$`!nEM}=q-*}6<^%Z^X+9{x$xTbUi59isB3M86{q?4d zzC`(TD&;o_&IE5}2gbv$A!j^3>H2My7tMsgLs9T%?i)6ZqTm__h6@(0h??%INNyJ3 z6mKgxz=fAbqa2z6qwC2ixE4W26#RZQjmM(k|D(cBM8TUmb_`lwrVbntl_Dq1f=Mfa z(+WJgYyw9Eu1q7K3t9GhA6m3*DX+DG4F|jYtg?M1=phKt>&^u?k1J2 z>?pW~XM_S*?A?)H4bhEJ0iIG3%@N?2!@qXb2ypWHw(9@(D0s6P;I1xkh?^GiM!`WX z$2`cFmw+!(b&!@~ErQii@S`e0Yop*iUJ`c}<)8(4Sb&Qu-XXvVcbr-Wycz}92zo0D zt|j;+;JmnNDd?smx)>EeLu92n2V9ze4N;x|7ddx>04GAbtN35j;WK%m9{67%|U!+p^i~_HU(4`@=sO>(Ym+lLyM>mcS@ijSy>?A$?zYlyChf@_GDM8Pd;>(3hn*YNyS zgi|pas|NUs=m5AD;9pU2E#kML;B_jV52N53o|92-O28P=Jg0hYUbql0O29th-Ke;BYbG^#YtCw!~6+gJDY)yoUDrQRgdrxqn2&SkJd=Uj-tir9? z3PvK5{NJO(uNUBh6fgX@RDg@Z+W@$ad}xRsR1vKa0*HC}4*^bL9I8p$gHdo=Swz=q z0WKEfgn^1Xy!pCx*hcCOT}B+12ynu!3F$fkt}=^bep-NwoOoY=D+%D~$9S&li-2@% zDXFP09M@J~NQtlJrY7>ild`y6g{tqhft0SdW8-Dmg2p|%a zM)nqQ5t6>bU{^*nt_Q z4BsTdT?{u{fD>Ka)a+U-z|~Pf9>MPfxTu7V3UI=sWqZm{9!$}SBBGIs11DH4N>u`! z5T#~u1ctvy!L^J{8K$_CU%EBM4iexFQ7bO%;-Cbk-+Ki(Nz^G-qJAU5MM?iifQuZB zRYs8_Il&Jdpi-G4IEaV_2yhY6bOBB&(?*2v5a6PS{Z)XIe~oho0FP)zayYCO#ZyrM zR9#|-839kY$S-l?nmGD`YzS~M0apre3ZuzTu?|=AUyI;Q-GN7Op%TGl4b_te}XTTc=p>e({;x2Y|59G9<091lyd(9 zQ%~!7#aA!3vDGx%avOcJjptw_s`)$1;1t#MG?fTk$*kih5K>>jzYN0^!{?clJGkyt zEV%C9s#tJs|0mnNAz^HSzGa%78Vz$IZ}o^vW^Y=oHWQ34A6XQpG)%Ab-8LgOn zeOjS_R_ycB*|72-M}E^`@~!RIN1C-e6x7LReFp{wo=CQ)f&3ifAz`8jR4_YwqLm6k+eUU=t8=VNES962+d?=R;X}C-XyhbjOKrr|7(9 ztWkU(OI5J~I~dxU|DN}sAz`(@f{*A7ZIrt0)KY;6R1&Ws5^*Gb)UKf!*d~p?gMxuZ z7b}|+o6c&-$EIbJ;Ed>l+>5@&0w$E$l!LJu39=c+D!Fw!c3lmYTx@vQWOMQ}-glDR zD%NeM$%m$3v9DqUaTONn;&|HUH1e?cT>l`u1UO-k9nCU#pL`__u!GNMb)T>)Pwr$y z)Z0^EgDMQn0C(5hAL|cA_kkVV^uNthb^kW$em$82%C_|7KD6`4E)JBT35p?zsQ#T zk0mXe5=?tDK2c(hB!l=a@1w+EgF17*71wk0Y>i|(#QnDjrwgSM`(hCVHpn6pm`#;m zBq~Y>@n@|4;kfPtbab2`N+vflrO|^`#GIgb5&+6}B~oJvOMN4@hZ~!LzuRet6YNgO zU&0-$en*2w;&i0sQLuTL2rA}IQOaE12U37dY-Cl^0*WtAV;#HV(nfnm3R1xd)k6R$ zjxnT-ywDX84A_>0dFJqu*>mTyvQM!VpzVpcq}iZOv{V|Ng{?m*ci0^fDNy0pU4eOI zp2RbmA9EgA`CFBCKM^aie6{Pe~Cz`H7K8oRCf=6UR92qy0y) zLV1;F@OkPM!1$#v!G72TLs5}j*g+x{u(FQcaXoIue%p{>?WFBDt~O&~h7MaF z_eO|z+8!&45e-4|W$IGIo#ZN2rvy1RuGea>o;UyyV*0jH6IT6)`RN%-OMDvEjU}YB z-0R~Ks!Jm1bRLyB!F+K?d@fn6t+hg zJ(X`c6Ao(!Bc@N&BfoT%1);d`Zh4*|WDXY@luazsi{@_GqfqiVx{GULRP>(IWeKja5SoacgdRX*WlaM z`ZhL0FxPslb^JETl#rxaY*wnm6Qg5$`AQ0@v_|r{Ffah}HUrjeRB7W_ozwFZ^%}0E zz;@rhZ8U45htn(FKuL_g^;MV0sR6;j6t{OY$^m(V-h$cjNc1G0*kH2{rg+P&=Khq; zaq0VtI1!3jBGu|N%Nk@&V|`b`&L!krkQy?Z7=Y!(cF#ba44kbCgCVa0m`IKwMK*^H zOa5^N?{#`v)Kf^#{eCPs%u%Spl}NmAOFkZ(caWZlDcfvlJnARi=)5Tj<)e}dm%viH zXPzEl8y#%@qyBY2CAyM;K^)pPzEiCV#sSo8zD$kf+b9XB(iij^K znTJK%9J~&`tUPsGkK5zh8jOX3m<@6sZ27aJE39ca&-^=Ta83mQ-gF@j5^8?w+Lg{Y zrm7=J=LBlV^3V?I!ssxnK(H?hNyp|k5HM44YD@nIA*I@1iGUq`#AGwUY<=ny6B_+i zbF89Mu3Kn|W%V1(J$e&o<_VmEJ#3XZTi6pHoBNv~i+qoj5|B{Xf4~f)BW^0$CB1of zUi)rV{jg~?E1ef-xjFA_7t5CN>)YppK)!`BQpr+NG*T>}meY6=(99F;27LJ-G$e{E zD(G}4HaEp6DXJM~O}d;+-28A0}V%4_1^eIOFwT7nosg6 zNS6>Z-wWxTDm{Zyfw;6pk`AiP+dbJVuf?1(l*?NIKa<@g(u^`R2YaiOR=g@FY|1Wk zHVfWqPG%om78B2|TWYbf+V|p;7XWP}_X+uM7}vDZ3*iiyVT>~uO&5=9KLBc zg`J$H@8&wgN9OJ(kaqD?R&dO-r_|e6S-P+aE6f{e*&mJ?dvq_at}I{D=&dcST#BXZ z>IaUL$w_U7K0AWKfro+GxK_6DWlJWOiDxkT;gcIOMum~O%yv9TqItx4Qm>hAy6BmyKIxmTVQksQv1!*5Isa!ASn@a(tIR<0{~d)w zP2@MhV4%sx{|&xjS~7XEBAApHjZHsfITqIw2QHBzrgSB7Kb{>^#5qKYNQ>rwL$^q_ zLd(y}4VB=ZlN-^gGW^`!h(@Tf=|^(ovj3PHm;J}wxa<;{{(sF4g_fU{8!Ev+CpV%~ z^|Ny$8sUG)jbF+}w7!fM<)57!(FlLZ4V2>l*V-$ZdB5bw|EkLDQuX}&TKt#XP%5Bb zYVlv{jbG}GAMbDcQZ{}m8^4r|U&;phWIxjT`=xCBQZ{}m8^4qdMFyyQqIFT|`TwV~ zVfl~aRF?lZPDKl+#7pb)|6j+c6k2}PIF(B9&l#tRPSwxui$^2W*hKXPb#wJ`bz@X+ zbagdF!UNkVDR zga}O}!qi)t;=eSZKNaT32>q!r+LjcMpj=wUX&j|;jD&X`(!4N3#8rfu{Tvt#$;}RGV_21?Fzl!RDi$qQUYeGAOUXK+@>RcJNk!F2 z<-Kvy!lh*%Z$qW}Sp$oM%Ikv06=fP?&ut0}wvm(DJ86bo15f@4p4X+C-{IwkiR#>RRImu;x!04KwdIWp znj2wPO|?R&;ed%gAwn1;B+uEH^!7B^uYt+G^6Dj;II(Z8kL&HDN%BRMA@j2v2Swrm z&jiuZLXZG@=|g)`;L@^&hi)1$_amYruH{VQB;1)uFojY{wyIxlw?7nLC18W3#pW)g5nW2umEB<>@ z{?W2=kN)1V%@O;p;K7jkr{op)O#R}X_pj==#`*lwraQjf`v=iIIrq)!(YNS6e9qCy z(YNl76>H;TYm1_9-2?2qxRY(sx9EO+bNbE9*ot~s=`{V>iE z9oc*H$4h3e{OVZ5174Oroqa{wwDUJiS^9^dvvuOS_60j07Tvp_t@*g&;~_7<(|PQF zp56W6?{QvCq3Av}rDIa`t-13Rd!OE98ybCU9_X3);3EU0Z_$0@AO3bK`WD^48vRUm z^sTz{_zf?%j=Vbh77^H=oLLrqi|!YG?-~+)i|(^;IJ-akR@{~N4V8T!Xt*l&vXbX> z?jHT?k+I#gy^o(45nTP)U8^?D-?n;n?gj5#;XMt1+PHe5=>B%aU*G-h+spqrCo^Vl zuZLdG91==?Lv(-UG5fvG-ga+tVdJKICq6Vjxv0nFd$_wAzu}Jy+80LOB7#+)F8Mb4 z7TxPd7(a==MfXwtuZel>uY(pXs^7Ycp5;?UeMc}K{aEXlZPxD1Z>{=3yD!@`=N|1Q ze-uayC?co#Az$ab*UO*TxM$G(LG*m)>yO?f7~RdE@B5c_SM>PySK2-N*15g|_~AEs zq(EB0=m@SczFNBa+~<{jPxSQCbK0Rd`w)z7Y3S@PwfovpQkHf*HZ1#{c9TB}qlHuO zYy8JokH4fnFlc_Ze1g3*29&)-kf?iaEL9@OrHp${$BZt_QAv~bZ0 zSaj~C7d|*pa3=1af8RjQmxkTHdXW!6a_D>OhvT*Tz#qr$((ZevX3o`a@<)MqK)gps zaB)-7qp$tr?GJ0NI6ax3S>HZ#E5YdAfB%CIYxiUSRnkqneX;MJ?xEe}kpgJ}qa!fX z?Y=qVsSDTNH}|Tc^z3}ADwSY#FEk`A&~9Vx-F>t>ZNtFb+D-l_OeCDT@h}n(3E2a- z_QBbQr`$=;10{dGiePl_Pkc(!?)iUuZnSnEJpQ{X?IwQ|Mhh1~tiF(py&GyBX1eM7 zmGs^~L25R@5D@NR@-Q<_TXyF9;SE3>z`+UsJ-;G}Q`XqW*4}5h1!RUU} z_58!yUA3<7OzqAuy7pD=CVv!03m2ULlCdw0o5I(x-8L6bU-m>0tEykDLATMG!=1U2YUbx3;`CYQYwI{Q zoietH6Y`=Am6O4v(odVx_sx!iqV21%qx;LRHAA?OwmPtHBd6Wn@4m}v;p|bTIUz5~ za5=Spw6T(JPh9BHGOW8yPyYV=KDW{{y3Myat!cK#z-hzAr5|uY-X0)>gy-rA(8x}o z9r5p}SKsQ2?wFysw{RnM-_~&$r|yGls|dvwM0Pq~r$ zwJ~~gnijtKOHRM$HDAvOc~OSTsr93cH5k4B$xM0X_XqGKVMV{q+)BqZ43FW|UtZmx zQ>VGwYEH6OImx4D7WL$GIdat`PRNWx zTu`N-8tH?OdX>9BE8K)`#WyW)awE;rrF_T9_V;+gX~(yZf8m6@AS2)8g6as+uymg- zd!^ryH`<}Qp}OWpZlr%+{wbK#T*v93I4vLd+cZwdi!xkJtsiY{=LFe*PUihP=XOr; zpEL01ig&q{o?rICdz`NM4fN&|5wiO$PRNTgTuvPU8rkokO`G^Ax$Q^jPTZL?fE($e z1wTJWNrscy7lV#+YVk(5!JLp8g}9(P0yMJh#f^^nZpuH4Za_W1N8Ct1D!6`>(@r_q z!YLbaap2ooMDpx}w#VKRG=f)_(z~8(%LS#R+*) zrcO>30oa(VI~@`+Yx1EjC(!+(u-heWrMyFmF7J?{%R8j#A}`8tIhB5DqzS`5nnY^O zbU{~hX~WChNRzc6kXmSMVEI-(M4XA;c{yI zG8&oTYU^(we7DvY-H(gAUEx;BJEZ9H4k^04Ly9i)q70W)M}S85D6(6}7dEtb6W!u( zqx9TJp+hP^wO7hJr060u3UNVo1ZZTBpYzXS;_`}01htUm;yt|8AX~w8d4>`^G((eqX{TC~ib3$H};c_k!fCmk7Zl?!L z+b#QM54ut5B@MWd%I|)4<}*$=zuW&Br@IYr@8*QeD8vQT5ulNM+-%94@0`4~AKkW# zBMCRsKi}&!{wa%S^pP}?CSMS=A@ZF6rsB;v;A0Zr8Nr%oaD4{-cPS{ zYGZ$O5+~$E87}9HfSrMj*;cgv_YYflE<*Rv=wp|tk;)L@@gOmbQ|dbh#&RmmoK(UI znNg@tP!$6jS%t(sHJjWqMTZU-m()CNCtD(D+=UB(|IWJVz_sM1f3 zwDw=Nq+TQ6 zb>p<_o!GxQt&qn|OkcqWnNf%fsv|%n>psmfVpho3h3F2x{ctun(pI0@+&IO5JnIuq z*M2*@nG^D&43|Uw&hkee7@60G?k(QhTGSTZp)+?(pjHaFyo?;@6!Iu&HK%&+o2PL? zUX-bmL!H8bHWu;0zJCY3P}LmWSMDE?2XHGrx}jtMr`KA%8N+Gc$gli4Auk9GK*DoD zH$6oon;lVbaLS_d7t!rrGU+xq(h%zpn>qbGW8V7;$@AXd5Y_HHCuBw;E~t(GjqLp? zXUmQLQ@5iV(R$^#+(=8!`k|cu&TjNRr^|agg>ph(l;Lu!@>d3-GLJ3uZ92YkCc1wN z>KVkF(hf8J`jS(Kqg6jnr|+$LmlN`$43|@90Bx-MF9$xW8MwO%y7Id3&-}@)w0yJK@3UzqyfWT6b>BY4XsoGB{bj(QV>{yeOl{ z$uN4QI?%A98=vYk_?)>px(Tzkui{49Z_VKmoZiu$>BOns(1)`*Auq~sIhA_al3wYZ z5jpShV~;B`oRpX4`*JI7b96@-r)?b^dQPPilLvA_UXIl%t22P)$k6H8YHt61s z)cJ8EU7NG_9HlfE+kAniC@{WT|KMjR}9j)L-x;WWJI9-vucwN21=;6;F_27ieC{!n?iUEzxHzBV4 z%$RN$(0#piaxZSA+vomN&FR&S_76FoOs)Qz6Y`>r%mr2Ysg>$Cy8Tf$H_(jkkcL6W zxRJ)($bFO3$3ZWB#py=!?dzP77iGAdT0h#@!jMMtoa(POH-VEm1BPcVIl%tZXSs)Dee;Z1-dyg?|#6I^jh1Z*A6EdR^7gR@pMz;3%tcwi|Uk*gKW9jSPb0dBGRBZ~Uw zL3IRZWF0=JzoYH-?^Dnn73_H(F{HObH}&Uqx6`oYoW@VNY2}1`D8uE{`q9SZ&lk)% znmFC~1-jPf}^0ppnJ6z3MZ*sz@vmK$l-nZJrS zEo!xE6{kI~W>j^uXM!S2#IzU1o6VTmS2GoRAk~ zxSToyG_q}jo8%|nT9$@xe7pLcxRF-u&z>UV57I2}_3vIl%t`ej#CesVbJS9E8t z9QZaj(m@j(UvdhKl#g)gdhl3%PRNTgb#g8d42HGti!P4b91`3p!?@@VbdMyT@c(iB zlpL>vJ{g=&_HkU~R9G6hixbKsKhl!WU}M9sgKy57_kHuPo-}zK-N>ExH)B_hny|b3 zon@R(=Eo*+vgiMgJ13Myek9a&{k5?NE;S#0!|~OEf1&&7hVb7K15f{$(lqxjr~Ezb zR&XLCDvxtQS>#6oU4!;L-?Q2MFGp@MT~2%tU0a~P+t1VMn_o^$jN;Vh-&ap_8olMc<2`7Iksu`QyIs)6#3VH=z6S))`;(rtAMcG%3T_Bq%^3E~t(Go1Q@Xhs|2=>%SJ=WiJiT z@uus)9hyWLF6W{jpG(nFriQ%O{i}g{-bDAdd3+{fNdN87B+76(mk7Xv)+09>`PQDd zUhjdfR5tua#3;^RmZQsGmZPg4nnWQksEz<_YD7Zqsmf0VY(+P)*nI_Wy8bUilQMm2 zj?5@jC#Z@64N{)@p%&>SzgC-((o5I5Ax$i9AtQwiUvwMEbgRb>r1^jKd4i<>@WE?H z4?Y?_9jQl?PVJE5*RQz}zg}K*#d_gq6Otjd<1nO8e!9B}>Fb}SyomJHYd1S0ot^Vd z5K{N|6Xzp&eg9zu(%NtQS0lYSs8`|_I|{}wn4E7#67zr-KeWm7+P?znyD1@mAnk12X)@BmRX^TD@>_qm2~w7R^&X_g zufC;2dVgR08%QNDuX7*`T%0lt>4qX>DtdK%}nGr#d2i`DfG# zq`>@x$w-4&Jvofj`&dy7lD=)v&Pbm&PFsw0;9mc5q+jK$hYY_0&0Cqb1}XZ_CCAfV zZ*%9&y;sGJLrQxvY88_F)8>j2q?R`f&m;X$lXq*7&P}@W2GZ;)K@X8WON>5&wC!%q zA*9T&Cw_%={0Cbu(&AZF1CXAK8F6Dlljj=yEy|mRBxV2`oDDx$wnv)3X7mssdC2}H zmbFOs-{#jtiYgy90m<=W+6zcs!vm|4>hGQY4w89zO9#@RMRVPeep^x80qKUK!` ztDnzCx|_Ob9Fl%R2Ro$({cH3u;JU0Qa#!lkP=21e?vO8-jIT{{EWUa(wL^7 zoJERFKYj=4!mRzl7i9Q3)%d&CNLwdtU5V7Mbnq)kC%@_XF4C_TUOR-;K4`>5r1?ER z*n#xq!dLf^+!FG3BSpNGJp$>a#;x~HeywWovBsH!NMZ)~jDK8rf>Ye-*Jxn_=mfgq zRZC*M4Gp==IW^wNK*Uth7-D! z1Y9^UT3k?oE+;sp=fQZw4qPR|*BKZ9LtR!M_<6Q2nJNL6e<-8UZ2f@&!fC=V70*`o zY+aC{a#)_=lF4w?WrQDgV9x%VT=EhV3)HIRJCL=Y71Hn@72?JjTGATvSJ#M+hqvg? zBf!+wt(d{Z6++I@i?xIfxX0{uB)SGB)!foKvg|hTSZgeou`~jKP%-b=|GzB zZY<$k_-W>W30DaRxR^7qt*4m?3Ztn|qTh(eX1MO!(nHUy`V=wJk}~c}=jUnDS`eR-7-W z6M{R)`oj$XD*_Mh?jh@p`iPM05RCd7v)*X2!X-JVw0{%GEe1cvI|v-LB(zG?QWHb` zt00AA6(^rW_4jH@;=a*#iu#BN__Hh>Rpg{y41W*H5sq=JAbwR;+$4v;(MD)mll(K< zK_UNwixOki`zy?EDvp$ceU%`Ml{z6G0++w!A;ol5g1ccW3&(mTcsC7(WnU~Np7Dz` zn549H(~+gsn!u39EVfuyM=4Yb+)!!PN7Gbso~I76W_s&L@xOF|ni&*`dLIf7)5njZ3uc$k#IKL~-BgJV&)DO`zYxe|6|isF{5 zKP=OB>rK%D3oPL(uuM$OC@9D&oUEMl6=%s=xh9J_85eCO7iQ#JGIG;0aD!HI%d8D2 zhK<@l(&<~+s@FC^8(3cvP0voom4w7^fVMH|ZPEHTcXpkeVNTA;OV7wn&B=IM^Pn*~ zF+kghe3I?qOYX&L8<25C8>GWT5x?(1v!P0>Csv~M2`)4jq+3ipX|Q{2ZeH%pjDkE& zMgS>42eNA|TK6V=g&o~PmS(Cj*Hn;|Yo0`IUCi7at>Oi+V8YF^4>Hk&G<5pM#0$- zTe8Vgm|3?SZ?ZXcVs?g7>R-L9^$Su~@WD>LP_vT?pjszdCQZsHfCfR^t|5(9S=O1H znUQTme51Cl#+}Uh3u3dD!G~6^tNrgv|m3i=0v;GWzRTVs#`T0f8qZ!BWxhnp2=2zB9DcvzlRsqBD^A~tmJ3~>}z?xOUN~{|TE+f_H-a%xqubWTvRv^ZY zH3ENk1W8o9R;dLe6TM89Kt?rxlf#p}f}#R2QaE`0qZwBx0Uw~S(BEXD837+jE*66E z^i?Ldlx!QS50XCq24o+L1*ZMT{3jF@wig z29s3y6NZl!aBLi+N%d^4atDHLCp~fn7R*&K(O7f=nit7)qdkJ?hqq6X>ff~ivY3u- zf)J*IKacHK;XED3RXC5lO2BFQlr%|y2>6Q%M((_!_isZ}$e6rX51g0dNrv|%OFo2e zDZU^C^PUHCj1+LOdM66_Af^f(vw*uaGy;x#c=QVtoV5H&ua_~P3J8xCDuGG`mVQv- zR)!x`;l&I;ufpdu{FVxb%TA_2ZtVGx7t}%~&`5=sF}$4$U(N7dD*R)H4^rV33?Jp) zPC4Td^IlJyN?;?=bn^%pf`zr7$;v7gJHr>LaNZ<*qQa}l@N#xh@p3+_V&T{C1p&vD z{=lx=YXaVtMURe0J;lRwRYlf8RJ5wO%20ttyl#35I9@lr-xDw3qAk6w!mUcoQksCH zo;))?c~Lo~ zzik8@OFo5#^;6+v7(Pga8yP-P!CTc;01qfo2_%sviS7aIF)pt2Jrzp|)A9S&)udskFY-kJ1Gn`@Q^c8UAuVrBa zRX9)3%K|Q55jg_hQ=D8sUkK2Fa{d|B4+LCH(5C_(!V-hddI86T@*Hnb;k1OXeLtiM z;3e_LGw_EhoaeYc8-3zeDlefR0T(k63OK#LpnzCJ-2?$K2XQK#*YP+37aNme0jE`l z5y7#g{5Eaf7 z)SARTh8|pmD)<3QS6=}a4bLdx?A}eIA1&aa6j6R=3pge#j_FTPf=S*mcRlX&DSgM< z|8gaO);zt&m7A_qA>bl^t$@>lYA*nAit&m3yxeyKfcVUk$N)B?P~xIhfMK+B)O zUnSr)1FVC_D@3h7QcJIJC8ab6Z82Gr6vIkHEnpRJnghmPCg7Ok?aW^(;K*Oz2DL+< znd2D0C}2Pj92hYQ#4rJT>x~Cb5Rbql;K*MUM%g5*fa59Ww+lG(%T^{(DFlcDe#iv} zPmqD}8w6bBPZ4lDwYR3?l1ab?ep#vz0`N423D^Z31%75lMz1jN^8`tZ-w#ck;Ua&M zfTPOtR+LRjp*WO3FH#;sxk@002~-HU7(uOoV+2*9N(A(^Eu5L-Ph+zU10xt5`3OMptHAVGs z2#-=Ce~f}FJzNy9GJzzOzztSHWde@;2F715;1~htuM%+Nw>N)tUD^Yxi!T9Tp$jSsNpCRBUbgeN01LHRcxEMi-fFr*>2xEh*z=_NBy5}jX za0bxJGKC4)1ze1PzfrEc3K+ki(6tr$lLQ#LQ;_m>3uA|5wBMSj2U}XYH0xk-a2{`f_7=O8di~RrS%d+8`TE;K)hJxoH zQs^{d1Sw1)M!>}gtOAbwd_1>Iz(xK_0SA6rDi1&@C@LWU1#s#i9)^aB%j-CX@ka`{ z$ZryGOi&f`TLs+75A|;s0#JZ6RtmUN0N!=51n>kI7@tAFMg9~4NBwq|Q4`{5f4mBK zjw@6GDNMjF;9>;4$a#V!#_z|fj_YrRLU1GrxQr>{#>4AcEl@59Ab$)qo(cg+-8_O? z0Z0BSc2)2<;(~tV`io&!%yVF60!accMo=c;7=eNDmkYSaUnStk&)bvQM(p|*QUt-0 z6v?i0o*>?m@#~-Sw`WCaRq;!#!73AQWaa#o9LM-EMdhr?t>OWIi2?@Jvhf7PF#bpZ z7x_&BPOE_3W2^#>{4!4wZ<~1p{O(q%65#xPtnKIg1{MLoC#Xv(Ma6GdZo{%<5&|$q zz3~T*3IWF)q_F$8UBE?tiQOG}f+WW8C*UG~62+nXxd89+q&!1_-mf7coIi&3cq*R3 zUn}6W3RqW;_Y-IdVg2(Q$FL3rkHE?Vk_24LL79MK1iUj^F5t)?k3Vo!2{`g&FPPeY ztq>pzM6xaxPf!Z$9mfc`$j`fQoL^%6WzXQRY^uaxSES|aL80my0tVIzyJ7U;>o_j{L*%2M#~h?dAzGFn)u8i~PJ>&-v~2wF)RQ zJwu>Ez%d6Y>|xU`;9>+4dobYGwp`m6N+5qpIN@Mk@q13SZ$6ai{0B7d2HV+7@lpFd=x9+AJwg;L1p1IGW49N1L?b|z3M;9>-Rtx$_ILFJ6!AmAc@iW8S<4y;VT z zG8MnX_$vfli9q466>wSws1Of1OmWo_#0WSF*qK0*fQu272{`hXGyZY`7x}9gPW%5T zU}XZe&k%@g<4h>>r!am#K#5*40;`HYhVhpPIPlAL*L|fBfDss&K$U=t5g6LKCP-rZ zkpeFAn*<#7S5a}Of2$B63fKi41?*G+E>{5;`Tg1{444k&FIT*hLBK`+6vWZ~xPX-j zn4Td}A>bH63gfp6xEKL{LCE#TFn+&q}BrqTy5*ZIh-Pet+R0{>t^k5$0glL!r+FW^|XqgbxX1UymD zvs}RYC^&gxxz0ZXg=a9~)dExOhBc?WyJ|E`No<9_r~k=0ijcjL;?^foE!-l!CHAOY z5l&uh;nu@{IZ=Wm*)u_XvJTk1Dp+03A}c4td~Ls>-UjcO{tD~f?xgon?;c)z*D8J! z$$!ormZzTe4)*diD_8_sdDgq9HpWbBHb>vn^J~RBk5o_8w$?uICoL*99W=G1*LZzj+4jI_ zduZ(~nWruAw*D1i(HkAxYyPzU)!CA?V6X-dv#xlbf}TRO_kzJ%j&?Q{ZPyxmJuq)I z7G1%ULXfuCtg}W(nC}@Kduy&Cr{8=}Ktb&SZ_sqT=B?s==EaC@2UxBt-YrQx?)bKN z7(1s*s*%`jx zvFMDWMjLe|(RL!%ff`Ee<`=Bdl5g>AAZ@hmG1}t7{8%dR+>@T0fpgI;cP%D|bpRZd ziKV~_3KDEPEe%%kbYAU_iWUV1C)#!=f`VY<_dJN^cVw8KGrNw%s03K|&}bmc$!+Z& zVHufdtBzUF#c110%YIwT{Cr0n>r97a`6G6LFO*M$V-Hlxe4``QDkHjED-E$#Czi&O z)Jkom7q^%o?wWDNk~8ME#!?Gp@N}Z>vRJ6GyW^TUBAl@rOQD9a_%-JfHJ34c@u+c& z3>S(nG%m`Xu!(0U)^P;u3R14pnP|%Zn~0~ksVKX#XlMAi39;j2C&a!Io4g~+PV(J7 z14z}&o;vw18pvbgqL~_MBx8&=pD-*mPe&ydek7ExZ}A+k7UO0fE7s8u+~YWwSZWT7 zOtjs195vdqp=cMyxjQfqk;Yzorqu_tws?ZIqGexo9NhzDjiOQ4(Yh8T%3)!~MI*xu znEplPu<%&NC<(3XAyi?}tgtYLZ}Cm6P0$x^#M*{rQQZ(}IFzMWkdz69zXXZIMSWYw zF7PO}`!3zyH^O(R-E+Ie3u?i)WHE%sS_i;Y3sooA+}#oZ=}ELXL{$m4-DsC?nDCP8 z79ZdT1N{~lYnmICsBen=C3ef%tIHsG6Xq`J9++xaw8*dtB9(@e+_MBgCc>hQw85*k zpA-Y83<+Ei7ZzPq^~9?ZvnUM>2Jwvk~mMtZ%K>Y%{PVbPFaydIr# zn0;ve9hFz@5S7t(6H6*PEd1)bPaKXoj1?7xC)#d6Stl+^1g-F+kAxbDCY7If1j^yY zI>UmRZ{|1xLd_s&lOR=ieZBySobl0Wa8x>=LLofZ6YA5_(pcAwY{iijFugjJjw3bA zA!evxzpH=!Eoy=!Ujd+*)2I~PU{5z4M^}O#nA$bI&@*&dpoiy_1RI#_D5LFfv{`J| zq7_RGra-UXaJ!G^uh!`(`x)`wPEq+Wh4TA_MlfiNHs<#7*7X{#w ztP_bVH9$KM9cQZ&nu5X^IqJOrx-PXX z{p~`3`_bP7{3Vrpy@QuIw80@cpcGdg?$j%#I2A7$IAju4&n<#%9OWHMDu#IIlqIz6 z;q4@IHxNw|x8~&dVh>-pG}8>CNz=7d7T?{w;vVM1lAoMs%E%>Ejq0@~P3C!fx8N{j zURmdslaT}8H&o(1sjM8^xWe6sBwo_^z%o+JYJHGqIfySaTJg0f znzvvj)839AKJ_tWY{W+zL09=`GTyo67NjYqOi}N!q+>Qk-v3eI>{&|sf`n?^T9fyG z*ZAmfBM;HQEKYLeI;8K%%aFd_MB@+Zq#nd;eaQQVU@eso$sgn%r0Gjy(V0N1f6xZi zx3gY9M(aziXL&W%EFg0}08I;Ty8CGQk<`u5|9ViMQ*zJ+*zm|9{!2ZAH1o)uo1kks zb^O<`szO~J$VG-1>jQ{q3aqnpkXu(_?X54__MUr?{}6W!R-T(M?ZZg^YubPWHsnr& zYyt}^TtHD+1|i@m%2RYiz#EV?NwCl|F~Y+~+Z=jy`QEdMUpqG=*_y0P)%Nxvf7EJv zc$cx!-&!});g+U{*9w|uNlGK3sjw!x@_;^A`?trE(8kLS>cfd?JFGfQI;anZJS@r9 z4*(}>hjxH}FzduuU?So0CQ%0H!0u%uzdOjf=iGae@IOFk-EmZT?5G6WG1@Y-&@>S44cLP?auEgYLVdMLe3 zPl&b+7SC2MVqNGNG8}tVjtkCOOtf81v|Ui@0&cBJ&D7l$|4}`t3RTbqQL7+P2R#D2 zB-nm2+U_TmnvxRSOu-PhtqLlG)F79bTnx z+}>1>mnP-H*FsYbcsi-jke*dI#RZXQ09o>uwl!>&FoExw(2MSvP@lD&PNtTm(?ES9 zY;mBJR$o?X_}Hk0KfauiU%c2b`tx@UaLyl$qv)NXKmDcKBH*ool-Kjny{&_l!zt^u z!I}~hYt=`P^1omK@im)!AW6F59<14{+)b={*!AKK@7@iRe8IY8b3qoYdxjfA=-cbA zHHw6l=ec=GYd@(l8J8U^9$5B`O+Q`8&F>5Jc9C>m+v)Ay*Fyezw{WgmhK0lARuZ(2 z-N@lf8fflV_BG(5;g^%p7odfGoaEu7nMLwHf)>`;0ahe0#1+YZlGHhH3ke}BgX#ro zx{xTm%f!<~ubL6m7nO#J;6MjUn6WGFSe#?6zQ9If}$7>R$l zcK|uC8SZu)t?;w(Hr(*8z*!qiEd2p@I!gv(NCWT(4lBuriXwZV0_e6^dJ_9UALP}a z<)WM{8R`y8lIO5s-wpnDZ95Gyj`fcA=X3A)OwoEI>Xs&gq?oljS}`5T%1^XCy{xp! zlcbF#b+JC$i`{&pHKg};Z4XT}iPE_ZAg1<^A;X*cXnLmcBujMldg_z#CQbaC!D8gd zPqpD*W7ti*isV1i!^p=(ZLn7~yZ_yzHyp2MHY_$%8L=p9p^RAUCDr1( z?$Ll`1$ox*X>%JVG#*v1?Ft__fCs|5$2@2k$2g9X>d79#?uL%8!X{pvbouM@}iHTZk9cxTgn=M%affd=8TPal$c&Lg-dJ`k>U5yrsRVBEoB z7H(L^(n5T;tZOxiM(-I&e9u8v2Ye2h#vka4D{?;0l)xRE0GRWhen4C4DEeGdchi8;4Mi_Gv0U%l49s#B{`X*?C>PCg$!$j!cRbnHz{@8(3GVXP9ms$LpgV;5@v1|AQ^DomXvS|v!(&1- z8Befzo?&Q(yEn8lyyop?F0f>H&-NCA3J<(z$OAIN?^}jKAPbzmb6|xbx^rYVL(YM@ zxd)0;4=l($uwdqaH>Mx>$dGzqrD5WMRg({_GFYlNEY1TuFc)Oz!iiznfepa04A|t< z14|B+wK6>STv|449AU6bwB(vCbzXQbvP`e@KRs1^a^0ztQ^lu>4JW@m zRd#YMK&1xomz^p)wb&WMWGK$Oyt+jHXZ12K{OZk1ezyL+@X$9ummDlPwDr(tr@|@! zp9Z}IT5LG=1~_HtEIzeF@hw!Gw=f1-DR!Dj_~N+vzf3ky^~E0+Utam;<@c6f zUQvAc%P%i(v|il!!=?FeTw1v4QrX%|3syUG(P~;&ZhGFdLc?^E6PzY9kk`LU6`Qki zGV(0ueqFsKQ!eaNlVLW))=>OA5>HIVDhV;DL3`3jj>~up8JhqEUC39v*PKJakCuL=1r$XA3xf$sKTT3NohEapO1L0R<FQ4kAzg)H?(`?X&Oc8ObjgxsGJ~_&e4_a#~(?UIA>?Q;?IIEdd%a zG27z&#ytHlyugS4pltXtOUM_2YIxCp6QwQC5L2qRUr*XKc5VZPRSA7$8pR|_ZkjnO zFE=$i83pSSgpok&)|_^Sn~Y{%fG}tW@!;Lz*Wd}XVZHujOqg3RS>DV&m{h?}NC~j` zOYTw(+^_I3&|gVfOqP^*M`*sL-QuIPqr3W7O)%MOho@6_y7Lw>O@X_V@f7rytp)HC z`I0V@L}tVA%iCnhOS-1y#=Uxa1T%aK*hxB9$!+(%FVEu4feHDSWsuO1RsL>(?K`Q zOY|AZf1)6VSCWn#&ShH>v8jvFOmYk4NH9E2>5(OnY}=>}pr_49{v3GdO5CdT30bGo zgk%1A{6L@A$b1~+%ZARr|5*j6Nkx4bv=nvk*lHU(Scu9F8mmvd4`P4Ut3`IrMMOQh;%_L>*)$Y@$RuU32$IrR(tl!Z0j=cYyGCRgmG&l87%9 z@YV>h<6Qw~FNbN!$Mh*MmM>+*X!tk)hT|51c<|`66mQ+CGLFAQZl!w%=#e{`%*po- zXoHCz$++(bTG}xT9UaMk3HCo~fV^;^GCo?1{6Jcg6ZA}F~ZFKB(*PY@W9IU2d( zm@MFUx|Xba$s<7D0>enuUcIts(^~YxQA*}q)&wo-`;~*OF9t&SS=l*9ATO zku2fpc5;}b$4P1;JPcQpThBAT--%`wJFO*itn9R!L~-;n@rMW75Kl}q9GQw!SE$vb z8ieR>S%HiNJMVa)7juN~RPeCUUngEowm~FRv;$+o2N68DXjg_WSKvClnqHbzv_E56 ztzwB~c!dhDCc{5su_iJWyNYEP!}qH2YNDCTM8`9hlPZ>UhF7U@C?<%N&b;AcF10F_ zIZX6{3a@5hb+ZB8gOmEF9X&MC>bzpfbW1^{R{dx>c6(%fPTCBKHvAd zKB0Z)_CC|AW3T+^ik_ExH0;r{`-pCtUCmu)L`{v%ju_iH_PNkbk2)M`zal)PouTdN zu*I$WwYqFr*s^1b-OVO6y&3X)uvbu7qkzDr4IBC|@^x=8%jcGNy4P`!f$rbx!rb1% zxqP`#&OUze(WbvTJb3?}@7>}%4{sIL-nfx{{d$e*kNa2VUiSa}ql>+NJ63J33OT>y zT*2A4XR1z>pPY1}%W?g&^GCNH`S;`TXqcId4A{XyV~qNw)@RJNqd{_yRmQIPiyusKd|uNyh96qURwF@!&{G> zKdL|0<@lr%%~WB<;S^CB6^u*kQe|I&s5fn|-nf?f~4 z88V^i?q(fZENpq%(680v)~CY^ZByE<2tU;RQHRh@vCoa|oEQ7OJ>&*-FkL! z*yB=-bUo%3PTH*hm5z5pG|M!frDYZf{Le=YRcxf=1KE}n^+}#tQfnmJ}?&1KrKW)Zo z6Xp!3j~^(VTnJ+tsS}kxIt9}5;5mFEalE39^r52(oeT2PQ_ZQQwyj$x*^;b%p2VcU zI}Kfmwi&td06wsgk`LbX?|L*MNq3+#VoHU*s;$l3;l<)3cs-b}b8AN)Y=nnL*kss~ zMC;rP&~ZNe2;P8TkY+SlR{~FhhXdRO`16m47+G??Na#lBtinKYh^J1$S}WtozcFu$ zGLBs9Lt5nv@|CrD*;!cEjL;jMVgu0vIn8x3zW=Oam4^e&P~<`%UA35e(`~VsDP8 zw#Z7)$V+CrVP9=?LEa3dsi$K>#Q#Noi$?#@LRu)%CQ`1zV@gQ@&J%X0q(ilk6%Q_t$seGVOX6*27 zgkN>e*wGv&{&0uWoFv1+@w$RnC>)+7|De97o_d`xQvGXLuoY7R2b;WOqOpL1lF%}E zXqe9C@?mRT1qvf zreoHz)pRNvAer5ZVBt2*a&f|qN(cFEt8(iz$OmSvchR-=0(E*LOcLdH&g+oE5v9rD z_jY(#n#Gllj*Pvx9pZ{B9TXjV&+cLIEFB#Kh}qYv^y;S|6Ic35cq|Hq#FY*Op=}-( z-_oJc=z5e6j9KlPy6JJf&R9B^z7p0eIn2^FzSmEd(9%~r^-7jISwdoa?X?7!4(--! zST~DLuk8@yz`nf(^>xWzuhM~jy$1Q2{hg_xH=>$0m~DT|wz*zWe=Gsm?%5*F+Gz`k z6<<+~b6kKs0&ON^N6Sj5fz32}WSnztIj|Q!)S8=2^Da5!TY>`?H4Ta$y7?A+!Rgf= zU`@{Zm(g~^XgjY=S|5xdrSVDd>h(x`)Wy;lb%~{gN$^4xrb~I2z7SYC&JWJ~O5+2; z34{sP_wU)_d5_D5EN;vg&QXT(NRZ~xjbnwM?Nkrrq@;9V%#CT z*Wqcp_CGoH#KH8-KzsuX9h9m>O>La-TF1~uI?wp1eK@f z+E~Z7SlgL+NT2W8Q$sY565ZtSVV-flj=o-h(1K0@1Lt@0OMq1dH{#r2a%r4fTv#U~ z{KV9J@7U!Aldat#O>u7NVSZN&;BNKwQWyx=ud(!nq|zZ076Z%*?ig2EsDo)r*bkAE z;)ua=iYp!Aw?~HbA&waYPzR15lodFcte|Xrw^ez@-oFb_Hq0IKgMu+d9ibSMUzj=0 zb|uz#?RMMJFe}rOv?$hLD-K%--h?!m8iq5>({K_koJGg=ftjurk0|@q51=UHEqkqckHn}pmU!gk1;X6-`(7H1~S{uKMcBk*X}h!A*aarYwV+> z*0<gqKet#o>Nq;XL*4W=mCsM(8Ym`2bc_wKh6-fMukIb$Z_SyKbKFqw~V#ck*3(S5r%8{zm(*RRn#%Gk0|W9;f-; zcP&hQ*X-VQ!|(a|-MkYV+iE^XgUF6^8y{veLMcUFZ3;#Jos(YMU%wQypqnOUem5< zl{W5mdYX^Y5rgt?Q8UoCx9BeoT;+dh%?(TTSsE*0H67cZKKw_Gw*6^aP?Ws}o44kP zM{E-$KIiZM7maS9kyJPL2r$Nuinr~e^TH3ZDU!i;^C^FZIp02Dny{pSPRaHynG3mu zS=Bxz_g?oz%PKh{w}Uwj!O-7?NqsFxLSM74cU?NfK${UNYUu*=O5$vPVB1p1!PJ@? zJ0akL$s}yfBPfPOfaI6K{5-3>r!G0xb{yv({>{=04@5=RjLzi7;pD@((uHAGNM;-u zQD9u@kJRok1SSKrT;S$sC1+mujxV_vhb@iV5%OSE^3X=6ypZ@f+ilyg&Xi#fnJa)T zdL?KJN@rseV1USQ?z^WOc(5}l*~UXdqcmaWuugzRA_^{j7=ffj!&;)gzQyYRofd$i z8gnyrwB}(~<@Rv7p-1Oid;%D*;xaPZUf;EkphegXtDYJ`3kp;3`{I0^ZgIAK_wU%Y z*Su_dpujLs{jb>jbR9(`;E)Swc+dN;-PY@5Vauo^5K5Pe+`o_F262^AO-p!~S!9;s zGKU~oYH|M-XcswPy}{>@BIjfzNEFq-?ODlc1YLGWt4d?6qp~L5Ik^eaXWL6NcM>w! z`JZX5X>2?BwA{ry4l5Uke1z33O&;8Zz(%8S`A_L6SY_Z@IvwsPrlit%Kbr-E`ueUN z8P-i%;Z!;yiOyNIS#-AD*giyJJ7O?uZUbYuQFGd88wJmDqa<4w06N(UbhanR7G~7c zqA_cpPbwWLLpxk&)d{e$NSX5rO)MCs(KaCol9vF z9RX;dJW^qvr64VXE6q$TG^85vlRYr26`rXI;WfRasK%uYRK$QxS-J4;xDY>c15-4f zH<@HZYA!rT7&E0#ZPLZb!Ak)*B|21lIY(8nvp|Hb^{RQL?C1m1ts3BMsWRoK6oe+8W~ zOdd3@=hGZ@?PNGr4(B}Xb0jpVUI1m`ubxL>n80$6cT=E;wc;$f|0$#Sn84Lz3^VL z6}&8mNwpgb*zy-M3ofF;KDV2Rxrk&1e`?$p^|i)Dh^3!FO`rR zqv!f_N&Y^FehFD;fIWKiX>V3hjGW&vO>e32!3_WC8TeHd&hmD*bB7j%xkA0 zZ2PFJWQk_!C{_l9GubeLMR^#W-i|MY&i~cBkKF$DqQMU60Z!{@tA%b%u;Zr%IuBU0 zSl{fvXrM+pZ-95=`kQckHR_)84zoKh%olDk*ztlPK=#m=P&We?pZ@4#KUkkS$~oLO zBEfbe>I`(DXT#D=M`v^UMBDE${}xsZpMYt^K`^{$-1eI;wluDVXDr;O=tymiyJJVq zp(y)UGN;@vNOn<&%Swu_`NjHf=^GYP?65S3GhJBU*1jbXP)7-ivcoh{M{0s$IMHst znBdr1bF8T9e9@KIzWQmwup}6`69Y9cj1B$ZtC2;2c}@MJ=GR5f|6TMzGc7p*hq&lL z*MCChap9l*%O*75EocG&Kwqa`1EFOnpdvm^VQKly9 z9zH%pQ7F81385Urp2^Vw7CQH&WBbnCzcbs1Pz~SI*=sv7D;o`^1&0@Ih z_{GIvs|vq+_pD2}^3hJ~tY7V-v-~{TrKsZ^@@q&y0lMWqR{J(CT=i*QP zu-wHDi_=~FN3vRgUv@^}fKhp;Pm#`CtOSH^d|#j` zap$iB12#idE`BHv7k`(7U0nPRYh6nO*j>V{;#DSt^-ntJnqoT;bw39zIa#m+|V`)2O5lKz~Sx$;E%y;aY@_i`6dSj*H*A`hQ*H z;)khoF8;so)|HTq@kv(IWie%OYZn2>C$2^Ah4-^G8f{G5xwqN*;(N``rf$kaR4AJ zHCbIRTeaWu(A9<{hm87U9=|kju4~J7WW8%k1xDhMfRkHKy7(PwgIxSERh2IO8*_P` zD^cG4^&1E$xi>wVgx$UC+UUUr>ms`XF7YLyf%TQQ)#)&N0gEk2{y9yc41*788FZ~h zYOXm8h8d=1X2Dz3)O<@S{mDs%Pa=bVrUjOVOw7odj3XX}zy}L2Qq!j3Z!XL$PfyLx z$%D!DR1^M8&C1J$+2s=p@}|Myjin%a#0871>z zKaDI!FRnL1sE}q`In79QN)=*e>JmqNbxC19B^B}%v!wvm&tyR|G7Ga(rOByT zxrGz+3gAU}Cd_A&6;3QQ$yszX8byx&&d7kzN5e`Xj5QM$E6qrUbwinXW}3vT-1Mwe zcmbX+;o0OoDQjw8!3>EOFRVP z=8TMNXFBUr0&BIhVaSpz&4rY3+ky)z4|13TJGEGH@baQpmYl&5s!R!FcBXhtmI4!u zGAf=zZez?_XJyQfYfvUDkt>MPxD>x)URYN-S?Rg3eo9s@MqIy#qqaGK7n)}j;6j|7 zytK4bm;@)~rcOwnoeZ3SmHZhRh&duu#H_w=%Sya; zB)eg~z-9l2`H6jB^#~-jZ9H_aD}YuS%5G@6Bz7H)R+X8x?#+ZP7nJBssRe}@%91@& zd&RwlM^<5>2`mD~W}CLmg-^SuE1}9TF3hem=UK89&9EQ`w@;W4JMt*|Ddf-zGR`GD znyw_jE$lI{LUG*b#skE-2j;yzj)!GF^Cx@3G#HJWk0z1sTtK1+!W7B}@Xc@1X$GvS z8Pf?iWljD;VNnu2O(n7X6m~S^rxvo3pIXUbe)o^WV2p%!W1_$Rprg$awI)T%qx{9UcHig4vq&iJW_?rtyw^fDj=NUNh-Vx!&6jv zPllURct3_)Rd|Ae%Tk#tU?>wPSK*@>UZKL18E#kMSq!gK;oL^5C=TV%i)bnns8tEf zVz`8Zz(SFhFq}@37Vx(jZcy=m!0<>B$NK-A1;mH}fUjqGk_z9-@DvrkkKra2{wu?+ zD*OuI)c(s<0elT$xeEWADXLK69<0RdDm;MUl`1@x;Z-{JK*y_~GYhCy3D8AZP$GOI zAI_i1`2E#tPdiuFVNSE&MSGexy3T+6D2FNNnt-H_pa z!mCJB(URc?72clVkqYkoI6_wz5Tg?4%kU%>Ze)0h3LnC7lL{ZjaH|Ur^*@dUl(_^* zQU=4zRd_bTD^&PYhTB#6Y=&2=@KVI_`m0g}yu$=)Rrp5?SN0BcHeBl%?kBwN#VYub z;RY4Ho8h=G6TSX=EGQ3iSH`mkrOZb^adhn8H%LHmwcm%`gN)(Xb{5=@%C%gm4 zD(J^>g9?vlc%-Zf7{&r(RQSsbPg3D&3{O$vnG83na5KZL45vLUOzG<^piCt&m*M3q zd>+FqRQQ_=x2y1F46k&>;p1p5pvpBs`jp|dDx7bkDGAdGFavzLf%qLu#J4a#{L?|a z%63tF!;@FEtuz{cx>#2`CXlph;nv^Vih^*&c+pMRy;rkk_XEHm*MtfpRzsR*j$2*%xl2pz~KWMXu+^gp`UV0hLF)sgC|9eZrOFslwAG+i=l|B;`^;H0g!bOs`yVB9&bQZI zd+pcSueJA{oCixzEM&iqb>Q}kv2a_zgW`=dt?%0D$TqI6Og*E54$OkZ0W)SJlgH;a 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 Nk2-b>r8yb#{{yFpqHO>G delta 159 zcmZo@aBgVOov@H8fotMoJthb4iI?LT4W?g=Wf7k)V9I1axq~s1D}j@N;Q}KALjvdI z*NjSB2HXq`0t^fc2Hef!Oxwko7=NB+)(GKj7rwv<#7scU48$xz%nHP8K+F!r96-#u zUHAgm-{9#2`#4y5C4ffgySjPmJNf&EY-em1c+a|BpjqGnE68HO?Ti}){__I>mqIUv diff --git a/board/shredos/bootx64.efi.2021.08 b/board/shredos/bootx64.efi.2021.08 deleted file mode 100644 index deb0bef685f93d39e56e1efd2ffc699b2ef41e05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643072 zcmeFaeSB2qnLj*}3CRQkXM`YwB8+XsL{O7T+l)lWfduZO6Ac1_Ac{q));9`g5>$|+ zlPD+0Y296G+uydkwf4n*>DKLbVG?8}FOUFTX-EXERt-pz;Rr;lAs}#`?{%MZpEE)0 z{`T3=^T+e~7(Wi@<$k^H>%QLa>r^j$#^dvNJlXi)G(DaK{-wVP{`>hq^>{sIO6wTU z@A6)`JmHPJa`~eB?q3&Lv-Xj1uD$!A(5ky1e)thJ^o@H%YoiZ`?teH`dCS7kLyz2Z z?=_=Gk1VvCuBq~P?s*cufA{B$L~jG0FxmzCGG6fyQR!z=DQiCz(%OvPsimiHlRe=o$e1Esx@;v;6y@)a+vv>TM~NKoO!7T)$IEj{+uX5KmA0V)me*CO^;*T`aC_~D(WvZ|&9?B++6h*1t&N62qt<#@@qlqf zrPjuqjqY??qu0eBvW7DiH$^A z(UY{*WQk`g#;ErM(#w#%#?VXO4V^%Q{)?{UY-<7TZz8FPZkiU%gYb zUBh2jYwe$U7SSSwq0e|x#`Ma<3Z_*S7JWvMGU|LO6}gX!l+e}6zgBpuUAVEZ9y6v= zjLNU4s|vbWLsz`R|Etz&SmICRXbFF2&oY)+ezASiUoqJ2Rlm#

I_<1I9a5*T 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

bier@K8$N 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

}fi95BZs#9rRdfTZUlt$}zly2L0 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�Ui)A1JbQ(fOV2tSy_1?qROf8(INX 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%0DkMtKuI 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

|y|lI>6G!RK@Ye{8F{oa(p$oG! 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 diff --git a/board/shredos/bootx64.efi.recent.build.without.efigop.efiuga b/board/shredos/bootx64.efi.recent.build.without.efigop.efiuga deleted file mode 100755 index 50ba159f489e189a61af301722d2fabaa3b8dde4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479232 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 _ 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

+!2vv|NNIg=llIqZl_u-~=*JoL`)m`%#%E%8$ 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

  • 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

    @^9-lMJ|?5P$*(2?$!~9H(~3( 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

    EVr2UX@4T=+T75|uU{D1 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�$0WIoFqH_HXQ<*Es#MiLFB$uV-Q)pit%PnPKEg-+p zeF^U+hJnYl@~}WXj%{7mGv^5f9a^c{+auSkN-qF`O$xV z{sYf^VfWhmRvM&p=4b!yjq2wOOo+kQ1-|@8A0L1ISN`G6aOeO1>zB8h|9ETSKXC4f zRC^bJ@l;S2cJWts-+2bw020!1emxzEFnVq_h_nmq0 zV6rfiP-|9fX!K^bFcL@$ojaU0ug7o{?G|jJNfpS0L|GUR2Xbt$6!a*xI7ZI$Y(?~1 z7*0pCLEl@o{uUsqD-25U$HK~VQ_A0x}ig&u~9;neoaM(Wnmuw?T-OY%(IHN$#7 zsfHbdk5HdB#hFF;iBz<_qmOHl{=6CdXfZu*cnNP#aN9JopRoD%wjkz-THuD2Es_-@ z67~vn1?fL8uS@-|1%ec4uwB>9_Q7hk`$FAZe3s|${j>RFKk~}X6Mu76jpy3v*x`Ft z?7yvxeeUOODaE48uzU9&(5HXpquZ~4`lmm%Kl$2E>`%L=xA#JI{;I|yj?5#83m{a5 zrrET)oV>sIl^xc1TI*3gvDk~~WwSB-Bnx|Z+ee;+wRR|+@Io2HArAYiKG29Qmawpb zSs1?An8-zgr7bEN8SoPWfaH`2->SkSla6Z3pmkiSwRCrW08!8?FVn&9_xQYRA#QArdSmO zmfLF<37}w1_~t|*6!v$*uw3re^=fwDi|fyp=RWvn zTaW#XSGKQw@2VV)ZJL!7p(z~w-HrXrsP--b)0ql)guP~`lGEt2U>$qLN_bdTKcu|%h4vx&(OUci4??dWR{T#+ z0=58#vu-C(Qo&CR0 zpSc=2wHaFH?LApmEiBeBNPkU;`3Om;0yMuVs2*6)h~4;WIa%P>31geOd4yCGd+0Ko z9P`&;$tFuXD?KrsskTxwRklw^uge?aJq188Mos*Fyi?6bXFr1v5Gv5o7V5COTpZ0_ ztyl9Gx_0&~&)en5P-c_LuRs*Iyfd z_Lu+h^|!wGvo|kJ?>w`+g{QaoLbZPtn9m5+SPP~U015~4osuRpe)GwW$s{+K{|#`m zzzYE`oKp17+vg!n(DbA!H2u`;F^}S-!FZepI|swSnaD!5qYXevpBZ5^=rm*ZEh2EN zU6DX3uo8cMAHc;E5VxZpzGI-Zz~|;`z|j{KohSrcor6r?36v8EnFWFUoGR?mRPiDm0Bu)oh zYN(d=2w(&bStn1Yr7HG0&KZ=Giw`&D;Ofq#fcRhxT7mffzjr*vDr}=`XZ5PyI;a<; zWxXt4M0w?-(<>kTv)N;R<6wUI{j1SvoPFP-eozwkGQ*hCvts`pR`79Jm)`+jc>Y(% zU;4G5d}`u9`^?2{xjCP}gE$ccx0mokg9lxd!ND)BeZD9HV1Xn5KA?n-ilT=<5a*;+;pLnDi3-nmJ_bm!8 z`_D{5_O`sSVgf?A5AqKT#wiS^HS;xTZ6|YM$P{Al3OxjM=fVH4@|VL<^DqI=>=C?_wz zIewl4n;{DsNyRpHJl655;Kyl5HP*)7aC+!@-)Uk{95ziV>rWGC7`7o6&LSCEHCQr` zMi*Kj4Q&DLDp2h8mc|G`TSFdv8fa^ESSSFRJpmbC0r51!I6$z1pgMsdT`KSr2+Xlq zZ#dj6kb3ZU*eUdb6{x)fq1H494alzmu8mn_KKg6Vt!$v)CRvx#szBBjdSp--dfyuW zA^NEcAgu5cMJP&YQ0R>QTlZ;hA}2+48@l-j-+?q|Ri~^qTpt@I#*jZ-&&p?sx`K7A zU5v&HolZ_UDK=d@e9E{QVVyyN_oPO6X-}`Y0v%>(!xrkMs#nL=L48E^>ew%Zc0a+B z>mRGmf6rT!tKU~|UH;&~c=!6saafytdE>Qy>V0xn?7uUM{Q9V<%Yz44L#ar^XitEnzrBh2?4#s&07atx_T4MS)e-3c+B>{v1!f8(agqFDRF zyK&E(V4V&Em)&H6hPkrfZ0rrgrR*l=&ZcX4u)Jeh`=^qa6h2w{hP4IY+VYLLrxIcY zls5t1vz9$TLIGO70v!LTLPY||d>1sk3GkLVZo>HcG2~{HAejKKaFbZ%c;b!se_z(= zA<{eT5JNk7{{Yn8f%tps%89OL;t(12Q)!nfurtqpD)i@}%2b$@nyJ}zlc0ihZ3MHM z@CeeGP)sKYNC!}(y9lGTsuzaui+!TK_J^*9bjL6rInk}tDZKeu=La86q{y-iF4g25 z+J`+Wt1Hr$>EvM$Awrf+2a?2FGB^|@I1Od@!`Mkdi4ex5o1<{hETr~L zap2wlv!k7N9#mI89OhR(_+Whg9j}k)=R3BX13du4$z-y(Dez~-{;yEMU;pz6mjohw z?)iT+{-a<1$WvS4Gymn~J$cudo2&cRWpwTmVLH-CEMg#xDjlWUMmhSK)V&Wh$)nt8 z!vQd4Q*Q3Sm9`hwFk8};lef800bfXRL?j1%z1Qw~XP}rfB^fbz7lcy1G3K2hFjs+f|2v z`2kHXKkN4X+QH=NQ}z7%_aDs9y>nHRW#-lfJ2-po!Z%vr&x-wD(V`y%xD!*1frD3G z9Dm|tKlNDi^1punweySre5-7JV0+J37q2@^x3^I61GWFEN)^d;EvPf<#CVd7}7UCit6F-hFb$PmHkfpikjKf!*WA=I-@=uH?GGc1~X%4vamIDBgo9fpaEC?OC@DRCFeG3YGIH~Jdc_i&=XbL_o0FI{~`*Jl9Uf#L0-)`e;? z(?AYcXpUEl@VNL+pG&f*jHHAtIg1<+I!#~ehLoTn8V%UV2;NVyTskz%u4xwTwWb*@ znnfd_s}5*%@mbz^;-I?lK1?rvsGeT>o`dP`Spci1}*6eGLw97C!C@Lj*W z-BUv8PTs!|gc*ZQIS|=%oDJ7zHH5f17uF6vH-xY{YVDO%6FI_JMm? zBFMncKX!A0Bz+8h?3~q@;t7DSL0kz5Eyy$E`16pvZ-GlduKl2L^ksoaYXmGQi@K~( zyY(dm`iR431uzy>v)`h`FFb;hC_6gf}7n9-Mze)xPB6z1K8HR3Ir4Xaw*s zm?rRU2FBFjCsr#53E*h(76M4T9p=Fbeg~0bP*_4}1qz4ov@$owkcFYIdI48_@6`3* zecBUo&n}{_cgKuWUFmZcAVu0a5v%&tNzmuW|2^IO$`91@OHUq5_O7o+ z)nowwr2SBY>qOQjXa1(ti?d??SGB{>**YW$aQMUD`>pY3e*Pm*ZPOn-bA3;4PIz@= z?+R7>mj$zlT~kbuaj6$s(}BF0XK`}L8u0Jep`5p0a7E***ukhyDFlEzffPNXKp89# zQ7C4Zky0#WSODGz+DXrw*b54!K7qz9RMQ-y8M*c zBAaKw_=MjB9fa6ykjZfSa=5@2I^h`~BWU!EkK>QI%jsbrRlDi0D z0m3oFuafIT-$jpm(G!mm#4!AL=!OO{dN5j2s8Tli5Cx5iOkJyW!P0>#re*ce6rs}v zId%Q6#tuha3>)lYnYa40D#aAZI1aWOVD*@XOFN6OcAdt9Tp3IgNC*}tnnvQoqhuNb)TkJjg`t;)anyt&<`|9M}1IaNWHCB!k{S9%Wz8mj+jU8+t!#B$Q2yD#?Z2@ZjD)Lz@a zhAdG?1vlYsp`Dz~5wk~5IdM+x1Cl_CBw@QJPpuwu7|`^D0ZhSegy36{uOatpU^0hX z{OhKg?XoIUWYkAh{WAA%l}MiHB?fBKWW%;L2_P=kp+N%Rw9Hlf+uOC_ZEw@L8vgvdhq{M71qgJUhU;w?)TDG`b!sN$Fal5uvHM;q$al+11V-eW;lA{N_Hc$qE8 zDbosIK-Z03unOKfb2u&_X_uhCC(?t4d`Rn-bP0eFP%6#T7l1#~901Y7OAq2HIuz)- z0&N|zsDZF>zByjq4Yk~9eb;qi8am#6QKpZ4)a|_c*5tzbWOnI&NAvSHZ%?+)H-(F0 zL^3+6Y+SD9*Ym>)`ZuHCpB4MR;)NfBE?;4tDA@Ukz(H}I@G4LRO&OHj5zfTpfz5}EN+!TSvAhfnD zEx^v12R>VYFf2Y$nrz6-&H6|_v1x|Qe@x$?*a06L;6hXmv+~>fFAabrihP8Xl8z%~8A!J+N|D41bLVT$gcl;QR4SYll= z(>93A6b@rhm?Rhs(m|wwNI)A}w5>;1w`dm)R!b4TI6iJy_3gIln$AxE-ae4((zDpU zc~I`W8`b%D`^o-0?@sq0e{;UI<6Ti$)OcUq2fhmrZB)KBkF#R`T~_cTzN%IWz$>r3 zGXD6_{WsUUm;Tkw8<$tl%(;1bYu8s7A0f==0bJ@R9ja2h7T@%29bhANFBwlcvSjr2 z<)p%Kjc^dBfQZ=#8iA-yeEfB4=epbG5Y~{*Q$WO=dEI#{45olw+%;hC1TwgU`oLcM zdlDRQ96+5W?-5@!W6_4O=qH!9VTi*CL-tp zqpMe_n`6}V3eDktbc;pZuKYn;uWE#VCTulQod2AgUjJFzedp_={r6yY?mhMR+@lB6 z?JKMCbfPGqc{Qk4mCtwyJP>hxyA}DfV*g#f%vHTo2c`mx#R?z)<)0b9^6`KC)Q#O& zKe9V+pPo;e>cS(0-E%-u+BGsNLFEX+ufWk4X2ZrHH+UeD%~-t^jZG$Nusm8V=JxlP zvK!f-DDdmnwM3h3n;!=C4B;NmM(7O`&J4fr9UKX009ggd#lNXuHQgcL9{}MPGP(e! zks6GVGIGQf09MZW?|4YY?=*pE!~)q;GJTsrj)&Qzd92Ep(g zz#K#q2xcIeqG#z0r?Rf=&^Aldb&GDXK(jc6KR&9P#oX~c%_01_aH}fB{uT7B_O!+B zX@74Mb@Lm&;UbOgWbqyveT8W5#%@sTBcp^Ys9aGG8c5@15kOn-0=7N`Y43ym5u|wm z;`Tx1RipT^LOK?Vo|e&Ysc`4-Q@j3*6V47PtI_X0zo>25YV*&-D-(?aSzS$U9_tj_0he?uZ~{}9t-civ@%8D z-2iz-CLAju=Jw0yZO>{XH?D8I{bk|-wOODvDRR3 zfD%%-Ah(Zj?(cv?4K!~8?VstSGkFgPB|JH$0~V!q>|zIi{<(zc#e>9Q2Y}#Q!j@EX zK;}STi`qOBn2cKxV~D>83dXMw z4*)q%Kfew-o9I4(7X8R+H%#3TMun z89X)oj(J0)Lf=%r`&qF+dwff~e4X$cFpY4uTH@2c^1qG0`tg7A)P?!WAK4$ZPj78^ z)s;sWTYC(09f$!Ql?cqBP^-P~M*cnbMK+0-4E{(RtuaZ+;^(5*d@A;R5f%%W&`8g4 zYGMC|scI}~VW@?zPi~5b3t}#9M)ymFq80U(+4~U{=PX}_v|m&uY4s$iIHw&dR|=cJ znMDCoC!aGn`bj3{@sh0vw76@Cj7}bu@e4&rshp99>NT95ZJkJ&WrVtYN-}hd8N5mr zY!#*n3&0;ENDU_oh<^Z*6@0jx0!%!&V4A3&z-=M$Hi%{r+R~WC=%guSpJ-)KnIQ!D zPSE)pZQY`+S7;9(pj$jZyEsItb6dGSETSD(e!qX(neb(DKg zV7B{cGv2=X>U8JAaXFb|S`~=~8WY-v(BbC7o=-;kgmYHx&mP~QRUSP}{Dgz1c9&oI z!%vJq^$S1oR8{}}GuOB4o3n9qWB)p;z4L^sG|bxQnUDZ!I-XldYj1$R*#2QqaS6VD z8E*Ay2pvKA958x6gvTJ(oKdA6Isk<(V>wSK(xCCMet6}ka!e;aD-{CChUEiW@psAb zGP)B;=s=;-c*L+&fmJvLg<~MxSNmmYfQX^f2;vG5Zz1pu%-aai1*tB3Cl*@c((5MG zZwP4H7G2xIH!YgQ5t`!%XqSg*7x&Sw?zdgtydK)_D0C7!W(3+sDEAI9zV<9{T{|eY zo(IWAFBPfwI2?bgiJV7U+L325oSlZU`DS!VNhdf`7S z_Ggd8o6b8w3LbC;-n@Nl{QE!u53e76^eo#}s6@!Toh0kLlO2NF?rX=pT}QI?>v)Zd3AAly^RqXnWU^Ji@Fi(^aXngcWj(FBBv{(MrH zlVeY&Qjen!tpHu;(bWyQ5y|6!w?*8>n zh~F8-|E$=bJ%*R<25+6FY4Dj}|KGW#$KJap8JaI;gUNM*UTS}>Vb z5VQzjxZwH_XqFT`XW%xZd<0ZI3HW1(KL&Sy0tpL!VmF73KLB#u097D%2rzH_IO1e( zhW+A{>=2MNDJAzs7+um7rxH4l*Pv>a72p>L;YdYM;TY;x-@r=?rb;_>x21GXt{^-C z(F}|k0tyhT7Y?CNz@NAmc1b|+f=&W_E7cg=2zO;?&a4fvkMPqvzZj-X52i4 zO?#iWDRSRIOVqPsfA;uG$MO3x5J~FI7yj_$<4^z6KX_^@eBzm_TdSMXQFmj08P(37 zLsgmB$q`T#YN{3j$hSbNk%JL8jRk+bA9|R|wNJ}B8IHoq{ub~SCD(h2<>qQYZmGb+ z5Gp`iz++;b>;aIaGBhZY^5#ZsBA{XmsQwznT>`alLHr$EP|8~%sR3#ciYLM2#{oA2 z#KOR>`%WG+_S}g^7z9FIIqy)5f*=hzG$3ga!U`k{h>yYKq5&asQlJUI6@bU2uYl5FjXQFqP|Lo=ySLqSM6LROy`18 z8I8yYp)5em;2;RT8AiGxS}&|;bLuXjAGxy>tpT>bM$t5RY_Ndqbxc2hok2Vz9D*Ya zn{XNK&Fe;K_C#(DUpxXHJ*J06dspEQEX*2!5yG1a#!P<*!a6k!PBY4aKq8D1YCsNw z&;qiw2tnT~QQ1%EO#6nPW(`Hqps~2cj zOSDJ#(Jt;|b^HMS@GgA)VA<8HSAC0`g1XTJCtz2>7jyV>|DdSOKg-ig2k;2-8~^|b zyGcYrR5ZB^np{9Ny#hD8h-!YxPj)Zdoo=0fb2{7cRaInWU>S@j8dY){#F7{A&6d?? zkF#Qb_V{ym_xbXw&%0%Xb$;V##xMWgfA`d**WUcdxk{e)$M>u8IbdhsVKOOEIv8$E z+SwLUNT|V~0YcZOISnX|L&#?H&viP!pYm~2;6#SW+Y**HDQPz?05Z&oxCDv|K=~*F zpVNQW+y%=5f<|$1*J|;m(mMQOz+D8PKtKtmLd8^o(iWrbLllU)3gSuxso>le0*_K! z6uiMwQYeIzi~(ucBog!@XHq6;vN=SDTmP>rW6SIseU z42{mqIqT|jsx8CGqP}jfw@%YNE9hs%{_OD=4da+BJn!)PU<~y>dEqm^Gya2L_^+O- z`18-)xIDf&^M^OcEvxyyV6wl1*<^x(k3d*xC3X|-N|_*N!Lmf~ZH9qo1t)smK(g&w z&Zx-Dwl)-hg?IXV+}sj47IpHrM2>p`R=;H;XL9^Kh}#2rSA)1i4RrT`a36#fkcX6` zfVdF|BY;O*oL!+ExGg!g%O9njTQPwXiAM;X#zXo}KO6Ye{R$PSuzM;I#G&&JT?aIE z3u#-_t0Va3F`DHO{PGaZ@x9uw9vt|(u6-+zpxkvKATWcg`5Ug<`xiXD_y+-+2W9xh z^zzEhE@QNP4dv_#%B?FH%`aj!+gq07om)jUuglRCt`Nk$@lDsqU{R`=9!^_cu6r8& zRp7Co75lTtci7|P&6$c$6g~w}Y?TYVb^F%%cYp39*Wdi&FWkI%8PA;G<)>$KT$SS$ zCOZYDJG+?8_b@7#Ai1Y(5I`9p#RSBqEe{323evU8P0wDlkDnW|carFbGpk`s_z{j7 zucOQdehdfW#k(R4439B?rQ+Rzv}gl>F<3;7wS#A}rRD_S62#kTyv5rPlzz1G#T$>(jF)czEyfIrEs^^$_4Q<>-XbHWuNe~P)!{sd*?9OK98y@QMx0r+y{jtKs*9F z5X}%kaK+R-B}0~3${?x{yl7^wMcVbJQMACdz=`0@@5MT3w0+PB)j+7$!a+&|c3?My z$V7!tMAm^j5El@PHTN_CkitA)Y9O@Wb^!@X1gZ7sl}-yU=|K``q>E3Qqw5$UFq)Q7 z*EK@z;aA7#mMyww0l!+Hs~-g4EFXk6ywL@;)DePbzw{35E^#oA5x4@T4NRWX{vIhR2!yMD)0$e z7q1w-cFKh+IRS{PG$jd6VHutngfddTIK%MtLJx=dF1sZp1c+a0s7JSg54EN%1rHxq zDi$(nzo0~bgUAG}6!7f`ZRg?JfOb{Gua@wOL)1+NX;%o%Vcpiw}hq@v~`27_Gpf4-`34tUoY>-YSDQw@LqZ^8V0CvAXk9L zQ*g0!z>}S4-FWw)7+(NQ_EApvQH;-_obF<@eFc;G`7oZJf8ZuNuUFM>S5`$2v8=%$ zgQz=TbEfS#QV`BM>9b;g_BeYytl;;BrdKu|9^S|8FMn$M+UI`#`m103tsBR;KmQ-W z*YBH*c{-jH`{S*0Z$4*NRV}Jfz^G&tBSKLWD2fqyRDxZpA=i%K;EeOH;x7puIJEj} zXkc}a4h*ke@j*RNBoy#w8yrG_57B6Agbohk0~*iZR#3Md(#W!Dnpc~qsnK-sz6F9u z2-34Bi2xqKjkXSXwDX%hng41r-Mv4WUchL24#n&oit#?m`8l}hKFVqjqvC16$RLZ-k@w9Vo9H^Pc+40VLl!DSkEy%E9Pg#{_ImYdwf&7{Ajz73Ka+s z?!8fd?JJ+W^2#6m+U$)#{oTFQotJ(rtnU0s2w`hn0OiDSH7Vw!@#s=DD$1e?7?p&w zD&SlTVuoV@lLuJfT&Z1saPYw)cpwBp7l6lRfZc57l(X7uEc( zE5~n+s+o7i2+py3o1Iv8_K-ympF{x>0ELjuLLsLo>R+dg{w|w}`B_mvdz=;fv&Ua} z(eE!V3%NF5aG?MR4u|*Oa))oebpG&bU*3E0+E?6z*S>(|>tCsk?jL-pUEKQ*(bX5o zED#DJPyrNdIjpQj&lL;;BS@(v5jZe2m`4yU!G(jk(cPjP|6g2;f5#Q0Ba{*R=Io(A$+rzlpT2eK?H5!lWqL`s5Tq@otxcXTE9|TP6hcWzY zjJ=W<`ZK8I>~U7?&mP~I-Muk8PF`0bg=+VFd4+sBFIX+^(Sy6Ux9bOQT&fp$%I5G6 zR!483TikBde^(`p#B;n$3TfqA;@J)2YJU}|T4Y8ih`1LM8&mL!wulMo) Y0Zm>X7-miADgXcg07*qoM6N<$f +The Buildroot user manual

    The Buildroot user manual


    Table of Contents

    I. Getting started
    1. About Buildroot
    2. System requirements
    2.1. Mandatory packages
    2.2. Optional packages
    3. Getting Buildroot
    4. Buildroot quick start
    5. Community resources
    II. User guide
    6. Buildroot configuration
    6.1. Cross-compilation toolchain
    6.2. /dev management
    6.3. init system
    7. Configuration of other components
    8. General Buildroot usage
    8.1. make tips
    8.2. Understanding when a full rebuild is necessary
    8.3. Understanding how to rebuild packages
    8.4. Offline builds
    8.5. Building out-of-tree
    8.6. Environment variables
    8.7. Dealing efficiently with filesystem images
    8.8. Details about packages
    8.9. Graphing the dependencies between packages
    8.10. Graphing the build duration
    8.11. Graphing the filesystem size contribution of packages
    8.12. Top-level parallel build
    8.13. Advanced usage
    9. Project-specific customization
    9.1. Recommended directory structure
    9.2. Keeping customizations outside of Buildroot
    9.3. Storing the Buildroot configuration
    9.4. Storing the configuration of other components
    9.5. Customizing the generated target filesystem
    9.6. Adding custom user accounts
    9.7. Customization after the images have been created
    9.8. Adding project-specific patches
    9.9. Adding project-specific packages
    9.10. Quick guide to storing your project-specific customizations
    10. Integration topics
    10.1. Systemd
    10.2. Using SELinux in Buildroot
    11. Frequently Asked Questions & Troubleshooting
    11.1. The boot hangs after Starting network…
    11.2. Why is there no compiler on the target?
    11.3. Why are there no development files on the target?
    11.4. Why is there no documentation on the target?
    11.5. Why are some packages not visible in the Buildroot config menu?
    11.6. Why not use the target directory as a chroot directory?
    11.7. Why doesn’t Buildroot generate binary packages (.deb, .ipkg…)?
    11.8. How to speed-up the build process?
    12. Known issues
    13. Legal notice and licensing
    13.1. Complying with open source licenses
    13.2. Complying with the Buildroot license
    14. Beyond Buildroot
    14.1. Boot the generated images
    14.2. Chroot
    III. Developer guide
    15. How Buildroot works
    16. Coding style
    16.1. Config.in file
    16.2. The .mk file
    16.3. The genimage.cfg file
    16.4. The documentation
    16.5. Support scripts
    17. Adding support for a particular board
    18. Adding new packages to Buildroot
    18.1. Package directory
    18.2. Config files
    18.3. The .mk file
    18.4. The .hash file
    18.5. The SNNfoo start script
    18.6. Infrastructure for packages with specific build systems
    18.7. Infrastructure for autotools-based packages
    18.8. Infrastructure for CMake-based packages
    18.9. Infrastructure for Python packages
    18.10. Infrastructure for LuaRocks-based packages
    18.11. Infrastructure for Perl/CPAN packages
    18.12. Infrastructure for virtual packages
    18.13. Infrastructure for packages using kconfig for configuration files
    18.14. Infrastructure for rebar-based packages
    18.15. Infrastructure for Waf-based packages
    18.16. Infrastructure for Meson-based packages
    18.17. Infrastructure for Cargo-based packages
    18.18. Infrastructure for Go packages
    18.19. Infrastructure for QMake-based packages
    18.20. Infrastructure for packages building kernel modules
    18.21. Infrastructure for asciidoc documents
    18.22. Infrastructure specific to the Linux kernel package
    18.23. Hooks available in the various build steps
    18.24. Gettext integration and interaction with packages
    18.25. Tips and tricks
    18.26. Conclusion
    19. Patching a package
    19.1. Providing patches
    19.2. How patches are applied
    19.3. Format and licensing of the package patches
    19.4. Additional patch documentation
    20. Download infrastructure
    21. Debugging Buildroot
    22. Contributing to Buildroot
    22.1. Reproducing, analyzing and fixing bugs
    22.2. Analyzing and fixing autobuild failures
    22.3. Reviewing and testing patches
    22.4. Work on items from the TODO list
    22.5. Submitting patches
    22.6. Reporting issues/bugs or getting help
    22.7. Using the runtime tests framework
    23. DEVELOPERS file and get-developers
    24. Release Engineering
    24.1. Releases
    24.2. Development
    IV. Appendix
    25. Makedev syntax documentation
    26. Makeusers syntax documentation
    26.1. Caveat with automatic UIDs and GIDs
    27. Migrating from older Buildroot versions
    27.1. General approach
    27.2. Migrating to 2016.11
    27.3. Migrating to 2017.08

    Buildroot 2023.08.2 manual generated on 2023-10-15 +21:10:46 UTC from git revision fe50c054bc

    The Buildroot manual is written by the Buildroot developers. +It is licensed under the GNU General Public License, version 2. Refer to the +COPYING +file in the Buildroot sources for the full text of this license.

    Copyright © The Buildroot developers <buildroot@buildroot.org>

    logo.png

    Part I. Getting started

    Chapter 1. About Buildroot

    Buildroot is a tool that simplifies and automates the process of +building a complete Linux system for an embedded system, using +cross-compilation.

    In order to achieve this, Buildroot is able to generate a +cross-compilation toolchain, a root filesystem, a Linux kernel image +and a bootloader for your target. Buildroot can be used for any +combination of these options, independently (you can for example use +an existing cross-compilation toolchain, and build only your root +filesystem with Buildroot).

    Buildroot is useful mainly for people working with embedded systems. +Embedded systems often use processors that are not the regular x86 +processors everyone is used to having in his PC. They can be PowerPC +processors, MIPS processors, ARM processors, etc.

    Buildroot supports numerous processors and their variants; it also +comes with default configurations for several boards available +off-the-shelf. Besides this, a number of third-party projects are based on, +or develop their BSP [1] or +SDK [2] on top of Buildroot.



    [1] BSP: Board Support Package

    [2] SDK: Software Development Kit

    Chapter 2. System requirements

    Buildroot is designed to run on Linux systems.

    While Buildroot itself will build most host packages it needs for the +compilation, certain standard Linux utilities are expected to be +already installed on the host system. Below you will find an overview of +the mandatory and optional packages (note that package names may vary +between distributions).

    2.1. Mandatory packages

    • +Build tools: +

      • +which +
      • +sed +
      • +make (version 3.81 or any later) +
      • +binutils +
      • +build-essential (only for Debian based systems) +
      • +diffutils +
      • +gcc (version 4.8 or any later) +
      • +g++ (version 4.8 or any later) +
      • +bash +
      • +patch +
      • +gzip +
      • +bzip2 +
      • +perl (version 5.8.7 or any later) +
      • +tar +
      • +cpio +
      • +unzip +
      • +rsync +
      • +file (must be in /usr/bin/file) +
      • +bc +
      • +findutils +
    • +Source fetching tools: +

      • +wget +

    2.2. Optional packages

    • +Recommended dependencies: +

      Some features or utilities in Buildroot, like the legal-info, or the +graph generation tools, have additional dependencies. Although they +are not mandatory for a simple build, they are still highly recommended:

      • +python (version 2.7 or any later) +
    • +Configuration interface dependencies: +

      For these libraries, you need to install both runtime and development +data, which in many distributions are packaged separately. The +development packages typically have a -dev or -devel suffix.

      • +ncurses5 to use the menuconfig interface +
      • +qt5 to use the xconfig interface +
      • +glib2, gtk2 and glade2 to use the gconfig interface +
    • +Source fetching tools: +

      In the official tree, most of the package sources are retrieved using +wget from ftp, http or https locations. A few packages are only +available through a version control system. Moreover, Buildroot is +capable of downloading sources via other tools, like rsync or scp +(refer to Chapter 20, Download infrastructure for more details). If you enable +packages using any of these methods, you will need to install the +corresponding tool on the host system:

      • +bazaar +
      • +cvs +
      • +git +
      • +mercurial +
      • +rsync +
      • +scp +
      • +sftp +
      • +subversion +
    • +Java-related packages, if the Java Classpath needs to be built for + the target system: +

      • +The javac compiler +
      • +The jar tool +
    • +Documentation generation tools: +

      • +asciidoc, version 8.6.3 or higher +
      • +w3m +
      • +python with the argparse module (automatically present in 2.7+ and 3.2+) +
      • +dblatex (required for the pdf manual only) +
    • +Graph generation tools: +

      • +graphviz to use graph-depends and <pkg>-graph-depends +
      • +python-matplotlib to use graph-build +

    Chapter 3. Getting Buildroot

    Buildroot releases are made every 3 months, in February, May, August and +November. Release numbers are in the format YYYY.MM, so for example +2013.02, 2014.08.

    Release tarballs are available at http://buildroot.org/downloads/.

    For your convenience, a Vagrantfile is +available in support/misc/Vagrantfile in the Buildroot source tree +to quickly set up a virtual machine with the needed dependencies to +get started.

    If you want to setup an isolated buildroot environment on Linux or Mac +Os X, paste this line onto your terminal:

    curl -O https://buildroot.org/downloads/Vagrantfile; vagrant up

    If you are on Windows, paste this into your powershell:

    (new-object System.Net.WebClient).DownloadFile(
    +"https://buildroot.org/downloads/Vagrantfile","Vagrantfile");
    +vagrant up

    If you want to follow development, you can use the daily snapshots or +make a clone of the Git repository. Refer to the +Download page of the Buildroot website +for more details.

    Chapter 4. Buildroot quick start

    Important: you can and should build everything as a normal user. There +is no need to be root to configure and use Buildroot. By running all +commands as a regular user, you protect your system against packages +behaving badly during compilation and installation.

    The first step when using Buildroot is to create a configuration. +Buildroot has a nice configuration tool similar to the one you can +find in the Linux kernel or in +BusyBox.

    From the buildroot directory, run

     $ make menuconfig

    for the original curses-based configurator, or

     $ make nconfig

    for the new curses-based configurator, or

     $ make xconfig

    for the Qt-based configurator, or

     $ make gconfig

    for the GTK-based configurator.

    All of these "make" commands will need to build a configuration +utility (including the interface), so you may need to install +"development" packages for relevant libraries used by the +configuration utilities. Refer to Chapter 2, System requirements for more details, +specifically the optional requirements +to get the dependencies of your favorite interface.

    For each menu entry in the configuration tool, you can find associated +help that describes the purpose of the entry. Refer to Chapter 6, Buildroot configuration +for details on some specific configuration aspects.

    Once everything is configured, the configuration tool generates a +.config file that contains the entire configuration. This file will be +read by the top-level Makefile.

    To start the build process, simply run:

     $ make

    By default, Buildroot does not support top-level parallel build, so +running make -jN is not necessary. There is however experimental +support for top-level parallel build, see +Section 8.12, “Top-level parallel build”.

    The make command will generally perform the following steps:

    • +download source files (as required); +
    • +configure, build and install the cross-compilation toolchain, or + simply import an external toolchain; +
    • +configure, build and install selected target packages; +
    • +build a kernel image, if selected; +
    • +build a bootloader image, if selected; +
    • +create a root filesystem in selected formats. +

    Buildroot output is stored in a single directory, output/. +This directory contains several subdirectories:

    • +images/ where all the images (kernel image, bootloader and root + filesystem images) are stored. These are the files you need to put + on your target system. +
    • +build/ where all the components are built (this includes tools + needed by Buildroot on the host and packages compiled for the + target). This directory contains one subdirectory for each of these + components. +
    • +host/ contains both the tools built for the host, and the sysroot + of the target toolchain. The former is an installation of tools + compiled for the host that are needed for the proper execution of + Buildroot, including the cross-compilation toolchain. The latter + is a hierarchy similar to a root filesystem hierarchy. It contains + the headers and libraries of all user-space packages that provide + and install libraries used by other packages. However, this + directory is not intended to be the root filesystem for the target: + it contains a lot of development files, unstripped binaries and + libraries that make it far too big for an embedded system. These + development files are used to compile libraries and applications for + the target that depend on other libraries. +
    • +staging/ is a symlink to the target toolchain sysroot inside + host/, which exists for backwards compatibility. +
    • +target/ which contains almost the complete root filesystem for + the target: everything needed is present except the device files in + /dev/ (Buildroot can’t create them because Buildroot doesn’t run + as root and doesn’t want to run as root). Also, it doesn’t have the correct + permissions (e.g. setuid for the busybox binary). Therefore, this directory + should not be used on your target. Instead, you should use one of + the images built in the images/ directory. If you need an + extracted image of the root filesystem for booting over NFS, then + use the tarball image generated in images/ and extract it as + root. Compared to staging/, target/ contains only the files and + libraries needed to run the selected target applications: the + development files (headers, etc.) are not present, the binaries are + stripped. +

    These commands, make menuconfig|nconfig|gconfig|xconfig and make, are the +basic ones that allow to easily and quickly generate images fitting +your needs, with all the features and applications you enabled.

    More details about the "make" command usage are given in +Section 8.1, “make tips”.

    Chapter 5. Community resources

    Like any open source project, Buildroot has different ways to share +information in its community and outside.

    Each of those ways may interest you if you are looking for some help, +want to understand Buildroot or contribute to the project.

    +Mailing List +

    Buildroot has a mailing list for discussion and development. It is the +main method of interaction for Buildroot users and developers.

    Only subscribers to the Buildroot mailing list are allowed to post to +this list. You can subscribe via the +mailing list info +page.

    Mails that are sent to the mailing list are also available in the +mailing list archives, available through +Mailman or at +lore.kernel.org.

    +IRC +

    The Buildroot IRC channel #buildroot is +hosted on OFTC. It is a useful place to +ask quick questions or discuss on certain topics.

    When asking for help on IRC, share relevant logs or pieces of code +using a code sharing website, such as https://paste.ack.tf/.

    Note that for certain questions, posting to the mailing list may be +better as it will reach more people, both developers and users.

    +Bug tracker +
    Bugs in Buildroot can be reported via the mailing list or alternatively +via the Buildroot +bugtracker. Please refer to Section 22.6, “Reporting issues/bugs or getting help” before creating a bug +report.
    +Wiki +
    The Buildroot wiki page is hosted on +the eLinux wiki. It contains some useful links, an +overview of past and upcoming events, and a TODO list.
    +Patchwork +

    Patchwork is a web-based patch tracking system designed to facilitate +the contribution and management of contributions to an open-source +project. Patches that have been sent to a mailing list are 'caught' by +the system, and appear on a web page. Any comments posted that +reference the patch are appended to the patch page too. For more +information on Patchwork see +http://jk.ozlabs.org/projects/patchwork/.

    Buildroot’s Patchwork website is mainly for use by Buildroot’s +maintainer to ensure patches aren’t missed. It is also used by Buildroot +patch reviewers (see also Section 22.3.1, “Applying Patches from Patchwork”). +However, since the website exposes patches and their corresponding +review comments in a clean and concise web interface, it can be useful +for all Buildroot developers.

    The Buildroot patch management interface is available at +https://patchwork.ozlabs.org/project/buildroot/list/.

    Part II. User guide

    Chapter 6. Buildroot configuration

    All the configuration options in make *config have a help text +providing details about the option.

    The make *config commands also offer a search tool. Read the help +message in the different frontend menus to know how to use it:

    • +in menuconfig, the search tool is called by pressing /; +
    • +in xconfig, the search tool is called by pressing Ctrl + f. +

    The result of the search shows the help message of the matching items. +In menuconfig, numbers in the left column provide a shortcut to the +corresponding entry. Just type this number to directly jump to the +entry, or to the containing menu in case the entry is not selectable due +to a missing dependency.

    Although the menu structure and the help text of the entries should be +sufficiently self-explanatory, a number of topics require additional +explanation that cannot easily be covered in the help text and are +therefore covered in the following sections.

    6.1. Cross-compilation toolchain

    A compilation toolchain is the set of tools that allows you to compile +code for your system. It consists of a compiler (in our case, gcc), +binary utils like assembler and linker (in our case, binutils) and a +C standard library (for example +GNU Libc, +uClibc-ng).

    The system installed on your development station certainly already has +a compilation toolchain that you can use to compile an application +that runs on your system. If you’re using a PC, your compilation +toolchain runs on an x86 processor and generates code for an x86 +processor. Under most Linux systems, the compilation toolchain uses +the GNU libc (glibc) as the C standard library. This compilation +toolchain is called the "host compilation toolchain". The machine on +which it is running, and on which you’re working, is called the "host +system" [3].

    The compilation toolchain is provided by your distribution, and +Buildroot has nothing to do with it (other than using it to build a +cross-compilation toolchain and other tools that are run on the +development host).

    As said above, the compilation toolchain that comes with your system +runs on and generates code for the processor in your host system. As +your embedded system has a different processor, you need a +cross-compilation toolchain - a compilation toolchain that runs on +your host system but generates code for your target system (and +target processor). For example, if your host system uses x86 and your +target system uses ARM, the regular compilation toolchain on your host +runs on x86 and generates code for x86, while the cross-compilation +toolchain runs on x86 and generates code for ARM.

    Buildroot provides two solutions for the cross-compilation toolchain:

    • +The internal toolchain backend, called Buildroot toolchain in + the configuration interface. +
    • +The external toolchain backend, called External toolchain in + the configuration interface. +

    The choice between these two solutions is done using the Toolchain +Type option in the Toolchain menu. Once one solution has been +chosen, a number of configuration options appear, they are detailed in +the following sections.

    6.1.1. Internal toolchain backend

    The internal toolchain backend is the backend where Buildroot builds +by itself a cross-compilation toolchain, before building the userspace +applications and libraries for your target embedded system.

    This backend supports several C libraries: +uClibc-ng, +glibc and +musl.

    Once you have selected this backend, a number of options appear. The +most important ones allow to:

    • +Change the version of the Linux kernel headers used to build the + toolchain. This item deserves a few explanations. In the process of + building a cross-compilation toolchain, the C library is being + built. This library provides the interface between userspace + applications and the Linux kernel. In order to know how to "talk" + to the Linux kernel, the C library needs to have access to the + Linux kernel headers (i.e. the .h files from the kernel), which + define the interface between userspace and the kernel (system + calls, data structures, etc.). Since this interface is backward + compatible, the version of the Linux kernel headers used to build + your toolchain do not need to match exactly the version of the + Linux kernel you intend to run on your embedded system. They only + need to have a version equal or older to the version of the Linux + kernel you intend to run. If you use kernel headers that are more + recent than the Linux kernel you run on your embedded system, then + the C library might be using interfaces that are not provided by + your Linux kernel. +
    • +Change the version of the GCC compiler, binutils and the C library. +
    • +Select a number of toolchain options (uClibc only): whether the + toolchain should have RPC support (used mainly for NFS), + wide-char support, locale support (for internationalization), + C++ support or thread support. Depending on which options you choose, + the number of userspace applications and libraries visible in + Buildroot menus will change: many applications and libraries require + certain toolchain options to be enabled. Most packages show a comment + when a certain toolchain option is required to be able to enable + those packages. If needed, you can further refine the uClibc + configuration by running make uclibc-menuconfig. Note however that + all packages in Buildroot are tested against the default uClibc + configuration bundled in Buildroot: if you deviate from this + configuration by removing features from uClibc, some packages may no + longer build. +

    It is worth noting that whenever one of those options is modified, +then the entire toolchain and system must be rebuilt. See +Section 8.2, “Understanding when a full rebuild is necessary”.

    Advantages of this backend:

    • +Well integrated with Buildroot +
    • +Fast, only builds what’s necessary +

    Drawbacks of this backend:

    • +Rebuilding the toolchain is needed when doing make clean, which + takes time. If you’re trying to reduce your build time, consider + using the External toolchain backend. +

    6.1.2. External toolchain backend

    The external toolchain backend allows to use existing pre-built +cross-compilation toolchains. Buildroot knows about a number of +well-known cross-compilation toolchains (from +Linaro for ARM, +Sourcery +CodeBench for ARM, x86-64, PowerPC, and MIPS, and is capable of +downloading them automatically, or it can be pointed to a custom +toolchain, either available for download or installed locally.

    Then, you have three solutions to use an external toolchain:

    • +Use a predefined external toolchain profile, and let Buildroot + download, extract and install the toolchain. Buildroot already knows + about a few CodeSourcery and Linaro toolchains. Just select the + toolchain profile in Toolchain from the available ones. This is + definitely the easiest solution. +
    • +Use a predefined external toolchain profile, but instead of having + Buildroot download and extract the toolchain, you can tell Buildroot + where your toolchain is already installed on your system. Just + select the toolchain profile in Toolchain through the available + ones, unselect Download toolchain automatically, and fill the + Toolchain path text entry with the path to your cross-compiling + toolchain. +
    • +Use a completely custom external toolchain. This is particularly + useful for toolchains generated using crosstool-NG or with Buildroot + itself. To do this, select the Custom toolchain solution in the + Toolchain list. You need to fill the Toolchain path, Toolchain + prefix and External toolchain C library options. Then, you have + to tell Buildroot what your external toolchain supports. If your + external toolchain uses the glibc library, you only have to tell + whether your toolchain supports C++ or not and whether it has + built-in RPC support. If your external toolchain uses the uClibc + library, then you have to tell Buildroot if it supports RPC, + wide-char, locale, program invocation, threads and C++. + At the beginning of the execution, Buildroot will tell you if + the selected options do not match the toolchain configuration. +

    Our external toolchain support has been tested with toolchains from +CodeSourcery and Linaro, toolchains generated by +crosstool-NG, and toolchains generated by +Buildroot itself. In general, all toolchains that support the +sysroot feature should work. If not, do not hesitate to contact the +developers.

    We do not support toolchains or SDK generated by OpenEmbedded or +Yocto, because these toolchains are not pure toolchains (i.e. just the +compiler, binutils, the C and C++ libraries). Instead these toolchains +come with a very large set of pre-compiled libraries and +programs. Therefore, Buildroot cannot import the sysroot of the +toolchain, as it would contain hundreds of megabytes of pre-compiled +libraries that are normally built by Buildroot.

    We also do not support using the distribution toolchain (i.e. the +gcc/binutils/C library installed by your distribution) as the +toolchain to build software for the target. This is because your +distribution toolchain is not a "pure" toolchain (i.e. only with the +C/C++ library), so we cannot import it properly into the Buildroot +build environment. So even if you are building a system for a x86 or +x86_64 target, you have to generate a cross-compilation toolchain with +Buildroot or crosstool-NG.

    If you want to generate a custom toolchain for your project, that can +be used as an external toolchain in Buildroot, our recommendation is +to build it either with Buildroot itself (see +Section 6.1.3, “Build an external toolchain with Buildroot”) or with +crosstool-NG.

    Advantages of this backend:

    • +Allows to use well-known and well-tested cross-compilation + toolchains. +
    • +Avoids the build time of the cross-compilation toolchain, which is + often very significant in the overall build time of an embedded + Linux system. +

    Drawbacks of this backend:

    • +If your pre-built external toolchain has a bug, may be hard to get a + fix from the toolchain vendor, unless you build your external + toolchain by yourself using Buildroot or Crosstool-NG. +

    6.1.3. Build an external toolchain with Buildroot

    The Buildroot internal toolchain option can be used to create an +external toolchain. Here are a series of steps to build an internal +toolchain and package it up for reuse by Buildroot itself (or other +projects).

    Create a new Buildroot configuration, with the following details:

    • +Select the appropriate Target options for your target CPU + architecture +
    • +In the Toolchain menu, keep the default of Buildroot toolchain + for Toolchain type, and configure your toolchain as desired +
    • +In the System configuration menu, select None as the Init + system and none as /bin/sh +
    • +In the Target packages menu, disable BusyBox +
    • +In the Filesystem images menu, disable tar the root filesystem +

    Then, we can trigger the build, and also ask Buildroot to generate a +SDK. This will conveniently generate for us a tarball which contains +our toolchain:

    make sdk

    This produces the SDK tarball in $(O)/images, with a name similar to +arm-buildroot-linux-uclibcgnueabi_sdk-buildroot.tar.gz. Save this +tarball, as it is now the toolchain that you can re-use as an external +toolchain in other Buildroot projects.

    In those other Buildroot projects, in the Toolchain menu:

    • +Set Toolchain type to External toolchain +
    • +Set Toolchain to Custom toolchain +
    • +Set Toolchain origin to Toolchain to be downloaded and installed +
    • +Set Toolchain URL to file:///path/to/your/sdk/tarball.tar.gz +

    External toolchain wrapper

    When using an external toolchain, Buildroot generates a wrapper program, +that transparently passes the appropriate options (according to the +configuration) to the external toolchain programs. In case you need to +debug this wrapper to check exactly what arguments are passed, you can +set the environment variable BR2_DEBUG_WRAPPER to either one of:

    • +0, empty or not set: no debug +
    • +1: trace all arguments on a single line +
    • +2: trace one argument per line +

    6.2. /dev management

    On a Linux system, the /dev directory contains special files, called +device files, that allow userspace applications to access the +hardware devices managed by the Linux kernel. Without these device +files, your userspace applications would not be able to use the +hardware devices, even if they are properly recognized by the Linux +kernel.

    Under System configuration, /dev management, Buildroot offers four +different solutions to handle the /dev directory :

    • +The first solution is Static using device table. This is the old + classical way of handling device files in Linux. With this method, + the device files are persistently stored in the root filesystem + (i.e. they persist across reboots), and there is nothing that will + automatically create and remove those device files when hardware + devices are added or removed from the system. Buildroot therefore + creates a standard set of device files using a device table, the + default one being stored in system/device_table_dev.txt in the + Buildroot source code. This file is processed when Buildroot + generates the final root filesystem image, and the device files + are therefore not visible in the output/target directory. The + BR2_ROOTFS_STATIC_DEVICE_TABLE option allows to change the + default device table used by Buildroot, or to add an additional + device table, so that additional device files are created by + Buildroot during the build. So, if you use this method, and a + device file is missing in your system, you can for example create + a board/<yourcompany>/<yourproject>/device_table_dev.txt file + that contains the description of your additional device files, + and then you can set BR2_ROOTFS_STATIC_DEVICE_TABLE to + system/device_table_dev.txt + board/<yourcompany>/<yourproject>/device_table_dev.txt. For more + details about the format of the device table file, see + Chapter 25, Makedev syntax documentation. +
    • +The second solution is Dynamic using devtmpfs only. devtmpfs is + a virtual filesystem inside the Linux kernel that has been + introduced in kernel 2.6.32 (if you use an older kernel, it is not + possible to use this option). When mounted in /dev, this virtual + filesystem will automatically make device files appear and + disappear as hardware devices are added and removed from the + system. This filesystem is not persistent across reboots: it is + filled dynamically by the kernel. Using devtmpfs requires the + following kernel configuration options to be enabled: + CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT. When Buildroot is in + charge of building the Linux kernel for your embedded device, it + makes sure that those two options are enabled. However, if you + build your Linux kernel outside of Buildroot, then it is your + responsibility to enable those two options (if you fail to do so, + your Buildroot system will not boot). +
    • +The third solution is Dynamic using devtmpfs + mdev. This method + also relies on the devtmpfs virtual filesystem detailed above (so + the requirement to have CONFIG_DEVTMPFS and + CONFIG_DEVTMPFS_MOUNT enabled in the kernel configuration still + apply), but adds the mdev userspace utility on top of it. mdev + is a program part of BusyBox that the kernel will call every time a + device is added or removed. Thanks to the /etc/mdev.conf + configuration file, mdev can be configured to for example, set + specific permissions or ownership on a device file, call a script + or application whenever a device appears or disappear, + etc. Basically, it allows userspace to react on device addition + and removal events. mdev can for example be used to automatically + load kernel modules when devices appear on the system. mdev is + also important if you have devices that require a firmware, as it + will be responsible for pushing the firmware contents to the + kernel. mdev is a lightweight implementation (with fewer + features) of udev. For more details about mdev and the syntax + of its configuration file, see + http://git.busybox.net/busybox/tree/docs/mdev.txt. +
    • +The fourth solution is Dynamic using devtmpfs + eudev. This + method also relies on the devtmpfs virtual filesystem detailed + above, but adds the eudev userspace daemon on top of it. eudev + is a daemon that runs in the background, and gets called by the + kernel when a device gets added or removed from the system. It is a + more heavyweight solution than mdev, but provides higher + flexibility. eudev is a standalone version of udev, the + original userspace daemon used in most desktop Linux distributions, + which is now part of Systemd. For more details, see + http://en.wikipedia.org/wiki/Udev. +

    The Buildroot developers recommendation is to start with the Dynamic +using devtmpfs only solution, until you have the need for userspace +to be notified when devices are added/removed, or if firmwares are +needed, in which case Dynamic using devtmpfs + mdev is usually a +good solution.

    Note that if systemd is chosen as init system, /dev management will +be performed by the udev program provided by systemd.

    6.3. init system

    The init program is the first userspace program started by the +kernel (it carries the PID number 1), and is responsible for starting +the userspace services and programs (for example: web server, +graphical applications, other network servers, etc.).

    Buildroot allows to use three different types of init systems, which +can be chosen from System configuration, Init system:

    • +The first solution is BusyBox. Amongst many programs, BusyBox has + an implementation of a basic init program, which is sufficient + for most embedded systems. Enabling the BR2_INIT_BUSYBOX will + ensure BusyBox will build and install its init program. This is + the default solution in Buildroot. The BusyBox init program will + read the /etc/inittab file at boot to know what to do. The syntax + of this file can be found in + http://git.busybox.net/busybox/tree/examples/inittab (note that + BusyBox inittab syntax is special: do not use a random inittab + documentation from the Internet to learn about BusyBox + inittab). The default inittab in Buildroot is stored in + system/skeleton/etc/inittab. Apart from mounting a few important + filesystems, the main job the default inittab does is to start the + /etc/init.d/rcS shell script, and start a getty program (which + provides a login prompt). +
    • +The second solution is systemV. This solution uses the old + traditional sysvinit program, packed in Buildroot in + package/sysvinit. This was the solution used in most desktop + Linux distributions, until they switched to more recent + alternatives such as Upstart or Systemd. sysvinit also works with + an inittab file (which has a slightly different syntax than the + one from BusyBox). The default inittab installed with this init + solution is located in package/sysvinit/inittab. +
    • +The third solution is systemd. systemd is the new generation + init system for Linux. It does far more than traditional init + programs: aggressive parallelization capabilities, uses socket and + D-Bus activation for starting services, offers on-demand starting + of daemons, keeps track of processes using Linux control groups, + supports snapshotting and restoring of the system state, + etc. systemd will be useful on relatively complex embedded + systems, for example the ones requiring D-Bus and services + communicating between each other. It is worth noting that systemd + brings a fairly big number of large dependencies: dbus, udev + and more. For more details about systemd, see + http://www.freedesktop.org/wiki/Software/systemd. +

    The solution recommended by Buildroot developers is to use the +BusyBox init as it is sufficient for most embedded +systems. systemd can be used for more complex situations.



    [3] This terminology differs from what is used by GNU +configure, where the host is the machine on which the application will +run (which is usually the same as target)

    Chapter 7. Configuration of other components

    Before attempting to modify any of the components below, make sure you +have already configured Buildroot itself, and have enabled the +corresponding package.

    +BusyBox +

    If you already have a BusyBox configuration file, you can directly +specify this file in the Buildroot configuration, using +BR2_PACKAGE_BUSYBOX_CONFIG. Otherwise, Buildroot will start from a +default BusyBox configuration file.

    To make subsequent changes to the configuration, use make +busybox-menuconfig to open the BusyBox configuration editor.

    It is also possible to specify a BusyBox configuration file through an +environment variable, although this is not recommended. Refer to +Section 8.6, “Environment variables” for more details.

    +uClibc +
    Configuration of uClibc is done in the same way as for BusyBox. The +configuration variable to specify an existing configuration file is +BR2_UCLIBC_CONFIG. The command to make subsequent changes is make +uclibc-menuconfig.
    +Linux kernel +

    If you already have a kernel configuration file, you can directly +specify this file in the Buildroot configuration, using +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG.

    If you do not yet have a kernel configuration file, you can either start +by specifying a defconfig in the Buildroot configuration, using +BR2_LINUX_KERNEL_USE_DEFCONFIG, or start by creating an empty file and +specifying it as custom configuration file, using +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG.

    To make subsequent changes to the configuration, use make +linux-menuconfig to open the Linux configuration editor.

    +Barebox +
    Configuration of Barebox is done in the same way as for the Linux +kernel. The corresponding configuration variables are +BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG and +BR2_TARGET_BAREBOX_USE_DEFCONFIG. To open the configuration editor, +use make barebox-menuconfig.
    +U-Boot +
    Configuration of U-Boot (version 2015.04 or newer) is done in the same +way as for the Linux kernel. The corresponding configuration variables +are BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG and +BR2_TARGET_UBOOT_USE_DEFCONFIG. To open the configuration editor, +use make uboot-menuconfig.

    Chapter 8. General Buildroot usage

    8.1. make tips

    This is a collection of tips that help you make the most of Buildroot.

    Display all commands executed by make:  +

     $ make V=1 <target>

    +

    Display the list of boards with a defconfig:  +

     $ make list-defconfigs

    +

    Display all available targets:  +

     $ make help

    +

    Not all targets are always available, +some settings in the .config file may hide some targets:

    • +busybox-menuconfig only works when busybox is enabled; +
    • +linux-menuconfig and linux-savedefconfig only work when + linux is enabled; +
    • +uclibc-menuconfig is only available when the uClibc C library is + selected in the internal toolchain backend; +
    • +barebox-menuconfig and barebox-savedefconfig only work when the + barebox bootloader is enabled. +
    • +uboot-menuconfig and uboot-savedefconfig only work when the + U-Boot bootloader is enabled and the uboot build system is set + to Kconfig. +

    Cleaning: Explicit cleaning is required when any of the architecture or toolchain +configuration options are changed.

    To delete all build products (including build directories, host, staging +and target trees, the images and the toolchain):

     $ make clean

    Generating the manual: The present manual sources are located in the docs/manual directory. +To generate the manual:

     $ make manual-clean
    + $ make manual

    The manual outputs will be generated in output/docs/manual.

    Notes

    Resetting Buildroot for a new target: To delete all build products as well as the configuration:

     $ make distclean

    Notes. If ccache is enabled, running make clean or distclean does +not empty the compiler cache used by Buildroot. To delete it, refer +to Section 8.13.3, “Using ccache in Buildroot”.

    Dumping the internal make variables: One can dump the variables known to make, along with their values:

     $ make -s printvars VARS='VARIABLE1 VARIABLE2'
    + VARIABLE1=value_of_variable
    + VARIABLE2=value_of_variable

    It is possible to tweak the output using some variables:

    • +VARS will limit the listing to variables which names match the + specified make-patterns - this must be set else nothing is printed +
    • +QUOTED_VARS, if set to YES, will single-quote the value +
    • +RAW_VARS, if set to YES, will print the unexpanded value +

    For example:

     $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES
    + BUSYBOX_DEPENDENCIES=skeleton toolchain
    + BUSYBOX_FINAL_ALL_DEPENDENCIES=skeleton toolchain
    + BUSYBOX_FINAL_DEPENDENCIES=skeleton toolchain
    + BUSYBOX_FINAL_PATCH_DEPENDENCIES=
    + BUSYBOX_RDEPENDENCIES=ncurses util-linux
     $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES QUOTED_VARS=YES
    + BUSYBOX_DEPENDENCIES='skeleton toolchain'
    + BUSYBOX_FINAL_ALL_DEPENDENCIES='skeleton toolchain'
    + BUSYBOX_FINAL_DEPENDENCIES='skeleton toolchain'
    + BUSYBOX_FINAL_PATCH_DEPENDENCIES=''
    + BUSYBOX_RDEPENDENCIES='ncurses util-linux'
     $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES RAW_VARS=YES
    + BUSYBOX_DEPENDENCIES=skeleton toolchain
    + BUSYBOX_FINAL_ALL_DEPENDENCIES=$(sort $(BUSYBOX_FINAL_DEPENDENCIES) $(BUSYBOX_FINAL_PATCH_DEPENDENCIES))
    + BUSYBOX_FINAL_DEPENDENCIES=$(sort $(BUSYBOX_DEPENDENCIES))
    + BUSYBOX_FINAL_PATCH_DEPENDENCIES=$(sort $(BUSYBOX_PATCH_DEPENDENCIES))
    + BUSYBOX_RDEPENDENCIES=ncurses util-linux

    The output of quoted variables can be reused in shell scripts, for example:

     $ eval $(make -s printvars VARS=BUSYBOX_DEPENDENCIES QUOTED_VARS=YES)
    + $ echo $BUSYBOX_DEPENDENCIES
    + skeleton toolchain

    8.2. Understanding when a full rebuild is necessary

    Buildroot does not attempt to detect what parts of the system should +be rebuilt when the system configuration is changed through make +menuconfig, make xconfig or one of the other configuration +tools. In some cases, Buildroot should rebuild the entire system, in +some cases, only a specific subset of packages. But detecting this in +a completely reliable manner is very difficult, and therefore the +Buildroot developers have decided to simply not attempt to do this.

    Instead, it is the responsibility of the user to know when a full +rebuild is necessary. As a hint, here are a few rules of thumb that +can help you understand how to work with Buildroot:

    • +When the target architecture configuration is changed, a complete + rebuild is needed. Changing the architecture variant, the binary + format or the floating point strategy for example has an impact on + the entire system. +
    • +When the toolchain configuration is changed, a complete rebuild + generally is needed. Changing the toolchain configuration often + involves changing the compiler version, the type of C library or + its configuration, or some other fundamental configuration item, + and these changes have an impact on the entire system. +
    • +When an additional package is added to the configuration, a full + rebuild is not necessarily needed. Buildroot will detect that this + package has never been built, and will build it. However, if this + package is a library that can optionally be used by packages that + have already been built, Buildroot will not automatically rebuild + those. Either you know which packages should be rebuilt, and you + can rebuild them manually, or you should do a full rebuild. For + example, let’s suppose you have built a system with the ctorrent + package, but without openssl. Your system works, but you realize + you would like to have SSL support in ctorrent, so you enable the + openssl package in Buildroot configuration and restart the + build. Buildroot will detect that openssl should be built and + will be build it, but it will not detect that ctorrent should be + rebuilt to benefit from openssl to add OpenSSL support. You will + either have to do a full rebuild, or rebuild ctorrent itself. +
    • +When a package is removed from the configuration, Buildroot does + not do anything special. It does not remove the files installed by + this package from the target root filesystem or from the toolchain + sysroot. A full rebuild is needed to get rid of this + package. However, generally you don’t necessarily need this package + to be removed right now: you can wait for the next lunch break to + restart the build from scratch. +
    • +When the sub-options of a package are changed, the package is not + automatically rebuilt. After making such changes, rebuilding only + this package is often sufficient, unless enabling the package + sub-option adds some features to the package that are useful for + another package which has already been built. Again, Buildroot does + not track when a package should be rebuilt: once a package has been + built, it is never rebuilt unless explicitly told to do so. +
    • +When a change to the root filesystem skeleton is made, a full + rebuild is needed. However, when changes to the root filesystem + overlay, a post-build script or a post-image script are made, + there is no need for a full rebuild: a simple make invocation + will take the changes into account. +
    • +When a package listed in FOO_DEPENDENCIES is rebuilt or removed, + the package foo is not automatically rebuilt. For example, if a + package bar is listed in FOO_DEPENDENCIES with FOO_DEPENDENCIES + = bar and the configuration of the bar package is changed, the + configuration change would not result in a rebuild of package foo + automatically. In this scenario, you may need to either rebuild any + packages in your build which reference bar in their DEPENDENCIES, + or perform a full rebuild to ensure any bar dependent packages are + up to date. +

    Generally speaking, when you’re facing a build error and you’re unsure +of the potential consequences of the configuration changes you’ve +made, do a full rebuild. If you get the same build error, then you are +sure that the error is not related to partial rebuilds of packages, +and if this error occurs with packages from the official Buildroot, do +not hesitate to report the problem! As your experience with Buildroot +progresses, you will progressively learn when a full rebuild is really +necessary, and you will save more and more time.

    For reference, a full rebuild is achieved by running:

    $ make clean all

    8.3. Understanding how to rebuild packages

    One of the most common questions asked by Buildroot users is how to +rebuild a given package or how to remove a package without rebuilding +everything from scratch.

    Removing a package is unsupported by Buildroot without +rebuilding from scratch. This is because Buildroot doesn’t keep track +of which package installs what files in the output/staging and +output/target directories, or which package would be compiled differently +depending on the availability of another package.

    The easiest way to rebuild a single package from scratch is to remove +its build directory in output/build. Buildroot will then re-extract, +re-configure, re-compile and re-install this package from scratch. You +can ask buildroot to do this with the make <package>-dirclean command.

    On the other hand, if you only want to restart the build process of a +package from its compilation step, you can run make <package>-rebuild. It +will restart the compilation and installation of the package, but not from +scratch: it basically re-executes make and make install inside the package, +so it will only rebuild files that changed.

    If you want to restart the build process of a package from its configuration +step, you can run make <package>-reconfigure. It will restart the +configuration, compilation and installation of the package.

    While <package>-rebuild implies <package>-reinstall and +<package>-reconfigure implies <package>-rebuild, these targets as well +as <package> only act on the said package, and do not trigger re-creating +the root filesystem image. If re-creating the root filesystem in necessary, +one should in addition run make or make all.

    Internally, Buildroot creates so-called stamp files to keep track of +which build steps have been completed for each package. They are +stored in the package build directory, +output/build/<package>-<version>/ and are named +.stamp_<step-name>. The commands detailed above simply manipulate +these stamp files to force Buildroot to restart a specific set of +steps of a package build process.

    Further details about package special make targets are explained in +Section 8.13.5, “Package-specific make targets”.

    8.4. Offline builds

    If you intend to do an offline build and just want to download +all sources that you previously selected in the configurator +(menuconfig, nconfig, xconfig or gconfig), then issue:

     $ make source

    You can now disconnect or copy the content of your dl +directory to the build-host.

    8.5. Building out-of-tree

    As default, everything built by Buildroot is stored in the directory +output in the Buildroot tree.

    Buildroot also supports building out of tree with a syntax similar to +the Linux kernel. To use it, add O=<directory> to the make command +line:

     $ make O=/tmp/build menuconfig

    Or:

     $ cd /tmp/build; make O=$PWD -C path/to/buildroot menuconfig

    All the output files will be located under /tmp/build. If the O +path does not exist, Buildroot will create it.

    Note: the O path can be either an absolute or a relative path, but if it’s +passed as a relative path, it is important to note that it is interpreted +relative to the main Buildroot source directory, not the current working +directory.

    When using out-of-tree builds, the Buildroot .config and temporary +files are also stored in the output directory. This means that you can +safely run multiple builds in parallel using the same source tree as +long as they use unique output directories.

    For ease of use, Buildroot generates a Makefile wrapper in the output +directory - so after the first run, you no longer need to pass O=<…> +and -C <…>, simply run (in the output directory):

     $ make <target>

    8.6. Environment variables

    Buildroot also honors some environment variables, when they are passed +to make or set in the environment:

    • +HOSTCXX, the host C++ compiler to use +
    • +HOSTCC, the host C compiler to use +
    • +UCLIBC_CONFIG_FILE=<path/to/.config>, path to + the uClibc configuration file, used to compile uClibc, if an + internal toolchain is being built. + + Note that the uClibc configuration file can also be set from the + configuration interface, so through the Buildroot .config file; this + is the recommended way of setting it. + +
    • +BUSYBOX_CONFIG_FILE=<path/to/.config>, path to + the BusyBox configuration file. + + Note that the BusyBox configuration file can also be set from the + configuration interface, so through the Buildroot .config file; this + is the recommended way of setting it. + +
    • +BR2_CCACHE_DIR to override the directory where + Buildroot stores the cached files when using ccache. + +
    • +BR2_DL_DIR to override the directory in which + Buildroot stores/retrieves downloaded files. + + Note that the Buildroot download directory can also be set from the + configuration interface, so through the Buildroot .config file. See + Section 8.13.4, “Location of downloaded packages” for more details on how you can set the download + directory. +
    • +BR2_GRAPH_ALT, if set and non-empty, to use an alternate color-scheme in + build-time graphs +
    • +BR2_GRAPH_OUT to set the filetype of generated graphs, either pdf (the + default), or png. +
    • +BR2_GRAPH_DEPS_OPTS to pass extra options to the dependency graph; see + Section 8.9, “Graphing the dependencies between packages” for the accepted options +
    • +BR2_GRAPH_DOT_OPTS is passed verbatim as options to the dot utility to + draw the dependency graph. +
    • +BR2_GRAPH_SIZE_OPTS to pass extra options to the size graph; see + Section 8.11, “Graphing the filesystem size contribution of packages” for the acepted options +

    An example that uses config files located in the toplevel directory and +in your $HOME:

     $ make UCLIBC_CONFIG_FILE=uClibc.config BUSYBOX_CONFIG_FILE=$HOME/bb.config

    If you want to use a compiler other than the default gcc +or g++ for building helper-binaries on your host, then do

     $ make HOSTCXX=g++-4.3-HEAD HOSTCC=gcc-4.3-HEAD

    8.7. Dealing efficiently with filesystem images

    Filesystem images can get pretty big, depending on the filesystem you choose, +the number of packages, whether you provisioned free space… Yet, some +locations in the filesystems images may just be empty (e.g. a long run of +zeroes); such a file is called a sparse file.

    Most tools can handle sparse files efficiently, and will only store or write +those parts of a sparse file that are not empty.

    For example:

    • +tar accepts the -S option to tell it to only store non-zero blocks + of sparse files: +

      • +tar cf archive.tar -S [files…] will efficiently store sparse files + in a tarball +
      • +tar xf archive.tar -S will efficiently store sparse files extracted + from a tarball +
    • +cp accepts the --sparse=WHEN option (WHEN is one of auto, + never or always): +

      • +cp --sparse=always source.file dest.file will make dest.file a + sparse file if source.file has long runs of zeroes +

    Other tools may have similar options. Please consult their respective man +pages.

    You can use sparse files if you need to store the filesystem images (e.g. +to transfer from one machine to another), or if you need to send them (e.g. +to the Q&A team).

    Note however that flashing a filesystem image to a device while using the +sparse mode of dd may result in a broken filesystem (e.g. the block bitmap +of an ext2 filesystem may be corrupted; or, if you have sparse files in +your filesystem, those parts may not be all-zeroes when read back). You +should only use sparse files when handling files on the build machine, not +when transferring them to an actual device that will be used on the target.

    8.8. Details about packages

    Buildroot can produce a JSON blurb that describes the set of enabled +packages in the current configuration, together with their +dependencies, licenses and other metadata. This JSON blurb is produced +by using the show-info make target:

    make show-info

    Buildroot can also produce details about packages as HTML and JSON +output using the pkg-stats make target. Amongst other things, these +details include whether known CVEs (security vulnerabilities) affect +the packages in your current configuration. It also shows if there is +a newer upstream version for those packages.

    make pkg-stats

    8.9. Graphing the dependencies between packages

    One of Buildroot’s jobs is to know the dependencies between packages, +and make sure they are built in the right order. These dependencies +can sometimes be quite complicated, and for a given system, it is +often not easy to understand why such or such package was brought into +the build by Buildroot.

    In order to help understanding the dependencies, and therefore better +understand what is the role of the different components in your +embedded Linux system, Buildroot is capable of generating dependency +graphs.

    To generate a dependency graph of the full system you have compiled, +simply run:

    make graph-depends

    You will find the generated graph in +output/graphs/graph-depends.pdf.

    If your system is quite large, the dependency graph may be too complex +and difficult to read. It is therefore possible to generate the +dependency graph just for a given package:

    make <pkg>-graph-depends

    You will find the generated graph in +output/graph/<pkg>-graph-depends.pdf.

    Note that the dependency graphs are generated using the dot tool +from the Graphviz project, which you must have installed on your +system to use this feature. In most distributions, it is available as +the graphviz package.

    By default, the dependency graphs are generated in the PDF +format. However, by passing the BR2_GRAPH_OUT environment variable, you +can switch to other output formats, such as PNG, PostScript or +SVG. All formats supported by the -T option of the dot tool are +supported.

    BR2_GRAPH_OUT=svg make graph-depends

    The graph-depends behaviour can be controlled by setting options in the +BR2_GRAPH_DEPS_OPTS environment variable. The accepted options are:

    • +--depth N, -d N, to limit the dependency depth to N levels. The + default, 0, means no limit. +
    • +--stop-on PKG, -s PKG, to stop the graph on the package PKG. + PKG can be an actual package name, a glob, the keyword virtual + (to stop on virtual packages), or the keyword host (to stop on + host packages). The package is still present on the graph, but its + dependencies are not. +
    • +--exclude PKG, -x PKG, like --stop-on, but also omits PKG from + the graph. +
    • +--transitive, --no-transitive, to draw (or not) the transitive + dependencies. The default is to not draw transitive dependencies. +
    • +--colors R,T,H, the comma-separated list of colors to draw the + root package (R), the target packages (T) and the host packages + (H). Defaults to: lightblue,grey,gainsboro +
    BR2_GRAPH_DEPS_OPTS='-d 3 --no-transitive --colors=red,green,blue' make graph-depends

    8.10. Graphing the build duration

    When the build of a system takes a long time, it is sometimes useful +to be able to understand which packages are the longest to build, to +see if anything can be done to speed up the build. In order to help +such build time analysis, Buildroot collects the build time of each +step of each package, and allows to generate graphs from this data.

    To generate the build time graph after a build, run:

    make graph-build

    This will generate a set of files in output/graphs :

    • +build.hist-build.pdf, a histogram of the build time for each + package, ordered in the build order. +
    • +build.hist-duration.pdf, a histogram of the build time for each + package, ordered by duration (longest first) +
    • +build.hist-name.pdf, a histogram of the build time for each + package, order by package name. +
    • +build.pie-packages.pdf, a pie chart of the build time per package +
    • +build.pie-steps.pdf, a pie chart of the global time spent in each + step of the packages build process. +

    This graph-build target requires the Python Matplotlib and Numpy +libraries to be installed (python-matplotlib and python-numpy on +most distributions), and also the argparse module if you’re using a +Python version older than 2.7 (python-argparse on most +distributions).

    By default, the output format for the graph is PDF, but a different +format can be selected using the BR2_GRAPH_OUT environment variable. The +only other format supported is PNG:

    BR2_GRAPH_OUT=png make graph-build

    8.11. Graphing the filesystem size contribution of packages

    When your target system grows, it is sometimes useful to understand +how much each Buildroot package is contributing to the overall root +filesystem size. To help with such an analysis, Buildroot collects +data about files installed by each package and using this data, +generates a graph and CSV files detailing the size contribution of +the different packages.

    To generate these data after a build, run:

    make graph-size

    This will generate:

    • +output/graphs/graph-size.pdf, a pie chart of the contribution of + each package to the overall root filesystem size +
    • +output/graphs/package-size-stats.csv, a CSV file giving the size + contribution of each package to the overall root filesystem size +
    • +output/graphs/file-size-stats.csv, a CSV file giving the size + contribution of each installed file to the package it belongs, and + to the overall filesystem size. +

    This graph-size target requires the Python Matplotlib library to be +installed (python-matplotlib on most distributions), and also the +argparse module if you’re using a Python version older than 2.7 +(python-argparse on most distributions).

    Just like for the duration graph, a BR2_GRAPH_OUT environment variable +is supported to adjust the output file format. See Section 8.9, “Graphing the dependencies between packages” +for details about this environment variable.

    Additionally, one may set the environment variable BR2_GRAPH_SIZE_OPTS +to further control the generated graph. Accepted options are:

    • +--size-limit X, -l X, will group all packages which individual + contribution is below X percent, to a single entry labelled Others + in the graph. By default, X=0.01, which means packages each + contributing less than 1% are grouped under Others. Accepted values + are in the range [0.0..1.0]. +
    • +--iec, --binary, --si, --decimal, to use IEC (binary, powers + of 1024) or SI (decimal, powers of 1000; the default) prefixes. +
    • +--biggest-first, to sort packages in decreasing size order, rather + than in increasing size order. +

    Note. The collected filesystem size data is only meaningful after a complete +clean rebuild. Be sure to run make clean all before using make +graph-size.

    To compare the root filesystem size of two different Buildroot compilations, +for example after adjusting the configuration or when switching to another +Buildroot release, use the size-stats-compare script. It takes two +file-size-stats.csv files (produced by make graph-size) as input. +Refer to the help text of this script for more details:

    utils/size-stats-compare -h

    8.12. Top-level parallel build

    Note. This section deals with a very experimental feature, which is known to +break even in some non-unusual situations. Use at your own risk.

    Buildroot has always been capable of using parallel build on a per +package basis: each package is built by Buildroot using make -jN (or +the equivalent invocation for non-make-based build systems). The level +of parallelism is by default number of CPUs + 1, but it can be +adjusted using the BR2_JLEVEL configuration option.

    Until 2020.02, Buildroot was however building packages in a serial +fashion: each package was built one after the other, without +parallelization of the build between packages. As of 2020.02, +Buildroot has experimental support for top-level parallel build, +which allows some signicant build time savings by building packages +that have no dependency relationship in parallel. This feature is +however marked as experimental and is known not to work in some cases.

    In order to use top-level parallel build, one must:

    1. +Enable the option BR2_PER_PACKAGE_DIRECTORIES in the Buildroot +configuration +
    2. +Use make -jN when starting the Buildroot build +

    Internally, the BR2_PER_PACKAGE_DIRECTORIES will enable a mechanism +called per-package directories, which will have the following +effects:

    • +Instead of a global target directory and a global host directory + common to all packages, per-package target and host directories + will be used, in $(O)/per-package/<pkg>/target/ and + $(O)/per-package/<pkg>/host/ respectively. Those folders will be + populated from the corresponding folders of the package dependencies + at the beginning of <pkg> build. The compiler and all other tools + will therefore only be able to see and access files installed by + dependencies explicitly listed by <pkg>. +
    • +At the end of the build, the global target and host directories + will be populated, located in $(O)/target and $(O)/host + respectively. This means that during the build, those folders will + be empty and it’s only at the very end of the build that they will + be populated. +

    8.13. Advanced usage

    8.13.1. Using the generated toolchain outside Buildroot

    You may want to compile, for your target, your own programs or other +software that are not packaged in Buildroot. In order to do this you +can use the toolchain that was generated by Buildroot.

    The toolchain generated by Buildroot is located by default in +output/host/. The simplest way to use it is to add +output/host/bin/ to your PATH environment variable and then to +use ARCH-linux-gcc, ARCH-linux-objdump, ARCH-linux-ld, etc.

    Alternatively, Buildroot can also export the toolchain and the development +files of all selected packages, as an SDK, by running the command +make sdk. This generates a tarball of the content of the host directory +output/host/, named <TARGET-TUPLE>_sdk-buildroot.tar.gz (which can be +overriden by setting the environment variable BR2_SDK_PREFIX) and +located in the output directory output/images/.

    This tarball can then be distributed to application developers, when +they want to develop their applications that are not (yet) packaged as +a Buildroot package.

    Upon extracting the SDK tarball, the user must run the script +relocate-sdk.sh (located at the top directory of the SDK), to make +sure all paths are updated with the new location.

    Alternatively, if you just want to prepare the SDK without generating +the tarball (e.g. because you will just be moving the host directory, +or will be generating the tarball on your own), Buildroot also allows +you to just prepare the SDK with make prepare-sdk without actually +generating a tarball.

    For your convenience, by selecting the option +BR2_PACKAGE_HOST_ENVIRONMENT_SETUP, you can get a +environment-setup script installed in output/host/ and therefore +in your SDK. This script can be sourced with +. your/sdk/path/environment-setup to export a number of environment +variables that will help cross-compile your projects using the +Buildroot SDK: the PATH will contain the SDK binaries, standard +autotools variables will be defined with the appropriate values, and +CONFIGURE_FLAGS will contain basic ./configure options to +cross-compile autotools projects. It also provides some useful +commands. Note however that once this script is sourced, the +environment is setup only for cross-compilation, and no longer for +native compilation.

    8.13.2. Using gdb in Buildroot

    Buildroot allows to do cross-debugging, where the debugger runs on the +build machine and communicates with gdbserver on the target to +control the execution of the program.

    To achieve this:

    • +If you are using an internal toolchain (built by Buildroot), you + must enable BR2_PACKAGE_HOST_GDB, BR2_PACKAGE_GDB and + BR2_PACKAGE_GDB_SERVER. This ensures that both the cross gdb and + gdbserver get built, and that gdbserver gets installed to your target. +
    • +If you are using an external toolchain, you should enable + BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY, which will copy the + gdbserver included with the external toolchain to the target. If your + external toolchain does not have a cross gdb or gdbserver, it is also + possible to let Buildroot build them, by enabling the same options as + for the internal toolchain backend. +

    Now, to start debugging a program called foo, you should run on the +target:

    gdbserver :2345 foo

    This will cause gdbserver to listen on TCP port 2345 for a connection +from the cross gdb.

    Then, on the host, you should start the cross gdb using the following +command line:

    <buildroot>/output/host/bin/<tuple>-gdb -ix <buildroot>/output/staging/usr/share/buildroot/gdbinit foo

    Of course, foo must be available in the current directory, built +with debugging symbols. Typically you start this command from the +directory where foo is built (and not from output/target/ as the +binaries in that directory are stripped).

    The <buildroot>/output/staging/usr/share/buildroot/gdbinit file will tell the +cross gdb where to find the libraries of the target.

    Finally, to connect to the target from the cross gdb:

    (gdb) target remote <target ip address>:2345

    8.13.3. Using ccache in Buildroot

    ccache is a compiler cache. It stores the +object files resulting from each compilation process, and is able to +skip future compilation of the same source file (with same compiler +and same arguments) by using the pre-existing object files. When doing +almost identical builds from scratch a number of times, it can nicely +speed up the build process.

    ccache support is integrated in Buildroot. You just have to enable +Enable compiler cache in Build options. This will automatically +build ccache and use it for every host and target compilation.

    The cache is located in the directory defined by the BR2_CCACHE_DIR +configuration option, which defaults to +$HOME/.buildroot-ccache. This default location is outside of +Buildroot output directory so that it can be shared by separate +Buildroot builds. If you want to get rid of the cache, simply remove +this directory.

    You can get statistics on the cache (its size, number of hits, +misses, etc.) by running make ccache-stats.

    The make target ccache-options and the CCACHE_OPTIONS variable +provide more generic access to the ccache. For example

    # set cache limit size
    +make CCACHE_OPTIONS="--max-size=5G" ccache-options
    +
    +# zero statistics counters
    +make CCACHE_OPTIONS="--zero-stats" ccache-options

    ccache makes a hash of the source files and of the compiler options. +If a compiler option is different, the cached object file will not be +used. Many compiler options, however, contain an absolute path to the +staging directory. Because of this, building in a different output +directory would lead to many cache misses.

    To avoid this issue, buildroot has the Use relative paths option +(BR2_CCACHE_USE_BASEDIR). This will rewrite all absolute paths that +point inside the output directory into relative paths. Thus, changing +the output directory no longer leads to cache misses.

    A disadvantage of the relative paths is that they also end up to be +relative paths in the object file. Therefore, for example, the debugger +will no longer find the file, unless you cd to the output directory +first.

    See the +ccache manual’s section on "Compiling in different directories" for +more details about this rewriting of absolute paths.

    When ccache is enabled in Buildroot using the BR2_CCACHE=y option:

    • +ccache is used during the Buildroot build itself +
    • +ccache is not used when building outside of Buildroot, for example + when directly calling the cross-compiler or using the SDK +

    One can override this behavior using the BR2_USE_CCACHE environment +variable: when set to 1, usage of ccache is enabled (default during +the Buildroot build), when unset or set to a value different from 1, +usage of ccache is disabled.

    8.13.4. Location of downloaded packages

    The various tarballs that are downloaded by Buildroot are all stored +in BR2_DL_DIR, which by default is the dl directory. If you want +to keep a complete version of Buildroot which is known to be working +with the associated tarballs, you can make a copy of this directory. +This will allow you to regenerate the toolchain and the target +filesystem with exactly the same versions.

    If you maintain several Buildroot trees, it might be better to have a +shared download location. This can be achieved by pointing the +BR2_DL_DIR environment variable to a directory. If this is +set, then the value of BR2_DL_DIR in the Buildroot configuration is +overridden. The following line should be added to <~/.bashrc>.

     export BR2_DL_DIR=<shared download location>

    The download location can also be set in the .config file, with the +BR2_DL_DIR option. Unlike most options in the .config file, this value +is overridden by the BR2_DL_DIR environment variable.

    8.13.5. Package-specific make targets

    Running make <package> builds and installs that particular package +and its dependencies.

    For packages relying on the Buildroot infrastructure, there are +numerous special make targets that can be called independently like +this:

    make <package>-<target>

    The package build targets are (in the order they are executed):

    command/target Description

    source

    Fetch the source (download the tarball, clone +the source repository, etc)

    depends

    Build and install all dependencies required to +build the package

    extract

    Put the source in the package build directory +(extract the tarball, copy the source, etc)

    patch

    Apply the patches, if any

    configure

    Run the configure commands, if any

    build

    Run the compilation commands

    install-staging

    target package: Run the installation of the package in the +staging directory, if necessary

    install-target

    target package: Run the installation of the package in the +target directory, if necessary

    install

    target package: Run the 2 previous installation commands

    +

    host package: Run the installation of the package in the host +directory

    Additionally, there are some other useful make targets:

    command/target Description

    show-depends

    Displays the first-order dependencies required to build the +package

    show-recursive-depends

    Recursively displays the dependencies + required to build the package

    show-rdepends

    Displays the first-order reverse dependencies of + the package (i.e packages that directly depend on it)

    show-recursive-rdepends

    Recursively displays the reverse + dependencies of the package (i.e the packages that depend on it, + directly or indirectly)

    graph-depends

    Generate a dependency graph of the package, in the +context of the current Buildroot configuration. See +this section for more details about dependency +graphs.

    graph-rdepends

    Generate a graph of this package reverse + dependencies (i.e the packages that depend on it, directly or + indirectly)

    dirclean

    Remove the whole package build directory

    reinstall

    Re-run the install commands

    rebuild

    Re-run the compilation commands - this only makes +sense when using the OVERRIDE_SRCDIR feature or when you modified a file +directly in the build directory

    reconfigure

    Re-run the configure commands, then rebuild - this only +makes sense when using the OVERRIDE_SRCDIR feature or when you modified a +file directly in the build directory

    8.13.6. Using Buildroot during development

    The normal operation of Buildroot is to download a tarball, extract +it, configure, compile and install the software component found inside +this tarball. The source code is extracted in +output/build/<package>-<version>, which is a temporary directory: +whenever make clean is used, this directory is entirely removed, and +re-created at the next make invocation. Even when a Git or +Subversion repository is used as the input for the package source +code, Buildroot creates a tarball out of it, and then behaves as it +normally does with tarballs.

    This behavior is well-suited when Buildroot is used mainly as an +integration tool, to build and integrate all the components of an +embedded Linux system. However, if one uses Buildroot during the +development of certain components of the system, this behavior is not +very convenient: one would instead like to make a small change to the +source code of one package, and be able to quickly rebuild the system +with Buildroot.

    Making changes directly in output/build/<package>-<version> is not +an appropriate solution, because this directory is removed on make +clean.

    Therefore, Buildroot provides a specific mechanism for this use case: +the <pkg>_OVERRIDE_SRCDIR mechanism. Buildroot reads an override +file, which allows the user to tell Buildroot the location of the +source for certain packages.

    The default location of the override file is $(CONFIG_DIR)/local.mk, +as defined by the BR2_PACKAGE_OVERRIDE_FILE configuration option. +$(CONFIG_DIR) is the location of the Buildroot .config file, so +local.mk by default lives side-by-side with the .config file, +which means:

    • +In the top-level Buildroot source directory for in-tree builds + (i.e., when O= is not used) +
    • +In the out-of-tree directory for out-of-tree builds (i.e., when + O= is used) +

    If a different location than these defaults is required, it can be +specified through the BR2_PACKAGE_OVERRIDE_FILE configuration +option.

    In this override file, Buildroot expects to find lines of the form:

    <pkg1>_OVERRIDE_SRCDIR = /path/to/pkg1/sources
    +<pkg2>_OVERRIDE_SRCDIR = /path/to/pkg2/sources

    For example:

    LINUX_OVERRIDE_SRCDIR = /home/bob/linux/
    +BUSYBOX_OVERRIDE_SRCDIR = /home/bob/busybox/

    When Buildroot finds that for a given package, an +<pkg>_OVERRIDE_SRCDIR has been defined, it will no longer attempt to +download, extract and patch the package. Instead, it will directly use +the source code available in the specified directory and make clean +will not touch this directory. This allows to point Buildroot to your +own directories, that can be managed by Git, Subversion, or any other +version control system. To achieve this, Buildroot will use rsync to +copy the source code of the component from the specified +<pkg>_OVERRIDE_SRCDIR to output/build/<package>-custom/.

    This mechanism is best used in conjunction with the make +<pkg>-rebuild and make <pkg>-reconfigure targets. A make +<pkg>-rebuild all sequence will rsync the source code from +<pkg>_OVERRIDE_SRCDIR to output/build/<package>-custom (thanks to +rsync, only the modified files are copied), and restart the build +process of just this package.

    In the example of the linux package above, the developer can then +make a source code change in /home/bob/linux and then run:

    make linux-rebuild all

    and in a matter of seconds gets the updated Linux kernel image in +output/images. Similarly, a change can be made to the BusyBox source +code in /home/bob/busybox, and after:

    make busybox-rebuild all

    the root filesystem image in output/images contains the updated +BusyBox.

    Source trees for big projects often contain hundreds or thousands of +files which are not needed for building, but will slow down the process +of copying the sources with rsync. Optionally, it is possible define +<pkg>_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS to skip syncing certain files +from the source tree. For example, when working on the webkitgtk +package, the following will exclude the tests and in-tree builds from +a local WebKit source tree:

    WEBKITGTK_OVERRIDE_SRCDIR = /home/bob/WebKit
    +WEBKITGTK_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = \
    +        --exclude JSTests --exclude ManualTests --exclude PerformanceTests \
    +        --exclude WebDriverTests --exclude WebKitBuild --exclude WebKitLibraries \
    +        --exclude WebKit.xcworkspace --exclude Websites --exclude Examples

    By default, Buildroot skips syncing of VCS artifacts (e.g., the .git and +.svn directories). Some packages prefer to have these VCS directories +available during build, for example for automatically determining a precise +commit reference for version information. To undo this built-in filtering at a +cost of a slower speed, add these directories back:

    LINUX_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = --include .git

    Chapter 9. Project-specific customization

    Typical actions you may need to perform for a given project are:

    • +configuring Buildroot (including build options and toolchain, + bootloader, kernel, package and filesystem image type selection) +
    • +configuring other components, like the Linux kernel and BusyBox +
    • +customizing the generated target filesystem +

      • +adding or overwriting files on the target filesystem (using + BR2_ROOTFS_OVERLAY) +
      • +modifying or deleting files on the target filesystem (using + BR2_ROOTFS_POST_BUILD_SCRIPT) +
      • +running arbitrary commands prior to generating the filesystem image + (using BR2_ROOTFS_POST_BUILD_SCRIPT) +
      • +setting file permissions and ownership (using + BR2_ROOTFS_DEVICE_TABLE) +
      • +adding custom devices nodes (using + BR2_ROOTFS_STATIC_DEVICE_TABLE) +
    • +adding custom user accounts (using BR2_ROOTFS_USERS_TABLES) +
    • +running arbitrary commands after generating the filesystem image + (using BR2_ROOTFS_POST_IMAGE_SCRIPT) +
    • +adding project-specific patches to some packages (using + BR2_GLOBAL_PATCH_DIR) +
    • +adding project-specific packages +

    An important note regarding such project-specific customizations: +please carefully consider which changes are indeed project-specific and +which changes are also useful to developers outside your project. The +Buildroot community highly recommends and encourages the upstreaming of +improvements, packages and board support to the official Buildroot +project. Of course, it is sometimes not possible or desirable to +upstream because the changes are highly specific or proprietary.

    This chapter describes how to make such project-specific customizations +in Buildroot and how to store them in a way that you can build the same +image in a reproducible way, even after running make clean. By +following the recommended strategy, you can even use the same Buildroot +tree to build multiple distinct projects!

    9.1. Recommended directory structure

    When customizing Buildroot for your project, you will be creating one or +more project-specific files that need to be stored somewhere. While most +of these files could be placed in any location as their path is to be +specified in the Buildroot configuration, the Buildroot developers +recommend a specific directory structure which is described in this +section.

    Orthogonal to this directory structure, you can choose where you place +this structure itself: either inside the Buildroot tree, or outside of +it using a br2-external tree. Both options are valid, the choice is up +to you.

    +-- board/
    +|   +-- <company>/
    +|       +-- <boardname>/
    +|           +-- linux.config
    +|           +-- busybox.config
    +|           +-- <other configuration files>
    +|           +-- post_build.sh
    +|           +-- post_image.sh
    +|           +-- rootfs_overlay/
    +|           |   +-- etc/
    +|           |   +-- <some files>
    +|           +-- patches/
    +|               +-- foo/
    +|               |   +-- <some patches>
    +|               +-- libbar/
    +|                   +-- <some other patches>
    +|
    ++-- configs/
    +|   +-- <boardname>_defconfig
    +|
    ++-- package/
    +|   +-- <company>/
    +|       +-- Config.in (if not using a br2-external tree)
    +|       +-- <company>.mk (if not using a br2-external tree)
    +|       +-- package1/
    +|       |    +-- Config.in
    +|       |    +-- package1.mk
    +|       +-- package2/
    +|           +-- Config.in
    +|           +-- package2.mk
    +|
    ++-- Config.in (if using a br2-external tree)
    ++-- external.mk (if using a br2-external tree)
    ++-- external.desc (if using a br2-external tree)

    Details on the files shown above are given further in this chapter.

    Note: if you choose to place this structure outside of the Buildroot +tree but in a br2-external tree, the <company> and possibly <boardname> +components may be superfluous and can be left out.

    9.1.1. Implementing layered customizations

    It is quite common for a user to have several related projects that partly +need the same customizations. Instead of duplicating these +customizations for each project, it is recommended to use a layered +customization approach, as explained in this section.

    Almost all of the customization methods available in Buildroot, like +post-build scripts and root filesystem overlays, accept a +space-separated list of items. The specified items are always treated in +order, from left to right. By creating more than one such item, one for +the common customizations and another one for the really +project-specific customizations, you can avoid unnecessary duplication. +Each layer is typically embodied by a separate directory inside +board/<company>/. Depending on your projects, you could even introduce +more than two layers.

    An example directory structure for where a user has two customization +layers common and fooboard is:

    +-- board/
    +    +-- <company>/
    +        +-- common/
    +        |   +-- post_build.sh
    +        |   +-- rootfs_overlay/
    +        |   |   +-- ...
    +        |   +-- patches/
    +        |       +-- ...
    +        |
    +        +-- fooboard/
    +            +-- linux.config
    +            +-- busybox.config
    +            +-- <other configuration files>
    +            +-- post_build.sh
    +            +-- rootfs_overlay/
    +            |   +-- ...
    +            +-- patches/
    +                +-- ...

    For example, if the user has the BR2_GLOBAL_PATCH_DIR configuration +option set as:

    BR2_GLOBAL_PATCH_DIR="board/<company>/common/patches board/<company>/fooboard/patches"

    then first the patches from the common layer would be applied, +followed by the patches from the fooboard layer.

    9.2. Keeping customizations outside of Buildroot

    As already briefly mentioned in Section 9.1, “Recommended directory structure”, you can +place project-specific customizations in two locations:

    • +directly within the Buildroot tree, typically maintaining them using + branches in a version control system so that upgrading to a newer + Buildroot release is easy. +
    • +outside of the Buildroot tree, using the br2-external mechanism. + This mechanism allows to keep package recipes, board support and + configuration files outside of the Buildroot tree, while still + having them nicely integrated in the build logic. We call this + location a br2-external tree. This section explains how to use + the br2-external mechanism and what to provide in a br2-external + tree. +

    One can tell Buildroot to use one or more br2-external trees by setting +the BR2_EXTERNAL make variable set to the path(s) of the br2-external +tree(s) to use. It can be passed to any Buildroot make invocation. It +is automatically saved in the hidden .br2-external.mk file in the output +directory. Thanks to this, there is no need to pass BR2_EXTERNAL at +every make invocation. It can however be changed at any time by +passing a new value, and can be removed by passing an empty value.

    Note. The path to a br2-external tree can be either absolute or relative. +If it is passed as a relative path, it is important to note that it is +interpreted relative to the main Buildroot source directory, not to +the Buildroot output directory.

    Note: If using an br2-external tree from before Buildroot 2016.11, you need to +convert it before you can use it with Buildroot 2016.11 onward. See +Section 27.2, “Migrating to 2016.11” for help on doing so.

    Some examples:

    buildroot/ $ make BR2_EXTERNAL=/path/to/foo menuconfig

    From now on, definitions from the /path/to/foo br2-external tree +will be used:

    buildroot/ $ make
    +buildroot/ $ make legal-info

    We can switch to another br2-external tree at any time:

    buildroot/ $ make BR2_EXTERNAL=/where/we/have/bar xconfig

    We can also use multiple br2-external trees:

    buildroot/ $ make BR2_EXTERNAL=/path/to/foo:/where/we/have/bar menuconfig

    Or disable the usage of any br2-external tree:

    buildroot/ $ make BR2_EXTERNAL= xconfig

    9.2.1. Layout of a br2-external tree

    A br2-external tree must contain at least those three files, described +in the following chapters:

    • +external.desc +
    • +external.mk +
    • +Config.in +

    Apart from those mandatory files, there may be additional and optional +content that may be present in a br2-external tree, like the configs/ +or provides/ directories. They are described in the following chapters +as well.

    A complete example br2-external tree layout is also described later.

    The external.desc file

    That file describes the br2-external tree: the name and description +for that br2-external tree.

    The format for this file is line based, with each line starting by a +keyword, followed by a colon and one or more spaces, followed by the +value assigned to that keyword. There are two keywords currently +recognised:

    • +name, mandatory, defines the name for that br2-external tree. That + name must only use ASCII characters in the set [A-Za-z0-9_]; any + other character is forbidden. Buildroot sets the variable + BR2_EXTERNAL_$(NAME)_PATH to the absolute path of the br2-external + tree, so that you can use it to refer to your br2-external tree. This + variable is available both in Kconfig, so you can use it to source your + Kconfig files (see below) and in the Makefile, so that you can use it + to include other Makefiles (see below) or refer to other files (like + data files) from your br2-external tree. +

      Note: Since it is possible to use multiple br2-external trees at once, this + name is used by Buildroot to generate variables for each of those trees. + That name is used to identify your br2-external tree, so try to come up + with a name that really describes your br2-external tree, in order for + it to be relatively unique, so that it does not clash with another name + from another br2-external tree, especially if you are planning on + somehow sharing your br2-external tree with third parties or using + br2-external trees from third parties.

    • +desc, optional, provides a short description for that br2-external + tree. It shall fit on a single line, is mostly free-form (see below), + and is used when displaying information about a br2-external tree (e.g. + above the list of defconfig files, or as the prompt in the menuconfig); + as such, it should relatively brief (40 chars is probably a good upper + limit). The description is available in the BR2_EXTERNAL_$(NAME)_DESC + variable. +

    Examples of names and the corresponding BR2_EXTERNAL_$(NAME)_PATH +variables:

    • +FOOBR2_EXTERNAL_FOO_PATH +
    • +BAR_42BR2_EXTERNAL_BAR_42_PATH +

    In the following examples, it is assumed the name to be set to BAR_42.

    Note: Both BR2_EXTERNAL_$(NAME)_PATH and BR2_EXTERNAL_$(NAME)_DESC are + available in the Kconfig files and the Makefiles. They are also + exported in the environment so are available in post-build, post-image + and in-fakeroot scripts.

    The Config.in and external.mk files

    Those files (which may each be empty) can be used to define package +recipes (i.e. foo/Config.in and foo/foo.mk like for packages bundled +in Buildroot itself) or other custom configuration options or make logic.

    Buildroot automatically includes the Config.in from each br2-external +tree to make it appear in the top-level configuration menu, and includes +the external.mk from each br2-external tree with the rest of the +makefile logic.

    The main usage of this is to store package recipes. The recommended way +to do this is to write a Config.in file that looks like:

    source "$BR2_EXTERNAL_BAR_42_PATH/package/package1/Config.in"
    +source "$BR2_EXTERNAL_BAR_42_PATH/package/package2/Config.in"

    Then, have an external.mk file that looks like:

    include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk))

    And then in $(BR2_EXTERNAL_BAR_42_PATH)/package/package1 and +$(BR2_EXTERNAL_BAR_42_PATH)/package/package2 create normal +Buildroot package recipes, as explained in Chapter 18, Adding new packages to Buildroot. +If you prefer, you can also group the packages in subdirectories +called <boardname> and adapt the above paths accordingly.

    You can also define custom configuration options in Config.in and +custom make logic in external.mk.

    The configs/ directory

    One can store Buildroot defconfigs in the configs subdirectory of +the br2-external tree. Buildroot will automatically show them in the +output of make list-defconfigs and allow them to be loaded with the +normal make <name>_defconfig command. They will be visible in the +make list-defconfigs output, below an External configs label that +contains the name of the br2-external tree they are defined in.

    Note: If a defconfig file is present in more than one br2-external tree, then +the one from the last br2-external tree is used. It is thus possible +to override a defconfig bundled in Buildroot or another br2-external +tree.

    The provides/ directory

    For some packages, Buildroot provides a choice between two (or more) +implementations of API-compatible such packages. For example, there is +a choice to choose either libjpeg ot jpeg-turbo; there is one between +openssl or libressl; there is one to select one of the known, +pre-configured toolchains…

    It is possible for a br2-external to extend those choices, by providing +a set of files that define those alternatives:

    • +provides/toolchains.in defines the pre-configured toolchains, which + will then be listed in the toolchain selection; +
    • +provides/jpeg.in defines the alternative libjpeg implementations; +
    • +provides/openssl.in defines the alternative openssl implementations; +
    • +provides/skeleton.in defines the alternative skeleton implementations; +
    • +provides/init.in defines the alternative init system implementations, this + can be used to select a default skeleton for your init. +

    Free-form content

    One can store all the board-specific configuration files there, such +as the kernel configuration, the root filesystem overlay, or any other +configuration file for which Buildroot allows to set the location (by +using the BR2_EXTERNAL_$(NAME)_PATH variable). For example, you +could set the paths to a global patch directory, to a rootfs overlay +and to the kernel configuration file as follows (e.g. by running +make menuconfig and filling in these options):

    BR2_GLOBAL_PATCH_DIR=$(BR2_EXTERNAL_BAR_42_PATH)/patches/
    +BR2_ROOTFS_OVERLAY=$(BR2_EXTERNAL_BAR_42_PATH)/board/<boardname>/overlay/
    +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=$(BR2_EXTERNAL_BAR_42_PATH)/board/<boardname>/kernel.config

    Additional Linux kernel extensions

    Additional Linux kernel extensions (see Section 18.22.2, “linux-kernel-extensions”) can +be added by storing them in the linux/ directory at the root of a +br2-external tree.

    Example layout

    Here is an example layout using all features of br2-external (the sample +content is shown for the file above it, when it is relevant to explain +the br2-external tree; this is all entirely made up just for the sake of +illustration, of course):

    /path/to/br2-ext-tree/
    +  |- external.desc
    +  |     |name: BAR_42
    +  |     |desc: Example br2-external tree
    +  |     `----
    +  |
    +  |- Config.in
    +  |     |source "$BR2_EXTERNAL_BAR_42_PATH/toolchain/toolchain-external-mine/Config.in.options"
    +  |     |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-1/Config.in"
    +  |     |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-2/Config.in"
    +  |     |source "$BR2_EXTERNAL_BAR_42_PATH/package/my-jpeg/Config.in"
    +  |     |
    +  |     |config BAR_42_FLASH_ADDR
    +  |     |    hex "my-board flash address"
    +  |     |    default 0x10AD
    +  |     `----
    +  |
    +  |- external.mk
    +  |     |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk))
    +  |     |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/toolchain/*/*.mk))
    +  |     |
    +  |     |flash-my-board:
    +  |     |    $(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/flash-image \
    +  |     |        --image $(BINARIES_DIR)/image.bin \
    +  |     |        --address $(BAR_42_FLASH_ADDR)
    +  |     `----
    +  |
    +  |- package/pkg-1/Config.in
    +  |     |config BR2_PACKAGE_PKG_1
    +  |     |    bool "pkg-1"
    +  |     |    help
    +  |     |      Some help about pkg-1
    +  |     `----
    +  |- package/pkg-1/pkg-1.hash
    +  |- package/pkg-1/pkg-1.mk
    +  |     |PKG_1_VERSION = 1.2.3
    +  |     |PKG_1_SITE = /some/where/to/get/pkg-1
    +  |     |PKG_1_LICENSE = blabla
    +  |     |
    +  |     |define PKG_1_INSTALL_INIT_SYSV
    +  |     |    $(INSTALL) -D -m 0755 $(PKG_1_PKGDIR)/S99my-daemon \
    +  |     |                          $(TARGET_DIR)/etc/init.d/S99my-daemon
    +  |     |endef
    +  |     |
    +  |     |$(eval $(autotools-package))
    +  |     `----
    +  |- package/pkg-1/S99my-daemon
    +  |
    +  |- package/pkg-2/Config.in
    +  |- package/pkg-2/pkg-2.hash
    +  |- package/pkg-2/pkg-2.mk
    +  |
    +  |- provides/jpeg.in
    +  |     |config BR2_PACKAGE_MY_JPEG
    +  |     |    bool "my-jpeg"
    +  |     `----
    +  |- package/my-jpeg/Config.in
    +  |     |config BR2_PACKAGE_PROVIDES_JPEG
    +  |     |    default "my-jpeg" if BR2_PACKAGE_MY_JPEG
    +  |     `----
    +  |- package/my-jpeg/my-jpeg.mk
    +  |     |# This is a normal package .mk file
    +  |     |MY_JPEG_VERSION = 1.2.3
    +  |     |MY_JPEG_SITE = https://example.net/some/place
    +  |     |MY_JPEG_PROVIDES = jpeg
    +  |     |$(eval $(autotools-package))
    +  |     `----
    +  |
    +  |- provides/init.in
    +  |     |config BR2_INIT_MINE
    +  |     |    bool "my custom init"
    +  |     |    select BR2_PACKAGE_MY_INIT
    +  |     |    select BR2_PACKAGE_SKELETON_INIT_MINE if BR2_ROOTFS_SKELETON_DEFAULT
    +  |     `----
    +  |
    +  |- provides/skeleton.in
    +  |     |config BR2_ROOTFS_SKELETON_MINE
    +  |     |    bool "my custom skeleton"
    +  |     |    select BR2_PACKAGE_SKELETON_MINE
    +  |     `----
    +  |- package/skeleton-mine/Config.in
    +  |     |config BR2_PACKAGE_SKELETON_MINE
    +  |     |    bool
    +  |     |    select BR2_PACKAGE_HAS_SKELETON
    +  |     |
    +  |     |config BR2_PACKAGE_PROVIDES_SKELETON
    +  |     |    default "skeleton-mine" if BR2_PACKAGE_SKELETON_MINE
    +  |     `----
    +  |- package/skeleton-mine/skeleton-mine.mk
    +  |     |SKELETON_MINE_ADD_TOOLCHAIN_DEPENDENCY = NO
    +  |     |SKELETON_MINE_ADD_SKELETON_DEPENDENCY = NO
    +  |     |SKELETON_MINE_PROVIDES = skeleton
    +  |     |SKELETON_MINE_INSTALL_STAGING = YES
    +  |     |$(eval $(generic-package))
    +  |     `----
    +  |
    +  |- provides/toolchains.in
    +  |     |config BR2_TOOLCHAIN_EXTERNAL_MINE
    +  |     |    bool "my custom toolchain"
    +  |     |    depends on BR2_some_arch
    +  |     |    select BR2_INSTALL_LIBSTDCPP
    +  |     `----
    +  |- toolchain/toolchain-external-mine/Config.in.options
    +  |     |if BR2_TOOLCHAIN_EXTERNAL_MINE
    +  |     |config BR2_TOOLCHAIN_EXTERNAL_PREFIX
    +  |     |    default "arch-mine-linux-gnu"
    +  |     |config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
    +  |     |    default "toolchain-external-mine"
    +  |     |endif
    +  |     `----
    +  |- toolchain/toolchain-external-mine/toolchain-external-mine.mk
    +  |     |TOOLCHAIN_EXTERNAL_MINE_SITE = https://example.net/some/place
    +  |     |TOOLCHAIN_EXTERNAL_MINE_SOURCE = my-toolchain.tar.gz
    +  |     |$(eval $(toolchain-external-package))
    +  |     `----
    +  |
    +  |- linux/Config.ext.in
    +  |     |config BR2_LINUX_KERNEL_EXT_EXAMPLE_DRIVER
    +  |     |    bool "example-external-driver"
    +  |     |    help
    +  |     |      Example external driver
    +  |     |---
    +  |- linux/linux-ext-example-driver.mk
    +  |
    +  |- configs/my-board_defconfig
    +  |     |BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_BAR_42_PATH)/patches/"
    +  |     |BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/overlay/"
    +  |     |BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/post-image.sh"
    +  |     |BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/kernel.config"
    +  |     `----
    +  |
    +  |- patches/linux/0001-some-change.patch
    +  |- patches/linux/0002-some-other-change.patch
    +  |- patches/busybox/0001-fix-something.patch
    +  |
    +  |- board/my-board/kernel.config
    +  |- board/my-board/overlay/var/www/index.html
    +  |- board/my-board/overlay/var/www/my.css
    +  |- board/my-board/flash-image
    +  `- board/my-board/post-image.sh
    +        |#!/bin/sh
    +        |generate-my-binary-image \
    +        |    --root ${BINARIES_DIR}/rootfs.tar \
    +        |    --kernel ${BINARIES_DIR}/zImage \
    +        |    --dtb ${BINARIES_DIR}/my-board.dtb \
    +        |    --output ${BINARIES_DIR}/image.bin
    +        `----

    The br2-external tree will then be visible in the menuconfig (with +the layout expanded):

    External options  --->
    +    *** Example br2-external tree (in /path/to/br2-ext-tree/)
    +    [ ] pkg-1
    +    [ ] pkg-2
    +    (0x10AD) my-board flash address

    If you are using more than one br2-external tree, it would look like +(with the layout expanded and the second one with name FOO_27 but no +desc: field in external.desc):

    External options  --->
    +    Example br2-external tree  --->
    +        *** Example br2-external tree (in /path/to/br2-ext-tree)
    +        [ ] pkg-1
    +        [ ] pkg-2
    +        (0x10AD) my-board flash address
    +    FOO_27  --->
    +        *** FOO_27 (in /path/to/another-br2-ext)
    +        [ ] foo
    +        [ ] bar

    Additionally, the jpeg provider will be visible in the jpeg choice:

    Target packages  --->
    +    Libraries  --->
    +        Graphics  --->
    +            [*] jpeg support
    +                jpeg variant ()  --->
    +                    ( ) jpeg
    +                    ( ) jpeg-turbo
    +                        *** jpeg from: Example br2-external tree ***
    +                    (X) my-jpeg
    +                        *** jpeg from: FOO_27 ***
    +                    ( ) another-jpeg

    And similarly for the toolchains:

    Toolchain  --->
    +    Toolchain ()  --->
    +        ( ) Custom toolchain
    +            *** Toolchains from: Example br2-external tree ***
    +        (X) my custom toolchain

    Note. The toolchain options in toolchain/toolchain-external-mine/Config.in.options +will not appear in the Toolchain menu. They must be explicitly included +from within the br2-external’s top-level Config.in and will thus appear +in the External options menu.

    9.3. Storing the Buildroot configuration

    The Buildroot configuration can be stored using the command + make savedefconfig.

    This strips the Buildroot configuration down by removing configuration +options that are at their default value. The result is stored in a file +called defconfig. If you want to save it in another place, change the +BR2_DEFCONFIG option in the Buildroot configuration itself, or call +make with make savedefconfig BR2_DEFCONFIG=<path-to-defconfig>.

    The recommended place to store this defconfig is +configs/<boardname>_defconfig. If you follow this recommendation, the +configuration will be listed in make list-defconfigs and can be set +again by running make <boardname>_defconfig.

    Alternatively, you can copy the file to any other place and rebuild with +make defconfig BR2_DEFCONFIG=<path-to-defconfig-file>.

    9.4. Storing the configuration of other components

    The configuration files for BusyBox, the Linux kernel, Barebox, U-Boot +and uClibc should be stored as well if changed. For each of these +components, a Buildroot configuration option exists to point to an input +configuration file, e.g. BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE. To store +their configuration, set these configuration options to a path where you +want to save the configuration files, and then use the helper targets +described below to actually store the configuration.

    As explained in Section 9.1, “Recommended directory structure”, the recommended path to +store these configuration files is +board/<company>/<boardname>/foo.config.

    Make sure that you create a configuration file before changing +the BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE etc. options. Otherwise, +Buildroot will try to access this config file, which doesn’t exist +yet, and will fail. You can create the configuration file by running +make linux-menuconfig etc.

    Buildroot provides a few helper targets to make the saving of +configuration files easier.

    • +make linux-update-defconfig saves the linux configuration to the + path specified by BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE. It + simplifies the config file by removing default values. However, + this only works with kernels starting from 2.6.33. For earlier + kernels, use make linux-update-config. +
    • +make busybox-update-config saves the busybox configuration to the + path specified by BR2_PACKAGE_BUSYBOX_CONFIG. +
    • +make uclibc-update-config saves the uClibc configuration to the + path specified by BR2_UCLIBC_CONFIG. +
    • +make barebox-update-defconfig saves the barebox configuration to the + path specified by BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE. +
    • +make uboot-update-defconfig saves the U-Boot configuration to the + path specified by BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE. +
    • +For at91bootstrap3, no helper exists so you have to copy the config + file manually to BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE. +

    9.5. Customizing the generated target filesystem

    Besides changing the configuration through make *config, +there are a few other ways to customize the resulting target filesystem.

    The two recommended methods, which can co-exist, are root filesystem +overlay(s) and post build script(s).

    +Root filesystem overlays (BR2_ROOTFS_OVERLAY) +

    A filesystem overlay is a tree of files that is copied directly + over the target filesystem after it has been built. To enable this + feature, set config option BR2_ROOTFS_OVERLAY (in the System + configuration menu) to the root of the overlay. You can even specify + multiple overlays, space-separated. If you specify a relative path, + it will be relative to the root of the Buildroot tree. Hidden + directories of version control systems, like .git, .svn, .hg, + etc., files called .empty and files ending in ~ are excluded from + the copy.

    When BR2_ROOTFS_MERGED_USR is enabled, then the overlay must not + contain the /bin, /lib or /sbin directories, as Buildroot will + create them as symbolic links to the relevant folders in /usr. In + such a situation, should the overlay have any programs or libraries, + they should be placed in /usr/bin, /usr/sbin and /usr/lib.

    As shown in Section 9.1, “Recommended directory structure”, the recommended path for + this overlay is board/<company>/<boardname>/rootfs-overlay.

    +Post-build scripts (BR2_ROOTFS_POST_BUILD_SCRIPT) +

    Post-build scripts are shell scripts called after Buildroot builds + all the selected software, but before the rootfs images are + assembled. To enable this feature, specify a space-separated list of + post-build scripts in config option BR2_ROOTFS_POST_BUILD_SCRIPT (in + the System configuration menu). If you specify a relative path, it + will be relative to the root of the Buildroot tree.

    Using post-build scripts, you can remove or modify any file in your + target filesystem. You should, however, use this feature with care. + Whenever you find that a certain package generates wrong or unneeded + files, you should fix that package rather than work around it with some + post-build cleanup scripts.

    As shown in Section 9.1, “Recommended directory structure”, the recommended path for + this script is board/<company>/<boardname>/post_build.sh.

    The post-build scripts are run with the main Buildroot tree as current + working directory. The path to the target filesystem is passed as the + first argument to each script. If the config option + BR2_ROOTFS_POST_SCRIPT_ARGS is not empty, these arguments will be + passed to the script too. All the scripts will be passed the exact + same set of arguments, it is not possible to pass different sets of + arguments to each script.

    In addition, you may also use these environment variables:

    • +BR2_CONFIG: the path to the Buildroot .config file +
    • +CONFIG_DIR: the directory containing the .config file, and + therefore the top-level Buildroot Makefile to use (which is + correct for both in-tree and out-of-tree builds) +
    • +HOST_DIR, STAGING_DIR, TARGET_DIR: see + Section 18.6.2, “generic-package reference” +
    • +BUILD_DIR: the directory where packages are extracted and built +
    • +BINARIES_DIR: the place where all binary files (aka images) are + stored +
    • +BASE_DIR: the base output directory +

    Below three more methods of customizing the target filesystem are +described, but they are not recommended.

    +Direct modification of the target filesystem +

    For temporary modifications, you can modify the target filesystem + directly and rebuild the image. The target filesystem is available + under output/target/. After making your changes, run make to + rebuild the target filesystem image.

    This method allows you to do anything to the target filesystem, but if + you need to clean your Buildroot tree using make clean, these + changes will be lost. Such cleaning is necessary in several cases, + refer to Section 8.2, “Understanding when a full rebuild is necessary” for details. This solution is therefore + only useful for quick tests: changes do not survive the make clean + command. Once you have validated your changes, you should make sure + that they will persist after a make clean, using a root filesystem + overlay or a post-build script.

    +Custom target skeleton (BR2_ROOTFS_SKELETON_CUSTOM) +

    The root filesystem image is created from a target skeleton, on top of + which all packages install their files. The skeleton is copied to the + target directory output/target before any package is built and + installed. The default target skeleton provides the standard Unix + filesystem layout and some basic init scripts and configuration files.

    If the default skeleton (available under system/skeleton) does not + match your needs, you would typically use a root filesystem overlay or + post-build script to adapt it. However, if the default skeleton is + entirely different than what you need, using a custom skeleton may be + more suitable.

    To enable this feature, enable config option + BR2_ROOTFS_SKELETON_CUSTOM and set BR2_ROOTFS_SKELETON_CUSTOM_PATH + to the path of your custom skeleton. Both options are available in the + System configuration menu. If you specify a relative path, it will + be relative to the root of the Buildroot tree.

    Custom skeletons don’t need to contain the /bin, /lib or /sbin + directories, since they are created automatically during the build. + When BR2_ROOTFS_MERGED_USR is enabled, then the custom skeleton must + not contain the /bin, /lib or /sbin directories, as Buildroot + will create them as symbolic links to the relevant folders in /usr. + In such a situation, should the skeleton have any programs or + libraries, they should be placed in /usr/bin, /usr/sbin and + /usr/lib.

    This method is not recommended because it duplicates the entire + skeleton, which prevents taking advantage of the fixes or improvements + brought to the default skeleton in later Buildroot releases.

    +Post-fakeroot scripts (BR2_ROOTFS_POST_FAKEROOT_SCRIPT) +

    When aggregating the final images, some parts of the process requires + root rights: creating device nodes in /dev, setting permissions or + ownership to files and directories… To avoid requiring actual root + rights, Buildroot uses fakeroot to simulate root rights. This is not + a complete substitute for actually being root, but is enough for what + Buildroot needs.

    Post-fakeroot scripts are shell scripts that are called at the end of + the fakeroot phase, right before the filesystem image generator is + called. As such, they are called in the fakeroot context.

    Post-fakeroot scripts can be useful in case you need to tweak the + filesystem to do modifications that are usually only available to the + root user.

    Note: It is recommended to use the existing mechanisms to set file permissions + or create entries in /dev (see Section 9.5.1, “Setting file permissions and ownership and adding custom devices nodes”) or + to create users (see Section 9.6, “Adding custom user accounts”)

    Note: The difference between post-build scripts (above) and fakeroot scripts, + is that post-build scripts are not called in the fakeroot context.

    Note: Using fakeroot is not an absolute substitute for actually being root. + fakeroot only ever fakes the file access rights and types (regular, + block-or-char device…) and uid/gid; these are emulated in-memory.

    9.5.1. Setting file permissions and ownership and adding custom devices nodes

    Sometimes it is needed to set specific permissions or ownership on files +or device nodes. For example, certain files may need to be owned by +root. Since the post-build scripts are not run as root, you cannot do +such changes from there unless you use an explicit fakeroot from the +post-build script.

    Instead, Buildroot provides support for so-called permission tables. +To use this feature, set config option BR2_ROOTFS_DEVICE_TABLE to a +space-separated list of permission tables, regular text files following +the makedev syntax.

    If you are using a static device table (i.e. not using devtmpfs, +mdev, or (e)udev) then you can add device nodes using the same +syntax, in so-called device tables. To use this feature, set config +option BR2_ROOTFS_STATIC_DEVICE_TABLE to a space-separated list of +device tables.

    As shown in Section 9.1, “Recommended directory structure”, the recommended location for +such files is board/<company>/<boardname>/.

    It should be noted that if the specific permissions or device nodes are +related to a specific application, you should set variables +FOO_PERMISSIONS and FOO_DEVICES in the package’s .mk file instead +(see Section 18.6.2, “generic-package reference”).

    9.6. Adding custom user accounts

    Sometimes it is needed to add specific users in the target system. +To cover this requirement, Buildroot provides support for so-called +users tables. To use this feature, set config option +BR2_ROOTFS_USERS_TABLES to a space-separated list of users tables, +regular text files following the makeusers syntax.

    As shown in Section 9.1, “Recommended directory structure”, the recommended location for +such files is board/<company>/<boardname>/.

    It should be noted that if the custom users are related to a specific +application, you should set variable FOO_USERS in the package’s .mk +file instead (see Section 18.6.2, “generic-package reference”).

    9.7. Customization after the images have been created

    While post-build scripts (Section 9.5, “Customizing the generated target filesystem”) are run before +building the filesystem image, kernel and bootloader, post-image +scripts can be used to perform some specific actions after all images +have been created.

    Post-image scripts can for example be used to automatically extract your +root filesystem tarball in a location exported by your NFS server, or +to create a special firmware image that bundles your root filesystem and +kernel image, or any other custom action required for your project.

    To enable this feature, specify a space-separated list of post-image +scripts in config option BR2_ROOTFS_POST_IMAGE_SCRIPT (in the System +configuration menu). If you specify a relative path, it will be +relative to the root of the Buildroot tree.

    Just like post-build scripts, post-image scripts are run with the main +Buildroot tree as current working directory. The path to the images +output directory is passed as the first argument to each script. If the +config option BR2_ROOTFS_POST_SCRIPT_ARGS is not empty, these +arguments will be passed to the script too. All the scripts will be +passed the exact same set of arguments, it is not possible to pass +different sets of arguments to each script.

    Again just like for the post-build scripts, the scripts have access to +the environment variables BR2_CONFIG, HOST_DIR, STAGING_DIR, +TARGET_DIR, BUILD_DIR, BINARIES_DIR, CONFIG_DIR and +BASE_DIR.

    The post-image scripts will be executed as the user that executes +Buildroot, which should normally not be the root user. Therefore, any +action requiring root permissions in one of these scripts will require +special handling (usage of fakeroot or sudo), which is left to the +script developer.

    9.8. Adding project-specific patches

    It is sometimes useful to apply extra patches to packages - on top of +those provided in Buildroot. This might be used to support custom +features in a project, for example, or when working on a new +architecture.

    The BR2_GLOBAL_PATCH_DIR configuration option can be used to specify +a space separated list of one or more directories containing package +patches.

    For a specific version <packageversion> of a specific package +<packagename>, patches are applied from BR2_GLOBAL_PATCH_DIR as +follows:

    1. +For every directory - <global-patch-dir> - that exists in + BR2_GLOBAL_PATCH_DIR, a <package-patch-dir> will be determined as + follows: +

      • +<global-patch-dir>/<packagename>/<packageversion>/ if the + directory exists. +
      • +Otherwise, <global-patch-dir>/<packagename> if the directory + exists. +
    2. +Patches will then be applied from a <package-patch-dir> as + follows: +

      • +If a series file exists in the package directory, then patches are + applied according to the series file; +
      • +Otherwise, patch files matching *.patch are applied in + alphabetical order. So, to ensure they are applied in the right + order, it is highly recommended to name the patch files like this: + <number>-<description>.patch, where <number> refers to the + apply order. +

    For information about how patches are applied for a package, see +Section 19.2, “How patches are applied”

    The BR2_GLOBAL_PATCH_DIR option is the preferred method for +specifying a custom patch directory for packages. It can be used to +specify a patch directory for any package in buildroot. It should also +be used in place of the custom patch directory options that are +available for packages such as U-Boot and Barebox. By doing this, it +will allow a user to manage their patches from one top-level +directory.

    The exception to BR2_GLOBAL_PATCH_DIR being the preferred method for +specifying custom patches is BR2_LINUX_KERNEL_PATCH. +BR2_LINUX_KERNEL_PATCH should be used to specify kernel patches that +are available at a URL. Note: BR2_LINUX_KERNEL_PATCH specifies kernel +patches that are applied after patches available in BR2_GLOBAL_PATCH_DIR, +as it is done from a post-patch hook of the Linux package.

    9.9. Adding project-specific packages

    In general, any new package should be added directly in the package +directory and submitted to the Buildroot upstream project. How to add +packages to Buildroot in general is explained in full detail in +Chapter 18, Adding new packages to Buildroot and will not be repeated here. However, your +project may need some proprietary packages that cannot be upstreamed. +This section will explain how you can keep such project-specific +packages in a project-specific directory.

    As shown in Section 9.1, “Recommended directory structure”, the recommended location for +project-specific packages is package/<company>/. If you are using the +br2-external tree feature (see Section 9.2, “Keeping customizations outside of Buildroot”) the recommended +location is to put them in a sub-directory named package/ in your +br2-external tree.

    However, Buildroot will not be aware of the packages in this location, +unless we perform some additional steps. As explained in +Chapter 18, Adding new packages to Buildroot, a package in Buildroot basically consists of two +files: a .mk file (describing how to build the package) and a +Config.in file (describing the configuration options for this +package).

    Buildroot will automatically include the .mk files in first-level +subdirectories of the package directory (using the pattern +package/*/*.mk). If we want Buildroot to include .mk files from +deeper subdirectories (like package/<company>/package1/) then we +simply have to add a .mk file in a first-level subdirectory that +includes these additional .mk files. Therefore, create a file +package/<company>/<company>.mk with following contents (assuming you +have only one extra directory level below package/<company>/):

    include $(sort $(wildcard package/<company>/*/*.mk))

    For the Config.in files, create a file package/<company>/Config.in +that includes the Config.in files of all your packages. An exhaustive +list has to be provided since wildcards are not supported in the source command of kconfig. +For example:

    source "package/<company>/package1/Config.in"
    +source "package/<company>/package2/Config.in"

    Include this new file package/<company>/Config.in from +package/Config.in, preferably in a company-specific menu to make +merges with future Buildroot versions easier.

    If using a br2-external tree, refer to Section 9.2, “Keeping customizations outside of Buildroot” for how +to fill in those files.

    9.10. Quick guide to storing your project-specific customizations

    Earlier in this chapter, the different methods for making +project-specific customizations have been described. This section will +now summarize all this by providing step-by-step instructions to storing your +project-specific customizations. Clearly, the steps that are not relevant to +your project can be skipped.

    1. +make menuconfig to configure toolchain, packages and kernel. +
    2. +make linux-menuconfig to update the kernel config, similar for + other configuration like busybox, uclibc, … +
    3. +mkdir -p board/<manufacturer>/<boardname> +
    4. +Set the following options to board/<manufacturer>/<boardname>/<package>.config + (as far as they are relevant): +

      • +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE +
      • +BR2_PACKAGE_BUSYBOX_CONFIG +
      • +BR2_UCLIBC_CONFIG +
      • +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE +
      • +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE +
      • +BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE +
    5. +Write the configuration files: +

      • +make linux-update-defconfig +
      • +make busybox-update-config +
      • +make uclibc-update-config +
      • +cp <output>/build/at91bootstrap3-*/.config + board/<manufacturer>/<boardname>/at91bootstrap3.config +
      • +make barebox-update-defconfig +
      • +make uboot-update-defconfig +
    6. +Create board/<manufacturer>/<boardname>/rootfs-overlay/ and fill it + with additional files you need on your rootfs, e.g. + board/<manufacturer>/<boardname>/rootfs-overlay/etc/inittab. + Set BR2_ROOTFS_OVERLAY + to board/<manufacturer>/<boardname>/rootfs-overlay. +
    7. +Create a post-build script + board/<manufacturer>/<boardname>/post_build.sh. Set + BR2_ROOTFS_POST_BUILD_SCRIPT to + board/<manufacturer>/<boardname>/post_build.sh +
    8. +If additional setuid permissions have to be set or device nodes have + to be created, create board/<manufacturer>/<boardname>/device_table.txt + and add that path to BR2_ROOTFS_DEVICE_TABLE. +
    9. +If additional user accounts have to be created, create + board/<manufacturer>/<boardname>/users_table.txt and add that path + to BR2_ROOTFS_USERS_TABLES. +
    10. +To add custom patches to certain packages, set BR2_GLOBAL_PATCH_DIR + to board/<manufacturer>/<boardname>/patches/ and add your patches + for each package in a subdirectory named after the package. Each + patch should be called <packagename>-<num>-<description>.patch. +
    11. +Specifically for the Linux kernel, there also exists the option + BR2_LINUX_KERNEL_PATCH with as main advantage that it can also + download patches from a URL. If you do not need this, + BR2_GLOBAL_PATCH_DIR is preferred. U-Boot, Barebox, at91bootstrap + and at91bootstrap3 also have separate options, but these do not + provide any advantage over BR2_GLOBAL_PATCH_DIR and will likely be + removed in the future. +
    12. +If you need to add project-specific packages, create + package/<manufacturer>/ and place your packages in that + directory. Create an overall <manufacturer>.mk file that + includes the .mk files of all your packages. Create an overall + Config.in file that sources the Config.in files of all your + packages. Include this Config.in file from Buildroot’s + package/Config.in file. +
    13. +make savedefconfig to save the buildroot configuration. +
    14. +cp defconfig configs/<boardname>_defconfig +

    Chapter 10. Integration topics

    This chapter discusses how various things are integrated at system +level. Buildroot is highly configurable, almost everything discussed +here can be changed or overridden by rootfs overlay +or custom skeleton configuration.

    10.1. Systemd

    This chapter describes the decisions taken in Buildroot’s integration of +systemd, and how various use cases can be implemented.

    10.1.1. DBus daemon

    Systemd requires a DBus daemon. There are two options for it: traditional dbus +(BR2_PACKAGE_DBUS) and bus1 dbus-broker (BR2_PACKAGE_DBUS_BROKER). At +least one of them must be chosen. If both are included in the configuration, +dbus-broker will be used as system bus, but the traditional dbus-daemon is +still installed as well and can be used as session bus. Also its tools (e.g. +dbus-send) can be used (systemd itself has busctl as an alternative). In +addition, the traditional dbus package is the only one that provides libdbus, +which is used by many packages as dbus integration library.

    Both in the dbus and in the dbus-broker case, the daemon runs as user dbus. +The DBus configuration files are also identical for both.

    To make sure that only one of the two daemons is started as system bus, the +systemd activation files of the dbus package (dbus.socket and the +dbus.service symlink in multi-user.target.wants) are removed when +dbus-broker is selected.

    10.2. Using SELinux in Buildroot

    SELinux is a Linux kernel security module +enforcing access control policies. In addition to the traditional file +permissions and access control lists, SELinux allows to write rules +for users or processes to access specific functions of resources +(files, sockets…).

    SELinux has three modes of operation:

    • +Disabled: the policy is not applied +
    • +Permissive: the policy is applied, and non-authorized actions are + simply logged. This mode is often used for troubleshooting SELinux + issues. +
    • +Enforcing: the policy is applied, and non-authorized actions are + denied +

    In Buildroot the mode of operation is controlled by the +BR2_PACKAGE_REFPOLICY_POLICY_STATE_* configuration options. The +Linux kernel also has various configuration options that affect how +SELinux is enabled (see security/selinux/Kconfig in the Linux +kernel sources).

    By default in Buildroot the SELinux policy is provided by the +upstream refpolicy +project, enabled with BR2_PACKAGE_REFPOLICY.

    10.2.1. Enabling SELinux support

    To have proper support for SELinux in a Buildroot generated system, +the following configuration options must be enabled:

    • +BR2_PACKAGE_LIBSELINUX +
    • +BR2_PACKAGE_REFPOLICY +

    In addition, your filesystem image format must support extended +attributes.

    10.2.2. SELinux policy tweaking

    The SELinux refpolicy contains modules that can be enabled or +disabled when being built. Each module provide a number of SELinux +rules. In Buildroot the non-base modules are disabled by default and +several ways to enable such modules are provided:

    • +Packages can enable a list of SELinux modules within the refpolicy using + the <packagename>_SELINUX_MODULES variable. +
    • +Packages can provide additional SELinux modules by putting them (.fc, .if + and .te files) in package/<packagename>/selinux/. +
    • +Extra SELinux modules can be added in directories pointed by the + BR2_REFPOLICY_EXTRA_MODULES_DIRS configuration option. +
    • +Additional modules in the refpolicy can be enabled if listed in the + BR2_REFPOLICY_EXTRA_MODULES_DEPENDENCIES configuration option. +

    Buildroot also allows to completely override the refpolicy. This +allows to provide a full custom policy designed specifically for a +given system. When going this way, all of the above mechanisms are +disabled: no extra SElinux module is added to the policy, and all +the available modules within the custom policy are enabled and built +into the final binary policy. The custom policy must be a fork of the +official refpolicy.

    In order to fully override the refpolicy the following configuration +variables have to be set:

    • +BR2_PACKAGE_REFPOLICY_CUSTOM_GIT +
    • +BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL +
    • +BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION +

    Chapter 11. Frequently Asked Questions & Troubleshooting

    11.1. The boot hangs after Starting network…

    If the boot process seems to hang after the following messages +(messages not necessarily exactly similar, depending on the list of +packages selected):

    Freeing init memory: 3972K
    +Initializing random number generator... done.
    +Starting network...
    +Starting dropbear sshd: generating rsa key... generating dsa key... OK

    then it means that your system is running, but didn’t start a shell on +the serial console. In order to have the system start a shell on your +serial console, you have to go into the Buildroot configuration, in +System configuration, modify Run a getty (login prompt) after boot +and set the appropriate port and baud rate in the getty options +submenu. This will automatically tune the /etc/inittab file of the +generated system so that a shell starts on the correct serial port.

    11.2. Why is there no compiler on the target?

    It has been decided that support for the native compiler on the +target would be stopped from the Buildroot-2012.11 release because:

    • +this feature was neither maintained nor tested, and often broken; +
    • +this feature was only available for Buildroot toolchains; +
    • +Buildroot mostly targets small or very small target hardware + with limited resource onboard (CPU, ram, mass-storage), for which + compiling on the target does not make much sense; +
    • +Buildroot aims at easing the cross-compilation, making native + compilation on the target unnecessary. +

    If you need a compiler on your target anyway, then Buildroot is not +suitable for your purpose. In such case, you need a real +distribution and you should opt for something like:

    11.3. Why are there no development files on the target?

    Since there is no compiler available on the target (see +Section 11.2, “Why is there no compiler on the target?”), it does not make sense to waste +space with headers or static libraries.

    Therefore, those files are always removed from the target since the +Buildroot-2012.11 release.

    11.4. Why is there no documentation on the target?

    Because Buildroot mostly targets small or very small target +hardware with limited resource onboard (CPU, ram, mass-storage), it +does not make sense to waste space with the documentation data.

    If you need documentation data on your target anyway, then Buildroot +is not suitable for your purpose, and you should look for a real +distribution (see: Section 11.2, “Why is there no compiler on the target?”).

    11.5. Why are some packages not visible in the Buildroot config menu?

    If a package exists in the Buildroot tree and does not appear in the +config menu, this most likely means that some of the package’s +dependencies are not met.

    To know more about the dependencies of a package, search for the +package symbol in the config menu (see Section 8.1, “make tips”).

    Then, you may have to recursively enable several options (which +correspond to the unmet dependencies) to finally be able to select +the package.

    If the package is not visible due to some unmet toolchain options, +then you should certainly run a full rebuild (see Section 8.1, “make tips” for +more explanations).

    11.6. Why not use the target directory as a chroot directory?

    There are plenty of reasons to not use the target directory a chroot +one, among these:

    • +file ownerships, modes and permissions are not correctly set in the + target directory; +
    • +device nodes are not created in the target directory. +

    For these reasons, commands run through chroot, using the target +directory as the new root, will most likely fail.

    If you want to run the target filesystem inside a chroot, or as an NFS +root, then use the tarball image generated in images/ and extract it +as root.

    11.7. Why doesn’t Buildroot generate binary packages (.deb, .ipkg…)?

    One feature that is often discussed on the Buildroot list is the +general topic of "package management". To summarize, the idea +would be to add some tracking of which Buildroot package installs +what files, with the goals of:

    • +being able to remove files installed by a package when this package + gets unselected from the menuconfig; +
    • +being able to generate binary packages (ipk or other format) that + can be installed on the target without re-generating a new root + filesystem image. +

    In general, most people think it is easy to do: just track which package +installed what and remove it when the package is unselected. However, it +is much more complicated than that:

    • +It is not only about the target/ directory, but also the sysroot in + host/<tuple>/sysroot and the host/ directory itself. All files + installed in those directories by various packages must be tracked. +
    • +When a package is unselected from the configuration, it is not + sufficient to remove just the files it installed. One must also + remove all its reverse dependencies (i.e. packages relying on it) + and rebuild all those packages. For example, package A depends + optionally on the OpenSSL library. Both are selected, and Buildroot + is built. Package A is built with crypto support using OpenSSL. + Later on, OpenSSL gets unselected from the configuration, but + package A remains (since OpenSSL is an optional dependency, this + is possible.) If only OpenSSL files are removed, then the files + installed by package A are broken: they use a library that is no + longer present on the target. Although this is technically doable, + it adds a lot of complexity to Buildroot, which goes against the + simplicity we try to stick to. +
    • +In addition to the previous problem, there is the case where the + optional dependency is not even known to Buildroot. For example, + package A in version 1.0 never used OpenSSL, but in version 2.0 it + automatically uses OpenSSL if available. If the Buildroot .mk file + hasn’t been updated to take this into account, then package A will + not be part of the reverse dependencies of OpenSSL and will not be + removed and rebuilt when OpenSSL is removed. For sure, the .mk file + of package A should be fixed to mention this optional dependency, + but in the mean time, you can have non-reproducible behaviors. +
    • +The request is to also allow changes in the menuconfig to be + applied on the output directory without having to rebuild + everything from scratch. However, this is very difficult to achieve + in a reliable way: what happens when the suboptions of a package + are changed (we would have to detect this, and rebuild the package + from scratch and potentially all its reverse dependencies), what + happens if toolchain options are changed, etc. At the moment, what + Buildroot does is clear and simple so its behaviour is very + reliable and it is easy to support users. If configuration changes + done in menuconfig are applied after the next make, then it has to + work correctly and properly in all situations, and not have some + bizarre corner cases. The risk is to get bug reports like "I have + enabled package A, B and C, then ran make, then disabled package + C and enabled package D and ran make, then re-enabled package C + and enabled package E and then there is a build failure". Or worse + "I did some configuration, then built, then did some changes, + built, some more changes, built, some more changes, built, and now + it fails, but I don’t remember all the changes I did and in which + order". This will be impossible to support. +

    For all these reasons, the conclusion is that adding tracking of +installed files to remove them when the package is unselected, or to +generate a repository of binary packages, is something that is very +hard to achieve reliably and will add a lot of complexity.

    On this matter, the Buildroot developers make this position statement:

    • +Buildroot strives to make it easy to generate a root filesystem (hence + the name, by the way.) That is what we want to make Buildroot good at: + building root filesystems. +
    • +Buildroot is not meant to be a distribution (or rather, a distribution + generator.) It is the opinion of most Buildroot developers that this + is not a goal we should pursue. We believe that there are other tools + better suited to generate a distro than Buildroot is. For example, + Open Embedded, or openWRT, + are such tools. +
    • +We prefer to push Buildroot in a direction that makes it easy (or even + easier) to generate complete root filesystems. This is what makes + Buildroot stands out in the crowd (among other things, of course!) +
    • +We believe that for most embedded Linux systems, binary packages are + not necessary, and potentially harmful. When binary packages are + used, it means that the system can be partially upgraded, which + creates an enormous number of possible combinations of package + versions that should be tested before doing the upgrade on the + embedded device. On the other hand, by doing complete system + upgrades by upgrading the entire root filesystem image at once, + the image deployed to the embedded system is guaranteed to really + be the one that has been tested and validated. +

    11.8. How to speed-up the build process?

    Since Buildroot often involves doing full rebuilds of the entire +system that can be quite long, we provide below a number of tips to +help reduce the build time:

    • +Use a pre-built external toolchain instead of the default Buildroot + internal toolchain. By using a pre-built Linaro toolchain (on ARM) + or a Sourcery CodeBench toolchain (for ARM, x86, x86-64, MIPS, + etc.), you will save the build time of the toolchain at each + complete rebuild, approximately 15 to 20 minutes. Note that + temporarily using an external toolchain does not prevent you to + switch back to an internal toolchain (that may provide a higher + level of customization) once the rest of your system is working; +
    • +Use the ccache compiler cache (see: Section 8.13.3, “Using ccache in Buildroot”); +
    • +Learn about rebuilding only the few packages you actually care + about (see Section 8.3, “Understanding how to rebuild packages”), but beware that sometimes full + rebuilds are anyway necessary (see Section 8.2, “Understanding when a full rebuild is necessary”); +
    • +Make sure you are not using a virtual machine for the Linux system + used to run Buildroot. Most of the virtual machine technologies are + known to cause a significant performance impact on I/O, which is + really important for building source code; +
    • +Make sure that you’re using only local files: do not attempt to do + a build over NFS, which significantly slows down the build. Having + the Buildroot download folder available locally also helps a bit. +
    • +Buy new hardware. SSDs and lots of RAM are key to speeding up the + builds. +
    • +Experiment with top-level parallel build, see + Section 8.12, “Top-level parallel build”. +

    Chapter 12. Known issues

    • +It is not possible to pass extra linker options via BR2_TARGET_LDFLAGS + if such options contain a $ sign. For example, the following is known + to break: BR2_TARGET_LDFLAGS="-Wl,-rpath='$ORIGIN/../lib'" +
    • +The libffi package is not supported on the SuperH 2 and ARMv7-M + architectures. +
    • +The prboom package triggers a compiler failure with the SuperH 4 + compiler from Sourcery CodeBench, version 2012.09. +

    Chapter 13. Legal notice and licensing

    13.1. Complying with open source licenses

    All of the end products of Buildroot (toolchain, root filesystem, kernel, +bootloaders) contain open source software, released under various licenses.

    Using open source software gives you the freedom to build rich embedded +systems, choosing from a wide range of packages, but also imposes some +obligations that you must know and honour. +Some licenses require you to publish the license text in the documentation of +your product. Others require you to redistribute the source code of the +software to those that receive your product.

    The exact requirements of each license are documented in each package, and +it is your responsibility (or that of your legal office) to comply with those +requirements. +To make this easier for you, Buildroot can collect for you some material you +will probably need. To produce this material, after you have configured +Buildroot with make menuconfig, make xconfig or make gconfig, run:

    make legal-info

    Buildroot will collect legally-relevant material in your output directory, +under the legal-info/ subdirectory. +There you will find:

    • +A README file, that summarizes the produced material and contains warnings + about material that Buildroot could not produce. +
    • +buildroot.config: this is the Buildroot configuration file that is usually + produced with make menuconfig, and which is necessary to reproduce the + build. +
    • +The source code for all packages; this is saved in the sources/ and + host-sources/ subdirectories for target and host packages respectively. + The source code for packages that set <PKG>_REDISTRIBUTE = NO will not be + saved. + Patches that were applied are also saved, along with a file named series + that lists the patches in the order they were applied. Patches are under the + same license as the files that they modify. + Note: Buildroot applies additional patches to Libtool scripts of + autotools-based packages. These patches can be found under + support/libtool in the Buildroot source and, due to technical + limitations, are not saved with the package sources. You may need to + collect them manually. +
    • +A manifest file (one for host and one for target packages) listing the + configured packages, their version, license and related information. + Some of this information might not be defined in Buildroot; such items are + marked as "unknown". +
    • +The license texts of all packages, in the licenses/ and host-licenses/ + subdirectories for target and host packages respectively. + If the license file(s) are not defined in Buildroot, the file is not produced + and a warning in the README indicates this. +

    Please note that the aim of the legal-info feature of Buildroot is to +produce all the material that is somehow relevant for legal compliance with the +package licenses. Buildroot does not try to produce the exact material that +you must somehow make public. Certainly, more material is produced than is +needed for a strict legal compliance. For example, it produces the source code +for packages released under BSD-like licenses, that you are not required to +redistribute in source form.

    Moreover, due to technical limitations, Buildroot does not produce some +material that you will or may need, such as the toolchain source code for +some of the external toolchains and the Buildroot source code itself. +When you run make legal-info, Buildroot produces warnings in the README +file to inform you of relevant material that could not be saved.

    Finally, keep in mind that the output of make legal-info is based on +declarative statements in each of the packages recipes. The Buildroot +developers try to do their best to keep those declarative statements as +accurate as possible, to the best of their knowledge. However, it is very +well possible that those declarative statements are not all fully accurate +nor exhaustive. You (or your legal department) have to check the output +of make legal-info before using it as your own compliance delivery. See +the NO WARRANTY clauses (clauses 11 and 12) in the COPYING file at the +root of the Buildroot distribution.

    13.2. Complying with the Buildroot license

    Buildroot itself is an open source software, released under the +GNU General +Public License, version 2 or (at your option) any later version, with +the exception of the package patches detailed below. +However, being a build system, it is not normally part of the end product: +if you develop the root filesystem, kernel, bootloader or toolchain for a +device, the code of Buildroot is only present on the development machine, not +in the device storage.

    Nevertheless, the general view of the Buildroot developers is that you should +release the Buildroot source code along with the source code of other packages +when releasing a product that contains GPL-licensed software. +This is because the +GNU GPL +defines the "complete source code" for an executable work as "all the +source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and installation +of the executable". +Buildroot is part of the scripts used to control compilation and +installation of the executable, and as such it is considered part of the +material that must be redistributed.

    Keep in mind that this is only the Buildroot developers' opinion, and you +should consult your legal department or lawyer in case of any doubt.

    13.2.1. Patches to packages

    Buildroot also bundles patch files, which are applied to the sources +of the various packages. Those patches are not covered by the license +of Buildroot. Instead, they are covered by the license of the software +to which the patches are applied. When said software is available +under multiple licenses, the Buildroot patches are only provided under +the publicly accessible licenses.

    See Chapter 19, Patching a package for the technical details.

    Chapter 14. Beyond Buildroot

    14.1. Boot the generated images

    14.1.1. NFS boot

    To achieve NFS-boot, enable tar root filesystem in the Filesystem +images menu.

    After a complete build, just run the following commands to setup the +NFS-root directory:

    sudo tar -xavf /path/to/output_dir/rootfs.tar -C /path/to/nfs_root_dir

    Remember to add this path to /etc/exports.

    Then, you can execute a NFS-boot from your target.

    14.1.2. Live CD

    To build a live CD image, enable the iso image option in the +Filesystem images menu. Note that this option is only available on +the x86 and x86-64 architectures, and if you are building your kernel +with Buildroot.

    You can build a live CD image with either IsoLinux, Grub or Grub 2 as +a bootloader, but only Isolinux supports making this image usable both +as a live CD and live USB (through the Build hybrid image option).

    You can test your live CD image using QEMU:

    qemu-system-i386 -cdrom output/images/rootfs.iso9660

    Or use it as a hard-drive image if it is a hybrid ISO:

    qemu-system-i386 -hda output/images/rootfs.iso9660

    It can be easily flashed to a USB drive with dd:

    dd if=output/images/rootfs.iso9660 of=/dev/sdb

    14.2. Chroot

    If you want to chroot in a generated image, then there are few thing +you should be aware of:

    • +you should setup the new root from the tar root filesystem image; +
    • +either the selected target architecture is compatible with your host + machine, or you should use some qemu-* binary and correctly set it + within the binfmt properties to be able to run the binaries built + for the target on your host machine; +
    • +Buildroot does not currently provide host-qemu and binfmt + correctly built and set for that kind of use. +

    Part III. Developer guide

    Chapter 15. How Buildroot works

    As mentioned above, Buildroot is basically a set of Makefiles that +download, configure, and compile software with the correct options. It +also includes patches for various software packages - mainly the ones +involved in the cross-compilation toolchain (gcc, binutils and +uClibc).

    There is basically one Makefile per software package, and they are +named with the .mk extension. Makefiles are split into many different +parts.

    • +The toolchain/ directory contains the Makefiles + and associated files for all software related to the + cross-compilation toolchain: binutils, gcc, gdb, + kernel-headers and uClibc. +
    • +The arch/ directory contains the definitions for all the processor + architectures that are supported by Buildroot. +
    • +The package/ directory contains the Makefiles and + associated files for all user-space tools and libraries that Buildroot + can compile and add to the target root filesystem. There is one + sub-directory per package. +
    • +The linux/ directory contains the Makefiles and associated files for + the Linux kernel. +
    • +The boot/ directory contains the Makefiles and associated files for + the bootloaders supported by Buildroot. +
    • +The system/ directory contains support for system integration, e.g. + the target filesystem skeleton and the selection of an init system. +
    • +The fs/ directory contains the Makefiles and + associated files for software related to the generation of the + target root filesystem image. +

    Each directory contains at least 2 files:

    • +something.mk is the Makefile that downloads, configures, + compiles and installs the package something. +
    • +Config.in is a part of the configuration tool + description file. It describes the options related to the + package. +

    The main Makefile performs the following steps (once the +configuration is done):

    • +Create all the output directories: staging, target, build, + etc. in the output directory (output/ by default, + another value can be specified using O=) +
    • +Generate the toolchain target. When an internal toolchain is used, this + means generating the cross-compilation toolchain. When an external + toolchain is used, this means checking the features of the external + toolchain and importing it into the Buildroot environment. +
    • +Generate all the targets listed in the TARGETS variable. This + variable is filled by all the individual components' + Makefiles. Generating these targets will trigger the compilation of + the userspace packages (libraries, programs), the kernel, the + bootloader and the generation of the root filesystem images, + depending on the configuration. +

    Chapter 16. Coding style

    Overall, these coding style rules are here to help you to add new files in +Buildroot or refactor existing ones.

    If you slightly modify some existing file, the important thing is +to keep the consistency of the whole file, so you can:

    • +either follow the potentially deprecated coding style used in this +file, +
    • +or entirely rework it in order to make it comply with these rules. +

    16.1. Config.in file

    Config.in files contain entries for almost anything configurable in +Buildroot.

    An entry has the following pattern:

    config BR2_PACKAGE_LIBFOO
    +        bool "libfoo"
    +        depends on BR2_PACKAGE_LIBBAZ
    +        select BR2_PACKAGE_LIBBAR
    +        help
    +          This is a comment that explains what libfoo is. The help text
    +          should be wrapped.
    +
    +          http://foosoftware.org/libfoo/
    • +The bool, depends on, select and help lines are indented + with one tab. +
    • +The help text itself should be indented with one tab and two + spaces. +
    • +The help text should be wrapped to fit 72 columns, where tab counts + for 8, so 62 characters in the text itself. +

    The Config.in files are the input for the configuration tool +used in Buildroot, which is the regular Kconfig. For further +details about the Kconfig language, refer to +http://kernel.org/doc/Documentation/kbuild/kconfig-language.txt.

    16.2. The .mk file

    • +Header: The file starts with a header. It contains the module name, +preferably in lowercase, enclosed between separators made of 80 hashes. A +blank line is mandatory after the header: +

      ################################################################################
      +#
      +# libfoo
      +#
      +################################################################################
    • +Assignment: use = preceded and followed by one space: +

      LIBFOO_VERSION = 1.0
      +LIBFOO_CONF_OPTS += --without-python-support

      Do not align the = signs.

    • +Indentation: use tab only: +

      define LIBFOO_REMOVE_DOC
      +        $(RM) -r $(TARGET_DIR)/usr/share/libfoo/doc \
      +                $(TARGET_DIR)/usr/share/man/man3/libfoo*
      +endef

      Note that commands inside a define block should always start with a tab, +so make recognizes them as commands.

    • +Optional dependency: +

      • +Prefer multi-line syntax. +

        YES:

        ifeq ($(BR2_PACKAGE_PYTHON3),y)
        +LIBFOO_CONF_OPTS += --with-python-support
        +LIBFOO_DEPENDENCIES += python3
        +else
        +LIBFOO_CONF_OPTS += --without-python-support
        +endif

        NO:

        LIBFOO_CONF_OPTS += --with$(if $(BR2_PACKAGE_PYTHON3),,out)-python-support
        +LIBFOO_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON3),python3,)
      • +Keep configure options and dependencies close together. +
    • +Optional hooks: keep hook definition and assignment together in one + if block. +

      YES:

      ifneq ($(BR2_LIBFOO_INSTALL_DATA),y)
      +define LIBFOO_REMOVE_DATA
      +        $(RM) -r $(TARGET_DIR)/usr/share/libfoo/data
      +endef
      +LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA
      +endif

      NO:

      define LIBFOO_REMOVE_DATA
      +        $(RM) -r $(TARGET_DIR)/usr/share/libfoo/data
      +endef
      +
      +ifneq ($(BR2_LIBFOO_INSTALL_DATA),y)
      +LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA
      +endif

    16.3. The genimage.cfg file

    genimage.cfg files contain the output image layout that genimage utility +uses to create final .img file.

    An example follows:

    image efi-part.vfat {
    +        vfat {
    +                file EFI {
    +                        image = "efi-part/EFI"
    +                }
    +
    +                file Image {
    +                        image = "Image"
    +                }
    +        }
    +
    +        size = 32M
    +}
    +
    +image sdimage.img {
    +        hdimage {
    +        }
    +
    +        partition u-boot {
    +                image = "efi-part.vfat"
    +                offset = 8K
    +        }
    +
    +        partition root {
    +                image = "rootfs.ext2"
    +                size = 512M
    +        }
    +}
    • +Every section(i.e. hdimage, vfat etc.), partition must be indented + with one tab. +
    • +Every file or other subnode must be indented with two tabs. +
    • +Every node(section, partition, file, subnode) must have an open + curly bracket on the same line of the node’s name, while the closing one + must be on a newline and after it a newline must be added except for the + last one node. Same goes for its option, for example option size =. +
    • +Every option(i.e. image, offset, size) must have the = + assignment one space from it and one space from the value specified. +
    • +Filename must at least begin with genimage prefix and have the .cfg + extension to be easy to recognize. +
    • +Allowed notations for offset and size options are: G, M, K + (not k). If it’s not possible to express a precise byte count + with notations above then use hexadecimal 0x prefix or, as last + chance, the byte count. In comments instead use GB, MB, KB + (not kb) in place of G, M, K. +
    • +For GPT partitions, the partition-type-uuid value must be U for + the EFI System Partition (expanded to + c12a7328-f81f-11d2-ba4b-00a0c93ec93b by genimage), F for a FAT + partition (expanded to ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 by + genimage) or L for the root filesystem or other filesystems + (expanded to 0fc63daf-8483-4772-8e79-3d69d8477de4 by + genimage). Even though L is the default value of genimage, we + prefer to have it explicitly specified in our genimage.cfg + files. Finally, these shortcuts should be used without double + quotes, e.g partition-type-uuid = U. If an explicit GUID is + specified, lower-case letters should be used. +

    The genimage.cfg files are the input for the genimage tool used in +Buildroot to generate the final image file(i.e. sdcard.img). For further +details about the genimage language, refer to +https://github.com/pengutronix/genimage/blob/master/README.rst.

    16.4. The documentation

    The documentation uses the +asciidoc format.

    For further details about the asciidoc syntax, refer to +https://asciidoc-py.github.io/userguide.html.

    16.5. Support scripts

    Some scripts in the support/ and utils/ directories are written in +Python and should follow the +PEP8 Style Guide for Python Code.

    Chapter 17. Adding support for a particular board

    Buildroot contains basic configurations for several publicly available +hardware boards, so that users of such a board can easily build a system +that is known to work. You are welcome to add support for other boards +to Buildroot too.

    To do so, you need to create a normal Buildroot configuration that +builds a basic system for the hardware: (internal) toolchain, kernel, +bootloader, filesystem and a simple BusyBox-only userspace. No specific +package should be selected: the configuration should be as minimal as +possible, and should only build a working basic BusyBox system for the +target platform. You can of course use more complicated configurations +for your internal projects, but the Buildroot project will only +integrate basic board configurations. This is because package +selections are highly application-specific.

    Once you have a known working configuration, run make +savedefconfig. This will generate a minimal defconfig file at the +root of the Buildroot source tree. Move this file into the configs/ +directory, and rename it <boardname>_defconfig. If the configuration +is a bit more complicated, it is nice to manually reformat it and +separate it into sections, with a comment before each section. Typical +sections are Architecture, Toolchain options (typically just linux +headers version), Firmware, Bootloader, Kernel, and Filesystem.

    Always use fixed versions or commit hashes for the different +components, not the "latest" version. For example, set +BR2_LINUX_KERNEL_CUSTOM_VERSION=y and +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE to the kernel version you tested +with.

    It is recommended to use as much as possible upstream versions of the +Linux kernel and bootloaders, and to use as much as possible default +kernel and bootloader configurations. If they are incorrect for your +board, or no default exists, we encourage you to send fixes to the +corresponding upstream projects.

    However, in the mean time, you may want to store kernel or bootloader +configuration or patches specific to your target platform. To do so, +create a directory board/<manufacturer> and a subdirectory +board/<manufacturer>/<boardname>. You can then store your patches +and configurations in these directories, and reference them from the main +Buildroot configuration. Refer to Chapter 9, Project-specific customization for more details.

    Before submitting patches for new boards it is recommended to test it by +building it using latest gitlab-CI docker container. To do this use +utils/docker-run script and inside it issue these commands:

     $ make <boardname>_defconfig
    + $ make

    By default, Buildroot developers use the official image hosted on the +gitlab.com +registry and it should be convenient for most usage. If you still want +to build your own docker image, you can base it off the official image +as the FROM directive of your own Dockerfile:

    FROM registry.gitlab.com/buildroot.org/buildroot/base:YYYYMMDD.HHMM
    +RUN ...
    +COPY ...

    The current version YYYYMMDD.HHMM can be found in the .gitlab-ci.yml +file at the top of the Buildroot source tree; all past versions are +listed in the aforementioned registry as well.

    Chapter 18. Adding new packages to Buildroot

    This section covers how new packages (userspace libraries or +applications) can be integrated into Buildroot. It also shows how +existing packages are integrated, which is needed for fixing issues or +tuning their configuration.

    When you add a new package, be sure to test it in various conditions +(see Section 18.25.3, “How to test your package”) and also check it for coding style (see +Section 18.25.2, “How to check the coding style”).

    18.1. Package directory

    First of all, create a directory under the package directory for +your software, for example libfoo.

    Some packages have been grouped by topic in a sub-directory: +x11r7, qt5 and gstreamer. If your package fits in +one of these categories, then create your package directory in these. +New subdirectories are discouraged, however.

    18.2. Config files

    For the package to be displayed in the configuration tool, you need to +create a Config file in your package directory. There are two types: +Config.in and Config.in.host.

    18.2.1. Config.in file

    For packages used on the target, create a file named Config.in. This +file will contain the option descriptions related to our libfoo software +that will be used and displayed in the configuration tool. It should basically +contain:

    config BR2_PACKAGE_LIBFOO
    +        bool "libfoo"
    +        help
    +          This is a comment that explains what libfoo is. The help text
    +          should be wrapped.
    +
    +          http://foosoftware.org/libfoo/

    The bool line, help line and other metadata information about the +configuration option must be indented with one tab. The help text +itself should be indented with one tab and two spaces, lines should +be wrapped to fit 72 columns, where tab counts for 8, so 62 characters +in the text itself. The help text must mention the upstream URL of the +project after an empty line.

    As a convention specific to Buildroot, the ordering of the attributes +is as follows:

    1. +The type of option: bool, string… with the prompt +
    2. +If needed, the default value(s) +
    3. +Any dependencies on the target in depends on form +
    4. +Any dependencies on the toolchain in depends on form +
    5. +Any dependencies on other packages in depends on form +
    6. +Any dependency of the select form +
    7. +The help keyword and help text. +

    You can add other sub-options into a if BR2_PACKAGE_LIBFOO…endif +statement to configure particular things in your software. You can look at +examples in other packages. The syntax of the Config.in file is the same +as the one for the kernel Kconfig file. The documentation for this syntax is +available at http://kernel.org/doc/Documentation/kbuild/kconfig-language.txt

    Finally you have to add your new libfoo/Config.in to +package/Config.in (or in a category subdirectory if you decided to +put your package in one of the existing categories). The files +included there are sorted alphabetically per category and are NOT +supposed to contain anything but the bare name of the package.

    source "package/libfoo/Config.in"

    18.2.2. Config.in.host file

    Some packages also need to be built for the host system. There are two +options here:

    • +The host package is only required to satisfy build-time + dependencies of one or more target packages. In this case, add + host-foo to the target package’s BAR_DEPENDENCIES variable. No + Config.in.host file should be created. +
    • +The host package should be explicitly selectable by the user from + the configuration menu. In this case, create a Config.in.host file + for that host package: +

      config BR2_PACKAGE_HOST_FOO
      +        bool "host foo"
      +        help
      +          This is a comment that explains what foo for the host is.
      +
      +          http://foosoftware.org/foo/

      The same coding style and options as for the Config.in file are valid.

      Finally you have to add your new libfoo/Config.in.host to +package/Config.in.host. The files included there are sorted alphabetically +and are NOT supposed to contain anything but the bare name of the package.

      source "package/foo/Config.in.host"

      The host package will then be available from the Host utilities menu.

    18.2.3. Choosing depends on or select

    The Config.in file of your package must also ensure that +dependencies are enabled. Typically, Buildroot uses the following +rules:

    • +Use a select type of dependency for dependencies on + libraries. These dependencies are generally not obvious and it + therefore make sense to have the kconfig system ensure that the + dependencies are selected. For example, the libgtk2 package uses + select BR2_PACKAGE_LIBGLIB2 to make sure this library is also + enabled. + The select keyword expresses the dependency with a backward + semantic. +
    • +Use a depends on type of dependency when the user really needs to + be aware of the dependency. Typically, Buildroot uses this type of + dependency for dependencies on target architecture, MMU support and + toolchain options (see Section 18.2.4, “Dependencies on target and toolchain options”), + or for dependencies on "big" things, such as the X.org system. + The depends on keyword expresses the dependency with a forward + semantic. +

    Note. The current problem with the kconfig language is that these two +dependency semantics are not internally linked. Therefore, it may be +possible to select a package, whom one of its dependencies/requirement +is not met.

    An example illustrates both the usage of select and depends on.

    config BR2_PACKAGE_RRDTOOL
    +        bool "rrdtool"
    +        depends on BR2_USE_WCHAR
    +        select BR2_PACKAGE_FREETYPE
    +        select BR2_PACKAGE_LIBART
    +        select BR2_PACKAGE_LIBPNG
    +        select BR2_PACKAGE_ZLIB
    +        help
    +          RRDtool is the OpenSource industry standard, high performance
    +          data logging and graphing system for time series data.
    +
    +          http://oss.oetiker.ch/rrdtool/
    +
    +comment "rrdtool needs a toolchain w/ wchar"
    +        depends on !BR2_USE_WCHAR

    Note that these two dependency types are only transitive with the +dependencies of the same kind.

    This means, in the following example:

    config BR2_PACKAGE_A
    +        bool "Package A"
    +
    +config BR2_PACKAGE_B
    +        bool "Package B"
    +        depends on BR2_PACKAGE_A
    +
    +config BR2_PACKAGE_C
    +        bool "Package C"
    +        depends on BR2_PACKAGE_B
    +
    +config BR2_PACKAGE_D
    +        bool "Package D"
    +        select BR2_PACKAGE_B
    +
    +config BR2_PACKAGE_E
    +        bool "Package E"
    +        select BR2_PACKAGE_D
    • +Selecting Package C will be visible if Package B has been + selected, which in turn is only visible if Package A has been + selected. +
    • +Selecting Package E will select Package D, which will select + Package B, it will not check for the dependencies of Package B, + so it will not select Package A. +
    • +Since Package B is selected but Package A is not, this violates + the dependency of Package B on Package A. Therefore, in such a + situation, the transitive dependency has to be added explicitly: +
    config BR2_PACKAGE_D
    +        bool "Package D"
    +        depends on BR2_PACKAGE_A
    +        select BR2_PACKAGE_B
    +
    +config BR2_PACKAGE_E
    +        bool "Package E"
    +        depends on BR2_PACKAGE_A
    +        select BR2_PACKAGE_D

    Overall, for package library dependencies, select should be +preferred.

    Note that such dependencies will ensure that the dependency option +is also enabled, but not necessarily built before your package. To do +so, the dependency also needs to be expressed in the .mk file of the +package.

    Further formatting details: see the +coding style.

    18.2.4. Dependencies on target and toolchain options

    Many packages depend on certain options of the toolchain: the choice of +C library, C++ support, thread support, RPC support, wchar support, +or dynamic library support. Some packages can only be built on certain +target architectures, or if an MMU is available in the processor.

    These dependencies have to be expressed with the appropriate depends +on statements in the Config.in file. Additionally, for dependencies on +toolchain options, a comment should be displayed when the option is +not enabled, so that the user knows why the package is not available. +Dependencies on target architecture or MMU support should not be +made visible in a comment: since it is unlikely that the user can +freely choose another target, it makes little sense to show these +dependencies explicitly.

    The comment should only be visible if the config option itself would +be visible when the toolchain option dependencies are met. This means +that all other dependencies of the package (including dependencies on +target architecture and MMU support) have to be repeated on the +comment definition. To keep it clear, the depends on statement for +these non-toolchain option should be kept separate from the depends on +statement for the toolchain options. +If there is a dependency on a config option in that same file (typically +the main package) it is preferable to have a global if … endif +construct rather than repeating the depends on statement on the +comment and other config options.

    The general format of a dependency comment for package foo is:

    foo needs a toolchain w/ featA, featB, featC

    for example:

    mpd needs a toolchain w/ C++, threads, wchar

    or

    crda needs a toolchain w/ threads

    Note that this text is kept brief on purpose, so that it will fit on a +80-character terminal.

    The rest of this section enumerates the different target and toolchain +options, the corresponding config symbols to depend on, and the text to +use in the comment.

    • +Target architecture +

      • +Dependency symbol: BR2_powerpc, BR2_mips, … (see arch/Config.in) +
      • +Comment string: no comment to be added +
    • +MMU support +

      • +Dependency symbol: BR2_USE_MMU +
      • +Comment string: no comment to be added +
    • +Gcc _sync* built-ins used for atomic operations. They are + available in variants operating on 1 byte, 2 bytes, 4 bytes and 8 + bytes. Since different architectures support atomic operations on + different sizes, one dependency symbol is available for each size: +

      • +Dependency symbol: BR2_TOOLCHAIN_HAS_SYNC_1 for 1 byte, + BR2_TOOLCHAIN_HAS_SYNC_2 for 2 bytes, + BR2_TOOLCHAIN_HAS_SYNC_4 for 4 bytes, BR2_TOOLCHAIN_HAS_SYNC_8 + for 8 bytes. +
      • +Comment string: no comment to be added +
    • +Gcc _atomic* built-ins used for atomic operations. +

      • +Dependency symbol: BR2_TOOLCHAIN_HAS_ATOMIC. +
      • +Comment string: no comment to be added +
    • +Kernel headers +

      • +Dependency symbol: BR2_TOOLCHAIN_HEADERS_AT_LEAST_X_Y, (replace + X_Y with the proper version, see toolchain/Config.in) +
      • +Comment string: headers >= X.Y and/or headers <= X.Y (replace + X.Y with the proper version) +
    • +GCC version +

      • +Dependency symbol: BR2_TOOLCHAIN_GCC_AT_LEAST_X_Y, (replace + X_Y with the proper version, see toolchain/Config.in) +
      • +Comment string: gcc >= X.Y and/or gcc <= X.Y (replace + X.Y with the proper version) +
    • +Host GCC version +

      • +Dependency symbol: BR2_HOST_GCC_AT_LEAST_X_Y, (replace + X_Y with the proper version, see Config.in) +
      • +Comment string: no comment to be added +
      • +Note that it is usually not the package itself that has a minimum + host GCC version, but rather a host-package on which it depends. +
    • +C library +

      • +Dependency symbol: BR2_TOOLCHAIN_USES_GLIBC, + BR2_TOOLCHAIN_USES_MUSL, BR2_TOOLCHAIN_USES_UCLIBC +
      • +Comment string: for the C library, a slightly different comment text + is used: foo needs a glibc toolchain, or foo needs a glibc + toolchain w/ C++ +
    • +C++ support +

      • +Dependency symbol: BR2_INSTALL_LIBSTDCPP +
      • +Comment string: C++ +
    • +D support +

      • +Dependency symbol: BR2_TOOLCHAIN_HAS_DLANG +
      • +Comment string: Dlang +
    • +Fortran support +

      • +Dependency symbol: BR2_TOOLCHAIN_HAS_FORTRAN +
      • +Comment string: fortran +
    • +thread support +

      • +Dependency symbol: BR2_TOOLCHAIN_HAS_THREADS +
      • +Comment string: threads (unless BR2_TOOLCHAIN_HAS_THREADS_NPTL + is also needed, in which case, specifying only NPTL is sufficient) +
    • +NPTL thread support +

      • +Dependency symbol: BR2_TOOLCHAIN_HAS_THREADS_NPTL +
      • +Comment string: NPTL +
    • +RPC support +

      • +Dependency symbol: BR2_TOOLCHAIN_HAS_NATIVE_RPC +
      • +Comment string: RPC +
    • +wchar support +

      • +Dependency symbol: BR2_USE_WCHAR +
      • +Comment string: wchar +
    • +dynamic library +

      • +Dependency symbol: !BR2_STATIC_LIBS +
      • +Comment string: dynamic library +

    18.2.5. Dependencies on a Linux kernel built by buildroot

    Some packages need a Linux kernel to be built by buildroot. These are +typically kernel modules or firmware. A comment should be added in the +Config.in file to express this dependency, similar to dependencies on +toolchain options. The general format is:

    foo needs a Linux kernel to be built

    If there is a dependency on both toolchain options and the Linux +kernel, use this format:

    foo needs a toolchain w/ featA, featB, featC and a Linux kernel to be built

    18.2.6. Dependencies on udev /dev management

    If a package needs udev /dev management, it should depend on symbol +BR2_PACKAGE_HAS_UDEV, and the following comment should be added:

    foo needs udev /dev management

    If there is a dependency on both toolchain options and udev /dev +management, use this format:

    foo needs udev /dev management and a toolchain w/ featA, featB, featC

    18.2.7. Dependencies on features provided by virtual packages

    Some features can be provided by more than one package, such as the +openGL libraries.

    See Section 18.12, “Infrastructure for virtual packages” for more on the virtual packages.

    18.3. The .mk file

    Finally, here’s the hardest part. Create a file named libfoo.mk. It +describes how the package should be downloaded, configured, built, +installed, etc.

    Depending on the package type, the .mk file must be written in a +different way, using different infrastructures:

    • +Makefiles for generic packages (not using autotools or CMake): + These are based on an infrastructure similar to the one used for + autotools-based packages, but require a little more work from the + developer. They specify what should be done for the configuration, + compilation and installation of the package. This + infrastructure must be used for all packages that do not use the + autotools as their build system. In the future, other specialized + infrastructures might be written for other build systems. We cover + them through in a tutorial and a + reference. +
    • +Makefiles for autotools-based software (autoconf, automake, etc.): + We provide a dedicated infrastructure for such packages, since + autotools is a very common build system. This infrastructure must + be used for new packages that rely on the autotools as their build + system. We cover them through a tutorial + and reference. +
    • +Makefiles for cmake-based software: We provide a dedicated + infrastructure for such packages, as CMake is a more and more + commonly used build system and has a standardized behaviour. This + infrastructure must be used for new packages that rely on + CMake. We cover them through a tutorial + and reference. +
    • +Makefiles for Python modules: We have a dedicated infrastructure + for Python modules that use the distutils, flit, pep517 or + setuptools mechanisms. We cover them through a + tutorial and a + reference. +
    • +Makefiles for Lua modules: We have a dedicated infrastructure for + Lua modules available through the LuaRocks web site. We cover them + through a tutorial and a + reference. +

    Further formatting details: see the writing +rules.

    18.4. The .hash file

    When possible, you must add a third file, named libfoo.hash, that +contains the hashes of the downloaded files for the libfoo +package. The only reason for not adding a .hash file is when hash +checking is not possible due to how the package is downloaded.

    When a package has a version selection choice, then the hash file may be +stored in a subdirectory named after the version, e.g. +package/libfoo/1.2.3/libfoo.hash. This is especially important if the +different versions have different licensing terms, but they are stored +in the same file. Otherwise, the hash file should stay in the package’s +directory.

    The hashes stored in that file are used to validate the integrity of the +downloaded files and of the license files.

    The format of this file is one line for each file for which to check the +hash, each line with the following three fields separated by two spaces:

    • +the type of hash, one of: +

      • +md5, sha1, sha224, sha256, sha384, sha512 +
    • +the hash of the file: +

      • +for md5, 32 hexadecimal characters +
      • +for sha1, 40 hexadecimal characters +
      • +for sha224, 56 hexadecimal characters +
      • +for sha256, 64 hexadecimal characters +
      • +for sha384, 96 hexadecimal characters +
      • +for sha512, 128 hexadecimal characters +
    • +the name of the file: +

      • +for a source archive: the basename of the file, without any directory + component, +
      • +for a license file: the path as it appears in FOO_LICENSE_FILES. +

    Lines starting with a # sign are considered comments, and ignored. Empty +lines are ignored.

    There can be more than one hash for a single file, each on its own line. In +this case, all hashes must match.

    Note. Ideally, the hashes stored in this file should match the hashes published by +upstream, e.g. on their website, in the e-mail announcement… If upstream +provides more than one type of hash (e.g. sha1 and sha512), then it is +best to add all those hashes in the .hash file. If upstream does not +provide any hash, or only provides an md5 hash, then compute at least one +strong hash yourself (preferably sha256, but not md5), and mention +this in a comment line above the hashes.

    Note. The hashes for license files are used to detect a license change when a +package version is bumped. The hashes are checked during the make legal-info +target run. For a package with multiple versions (like Qt5), +create the hash file in a subdirectory <packageversion> of that package +(see also Section 19.2, “How patches are applied”).

    The example below defines a sha1 and a sha256 published by upstream for +the main libfoo-1.2.3.tar.bz2 tarball, an md5 from upstream and a +locally-computed sha256 hashes for a binary blob, a sha256 for a +downloaded patch, and an archive with no hash:

    # Hashes from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.{sha1,sha256}:
    +sha1  486fb55c3efa71148fe07895fd713ea3a5ae343a  libfoo-1.2.3.tar.bz2
    +sha256  efc8103cc3bcb06bda6a781532d12701eb081ad83e8f90004b39ab81b65d4369  libfoo-1.2.3.tar.bz2
    +
    +# md5 from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.md5, sha256 locally computed:
    +md5  2d608f3c318c6b7557d551a5a09314f03452f1a1  libfoo-data.bin
    +sha256  01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b  libfoo-data.bin
    +
    +# Locally computed:
    +sha256  ff52101fb90bbfc3fe9475e425688c660f46216d7e751c4bbdb1dc85cdccacb9  libfoo-fix-blabla.patch
    +
    +# Hash for license files:
    +sha256  a45a845012742796534f7e91fe623262ccfb99460a2bd04015bd28d66fba95b8  COPYING
    +sha256  01b1f9f2c8ee648a7a596a1abe8aa4ed7899b1c9e5551bda06da6e422b04aa55  doc/COPYING.LGPL

    If the .hash file is present, and it contains one or more hashes for a +downloaded file, the hash(es) computed by Buildroot (after download) must +match the hash(es) stored in the .hash file. If one or more hashes do +not match, Buildroot considers this an error, deletes the downloaded file, +and aborts.

    If the .hash file is present, but it does not contain a hash for a +downloaded file, Buildroot considers this an error and aborts. However, +the downloaded file is left in the download directory since this +typically indicates that the .hash file is wrong but the downloaded +file is probably OK.

    Hashes are currently checked for files fetched from http/ftp servers, +Git repositories, files copied using scp and local files. Hashes are +not checked for other version control systems (such as Subversion, +CVS, etc.) because Buildroot currently does not generate reproducible +tarballs when source code is fetched from such version control +systems.

    Hashes should only be added in .hash files for files that are +guaranteed to be stable. For example, patches auto-generated by Github +are not guaranteed to be stable, and therefore their hashes can change +over time. Such patches should not be downloaded, and instead be added +locally to the package folder.

    If the .hash file is missing, then no check is done at all.

    18.5. The SNNfoo start script

    Packages that provide a system daemon usually need to be started somehow +at boot. Buildroot comes with support for several init systems, some +are considered tier one (see Section 6.3, “init system”), while others are also +available but do not have the same level of integration. Ideally, all +packages providing a system daemon should provide a start script for +BusyBox/SysV init and a systemd unit file.

    For consistency, the start script must follow the style and composition +as shown in the reference: package/busybox/S01syslogd. An annotated +example of this style is shown below. There is no specific coding style +for systemd unit files, but if a package comes with its own unit file, +that is preferred over a buildroot specific one, if it is compatible +with buildroot.

    The name of the start script is composed of the SNN and the daemon +name. The NN is the start order number which needs to be carefully +chosen. For example, a program that requires networking to be up should +not start before S40network. The scripts are started in alphabetical +order, so S01syslogd starts before S01watchdogd, and S02sysctl +start thereafter.

    01: #!/bin/sh
    +02:
    +03: DAEMON="syslogd"
    +04: PIDFILE="/var/run/$DAEMON.pid"
    +05:
    +06: SYSLOGD_ARGS=""
    +07:
    +08: # shellcheck source=/dev/null
    +09: [ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
    +10:
    +11: # BusyBox' syslogd does not create a pidfile, so pass "-n" in the command line
    +12: # and use "-m" to instruct start-stop-daemon to create one.
    +13: start() {
    +14:     printf 'Starting %s: ' "$DAEMON"
    +15:     # shellcheck disable=SC2086 # we need the word splitting
    +16:     start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/sbin/$DAEMON" \
    +17:             -- -n $SYSLOGD_ARGS
    +18:     status=$?
    +19:     if [ "$status" -eq 0 ]; then
    +20:             echo "OK"
    +21:     else
    +22:             echo "FAIL"
    +23:     fi
    +24:     return "$status"
    +25: }
    +26:
    +27: stop() {
    +28:     printf 'Stopping %s: ' "$DAEMON"
    +29:     start-stop-daemon -K -q -p "$PIDFILE"
    +30:     status=$?
    +31:     if [ "$status" -eq 0 ]; then
    +32:             rm -f "$PIDFILE"
    +33:             echo "OK"
    +34:     else
    +35:             echo "FAIL"
    +36:     fi
    +37:     return "$status"
    +38: }
    +39:
    +40: restart() {
    +41:     stop
    +42:     sleep 1
    +43:     start
    +44: }
    +45:
    +46: case "$1" in
    +47:     start|stop|restart)
    +48:             "$1";;
    +49:     reload)
    +50:             # Restart, since there is no true "reload" feature.
    +51:             restart;;
    +52:     *)
    +53:             echo "Usage: $0 {start|stop|restart|reload}"
    +54:             exit 1
    +55: esac

    Note: programs that support reloading their configuration in some +fashion (SIGHUP) should provide a reload() function similar to +stop(). The start-stop-daemon supports -K -s HUP for this. +It is recommended to always append -x "/sbin/$DAEMON" to all the +start-stop-daemon commands to ensure signals are set to a PID that +matches $DAEMON.

    Both start scripts and unit files can source command line arguments from +/etc/default/foo, in general, if such a file does not exist it should +not block the start of the daemon, unless there is some site specirfic +command line argument the daemon requires to start. For start scripts a +FOO_ARGS="-s -o -m -e -args" can be defined to a default value in and +the user can override this from /etc/default/foo.

    18.6. Infrastructure for packages with specific build systems

    By packages with specific build systems we mean all the packages +whose build system is not one of the standard ones, such as +autotools or CMake. This typically includes packages whose build +system is based on hand-written Makefiles or shell scripts.

    18.6.1. generic-package tutorial

    01: ################################################################################
    +02: #
    +03: # libfoo
    +04: #
    +05: ################################################################################
    +06:
    +07: LIBFOO_VERSION = 1.0
    +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
    +09: LIBFOO_SITE = http://www.foosoftware.org/download
    +10: LIBFOO_LICENSE = GPL-3.0+
    +11: LIBFOO_LICENSE_FILES = COPYING
    +12: LIBFOO_INSTALL_STAGING = YES
    +13: LIBFOO_CONFIG_SCRIPTS = libfoo-config
    +14: LIBFOO_DEPENDENCIES = host-libaaa libbbb
    +15:
    +16: define LIBFOO_BUILD_CMDS
    +17:     $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all
    +18: endef
    +19:
    +20: define LIBFOO_INSTALL_STAGING_CMDS
    +21:     $(INSTALL) -D -m 0755 $(@D)/libfoo.a $(STAGING_DIR)/usr/lib/libfoo.a
    +22:     $(INSTALL) -D -m 0644 $(@D)/foo.h $(STAGING_DIR)/usr/include/foo.h
    +23:     $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(STAGING_DIR)/usr/lib
    +24: endef
    +25:
    +26: define LIBFOO_INSTALL_TARGET_CMDS
    +27:     $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(TARGET_DIR)/usr/lib
    +28:     $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/foo.d
    +29: endef
    +30:
    +31: define LIBFOO_USERS
    +32:     foo -1 libfoo -1 * - - - LibFoo daemon
    +33: endef
    +34:
    +35: define LIBFOO_DEVICES
    +36:     /dev/foo c 666 0 0 42 0 - - -
    +37: endef
    +38:
    +39: define LIBFOO_PERMISSIONS
    +40:     /bin/foo f 4755 foo libfoo - - - - -
    +41: endef
    +42:
    +43: $(eval $(generic-package))

    The Makefile begins on line 7 to 11 with metadata information: the +version of the package (LIBFOO_VERSION), the name of the +tarball containing the package (LIBFOO_SOURCE) (xz-ed tarball recommended) +the Internet location at which the tarball can be downloaded from +(LIBFOO_SITE), the license (LIBFOO_LICENSE) and file with the +license text (LIBFOO_LICENSE_FILES). All variables must start with +the same prefix, LIBFOO_ in this case. This prefix is always the +uppercased version of the package name (see below to understand where +the package name is defined).

    On line 12, we specify that this package wants to install something to +the staging space. This is often needed for libraries, since they must +install header files and other development files in the staging space. +This will ensure that the commands listed in the +LIBFOO_INSTALL_STAGING_CMDS variable will be executed.

    On line 13, we specify that there is some fixing to be done to some +of the libfoo-config files that were installed during +LIBFOO_INSTALL_STAGING_CMDS phase. +These *-config files are executable shell script files that are +located in $(STAGING_DIR)/usr/bin directory and are executed +by other 3rd party packages to find out the location and the linking +flags of this particular package.

    The problem is that all these *-config files by default give wrong, +host system linking flags that are unsuitable for cross-compiling.

    For example: -I/usr/include instead of -I$(STAGING_DIR)/usr/include +or: -L/usr/lib instead of -L$(STAGING_DIR)/usr/lib

    So some sed magic is done to these scripts to make them give correct +flags. +The argument to be given to LIBFOO_CONFIG_SCRIPTS is the file name(s) +of the shell script(s) needing fixing. All these names are relative to +$(STAGING_DIR)/usr/bin and if needed multiple names can be given.

    In addition, the scripts listed in LIBFOO_CONFIG_SCRIPTS are removed +from $(TARGET_DIR)/usr/bin, since they are not needed on the target.

    Example 18.1. Config script: divine package

    Package divine installs shell script $(STAGING_DIR)/usr/bin/divine-config.

    So its fixup would be:

    DIVINE_CONFIG_SCRIPTS = divine-config

    Example 18.2. Config script: imagemagick package:

    Package imagemagick installs the following scripts: +$(STAGING_DIR)/usr/bin/{Magick,Magick++,MagickCore,MagickWand,Wand}-config

    So it’s fixup would be:

    IMAGEMAGICK_CONFIG_SCRIPTS = \
    +   Magick-config Magick++-config \
    +   MagickCore-config MagickWand-config Wand-config

    On line 14, we specify the list of dependencies this package relies +on. These dependencies are listed in terms of lower-case package names, +which can be packages for the target (without the host- +prefix) or packages for the host (with the host-) prefix). +Buildroot will ensure that all these packages are built and installed +before the current package starts its configuration.

    The rest of the Makefile, lines 16..29, defines what should be done +at the different steps of the package configuration, compilation and +installation. +LIBFOO_BUILD_CMDS tells what steps should be performed to +build the package. LIBFOO_INSTALL_STAGING_CMDS tells what +steps should be performed to install the package in the staging space. +LIBFOO_INSTALL_TARGET_CMDS tells what steps should be +performed to install the package in the target space.

    All these steps rely on the $(@D) variable, which +contains the directory where the source code of the package has been +extracted.

    On lines 31..33, we define a user that is used by this package (e.g. +to run a daemon as non-root) (LIBFOO_USERS).

    On line 35..37, we define a device-node file used by this package +(LIBFOO_DEVICES).

    On line 39..41, we define the permissions to set to specific files +installed by this package (LIBFOO_PERMISSIONS).

    Finally, on line 43, we call the generic-package function, which +generates, according to the variables defined previously, all the +Makefile code necessary to make your package working.

    18.6.2. generic-package reference

    There are two variants of the generic target. The generic-package macro is +used for packages to be cross-compiled for the target. The +host-generic-package macro is used for host packages, natively compiled +for the host. It is possible to call both of them in a single .mk +file: once to create the rules to generate a target +package and once to create the rules to generate a host package:

    $(eval $(generic-package))
    +$(eval $(host-generic-package))

    This might be useful if the compilation of the target package requires +some tools to be installed on the host. If the package name is +libfoo, then the name of the package for the target is also +libfoo, while the name of the package for the host is +host-libfoo. These names should be used in the DEPENDENCIES +variables of other packages, if they depend on libfoo or +host-libfoo.

    The call to the generic-package and/or host-generic-package macro +must be at the end of the .mk file, after all variable definitions. +The call to host-generic-package must be after the call to +generic-package, if any.

    For the target package, the generic-package uses the variables defined by +the .mk file and prefixed by the uppercased package name: +LIBFOO_*. host-generic-package uses the HOST_LIBFOO_* variables. For +some variables, if the HOST_LIBFOO_ prefixed variable doesn’t +exist, the package infrastructure uses the corresponding variable +prefixed by LIBFOO_. This is done for variables that are likely to +have the same value for both the target and host packages. See below +for details.

    The list of variables that can be set in a .mk file to give metadata +information is (assuming the package name is libfoo) :

    • +LIBFOO_VERSION, mandatory, must contain the version of the + package. Note that if HOST_LIBFOO_VERSION doesn’t exist, it is + assumed to be the same as LIBFOO_VERSION. It can also be a + revision number or a tag for packages that are fetched directly + from their version control system. Examples: +

      • +a version for a release tarball: LIBFOO_VERSION = 0.1.2 +
      • +a sha1 for a git tree: LIBFOO_VERSION = cb9d6aa9429e838f0e54faa3d455bcbab5eef057 +
      • +a tag for a git tree LIBFOO_VERSION = v0.1.2 +

        Note: Using a branch name as FOO_VERSION is not supported, because it does +not and can not work as people would expect it should:

        1. +due to local caching, Buildroot will not re-fetch the repository, + so people who expect to be able to follow the remote repository + would be quite surprised and disappointed; +
        2. +because two builds can never be perfectly simultaneous, and because + the remote repository may get new commits on the branch anytime, + two users, using the same Buildroot tree and building the same + configuration, may get different source, thus rendering the build + non reproducible, and people would be quite surprised and + disappointed. +
    • +LIBFOO_SOURCE may contain the name of the tarball of the package, + which Buildroot will use to download the tarball from + LIBFOO_SITE. If HOST_LIBFOO_SOURCE is not specified, it defaults + to LIBFOO_SOURCE. If none are specified, then the value is assumed + to be libfoo-$(LIBFOO_VERSION).tar.gz. + Example: LIBFOO_SOURCE = foobar-$(LIBFOO_VERSION).tar.bz2 +
    • +LIBFOO_PATCH may contain a space-separated list of patch file + names, that Buildroot will download and apply to the package source + code. If an entry contains ://, then Buildroot will assume it is a + full URL and download the patch from this location. Otherwise, + Buildroot will assume that the patch should be downloaded from + LIBFOO_SITE. If HOST_LIBFOO_PATCH is not specified, it defaults + to LIBFOO_PATCH. Note that patches that are included in Buildroot + itself use a different mechanism: all files of the form + *.patch present in the package directory inside + Buildroot will be applied to the package after extraction (see + patching a package). Finally, patches listed in + the LIBFOO_PATCH variable are applied before the patches stored + in the Buildroot package directory. +
    • +LIBFOO_SITE provides the location of the package, which can be a + URL or a local filesystem path. HTTP, FTP and SCP are supported URL + types for retrieving package tarballs. In these cases don’t include a + trailing slash: it will be added by Buildroot between the directory + and the filename as appropriate. Git, Subversion, Mercurial, + and Bazaar are supported URL types for retrieving packages directly + from source code management systems. There is a helper function to make + it easier to download source tarballs from GitHub (refer to + Section 18.25.4, “How to add a package from GitHub” for details). A filesystem path may be used + to specify either a tarball or a directory containing the package + source code. See LIBFOO_SITE_METHOD below for more details on how + retrieval works. + Note that SCP URLs should be of the form + scp://[user@]host:filepath, and that filepath is relative to the + user’s home directory, so you may want to prepend the path with a + slash for absolute paths: + scp://[user@]host:/absolutepath. The same goes for SFTP URLs. + If HOST_LIBFOO_SITE is not specified, it defaults to + LIBFOO_SITE. + Examples: + LIBFOO_SITE=http://www.libfoosoftware.org/libfoo + LIBFOO_SITE=http://svn.xiph.org/trunk/Tremor + LIBFOO_SITE=/opt/software/libfoo.tar.gz + LIBFOO_SITE=$(TOPDIR)/../src/libfoo +
    • +LIBFOO_DL_OPTS is a space-separated list of additional options to + pass to the downloader. Useful for retrieving documents with + server-side checking for user logins and passwords, or to use a proxy. + All download methods valid for LIBFOO_SITE_METHOD are supported; + valid options depend on the download method (consult the man page + for the respective download utilities). +
    • +LIBFOO_EXTRA_DOWNLOADS is a space-separated list of additional + files that Buildroot should download. If an entry contains :// + then Buildroot will assume it is a complete URL and will download + the file using this URL. Otherwise, Buildroot will assume the file + to be downloaded is located at LIBFOO_SITE. Buildroot will not do + anything with those additional files, except download them: it will + be up to the package recipe to use them from $(LIBFOO_DL_DIR). +
    • +LIBFOO_SITE_METHOD determines the method used to fetch or copy the + package source code. In many cases, Buildroot guesses the method + from the contents of LIBFOO_SITE and setting LIBFOO_SITE_METHOD + is unnecessary. When HOST_LIBFOO_SITE_METHOD is not specified, it + defaults to the value of LIBFOO_SITE_METHOD. + The possible values of LIBFOO_SITE_METHOD are: +

      • +wget for normal FTP/HTTP downloads of tarballs. Used by + default when LIBFOO_SITE begins with http://, https:// or + ftp://. +
      • +scp for downloads of tarballs over SSH with scp. Used by + default when LIBFOO_SITE begins with scp://. +
      • +sftp for downloads of tarballs over SSH with sftp. Used by + default when LIBFOO_SITE begins with sftp://. +
      • +svn for retrieving source code from a Subversion repository. + Used by default when LIBFOO_SITE begins with svn://. When a + http:// Subversion repository URL is specified in + LIBFOO_SITE, one must specify LIBFOO_SITE_METHOD=svn. + Buildroot performs a checkout which is preserved as a tarball in + the download cache; subsequent builds use the tarball instead of + performing another checkout. +
      • +cvs for retrieving source code from a CVS repository. + Used by default when LIBFOO_SITE begins with cvs://. + The downloaded source code is cached as with the svn method. + Anonymous pserver mode is assumed otherwise explicitly defined + on LIBFOO_SITE. Both + LIBFOO_SITE=cvs://libfoo.net:/cvsroot/libfoo and + LIBFOO_SITE=cvs://:ext:libfoo.net:/cvsroot/libfoo + are accepted, on the former anonymous pserver access mode is + assumed. + LIBFOO_SITE must contain the source URL as well as the remote + repository directory. The module is the package name. + LIBFOO_VERSION is mandatory and must be a tag, a branch, or + a date (e.g. "2014-10-20", "2014-10-20 13:45", "2014-10-20 + 13:45+01" see "man cvs" for further details). +
      • +git for retrieving source code from a Git repository. Used by + default when LIBFOO_SITE begins with git://. The downloaded + source code is cached as with the svn method. +
      • +hg for retrieving source code from a Mercurial repository. One + must specify LIBFOO_SITE_METHOD=hg when LIBFOO_SITE + contains a Mercurial repository URL. The downloaded source code + is cached as with the svn method. +
      • +bzr for retrieving source code from a Bazaar repository. Used + by default when LIBFOO_SITE begins with bzr://. The + downloaded source code is cached as with the svn method. +
      • +file for a local tarball. One should use this when + LIBFOO_SITE specifies a package tarball as a local filename. + Useful for software that isn’t available publicly or in version + control. +
      • +local for a local source code directory. One should use this + when LIBFOO_SITE specifies a local directory path containing + the package source code. Buildroot copies the contents of the + source directory into the package’s build directory. Note that + for local packages, no patches are applied. If you need to + still patch the source code, use LIBFOO_POST_RSYNC_HOOKS, see + Section 18.23.1, “Using the POST_RSYNC hook”. +
    • +LIBFOO_GIT_SUBMODULES can be set to YES to create an archive + with the git submodules in the repository. This is only available + for packages downloaded with git (i.e. when + LIBFOO_SITE_METHOD=git). Note that we try not to use such git + submodules when they contain bundled libraries, in which case we + prefer to use those libraries from their own package. +
    • +LIBFOO_GIT_LFS should be set to YES if the Git repository uses + Git LFS to store large files out of band. This is only available for + packages downloaded with git (i.e. when LIBFOO_SITE_METHOD=git). +
    • +LIBFOO_STRIP_COMPONENTS is the number of leading components + (directories) that tar must strip from file names on extraction. + The tarball for most packages has one leading component named + "<pkg-name>-<pkg-version>", thus Buildroot passes + --strip-components=1 to tar to remove it. + For non-standard packages that don’t have this component, or + that have more than one leading component to strip, set this + variable with the value to be passed to tar. Default: 1. +
    • +LIBFOO_EXCLUDES is a space-separated list of patterns to exclude + when extracting the archive. Each item from that list is passed as + a tar’s --exclude option. By default, empty. +
    • +LIBFOO_DEPENDENCIES lists the dependencies (in terms of package + name) that are required for the current target package to + compile. These dependencies are guaranteed to be compiled and + installed before the configuration of the current package starts. + However, modifications to configuration of these dependencies will + not force a rebuild of the current package. In a similar way, + HOST_LIBFOO_DEPENDENCIES lists the dependencies for the current + host package. +
    • +LIBFOO_EXTRACT_DEPENDENCIES lists the dependencies (in terms of + package name) that are required for the current target package to be + extracted. These dependencies are guaranteed to be compiled and + installed before the extract step of the current package + starts. This is only used internally by the package infrastructure, + and should typically not be used directly by packages. +
    • +LIBFOO_PATCH_DEPENDENCIES lists the dependencies (in terms of + package name) that are required for the current package to be + patched. These dependencies are guaranteed to be extracted and + patched (but not necessarily built) before the current package is + patched. In a similar way, HOST_LIBFOO_PATCH_DEPENDENCIES lists + the dependencies for the current host package. + This is seldom used; usually, LIBFOO_DEPENDENCIES is what you + really want to use. +
    • +LIBFOO_PROVIDES lists all the virtual packages libfoo is an + implementation of. See Section 18.12, “Infrastructure for virtual packages”. +
    • +LIBFOO_INSTALL_STAGING can be set to YES or NO (default). If + set to YES, then the commands in the LIBFOO_INSTALL_STAGING_CMDS + variables are executed to install the package into the staging + directory. +
    • +LIBFOO_INSTALL_TARGET can be set to YES (default) or NO. If + set to YES, then the commands in the LIBFOO_INSTALL_TARGET_CMDS + variables are executed to install the package into the target + directory. +
    • +LIBFOO_INSTALL_IMAGES can be set to YES or NO (default). If + set to YES, then the commands in the LIBFOO_INSTALL_IMAGES_CMDS + variable are executed to install the package into the images + directory. +
    • +LIBFOO_CONFIG_SCRIPTS lists the names of the files in + $(STAGING_DIR)/usr/bin that need some special fixing to make them + cross-compiling friendly. Multiple file names separated by space can + be given and all are relative to $(STAGING_DIR)/usr/bin. The files + listed in LIBFOO_CONFIG_SCRIPTS are also removed from + $(TARGET_DIR)/usr/bin since they are not needed on the target. +
    • +LIBFOO_DEVICES lists the device files to be created by Buildroot + when using the static device table. The syntax to use is the + makedevs one. You can find some documentation for this syntax in the + Chapter 25, Makedev syntax documentation. This variable is optional. +
    • +LIBFOO_PERMISSIONS lists the changes of permissions to be done at + the end of the build process. The syntax is once again the makedevs one. + You can find some documentation for this syntax in the Chapter 25, Makedev syntax documentation. + This variable is optional. +
    • +LIBFOO_USERS lists the users to create for this package, if it installs + a program you want to run as a specific user (e.g. as a daemon, or as a + cron-job). The syntax is similar in spirit to the makedevs one, and is + described in the Chapter 26, Makeusers syntax documentation. This variable is optional. +
    • +LIBFOO_LICENSE defines the license (or licenses) under which the package + is released. + This name will appear in the manifest file produced by make legal-info. + If the license appears in the SPDX License List, + use the SPDX short identifier to make the manifest file uniform. + Otherwise, describe the license in a precise and concise way, avoiding + ambiguous names such as BSD which actually name a family of licenses. + This variable is optional. If it is not defined, unknown will appear in + the license field of the manifest file for this package. + The expected format for this variable must comply with the following rules: +

      • +If different parts of the package are released under different + licenses, then comma separate licenses (e.g. LIBFOO_LICENSE = + GPL-2.0+, LGPL-2.1+). If there is clear distinction between which + component is licensed under what license, then annotate the license + with that component, between parenthesis (e.g. LIBFOO_LICENSE = + GPL-2.0+ (programs), LGPL-2.1+ (libraries)). +
      • +If some licenses are conditioned on a sub-option being enabled, append + the conditional licenses with a comma (e.g.: FOO_LICENSE += , GPL-2.0+ + (programs)); the infrastructure will internally remove the space before + the comma. +
      • +If the package is dual licensed, then separate licenses with the + or keyword (e.g. LIBFOO_LICENSE = AFL-2.1 or GPL-2.0+). +
    • +LIBFOO_LICENSE_FILES is a space-separated list of files in the package + tarball that contain the license(s) under which the package is released. + make legal-info copies all of these files in the legal-info directory. + See Chapter 13, Legal notice and licensing for more information. + This variable is optional. If it is not defined, a warning will be produced + to let you know, and not saved will appear in the license files field + of the manifest file for this package. +
    • +LIBFOO_ACTUAL_SOURCE_TARBALL only applies to packages whose + LIBFOO_SITE / LIBFOO_SOURCE pair points to an archive that does + not actually contain source code, but binary code. This a very + uncommon case, only known to apply to external toolchains which come + already compiled, although theoretically it might apply to other + packages. In such cases a separate tarball is usually available with + the actual source code. Set LIBFOO_ACTUAL_SOURCE_TARBALL to the + name of the actual source code archive and Buildroot will download + it and use it when you run make legal-info to collect + legally-relevant material. Note this file will not be downloaded + during regular builds nor by make source. +
    • +LIBFOO_ACTUAL_SOURCE_SITE provides the location of the actual + source tarball. The default value is LIBFOO_SITE, so you don’t + need to set this variable if the binary and source archives are + hosted on the same directory. If LIBFOO_ACTUAL_SOURCE_TARBALL is + not set, it doesn’t make sense to define + LIBFOO_ACTUAL_SOURCE_SITE. +
    • +LIBFOO_REDISTRIBUTE can be set to YES (default) or NO to indicate if + the package source code is allowed to be redistributed. Set it to NO for + non-opensource packages: Buildroot will not save the source code for this + package when collecting the legal-info. +
    • +LIBFOO_FLAT_STACKSIZE defines the stack size of an application built into + the FLAT binary format. The application stack size on the NOMMU architecture + processors can’t be enlarged at run time. The default stack size for the + FLAT binary format is only 4k bytes. If the application consumes more stack, + append the required number here. +
    • +LIBFOO_BIN_ARCH_EXCLUDE is a space-separated list of paths (relative + to the target directory) to ignore when checking that the package + installs correctly cross-compiled binaries. You seldom need to set this + variable, unless the package installs binary blobs outside the default + locations, /lib/firmware, /usr/lib/firmware, /lib/modules, + /usr/lib/modules, and /usr/share, which are automatically excluded. +
    • +LIBFOO_IGNORE_CVES is a space-separated list of CVEs that tells + Buildroot CVE tracking tools which CVEs should be ignored for this + package. This is typically used when the CVE is fixed by a patch in + the package, or when the CVE for some reason does not affect the + Buildroot package. A Makefile comment must always precede the + addition of a CVE to this variable. Example: +
    # 0001-fix-cve-2020-12345.patch
    +LIBFOO_IGNORE_CVES += CVE-2020-12345
    +# only when built with libbaz, which Buildroot doesn't support
    +LIBFOO_IGNORE_CVES += CVE-2020-54321
    • +LIBFOO_CPE_ID_* variables is a set of variables that allows the + package to define its CPE + identifier. The available variables are: +

      • +LIBFOO_CPE_ID_PREFIX, specifies the prefix of the CPE identifier, + i.e the first three fields. When not defined, the default value is + cpe:2.3:a. +
      • +LIBFOO_CPE_ID_VENDOR, specifies the vendor part of the CPE + identifier. When not defined, the default value is + <pkgname>_project. +
      • +LIBFOO_CPE_ID_PRODUCT, specifies the product part of the CPE + identifier. When not defined, the default value is <pkgname>. +
      • +LIBFOO_CPE_ID_VERSION, specifies the version part of the CPE + identifier. When not defined the default value is + $(LIBFOO_VERSION). +
      • +LIBFOO_CPE_ID_UPDATE specifies the update part of the CPE + identifier. When not defined the default value is *. +

      If any of those variables is defined, then the generic package +infrastructure assumes the package provides valid CPE information. In +this case, the generic package infrastructure will define +LIBFOO_CPE_ID.

      For a host package, if its LIBFOO_CPE_ID_* variables are not +defined, it inherits the value of those variables from the +corresponding target package.

    The recommended way to define these variables is to use the following +syntax:

    LIBFOO_VERSION = 2.32

    Now, the variables that define what should be performed at the +different steps of the build process.

    • +LIBFOO_EXTRACT_CMDS lists the actions to be performed to extract + the package. This is generally not needed as tarballs are + automatically handled by Buildroot. However, if the package uses a + non-standard archive format, such as a ZIP or RAR file, or has a + tarball with a non-standard organization, this variable allows to + override the package infrastructure default behavior. +
    • +LIBFOO_CONFIGURE_CMDS lists the actions to be performed to + configure the package before its compilation. +
    • +LIBFOO_BUILD_CMDS lists the actions to be performed to + compile the package. +
    • +HOST_LIBFOO_INSTALL_CMDS lists the actions to be performed + to install the package, when the package is a host package. The + package must install its files to the directory given by + $(HOST_DIR). All files, including development files such as + headers should be installed, since other packages might be compiled + on top of this package. +
    • +LIBFOO_INSTALL_TARGET_CMDS lists the actions to be + performed to install the package to the target directory, when the + package is a target package. The package must install its files to + the directory given by $(TARGET_DIR). Only the files required for + execution of the package have to be + installed. Header files, static libraries and documentation will be + removed again when the target filesystem is finalized. +
    • +LIBFOO_INSTALL_STAGING_CMDS lists the actions to be + performed to install the package to the staging directory, when the + package is a target package. The package must install its files to + the directory given by $(STAGING_DIR). All development files + should be installed, since they might be needed to compile other + packages. +
    • +LIBFOO_INSTALL_IMAGES_CMDS lists the actions to be performed to + install the package to the images directory, when the package is a + target package. The package must install its files to the directory + given by $(BINARIES_DIR). Only files that are binary images (aka + images) that do not belong in the TARGET_DIR but are necessary + for booting the board should be placed here. For example, a package + should utilize this step if it has binaries which would be similar + to the kernel image, bootloader or root filesystem images. +
    • +LIBFOO_INSTALL_INIT_SYSV, LIBFOO_INSTALL_INIT_OPENRC and + LIBFOO_INSTALL_INIT_SYSTEMD list the actions to install init + scripts either for the systemV-like init systems (busybox, + sysvinit, etc.), openrc or for the systemd units. These commands + will be run only when the relevant init system is installed (i.e. + if systemd is selected as the init system in the configuration, + only LIBFOO_INSTALL_INIT_SYSTEMD will be run). The only exception + is when openrc is chosen as init system and LIBFOO_INSTALL_INIT_OPENRC + has not been set, in such situation LIBFOO_INSTALL_INIT_SYSV will + be called, since openrc supports sysv init scripts. + When systemd is used as the init system, buildroot will automatically enable + all services using the systemctl preset-all command in the final phase of + image building. You can add preset files to prevent a particular unit from + being automatically enabled by buildroot. +
    • +LIBFOO_HELP_CMDS lists the actions to print the package help, which + is included to the main make help output. These commands can print + anything in any format. + This is seldom used, as packages rarely have custom rules. Do not use + this variable, unless you really know that you need to print help. +
    • +LIBFOO_LINUX_CONFIG_FIXUPS lists the Linux kernel configuration + options that are needed to build and use this package, and without + which the package is fundamentally broken. This shall be a set of + calls to one of the kconfig tweaking option: KCONFIG_ENABLE_OPT, + KCONFIG_DISABLE_OPT, or KCONFIG_SET_OPT. + This is seldom used, as package usually have no strict requirements on + the kernel options. +

    The preferred way to define these variables is:

    define LIBFOO_CONFIGURE_CMDS
    +        action 1
    +        action 2
    +        action 3
    +endef

    In the action definitions, you can use the following variables:

    • +$(LIBFOO_PKGDIR) contains the path to the directory containing the + libfoo.mk and Config.in files. This variable is useful when it is + necessary to install a file bundled in Buildroot, like a runtime + configuration file, a splashscreen image… +
    • +$(@D), which contains the directory in which the package source + code has been uncompressed. +
    • +$(LIBFOO_DL_DIR) contains the path to the directory where all the downloads + made by Buildroot for libfoo are stored in. +
    • +$(TARGET_CC), $(TARGET_LD), etc. to get the target + cross-compilation utilities +
    • +$(TARGET_CROSS) to get the cross-compilation toolchain prefix +
    • +Of course the $(HOST_DIR), $(STAGING_DIR) and $(TARGET_DIR) + variables to install the packages properly. Those variables point to + the global host, staging and target directories, unless + per-package directory support is used, in which case they point to + the current package host, staging and target directories. In + both cases, it doesn’t make any difference from the package point of + view: it should simply use HOST_DIR, STAGING_DIR and + TARGET_DIR. See Section 8.12, “Top-level parallel build” for more details + about per-package directory support. +

    Finally, you can also use hooks. See Section 18.23, “Hooks available in the various build steps” for more information.

    18.7. Infrastructure for autotools-based packages

    18.7.1. autotools-package tutorial

    First, let’s see how to write a .mk file for an autotools-based +package, with an example :

    01: ################################################################################
    +02: #
    +03: # libfoo
    +04: #
    +05: ################################################################################
    +06:
    +07: LIBFOO_VERSION = 1.0
    +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
    +09: LIBFOO_SITE = http://www.foosoftware.org/download
    +10: LIBFOO_INSTALL_STAGING = YES
    +11: LIBFOO_INSTALL_TARGET = NO
    +12: LIBFOO_CONF_OPTS = --disable-shared
    +13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf
    +14:
    +15: $(eval $(autotools-package))

    On line 7, we declare the version of the package.

    On line 8 and 9, we declare the name of the tarball (xz-ed tarball recommended) +and the location of the tarball on the Web. Buildroot will automatically +download the tarball from this location.

    On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in output/staging/ +is the directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed in +the staging directory: their development files are needed to compile +other libraries or applications depending on them. Also by default, when +staging installation is enabled, packages are installed in this location +using the make install command.

    On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they will +not be used at runtime. By default, target installation is enabled; setting +this variable to NO is almost never needed. Also by default, packages are +installed in this location using the make install command.

    On line 12, we tell Buildroot to pass a custom configure option, that +will be passed to the ./configure script before configuring +and building the package.

    On line 13, we declare our dependencies, so that they are built +before the build process of our package starts.

    Finally, on line line 15, we invoke the autotools-package +macro that generates all the Makefile rules that actually allows the +package to be built.

    18.7.2. autotools-package reference

    The main macro of the autotools package infrastructure is +autotools-package. It is similar to the generic-package macro. The ability to +have target and host packages is also available, with the +host-autotools-package macro.

    Just like the generic infrastructure, the autotools infrastructure +works by defining a number of variables before calling the +autotools-package macro.

    First, all the package metadata information variables that exist in the +generic infrastructure also exist in the autotools infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, +LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, +LIBFOO_INSTALL_STAGING, LIBFOO_INSTALL_TARGET.

    A few additional variables, specific to the autotools infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them.

    • +LIBFOO_SUBDIR may contain the name of a subdirectory + inside the package that contains the configure script. This is useful, + if for example, the main configure script is not at the root of the + tree extracted by the tarball. If HOST_LIBFOO_SUBDIR is + not specified, it defaults to LIBFOO_SUBDIR. +
    • +LIBFOO_CONF_ENV, to specify additional environment + variables to pass to the configure script. By default, empty. +
    • +LIBFOO_CONF_OPTS, to specify additional configure + options to pass to the configure script. By default, empty. +
    • +LIBFOO_MAKE, to specify an alternate make + command. This is typically useful when parallel make is enabled in + the configuration (using BR2_JLEVEL) but that this + feature should be disabled for the given package, for one reason or + another. By default, set to $(MAKE). If parallel building + is not supported by the package, then it should be set to + LIBFOO_MAKE=$(MAKE1). +
    • +LIBFOO_MAKE_ENV, to specify additional environment + variables to pass to make in the build step. These are passed before + the make command. By default, empty. +
    • +LIBFOO_MAKE_OPTS, to specify additional variables to + pass to make in the build step. These are passed after the + make command. By default, empty. +
    • +LIBFOO_AUTORECONF, tells whether the package should + be autoreconfigured or not (i.e. if the configure script and + Makefile.in files should be re-generated by re-running autoconf, + automake, libtool, etc.). Valid values are YES and + NO. By default, the value is NO +
    • +LIBFOO_AUTORECONF_ENV, to specify additional environment + variables to pass to the autoreconf program if + LIBFOO_AUTORECONF=YES. These are passed in the environment of + the autoreconf command. By default, empty. +
    • +LIBFOO_AUTORECONF_OPTS to specify additional options + passed to the autoreconf program if + LIBFOO_AUTORECONF=YES. By default, empty. +
    • +LIBFOO_AUTOPOINT, tells whether the package should be + autopointed or not (i.e. if the package needs I18N infrastructure + copied in.) Only valid when LIBFOO_AUTORECONF=YES. Valid + values are YES and NO. The default is NO. +
    • +LIBFOO_LIBTOOL_PATCH tells whether the Buildroot + patch to fix libtool cross-compilation issues should be applied or + not. Valid values are YES and NO. By + default, the value is YES +
    • +LIBFOO_INSTALL_STAGING_OPTS contains the make options + used to install the package to the staging directory. By default, the + value is DESTDIR=$(STAGING_DIR) install, which is + correct for most autotools packages. It is still possible to override + it. +
    • +LIBFOO_INSTALL_TARGET_OPTS contains the make options + used to install the package to the target directory. By default, the + value is DESTDIR=$(TARGET_DIR) install. The default + value is correct for most autotools packages, but it is still possible + to override it if needed. +

    With the autotools infrastructure, all the steps required to build +and install the packages are already defined, and they generally work +well for most autotools-based packages. However, when required, it is +still possible to customize what is done in any particular step:

    • +By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the various build steps” for details. +
    • +By overriding one of the steps. For example, even if the autotools + infrastructure is used, if the package .mk file defines its + own LIBFOO_CONFIGURE_CMDS variable, it will be used + instead of the default autotools one. However, using this method + should be restricted to very specific cases. Do not use it in the + general case. +

    18.8. Infrastructure for CMake-based packages

    18.8.1. cmake-package tutorial

    First, let’s see how to write a .mk file for a CMake-based package, +with an example :

    01: ################################################################################
    +02: #
    +03: # libfoo
    +04: #
    +05: ################################################################################
    +06:
    +07: LIBFOO_VERSION = 1.0
    +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
    +09: LIBFOO_SITE = http://www.foosoftware.org/download
    +10: LIBFOO_INSTALL_STAGING = YES
    +11: LIBFOO_INSTALL_TARGET = NO
    +12: LIBFOO_CONF_OPTS = -DBUILD_DEMOS=ON
    +13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf
    +14:
    +15: $(eval $(cmake-package))

    On line 7, we declare the version of the package.

    On line 8 and 9, we declare the name of the tarball (xz-ed tarball recommended) +and the location of the tarball on the Web. Buildroot will automatically +download the tarball from this location.

    On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in output/staging/ +is the directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed in +the staging directory: their development files are needed to compile +other libraries or applications depending on them. Also by default, when +staging installation is enabled, packages are installed in this location +using the make install command.

    On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they will +not be used at runtime. By default, target installation is enabled; setting +this variable to NO is almost never needed. Also by default, packages are +installed in this location using the make install command.

    On line 12, we tell Buildroot to pass custom options to CMake when it is +configuring the package.

    On line 13, we declare our dependencies, so that they are built +before the build process of our package starts.

    Finally, on line line 15, we invoke the cmake-package +macro that generates all the Makefile rules that actually allows the +package to be built.

    18.8.2. cmake-package reference

    The main macro of the CMake package infrastructure is +cmake-package. It is similar to the generic-package macro. The ability to +have target and host packages is also available, with the +host-cmake-package macro.

    Just like the generic infrastructure, the CMake infrastructure works +by defining a number of variables before calling the cmake-package +macro.

    First, all the package metadata information variables that exist in +the generic infrastructure also exist in the CMake infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, LIBFOO_INSTALL_STAGING, +LIBFOO_INSTALL_TARGET.

    A few additional variables, specific to the CMake infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them.

    • +LIBFOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main CMakeLists.txt file. This is useful, + if for example, the main CMakeLists.txt file is not at the root of + the tree extracted by the tarball. If HOST_LIBFOO_SUBDIR is not + specified, it defaults to LIBFOO_SUBDIR. +
    • +LIBFOO_CONF_ENV, to specify additional environment variables to + pass to CMake. By default, empty. +
    • +LIBFOO_CONF_OPTS, to specify additional configure options to pass + to CMake. By default, empty. A number of common CMake options are + set by the cmake-package infrastructure; so it is normally not + necessary to set them in the package’s *.mk file unless you want + to override them: +

      • +CMAKE_BUILD_TYPE is driven by BR2_ENABLE_RUNTIME_DEBUG; +
      • +CMAKE_INSTALL_PREFIX; +
      • +BUILD_SHARED_LIBS is driven by BR2_STATIC_LIBS; +
      • +BUILD_DOC, BUILD_DOCS are disabled; +
      • +BUILD_EXAMPLE, BUILD_EXAMPLES are disabled; +
      • +BUILD_TEST, BUILD_TESTS, BUILD_TESTING are disabled. +
    • +LIBFOO_SUPPORTS_IN_SOURCE_BUILD = NO should be set when the package + cannot be built inside the source tree but needs a separate build + directory. +
    • +LIBFOO_MAKE, to specify an alternate make command. This is + typically useful when parallel make is enabled in the configuration + (using BR2_JLEVEL) but that this feature should be disabled for + the given package, for one reason or another. By default, set to + $(MAKE). If parallel building is not supported by the package, + then it should be set to LIBFOO_MAKE=$(MAKE1). +
    • +LIBFOO_MAKE_ENV, to specify additional environment variables to + pass to make in the build step. These are passed before the make + command. By default, empty. +
    • +LIBFOO_MAKE_OPTS, to specify additional variables to pass to make + in the build step. These are passed after the make command. By + default, empty. +
    • +LIBFOO_INSTALL_OPTS contains the make options used to + install the package to the host directory. By default, the value + is install, which is correct for most CMake packages. It is still + possible to override it. +
    • +LIBFOO_INSTALL_STAGING_OPTS contains the make options used to + install the package to the staging directory. By default, the value + is DESTDIR=$(STAGING_DIR) install/fast, which is correct for most + CMake packages. It is still possible to override it. +
    • +LIBFOO_INSTALL_TARGET_OPTS contains the make options used to + install the package to the target directory. By default, the value + is DESTDIR=$(TARGET_DIR) install/fast. The default value is correct + for most CMake packages, but it is still possible to override it if + needed. +

    With the CMake infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most CMake-based packages. However, when required, it is still +possible to customize what is done in any particular step:

    • +By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the various build steps” for details. +
    • +By overriding one of the steps. For example, even if the CMake + infrastructure is used, if the package .mk file defines its own + LIBFOO_CONFIGURE_CMDS variable, it will be used instead of the + default CMake one. However, using this method should be restricted + to very specific cases. Do not use it in the general case. +

    18.9. Infrastructure for Python packages

    This infrastructure applies to Python packages that use the standard +Python setuptools or pep517 mechanisms as their build system, generally +recognizable by the usage of a setup.py script or pyproject.toml +file.

    18.9.1. python-package tutorial

    First, let’s see how to write a .mk file for a Python package, +with an example :

    01: ################################################################################
    +02: #
    +03: # python-foo
    +04: #
    +05: ################################################################################
    +06:
    +07: PYTHON_FOO_VERSION = 1.0
    +08: PYTHON_FOO_SOURCE = python-foo-$(PYTHON_FOO_VERSION).tar.xz
    +09: PYTHON_FOO_SITE = http://www.foosoftware.org/download
    +10: PYTHON_FOO_LICENSE = BSD-3-Clause
    +11: PYTHON_FOO_LICENSE_FILES = LICENSE
    +12: PYTHON_FOO_ENV = SOME_VAR=1
    +13: PYTHON_FOO_DEPENDENCIES = libmad
    +14: PYTHON_FOO_SETUP_TYPE = distutils
    +15:
    +16: $(eval $(python-package))

    On line 7, we declare the version of the package.

    On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location.

    On line 10 and 11, we give licensing details about the package (its +license on line 10, and the file containing the license text on line +11).

    On line 12, we tell Buildroot to pass custom options to the Python +setup.py script when it is configuring the package.

    On line 13, we declare our dependencies, so that they are built +before the build process of our package starts.

    On line 14, we declare the specific Python build system being used. In +this case the distutils Python build system is used. The four +supported ones are distutils, flit, pep517 and setuptools.

    Finally, on line 16, we invoke the python-package macro that +generates all the Makefile rules that actually allow the package to be +built.

    18.9.2. python-package reference

    As a policy, packages that merely provide Python modules should all be +named python-<something> in Buildroot. Other packages that use the +Python build system, but are not Python modules, can freely choose +their name (existing examples in Buildroot are scons and +supervisor).

    The main macro of the Python package infrastructure is +python-package. It is similar to the generic-package macro. It is +also possible to create Python host packages with the +host-python-package macro.

    Just like the generic infrastructure, the Python infrastructure works +by defining a number of variables before calling the python-package +or host-python-package macros.

    All the package metadata information variables that exist in the +generic package infrastructure also +exist in the Python infrastructure: PYTHON_FOO_VERSION, +PYTHON_FOO_SOURCE, PYTHON_FOO_PATCH, PYTHON_FOO_SITE, +PYTHON_FOO_SUBDIR, PYTHON_FOO_DEPENDENCIES, PYTHON_FOO_LICENSE, +PYTHON_FOO_LICENSE_FILES, PYTHON_FOO_INSTALL_STAGING, etc.

    Note that:

    • +It is not necessary to add python or host-python in the + PYTHON_FOO_DEPENDENCIES variable of a package, since these basic + dependencies are automatically added as needed by the Python + package infrastructure. +
    • +Similarly, it is not needed to add host-setuptools to + PYTHON_FOO_DEPENDENCIES for setuptools-based packages, since it’s + automatically added by the Python infrastructure as needed. +

    One variable specific to the Python infrastructure is mandatory:

    • +PYTHON_FOO_SETUP_TYPE, to define which Python build system is used + by the package. The four supported values are distutils, flit, + pep517 and setuptools. If you don’t know which one is used in + your package, look at the setup.py or pyproject.toml file in your + package source code, and see whether it imports things from the + distutils, flit module or the setuptools module. If the package + is using a pyproject.toml file without any build-system requires + and with a local in-tree backend-path one should use pep517. +

    A few additional variables, specific to the Python infrastructure, can +optionally be defined, depending on the package’s needs. Many of them +are only useful in very specific cases, typical packages will +therefore only use a few of them, or none.

    • +PYTHON_FOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main setup.py or pyproject.toml file. + This is useful, if for example, the main setup.py or pyproject.toml + file is not at the root of the tree extracted by the tarball. If + HOST_PYTHON_FOO_SUBDIR is not specified, it defaults to + PYTHON_FOO_SUBDIR. +
    • +PYTHON_FOO_ENV, to specify additional environment variables to + pass to the Python setup.py script (for distutils/setuptools + packages) or the support/scripts/pyinstaller.py script (for + flit/pep517 packages) for both the build and install steps. Note + that the infrastructure is automatically passing several standard + variables, defined in PKG_PYTHON_DISTUTILS_ENV (for distutils + target packages), HOST_PKG_PYTHON_DISTUTILS_ENV (for distutils + host packages), PKG_PYTHON_SETUPTOOLS_ENV (for setuptools target + packages), HOST_PKG_PYTHON_SETUPTOOLS_ENV (for setuptools host + packages), PKG_PYTHON_PEP517_ENV (for flit/pep517 target packages) + and HOST_PKG_PYTHON_PEP517_ENV (for flit/pep517 host packages). +
    • +PYTHON_FOO_BUILD_OPTS, to specify additional options to pass to the + Python setup.py script during the build step, this generally only + makes sense to use for distutils/setuptools based packages as + flit/pep517 based packages do not pass these options to a setup.py + script but instead pass them to support/scripts/pyinstaller.py. + For target distutils packages, the PKG_PYTHON_DISTUTILS_BUILD_OPTS + options are already passed automatically by the infrastructure. +
    • +PYTHON_FOO_INSTALL_TARGET_OPTS, PYTHON_FOO_INSTALL_STAGING_OPTS, + HOST_PYTHON_FOO_INSTALL_OPTS to specify additional options to pass + to the Python setup.py script (for distutils/setuptools packages) + or support/scripts/pyinstaller.py (for flit/pep517 packages) during + the target installation step, the staging installation step or the + host installation, respectively. Note that the infrastructure is + automatically passing some options, defined in + PKG_PYTHON_DISTUTILS_INSTALL_TARGET_OPTS or + PKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS (for target distutils + packages), HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS (for host + distutils packages), PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_OPTS or + PKG_PYTHON_SETUPTOOLS_INSTALL_STAGING_OPTS (for target setuptools + packages), HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS (for host + setuptools packages) and PKG_PYTHON_PEP517_INSTALL_TARGET_OPTS or + PKG_PYTHON_PEP517_INSTALL_STAGING_OPTS (for target flit/pep517 + packages). +

    With the Python infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most Python-based packages. However, when required, it is still +possible to customize what is done in any particular step:

    • +By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the various build steps” for details. +
    • +By overriding one of the steps. For example, even if the Python + infrastructure is used, if the package .mk file defines its own + PYTHON_FOO_BUILD_CMDS variable, it will be used instead of the + default Python one. However, using this method should be restricted + to very specific cases. Do not use it in the general case. +

    18.9.3. Generating a python-package from a PyPI repository

    If the Python package for which you would like to create a Buildroot +package is available on PyPI, you may want to use the scanpypi tool +located in utils/ to automate the process.

    You can find the list of existing PyPI packages +here.

    scanpypi requires Python’s setuptools package to be installed on +your host.

    When at the root of your buildroot directory just do :

    utils/scanpypi foo bar -o package

    This will generate packages python-foo and python-bar in the package +folder if they exist on https://pypi.python.org.

    Find the external python modules menu and insert your package inside. +Keep in mind that the items inside a menu should be in alphabetical order.

    Please keep in mind that you’ll most likely have to manually check the +package for any mistakes as there are things that cannot be guessed by +the generator (e.g. dependencies on any of the python core modules +such as BR2_PACKAGE_PYTHON_ZLIB). Also, please take note that the +license and license files are guessed and must be checked. You also +need to manually add the package to the package/Config.in file.

    If your Buildroot package is not in the official Buildroot tree but in +a br2-external tree, use the -o flag as follows:

    utils/scanpypi foo bar -o other_package_dir

    This will generate packages python-foo and python-bar in the +other_package_directory instead of package.

    Option -h will list the available options:

    utils/scanpypi -h

    18.9.4. python-package CFFI backend

    C Foreign Function Interface for Python (CFFI) provides a convenient +and reliable way to call compiled C code from Python using interface +declarations written in C. Python packages relying on this backend can +be identified by the appearance of a cffi dependency in the +install_requires field of their setup.py file.

    Such a package should:

    • +add python-cffi as a runtime dependency in order to install the +compiled C library wrapper on the target. This is achieved by adding +select BR2_PACKAGE_PYTHON_CFFI to the package Config.in. +
    config BR2_PACKAGE_PYTHON_FOO
    +        bool "python-foo"
    +        select BR2_PACKAGE_PYTHON_CFFI # runtime
    • +add host-python-cffi as a build-time dependency in order to +cross-compile the C wrapper. This is achieved by adding +host-python-cffi to the PYTHON_FOO_DEPENDENCIES variable. +
    ################################################################################
    +#
    +# python-foo
    +#
    +################################################################################
    +
    +...
    +
    +PYTHON_FOO_DEPENDENCIES = host-python-cffi
    +
    +$(eval $(python-package))

    18.10. Infrastructure for LuaRocks-based packages

    18.10.1. luarocks-package tutorial

    First, let’s see how to write a .mk file for a LuaRocks-based package, +with an example :

    01: ################################################################################
    +02: #
    +03: # lua-foo
    +04: #
    +05: ################################################################################
    +06:
    +07: LUA_FOO_VERSION = 1.0.2-1
    +08: LUA_FOO_NAME_UPSTREAM = foo
    +09: LUA_FOO_DEPENDENCIES = bar
    +10:
    +11: LUA_FOO_BUILD_OPTS += BAR_INCDIR=$(STAGING_DIR)/usr/include
    +12: LUA_FOO_BUILD_OPTS += BAR_LIBDIR=$(STAGING_DIR)/usr/lib
    +13: LUA_FOO_LICENSE = luaFoo license
    +14: LUA_FOO_LICENSE_FILES = $(LUA_FOO_SUBDIR)/COPYING
    +15:
    +16: $(eval $(luarocks-package))

    On line 7, we declare the version of the package (the same as in the rockspec, +which is the concatenation of the upstream version and the rockspec revision, +separated by a hyphen -).

    On line 8, we declare that the package is called "foo" on LuaRocks. In +Buildroot, we give Lua-related packages a name that starts with "lua", so the +Buildroot name is different from the upstream name. LUA_FOO_NAME_UPSTREAM +makes the link between the two names.

    On line 9, we declare our dependencies against native libraries, so that they +are built before the build process of our package starts.

    On lines 11-12, we tell Buildroot to pass custom options to LuaRocks when it is +building the package.

    On lines 13-14, we specify the licensing terms for the package.

    Finally, on line 16, we invoke the luarocks-package +macro that generates all the Makefile rules that actually allows the +package to be built.

    Most of these details can be retrieved from the rock and rockspec. +So, this file and the Config.in file can be generated by running the +command luarocks buildroot foo lua-foo in the Buildroot +directory. This command runs a specific Buildroot addon of luarocks +that will automatically generate a Buildroot package. The result must +still be manually inspected and possibly modified.

    • +The package/Config.in file has to be updated manually to include the + generated Config.in files. +

    18.10.2. luarocks-package reference

    LuaRocks is a deployment and management system for Lua modules, and supports +various build.type: builtin, make and cmake. In the context of +Buildroot, the luarocks-package infrastructure only supports the builtin +mode. LuaRocks packages that use the make or cmake build mechanisms +should instead be packaged using the generic-package and cmake-package +infrastructures in Buildroot, respectively.

    The main macro of the LuaRocks package infrastructure is luarocks-package: +like generic-package it works by defining a number of variables providing +metadata information about the package, and then calling luarocks-package.

    Just like the generic infrastructure, the LuaRocks infrastructure works +by defining a number of variables before calling the luarocks-package +macro.

    First, all the package metadata information variables that exist in +the generic infrastructure also exist in the LuaRocks infrastructure: +LUA_FOO_VERSION, LUA_FOO_SOURCE, LUA_FOO_SITE, +LUA_FOO_DEPENDENCIES, LUA_FOO_LICENSE, LUA_FOO_LICENSE_FILES.

    Two of them are populated by the LuaRocks infrastructure (for the +download step). If your package is not hosted on the LuaRocks mirror +$(BR2_LUAROCKS_MIRROR), you can override them:

    • +LUA_FOO_SITE, which defaults to $(BR2_LUAROCKS_MIRROR) +
    • +LUA_FOO_SOURCE, which defaults to + $(lowercase LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).src.rock +

    A few additional variables, specific to the LuaRocks infrastructure, are +also defined. They can be overridden in specific cases.

    • +LUA_FOO_NAME_UPSTREAM, which defaults to lua-foo, i.e. the Buildroot + package name +
    • +LUA_FOO_ROCKSPEC, which defaults to + $(lowercase LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).rockspec +
    • +LUA_FOO_SUBDIR, which defaults to + $(LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION_WITHOUT_ROCKSPEC_REVISION) +
    • +LUA_FOO_BUILD_OPTS contains additional build options for the + luarocks build call. +

    18.11. Infrastructure for Perl/CPAN packages

    18.11.1. perl-package tutorial

    First, let’s see how to write a .mk file for a Perl/CPAN package, +with an example :

    01: ################################################################################
    +02: #
    +03: # perl-foo-bar
    +04: #
    +05: ################################################################################
    +06:
    +07: PERL_FOO_BAR_VERSION = 0.02
    +08: PERL_FOO_BAR_SOURCE = Foo-Bar-$(PERL_FOO_BAR_VERSION).tar.gz
    +09: PERL_FOO_BAR_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MO/MONGER
    +10: PERL_FOO_BAR_DEPENDENCIES = perl-strictures
    +11: PERL_FOO_BAR_LICENSE = Artistic or GPL-1.0+
    +12: PERL_FOO_BAR_LICENSE_FILES = LICENSE
    +13: PERL_FOO_BAR_DISTNAME = Foo-Bar
    +14:
    +15: $(eval $(perl-package))

    On line 7, we declare the version of the package.

    On line 8 and 9, we declare the name of the tarball and the location +of the tarball on a CPAN server. Buildroot will automatically download +the tarball from this location.

    On line 10, we declare our dependencies, so that they are built +before the build process of our package starts.

    On line 11 and 12, we give licensing details about the package (its +license on line 11, and the file containing the license text on line +12).

    On line 13, the name of the distribution as needed by the script +utils/scancpan (in order to regenerate/upgrade these package files).

    Finally, on line 15, we invoke the perl-package macro that +generates all the Makefile rules that actually allow the package to be +built.

    Most of these data can be retrieved from https://metacpan.org/. +So, this file and the Config.in can be generated by running +the script utils/scancpan Foo-Bar in the Buildroot directory +(or in a br2-external tree). +This script creates a Config.in file and foo-bar.mk file for the +requested package, and also recursively for all dependencies specified by +CPAN. You should still manually edit the result. In particular, the +following things should be checked.

    • +If the perl module links with a shared library that is provided by + another (non-perl) package, this dependency is not added automatically. + It has to be added manually to PERL_FOO_BAR_DEPENDENCIES. +
    • +The package/Config.in file has to be updated manually to include the + generated Config.in files. As a hint, the scancpan script prints out + the required source "…" statements, sorted alphabetically. +

    18.11.2. perl-package reference

    As a policy, packages that provide Perl/CPAN modules should all be +named perl-<something> in Buildroot.

    This infrastructure handles various Perl build systems : +ExtUtils-MakeMaker (EUMM), Module-Build (MB) and Module-Build-Tiny. +Build.PL is preferred by default when a package provides a Makefile.PL +and a Build.PL.

    The main macro of the Perl/CPAN package infrastructure is +perl-package. It is similar to the generic-package macro. The ability to +have target and host packages is also available, with the +host-perl-package macro.

    Just like the generic infrastructure, the Perl/CPAN infrastructure +works by defining a number of variables before calling the +perl-package macro.

    First, all the package metadata information variables that exist in the +generic infrastructure also exist in the Perl/CPAN infrastructure: +PERL_FOO_VERSION, PERL_FOO_SOURCE, +PERL_FOO_PATCH, PERL_FOO_SITE, +PERL_FOO_SUBDIR, PERL_FOO_DEPENDENCIES, +PERL_FOO_INSTALL_TARGET.

    Note that setting PERL_FOO_INSTALL_STAGING to YES has no effect +unless a PERL_FOO_INSTALL_STAGING_CMDS variable is defined. The perl +infrastructure doesn’t define these commands since Perl modules generally +don’t need to be installed to the staging directory.

    A few additional variables, specific to the Perl/CPAN infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them.

    • +PERL_FOO_PREFER_INSTALLER/HOST_PERL_FOO_PREFER_INSTALLER, + specifies the preferred installation method. Possible values are + EUMM (for Makefile.PL based installation using + ExtUtils-MakeMaker) and MB (for Build.PL based installation + using Module-Build). This variable is only used when the package + provides both installation methods. +
    • +PERL_FOO_CONF_ENV/HOST_PERL_FOO_CONF_ENV, to specify additional + environment variables to pass to the perl Makefile.PL or perl Build.PL. + By default, empty. +
    • +PERL_FOO_CONF_OPTS/HOST_PERL_FOO_CONF_OPTS, to specify additional + configure options to pass to the perl Makefile.PL or perl Build.PL. + By default, empty. +
    • +PERL_FOO_BUILD_OPTS/HOST_PERL_FOO_BUILD_OPTS, to specify additional + options to pass to make pure_all or perl Build build in the build step. + By default, empty. +
    • +PERL_FOO_INSTALL_TARGET_OPTS, to specify additional options to + pass to make pure_install or perl Build install in the install step. + By default, empty. +
    • +HOST_PERL_FOO_INSTALL_OPTS, to specify additional options to + pass to make pure_install or perl Build install in the install step. + By default, empty. +

    18.12. Infrastructure for virtual packages

    In Buildroot, a virtual package is a package whose functionalities are +provided by one or more packages, referred to as providers. The virtual +package management is an extensible mechanism allowing the user to choose +the provider used in the rootfs.

    For example, OpenGL ES is an API for 2D and 3D graphics on embedded systems. +The implementation of this API is different for the Allwinner Tech Sunxi and +the Texas Instruments OMAP35xx platforms. So libgles will be a virtual +package and sunxi-mali-utgard and ti-gfx will be the providers.

    18.12.1. virtual-package tutorial

    In the following example, we will explain how to add a new virtual package +(something-virtual) and a provider for it (some-provider).

    First, let’s create the virtual package.

    18.12.2. Virtual package’s Config.in file

    The Config.in file of virtual package something-virtual should contain:

    01: config BR2_PACKAGE_HAS_SOMETHING_VIRTUAL
    +02:     bool
    +03:
    +04: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL
    +05:     depends on BR2_PACKAGE_HAS_SOMETHING_VIRTUAL
    +06:     string

    In this file, we declare two options, BR2_PACKAGE_HAS_SOMETHING_VIRTUAL and +BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL, whose values will be used by the +providers.

    18.12.3. Virtual package’s .mk file

    The .mk for the virtual package should just evaluate the virtual-package macro:

    01: ################################################################################
    +02: #
    +03: # something-virtual
    +04: #
    +05: ################################################################################
    +06:
    +07: $(eval $(virtual-package))

    The ability to have target and host packages is also available, with the +host-virtual-package macro.

    18.12.4. Provider’s Config.in file

    When adding a package as a provider, only the Config.in file requires some +modifications.

    The Config.in file of the package some-provider, which provides the +functionalities of something-virtual, should contain:

    01: config BR2_PACKAGE_SOME_PROVIDER
    +02:     bool "some-provider"
    +03:     select BR2_PACKAGE_HAS_SOMETHING_VIRTUAL
    +04:     help
    +05:       This is a comment that explains what some-provider is.
    +06:
    +07:       http://foosoftware.org/some-provider/
    +08:
    +09: if BR2_PACKAGE_SOME_PROVIDER
    +10: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL
    +11:     default "some-provider"
    +12: endif

    On line 3, we select BR2_PACKAGE_HAS_SOMETHING_VIRTUAL, and on line 11, we +set the value of BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL to the name of the +provider, but only if it is selected.

    18.12.5. Provider’s .mk file

    The .mk file should also declare an additional variable +SOME_PROVIDER_PROVIDES to contain the names of all the virtual +packages it is an implementation of:

    01: SOME_PROVIDER_PROVIDES = something-virtual

    Of course, do not forget to add the proper build and runtime dependencies for +this package!

    18.12.6. Notes on depending on a virtual package

    When adding a package that requires a certain FEATURE provided by a virtual +package, you have to use depends on BR2_PACKAGE_HAS_FEATURE, like so:

    config BR2_PACKAGE_HAS_FEATURE
    +    bool
    +
    +config BR2_PACKAGE_FOO
    +    bool "foo"
    +    depends on BR2_PACKAGE_HAS_FEATURE

    18.12.7. Notes on depending on a specific provider

    If your package really requires a specific provider, then you’ll have to +make your package depends on this provider; you can not select a +provider.

    Let’s take an example with two providers for a FEATURE:

    config BR2_PACKAGE_HAS_FEATURE
    +    bool
    +
    +config BR2_PACKAGE_FOO
    +    bool "foo"
    +    select BR2_PACKAGE_HAS_FEATURE
    +
    +config BR2_PACKAGE_BAR
    +    bool "bar"
    +    select BR2_PACKAGE_HAS_FEATURE

    And you are adding a package that needs FEATURE as provided by foo, +but not as provided by bar.

    If you were to use select BR2_PACKAGE_FOO, then the user would still +be able to select BR2_PACKAGE_BAR in the menuconfig. This would create +a configuration inconsistency, whereby two providers of the same FEATURE +would be enabled at once, one explicitly set by the user, the other +implicitly by your select.

    Instead, you have to use depends on BR2_PACKAGE_FOO, which avoids any +implicit configuration inconsistency.

    18.13. Infrastructure for packages using kconfig for configuration files

    A popular way for a software package to handle user-specified +configuration is kconfig. Among others, it is used by the Linux +kernel, Busybox, and Buildroot itself. The presence of a .config file +and a menuconfig target are two well-known symptoms of kconfig being +used.

    Buildroot features an infrastructure for packages that use kconfig for +their configuration. This infrastructure provides the necessary logic to +expose the package’s menuconfig target as foo-menuconfig in +Buildroot, and to handle the copying back and forth of the configuration +file in a correct way.

    The kconfig-package infrastructure is based on the generic-package +infrastructure. All variables supported by generic-package are +available in kconfig-package as well. See +Section 18.6.2, “generic-package reference” for more details.

    In order to use the kconfig-package infrastructure for a Buildroot +package, the minimally required lines in the .mk file, in addition to +the variables required by the generic-package infrastructure, are:

    FOO_KCONFIG_FILE = reference-to-source-configuration-file
    +
    +$(eval $(kconfig-package))

    This snippet creates the following make targets:

    • +foo-menuconfig, which calls the package’s menuconfig target +
    • +foo-update-config, which copies the configuration back to the + source configuration file. It is not possible to use this target + when fragment files are set. +
    • +foo-update-defconfig, which copies the configuration back to the + source configuration file. The configuration file will only list the + options that differ from the default values. It is not possible to + use this target when fragment files are set. +
    • +foo-diff-config, which outputs the differences between the current + configuration and the one defined in the Buildroot configuration for + this kconfig package. The output is useful to identify the + configuration changes that may have to be propagated to + configuration fragments for example. +

    and ensures that the source configuration file is copied to the build +directory at the right moment.

    There are two options to specify a configuration file to use, either +FOO_KCONFIG_FILE (as in the example, above) or FOO_KCONFIG_DEFCONFIG. +It is mandatory to provide either, but not both:

    • +FOO_KCONFIG_FILE specifies the path to a defconfig or full-config file + to be used to configure the package. +
    • +FOO_KCONFIG_DEFCONFIG specifies the defconfig make rule to call to + configure the package. +

    In addition to these minimally required lines, several optional variables can +be set to suit the needs of the package under consideration:

    • +FOO_KCONFIG_EDITORS: a space-separated list of kconfig editors to + support, for example menuconfig xconfig. By default, menuconfig. +
    • +FOO_KCONFIG_FRAGMENT_FILES: a space-separated list of configuration + fragment files that are merged to the main configuration file. + Fragment files are typically used when there is a desire to stay in sync + with an upstream (def)config file, with some minor modifications. +
    • +FOO_KCONFIG_OPTS: extra options to pass when calling the kconfig + editors. This may need to include $(FOO_MAKE_OPTS), for example. By + default, empty. +
    • +FOO_KCONFIG_FIXUP_CMDS: a list of shell commands needed to fixup the + configuration file after copying it or running a kconfig editor. Such + commands may be needed to ensure a configuration consistent with other + configuration of Buildroot, for example. By default, empty. +
    • +FOO_KCONFIG_DOTCONFIG: path (with filename) of the .config file, + relative to the package source tree. The default, .config, should + be well suited for all packages that use the standard kconfig + infrastructure as inherited from the Linux kernel; some packages use + a derivative of kconfig that use a different location. +
    • +FOO_KCONFIG_DEPENDENCIES: the list of packages (most probably, host + packages) that need to be built before this package’s kconfig is + interpreted. Seldom used. By default, empty. +
    • +FOO_KCONFIG_SUPPORTS_DEFCONFIG: whether the package’s kconfig system + supports using defconfig files; few packages do not. By default, YES. +

    18.14. Infrastructure for rebar-based packages

    18.14.1. rebar-package tutorial

    First, let’s see how to write a .mk file for a rebar-based package, +with an example :

    01: ################################################################################
    +02: #
    +03: # erlang-foobar
    +04: #
    +05: ################################################################################
    +06:
    +07: ERLANG_FOOBAR_VERSION = 1.0
    +08: ERLANG_FOOBAR_SOURCE = erlang-foobar-$(ERLANG_FOOBAR_VERSION).tar.xz
    +09: ERLANG_FOOBAR_SITE = http://www.foosoftware.org/download
    +10: ERLANG_FOOBAR_DEPENDENCIES = host-libaaa libbbb
    +11:
    +12: $(eval $(rebar-package))

    On line 7, we declare the version of the package.

    On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location.

    On line 10, we declare our dependencies, so that they are built +before the build process of our package starts.

    Finally, on line 12, we invoke the rebar-package macro that +generates all the Makefile rules that actually allows the package to +be built.

    18.14.2. rebar-package reference

    The main macro of the rebar package infrastructure is +rebar-package. It is similar to the generic-package macro. The +ability to have host packages is also available, with the +host-rebar-package macro.

    Just like the generic infrastructure, the rebar infrastructure works +by defining a number of variables before calling the rebar-package +macro.

    First, all the package metadata information variables that exist in +the generic infrastructure also exist in the rebar infrastructure: +ERLANG_FOOBAR_VERSION, ERLANG_FOOBAR_SOURCE, +ERLANG_FOOBAR_PATCH, ERLANG_FOOBAR_SITE, +ERLANG_FOOBAR_SUBDIR, ERLANG_FOOBAR_DEPENDENCIES, +ERLANG_FOOBAR_INSTALL_STAGING, ERLANG_FOOBAR_INSTALL_TARGET, +ERLANG_FOOBAR_LICENSE and ERLANG_FOOBAR_LICENSE_FILES.

    A few additional variables, specific to the rebar infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them.

    • +ERLANG_FOOBAR_USE_AUTOCONF, to specify that the package uses + autoconf at the configuration step. When a package sets this + variable to YES, the autotools infrastructure is used. +

      Note. You can also use some of the variables from the autotools + infrastructure: ERLANG_FOOBAR_CONF_ENV, ERLANG_FOOBAR_CONF_OPTS, + ERLANG_FOOBAR_AUTORECONF, ERLANG_FOOBAR_AUTORECONF_ENV and + ERLANG_FOOBAR_AUTORECONF_OPTS.

    • +ERLANG_FOOBAR_USE_BUNDLED_REBAR, to specify that the package has + a bundled version of rebar and that it shall be used. Valid + values are YES or NO (the default). +

      Note. If the package bundles a rebar utility, but can use the generic + one that Buildroot provides, just say NO (i.e., do not specify + this variable). Only set if it is mandatory to use the rebar + utility bundled in this package.

    • +ERLANG_FOOBAR_REBAR_ENV, to specify additional environment + variables to pass to the rebar utility. +
    • +ERLANG_FOOBAR_KEEP_DEPENDENCIES, to keep the dependencies + described in the rebar.config file. Valid values are YES or NO + (the default). Unless this variable is set to YES, the rebar + infrastructure removes such dependencies in a post-patch hook to + ensure rebar does not download nor compile them. +

    With the rebar infrastructure, all the steps required to build +and install the packages are already defined, and they generally work +well for most rebar-based packages. However, when required, it is +still possible to customize what is done in any particular step:

    • +By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the various build steps” for details. +
    • +By overriding one of the steps. For example, even if the rebar + infrastructure is used, if the package .mk file defines its + own ERLANG_FOOBAR_BUILD_CMDS variable, it will be used instead + of the default rebar one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. +

    18.15. Infrastructure for Waf-based packages

    18.15.1. waf-package tutorial

    First, let’s see how to write a .mk file for a Waf-based package, with +an example :

    01: ################################################################################
    +02: #
    +03: # libfoo
    +04: #
    +05: ################################################################################
    +06:
    +07: LIBFOO_VERSION = 1.0
    +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
    +09: LIBFOO_SITE = http://www.foosoftware.org/download
    +10: LIBFOO_CONF_OPTS = --enable-bar --disable-baz
    +11: LIBFOO_DEPENDENCIES = bar
    +12:
    +13: $(eval $(waf-package))

    On line 7, we declare the version of the package.

    On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location.

    On line 10, we tell Buildroot what options to enable for libfoo.

    On line 11, we tell Buildroot the dependencies of libfoo.

    Finally, on line line 13, we invoke the waf-package +macro that generates all the Makefile rules that actually allows the +package to be built.

    18.15.2. waf-package reference

    The main macro of the Waf package infrastructure is waf-package. +It is similar to the generic-package macro.

    Just like the generic infrastructure, the Waf infrastructure works +by defining a number of variables before calling the waf-package +macro.

    First, all the package metadata information variables that exist in +the generic infrastructure also exist in the Waf infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, LIBFOO_INSTALL_STAGING, +LIBFOO_INSTALL_TARGET.

    An additional variable, specific to the Waf infrastructure, can +also be defined.

    • +LIBFOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main wscript file. This is useful, + if for example, the main wscript file is not at the root of + the tree extracted by the tarball. If HOST_LIBFOO_SUBDIR is not + specified, it defaults to LIBFOO_SUBDIR. +
    • +LIBFOO_NEEDS_EXTERNAL_WAF can be set to YES or NO to tell + Buildroot to use the bundled waf executable. If set to NO, the + default, then Buildroot will use the waf executable provided in the + package source tree; if set to YES, then Buildroot will download, + install waf as a host tool and use it to build the package. +
    • +LIBFOO_WAF_OPTS, to specify additional options to pass to the + waf script at every step of the package build process: configure, + build and installation. By default, empty. +
    • +LIBFOO_CONF_OPTS, to specify additional options to pass to the + waf script for the configuration step. By default, empty. +
    • +LIBFOO_BUILD_OPTS, to specify additional options to pass to the + waf script during the build step. By default, empty. +
    • +LIBFOO_INSTALL_STAGING_OPTS, to specify additional options to pass + to the waf script during the staging installation step. By default, + empty. +
    • +LIBFOO_INSTALL_TARGET_OPTS, to specify additional options to pass + to the waf script during the target installation step. By default, + empty. +

    18.16. Infrastructure for Meson-based packages

    18.16.1. meson-package tutorial

    Meson is an open source build system meant to be both +extremely fast, and, even more importantly, as user friendly as possible. It +uses Ninja as a companion tool to perform the actual +build operations.

    Let’s see how to write a .mk file for a Meson-based package, with an example:

    01: ################################################################################
    +02: #
    +03: # foo
    +04: #
    +05: ################################################################################
    +06:
    +07: FOO_VERSION = 1.0
    +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz
    +09: FOO_SITE = http://www.foosoftware.org/download
    +10: FOO_LICENSE = GPL-3.0+
    +11: FOO_LICENSE_FILES = COPYING
    +12: FOO_INSTALL_STAGING = YES
    +13:
    +14: FOO_DEPENDENCIES = host-pkgconf bar
    +15:
    +16: ifeq ($(BR2_PACKAGE_BAZ),y)
    +17: FOO_CONF_OPTS += -Dbaz=true
    +18: FOO_DEPENDENCIES += baz
    +19: else
    +20: FOO_CONF_OPTS += -Dbaz=false
    +21: endif
    +22:
    +23: $(eval $(meson-package))

    The Makefile starts with the definition of the standard variables for package +declaration (lines 7 to 11).

    On line line 23, we invoke the meson-package macro that generates all the +Makefile rules that actually allows the package to be built.

    In the example, host-pkgconf and bar are declared as dependencies in +FOO_DEPENDENCIES at line 14 because the Meson build file of foo uses +pkg-config to determine the compilation flags and libraries of package bar.

    Note that it is not necessary to add host-meson in the FOO_DEPENDENCIES +variable of a package, since this basic dependency is automatically added as +needed by the Meson package infrastructure.

    If the "baz" package is selected, then support for the "baz" feature in "foo" is +activated by adding -Dbaz=true to FOO_CONF_OPTS at line 17, as specified in +the meson_options.txt file in "foo" source tree. The "baz" package is also +added to FOO_DEPENDENCIES. Note that the support for baz is explicitly +disabled at line 20, if the package is not selected.

    To sum it up, to add a new meson-based package, the Makefile example can be +copied verbatim then edited to replace all occurences of FOO with the +uppercase name of the new package and update the values of the standard +variables.

    18.16.2. meson-package reference

    The main macro of the Meson package infrastructure is meson-package. It is +similar to the generic-package macro. The ability to have target and host +packages is also available, with the host-meson-package macro.

    Just like the generic infrastructure, the Meson infrastructure works by defining +a number of variables before calling the meson-package macro.

    First, all the package metadata information variables that exist in the generic +infrastructure also exist in the Meson infrastructure: FOO_VERSION, +FOO_SOURCE, FOO_PATCH, FOO_SITE, FOO_SUBDIR, FOO_DEPENDENCIES, +FOO_INSTALL_STAGING, FOO_INSTALL_TARGET.

    A few additional variables, specific to the Meson infrastructure, can also be +defined. Many of them are only useful in very specific cases, typical packages +will therefore only use a few of them.

    • +FOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main meson.build file. This is useful, + if for example, the main meson.build file is not at the root of + the tree extracted by the tarball. If HOST_FOO_SUBDIR is not + specified, it defaults to FOO_SUBDIR. +
    • +FOO_CONF_ENV, to specify additional environment variables to pass to + meson for the configuration step. By default, empty. +
    • +FOO_CONF_OPTS, to specify additional options to pass to meson for the + configuration step. By default, empty. +
    • +FOO_CFLAGS, to specify compiler arguments added to the package specific + cross-compile.conf file c_args property. By default, the value of + TARGET_CFLAGS. +
    • +FOO_CXXFLAGS, to specify compiler arguments added to the package specific + cross-compile.conf file cpp_args property. By default, the value of + TARGET_CXXFLAGS. +
    • +FOO_LDFLAGS, to specify compiler arguments added to the package specific + cross-compile.conf file c_link_args and cpp_link_args properties. By + default, the value of TARGET_LDFLAGS. +
    • +FOO_MESON_EXTRA_BINARIES, to specify a space-separated list of programs + to add to the [binaries] section of the meson cross-compilation.conf + configuration file. The format is program-name='/path/to/program', with + no space around the = sign, and with the path of the program between + single quotes. By default, empty. Note that Buildroot already sets the + correct values for c, cpp, ar, strip, and pkgconfig. +
    • +FOO_MESON_EXTRA_PROPERTIES, to specify a space-separated list of + properties to add to the [properties] section of the meson + cross-compilation.conf configuration file. The format is + property-name=<value> with no space around the = sign, and with + single quotes around string values. By default, empty. Note that + Buildroot already sets values for needs_exe_wrapper, c_args, + c_link_args, cpp_args, cpp_link_args, sys_root, and + pkg_config_libdir. +
    • +FOO_NINJA_ENV, to specify additional environment variables to pass to + ninja, meson companion tool in charge of the build operations. By default, + empty. +
    • +FOO_NINJA_OPTS, to specify a space-separated list of targets to build. By + default, empty, to build the default target(s). +

    18.17. Infrastructure for Cargo-based packages

    Cargo is the package manager for the Rust programming language. It allows the +user to build programs or libraries written in Rust, but it also downloads and +manages their dependencies, to ensure repeatable builds. Cargo packages are +called "crates".

    18.17.1. cargo-package tutorial

    The Config.in file of Cargo-based package foo should contain:

    01: config BR2_PACKAGE_FOO
    +02:     bool "foo"
    +03:     depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
    +04:     select BR2_PACKAGE_HOST_RUSTC
    +05:     help
    +06:       This is a comment that explains what foo is.
    +07:
    +08:       http://foosoftware.org/foo/

    And the .mk file for this package should contain:

    01: ################################################################################
    +02: #
    +03: # foo
    +04: #
    +05: ################################################################################
    +06:
    +07: FOO_VERSION = 1.0
    +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz
    +09: FOO_SITE = http://www.foosoftware.org/download
    +10: FOO_LICENSE = GPL-3.0+
    +11: FOO_LICENSE_FILES = COPYING
    +12:
    +13: $(eval $(cargo-package))

    The Makefile starts with the definition of the standard variables for +package declaration (lines 7 to 11).

    As seen in line 13, it is based on the cargo-package +infrastructure. Cargo will be invoked automatically by this +infrastructure to build and install the package.

    It is still possible to define custom build commands or install +commands (i.e. with FOO_BUILD_CMDS and FOO_INSTALL_TARGET_CMDS). +Those will then replace the commands from the cargo infrastructure.

    18.17.2. cargo-package reference

    The main macros for the Cargo package infrastructure are +cargo-package for target packages and host-cargo-package for host +packages.

    Just like the generic infrastructure, the Cargo infrastructure works +by defining a number of variables before calling the cargo-package +or host-cargo-package macros.

    First, all the package metadata information variables that exist in +the generic infrastructure also exist in the Cargo infrastructure: +FOO_VERSION, FOO_SOURCE, FOO_PATCH, FOO_SITE, +FOO_DEPENDENCIES, FOO_LICENSE, FOO_LICENSE_FILES, etc.

    A few additional variables, specific to the Cargo infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them.

    • +FOO_SUBDIR may contain the name of a subdirectory inside the package + that contains the Cargo.toml file. This is useful, if for example, it + is not at the root of the tree extracted by the tarball. If + HOST_FOO_SUBDIR is not specified, it defaults to FOO_SUBDIR. +
    • +FOO_CARGO_ENV can be used to pass additional variables in the + environment of cargo invocations. It used at both build and + installation time +
    • +FOO_CARGO_BUILD_OPTS can be used to pass additional options to + cargo at build time. +
    • +FOO_CARGO_INSTALL_OPTS can be used to pass additional options to + cargo at install time. +

    A crate can depend on other libraries from crates.io or git +repositories, listed in its Cargo.toml file. Buildroot automatically +takes care of downloading such dependencies as part of the download +step of packages that use the cargo-package infrastructure. Such +dependencies are then kept together with the package source code in +the tarball cached in Buildroot’s DL_DIR, and therefore the hash of +the package’s tarball includes such dependencies.

    This mechanism ensures that any change in the dependencies will be +detected, and allows the build to be performed completely offline.

    18.18. Infrastructure for Go packages

    This infrastructure applies to Go packages that use the standard +build system and use bundled dependencies.

    18.18.1. golang-package tutorial

    First, let’s see how to write a .mk file for a go package, +with an example :

    01: ################################################################################
    +02: #
    +03: # foo
    +04: #
    +05: ################################################################################
    +06:
    +07: FOO_VERSION = 1.0
    +08: FOO_SITE = $(call github,bar,foo,$(FOO_VERSION))
    +09: FOO_LICENSE = BSD-3-Clause
    +10: FOO_LICENSE_FILES = LICENSE
    +11:
    +12: $(eval $(golang-package))

    On line 7, we declare the version of the package.

    On line 8, we declare the upstream location of the package, here +fetched from Github, since a large number of Go packages are hosted on +Github.

    On line 9 and 10, we give licensing details about the package.

    Finally, on line 12, we invoke the golang-package macro that +generates all the Makefile rules that actually allow the package to be +built.

    18.18.2. golang-package reference

    In their Config.in file, packages using the golang-package +infrastructure should depend on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS +because Buildroot will automatically add a dependency on host-go +to such packages. +If you need CGO support in your package, you must add a dependency on +BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS.

    The main macro of the Go package infrastructure is +golang-package. It is similar to the generic-package macro. The +ability to build host packages is also available, with the +host-golang-package macro. +Host packages built by host-golang-package macro should depend on +BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS.

    Just like the generic infrastructure, the Go infrastructure works +by defining a number of variables before calling the golang-package.

    All the package metadata information variables that exist in the +generic package infrastructure also +exist in the Go infrastructure: FOO_VERSION, FOO_SOURCE, +FOO_PATCH, FOO_SITE, FOO_SUBDIR, FOO_DEPENDENCIES, +FOO_LICENSE, FOO_LICENSE_FILES, FOO_INSTALL_STAGING, etc.

    Note that it is not necessary to add host-go in the +FOO_DEPENDENCIES variable of a package, since this basic dependency +is automatically added as needed by the Go package infrastructure.

    A few additional variables, specific to the Go infrastructure, can +optionally be defined, depending on the package’s needs. Many of them +are only useful in very specific cases, typical packages will +therefore only use a few of them, or none.

    • +The package must specify its Go module name in the FOO_GOMOD + variable. If not specified, it defaults to + URL-domain/1st-part-of-URL/2nd-part-of-URL, e.g FOO_GOMOD will + take the value github.com/bar/foo for a package that specifies + FOO_SITE = $(call github,bar,foo,$(FOO_VERSION)). The Go package + infrastructure will automatically generate a minimal go.mod file + in the package source tree if it doesn’t exist. +
    • +FOO_LDFLAGS and FOO_TAGS can be used to pass respectively the + LDFLAGS or the TAGS to the go build command. +
    • +FOO_BUILD_TARGETS can be used to pass the list of targets that + should be built. If FOO_BUILD_TARGETS is not specified, it + defaults to .. We then have two cases: +

      • +FOO_BUILD_TARGETS is .. In this case, we assume only one binary + will be produced, and that by default we name it after the package + name. If that is not appropriate, the name of the produced binary + can be overridden using FOO_BIN_NAME. +
      • +FOO_BUILD_TARGETS is not .. In this case, we iterate over the + values to build each target, and for each produced a binary that is + the non-directory component of the target. For example if + FOO_BUILD_TARGETS = cmd/docker cmd/dockerd the binaries produced + are docker and dockerd. +
    • +FOO_INSTALL_BINS can be used to pass the list of binaries that + should be installed in /usr/bin on the target. If + FOO_INSTALL_BINS is not specified, it defaults to the lower-case + name of package. +

    With the Go infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most Go-based packages. However, when required, it is still +possible to customize what is done in any particular step:

    • +By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the various build steps” for details. +
    • +By overriding one of the steps. For example, even if the Go + infrastructure is used, if the package .mk file defines its own + FOO_BUILD_CMDS variable, it will be used instead of the default Go + one. However, using this method should be restricted to very + specific cases. Do not use it in the general case. +

    A Go package can depend on other Go modules, listed in its go.mod +file. Buildroot automatically takes care of downloading such +dependencies as part of the download step of packages that use the +golang-package infrastructure. Such dependencies are then kept +together with the package source code in the tarball cached in +Buildroot’s DL_DIR, and therefore the hash of the package’s tarball +includes such dependencies.

    This mechanism ensures that any change in the dependencies will be +detected, and allows the build to be performed completely offline.

    18.19. Infrastructure for QMake-based packages

    18.19.1. qmake-package tutorial

    First, let’s see how to write a .mk file for a QMake-based package, with +an example :

    01: ################################################################################
    +02: #
    +03: # libfoo
    +04: #
    +05: ################################################################################
    +06:
    +07: LIBFOO_VERSION = 1.0
    +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
    +09: LIBFOO_SITE = http://www.foosoftware.org/download
    +10: LIBFOO_CONF_OPTS = QT_CONFIG+=bar QT_CONFIG-=baz
    +11: LIBFOO_DEPENDENCIES = bar
    +12:
    +13: $(eval $(qmake-package))

    On line 7, we declare the version of the package.

    On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location.

    On line 10, we tell Buildroot what options to enable for libfoo.

    On line 11, we tell Buildroot the dependencies of libfoo.

    Finally, on line line 13, we invoke the qmake-package +macro that generates all the Makefile rules that actually allows the +package to be built.

    18.19.2. qmake-package reference

    The main macro of the QMake package infrastructure is qmake-package. +It is similar to the generic-package macro.

    Just like the generic infrastructure, the QMake infrastructure works +by defining a number of variables before calling the qmake-package +macro.

    First, all the package metadata information variables that exist in +the generic infrastructure also exist in the QMake infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, LIBFOO_INSTALL_STAGING, +LIBFOO_INSTALL_TARGET.

    An additional variable, specific to the QMake infrastructure, can +also be defined.

    • +LIBFOO_CONF_ENV, to specify additional environment variables to + pass to the qmake script for the configuration step. By default, empty. +
    • +LIBFOO_CONF_OPTS, to specify additional options to pass to the + qmake script for the configuration step. By default, empty. +
    • +LIBFOO_MAKE_ENV, to specify additional environment variables to the + make command during the build and install steps. By default, empty. +
    • +LIBFOO_MAKE_OPTS, to specify additional targets to pass to the + make command during the build step. By default, empty. +
    • +LIBFOO_INSTALL_STAGING_OPTS, to specify additional targets to pass + to the make command during the staging installation step. By default, + install. +
    • +LIBFOO_INSTALL_TARGET_OPTS, to specify additional targets to pass + to the make command during the target installation step. By default, + install. +
    • +LIBFOO_SYNC_QT_HEADERS, to run syncqt.pl before qmake. Some packages + need this to have a properly populated include directory before + running the build. +

    18.20. Infrastructure for packages building kernel modules

    Buildroot offers a helper infrastructure to make it easy to write packages that +build and install Linux kernel modules. Some packages only contain a kernel +module, other packages contain programs and libraries in addition to kernel +modules. Buildroot’s helper infrastructure supports either case.

    18.20.1. kernel-module tutorial

    Let’s start with an example on how to prepare a simple package that only +builds a kernel module, and no other component:

    01: ################################################################################
    +02: #
    +03: # foo
    +04: #
    +05: ################################################################################
    +06:
    +07: FOO_VERSION = 1.2.3
    +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz
    +09: FOO_SITE = http://www.foosoftware.org/download
    +10: FOO_LICENSE = GPL-2.0
    +11: FOO_LICENSE_FILES = COPYING
    +12:
    +13: $(eval $(kernel-module))
    +14: $(eval $(generic-package))

    Lines 7-11 define the usual meta-data to specify the version, archive name, +remote URI where to find the package source, licensing information.

    On line 13, we invoke the kernel-module helper infrastructure, that +generates all the appropriate Makefile rules and variables to build +that kernel module.

    Finally, on line 14, we invoke the +generic-package infrastructure.

    The dependency on linux is automatically added, so it is not needed to +specify it in FOO_DEPENDENCIES.

    What you may have noticed is that, unlike other package infrastructures, +we explicitly invoke a second infrastructure. This allows a package to +build a kernel module, but also, if needed, use any one of other package +infrastructures to build normal userland components (libraries, +executables…). Using the kernel-module infrastructure on its own is +not sufficient; another package infrastructure must be used.

    Let’s look at a more complex example:

    01: ################################################################################
    +02: #
    +03: # foo
    +04: #
    +05: ################################################################################
    +06:
    +07: FOO_VERSION = 1.2.3
    +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz
    +09: FOO_SITE = http://www.foosoftware.org/download
    +10: FOO_LICENSE = GPL-2.0
    +11: FOO_LICENSE_FILES = COPYING
    +12:
    +13: FOO_MODULE_SUBDIRS = driver/base
    +14: FOO_MODULE_MAKE_OPTS = KVERSION=$(LINUX_VERSION_PROBED)
    +15:
    +16: ifeq ($(BR2_PACKAGE_LIBBAR),y)
    +17: FOO_DEPENDENCIES += libbar
    +18: FOO_CONF_OPTS += --enable-bar
    +19: FOO_MODULE_SUBDIRS += driver/bar
    +20: else
    +21: FOO_CONF_OPTS += --disable-bar
    +22: endif
    +23:
    +24: $(eval $(kernel-module))
    +26: $(eval $(autotools-package))

    Here, we see that we have an autotools-based package, that also builds +the kernel module located in sub-directory driver/base and, if libbar +is enabled, the kernel module located in sub-directory driver/bar, and +defines the variable KVERSION to be passed to the Linux buildsystem +when building the module(s).

    18.20.2. kernel-module reference

    The main macro for the kernel module infrastructure is kernel-module. +Unlike other package infrastructures, it is not stand-alone, and requires +any of the other *-package macros be called after it.

    The kernel-module macro defines post-build and post-target-install +hooks to build the kernel modules. If the package’s .mk needs access +to the built kernel modules, it should do so in a post-build hook, +registered after the call to kernel-module. Similarly, if the +package’s .mk needs access to the kernel module after it has been +installed, it should do so in a post-install hook, registered after +the call to kernel-module. Here’s an example:

    $(eval $(kernel-module))
    +
    +define FOO_DO_STUFF_WITH_KERNEL_MODULE
    +    # Do something with it...
    +endef
    +FOO_POST_BUILD_HOOKS += FOO_DO_STUFF_WITH_KERNEL_MODULE
    +
    +$(eval $(generic-package))

    Finally, unlike the other package infrastructures, there is no +host-kernel-module variant to build a host kernel module.

    The following additional variables can optionally be defined to further +configure the build of the kernel module:

    • +FOO_MODULE_SUBDIRS may be set to one or more sub-directories (relative + to the package source top-directory) where the kernel module sources are. + If empty or not set, the sources for the kernel module(s) are considered + to be located at the top of the package source tree. +
    • +FOO_MODULE_MAKE_OPTS may be set to contain extra variable definitions + to pass to the Linux buildsystem. +

    You may also reference (but you may not set!) those variables:

    • +LINUX_DIR contains the path to where the Linux kernel has been + extracted and built. +
    • +LINUX_VERSION contains the version string as configured by the user. +
    • +LINUX_VERSION_PROBED contains the real version string of the kernel, + retrieved with running make -C $(LINUX_DIR) kernelrelease +
    • +KERNEL_ARCH contains the name of the current architecture, like arm, + mips… +

    18.21. Infrastructure for asciidoc documents

    The Buildroot manual, which you are currently reading, is entirely written +using the AsciiDoc mark-up syntax. The manual is then +rendered to many formats:

    • +html +
    • +split-html +
    • +pdf +
    • +epub +
    • +text +

    Although Buildroot only contains one document written in AsciiDoc, there +is, as for packages, an infrastructure for rendering documents using the +AsciiDoc syntax.

    Also as for packages, the AsciiDoc infrastructure is available from a +br2-external tree. This allows documentation for +a br2-external tree to match the Buildroot documentation, as it will be +rendered to the same formats and use the same layout and theme.

    18.21.1. asciidoc-document tutorial

    Whereas package infrastructures are suffixed with -package, the document +infrastructures are suffixed with -document. So, the AsciiDoc infrastructure +is named asciidoc-document.

    Here is an example to render a simple AsciiDoc document.

    01: ################################################################################
    +02: #
    +03: # foo-document
    +04: #
    +05: ################################################################################
    +06:
    +07: FOO_SOURCES = $(sort $(wildcard $(FOO_DOCDIR)/*))
    +08: $(eval $(call asciidoc-document))

    On line 7, the Makefile declares what the sources of the document are. +Currently, it is expected that the document’s sources are only local; +Buildroot will not attempt to download anything to render a document. +Thus, you must indicate where the sources are. Usually, the string +above is sufficient for a document with no sub-directory structure.

    On line 8, we call the asciidoc-document function, which generates all +the Makefile code necessary to render the document.

    18.21.2. asciidoc-document reference

    The list of variables that can be set in a .mk file to give metadata +information is (assuming the document name is foo) :

    • +FOO_SOURCES, mandatory, defines the source files for the document. +
    • +FOO_RESOURCES, optional, may contain a space-separated list of paths + to one or more directories containing so-called resources (like CSS or + images). By default, empty. +
    • +FOO_DEPENDENCIES, optional, the list of packages (most probably, + host-packages) that must be built before building this document. +
    • +FOO_TOC_DEPTH, FOO_TOC_DEPTH_<FMT>, optionals, the depth of the + table of content for this document, which can be overridden for the + specified format <FMT> (see the list of rendered formats, above, + but in uppercase, and with dash replaced by underscore; see example, + below). By default: 1. +

    There are also additional hooks (see Section 18.23, “Hooks available in the various build steps” for general information +on hooks), that a document may set to define extra actions to be done at +various steps:

    • +FOO_POST_RSYNC_HOOKS to run additional commands after the sources + have been copied by Buildroot. This can for example be used to + generate part of the manual with information extracted from the + tree. As an example, Buildroot uses this hook to generate the tables + in the appendices. +
    • +FOO_CHECK_DEPENDENCIES_HOOKS to run additional tests on required + components to generate the document. In AsciiDoc, it is possible to + call filters, that is, programs that will parse an AsciiDoc block and + render it appropriately (e.g. ditaa or + aafigure). +
    • +FOO_CHECK_DEPENDENCIES_<FMT>_HOOKS, to run additional tests for + the specified format <FMT> (see the list of rendered formats, above). +

    Buildroot sets the following variable that can be used in the definitions +above:

    • +$(FOO_DOCDIR), similar to $(FOO_PKGDIR), contains the path to the + directory containing foo.mk. It can be used to refer to the document + sources, and can be used in the hooks, especially the post-rsync hook + if parts of the documentation needs to be generated. +
    • +$(@D), as for traditional packages, contains the path to the directory + where the document will be copied and built. +

    Here is a complete example that uses all variables and all hooks:

    01: ################################################################################
    +02: #
    +03: # foo-document
    +04: #
    +05: ################################################################################
    +06:
    +07: FOO_SOURCES = $(sort $(wildcard $(FOO_DOCDIR)/*))
    +08: FOO_RESOURCES = $(sort $(wildcard $(FOO_DOCDIR)/ressources))
    +09:
    +10: FOO_TOC_DEPTH = 2
    +11: FOO_TOC_DEPTH_HTML = 1
    +12: FOO_TOC_DEPTH_SPLIT_HTML = 3
    +13:
    +14: define FOO_GEN_EXTRA_DOC
    +15:     /path/to/generate-script --outdir=$(@D)
    +16: endef
    +17: FOO_POST_RSYNC_HOOKS += FOO_GEN_EXTRA_DOC
    +18:
    +19: define FOO_CHECK_MY_PROG
    +20:     if ! which my-prog >/dev/null 2>&1; then \
    +21:         echo "You need my-prog to generate the foo document"; \
    +22:         exit 1; \
    +23:     fi
    +24: endef
    +25: FOO_CHECK_DEPENDENCIES_HOOKS += FOO_CHECK_MY_PROG
    +26:
    +27: define FOO_CHECK_MY_OTHER_PROG
    +28:     if ! which my-other-prog >/dev/null 2>&1; then \
    +29:         echo "You need my-other-prog to generate the foo document as PDF"; \
    +30:         exit 1; \
    +31:     fi
    +32: endef
    +33: FOO_CHECK_DEPENDENCIES_PDF_HOOKS += FOO_CHECK_MY_OTHER_PROG
    +34:
    +35: $(eval $(call asciidoc-document))

    18.22. Infrastructure specific to the Linux kernel package

    The Linux kernel package can use some specific infrastructures based on package +hooks for building Linux kernel tools or/and building Linux kernel extensions.

    18.22.1. linux-kernel-tools

    Buildroot offers a helper infrastructure to build some userspace tools +for the target available within the Linux kernel sources. Since their +source code is part of the kernel source code, a special package, +linux-tools, exists and re-uses the sources of the Linux kernel that +runs on the target.

    Let’s look at an example of a Linux tool. For a new Linux tool named +foo, create a new menu entry in the existing +package/linux-tools/Config.in. This file will contain the option +descriptions related to each kernel tool that will be used and +displayed in the configuration tool. It would basically look like:

    01: config BR2_PACKAGE_LINUX_TOOLS_FOO
    +02:     bool "foo"
    +03:     select BR2_PACKAGE_LINUX_TOOLS
    +04:     help
    +05:       This is a comment that explains what foo kernel tool is.
    +06:
    +07:       http://foosoftware.org/foo/

    The name of the option starts with the prefix BR2_PACKAGE_LINUX_TOOLS_, +followed by the uppercase name of the tool (like is done for packages).

    Note. Unlike other packages, the linux-tools package options appear in the +linux kernel menu, under the Linux Kernel Tools sub-menu, not under +the Target packages main menu.

    Then for each linux tool, add a new .mk.in file named +package/linux-tools/linux-tool-foo.mk.in. It would basically look like:

    01: ################################################################################
    +02: #
    +03: # foo
    +04: #
    +05: ################################################################################
    +06:
    +07: LINUX_TOOLS += foo
    +08:
    +09: FOO_DEPENDENCIES = libbbb
    +10:
    +11: define FOO_BUILD_CMDS
    +12:     $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools foo
    +13: endef
    +14:
    +15: define FOO_INSTALL_STAGING_CMDS
    +16:     $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \
    +17:             DESTDIR=$(STAGING_DIR) \
    +18:             foo_install
    +19: endef
    +20:
    +21: define FOO_INSTALL_TARGET_CMDS
    +22:     $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \
    +23:             DESTDIR=$(TARGET_DIR) \
    +24:             foo_install
    +25: endef

    On line 7, we register the Linux tool foo to the list of available +Linux tools.

    On line 9, we specify the list of dependencies this tool relies on. These +dependencies are added to the Linux package dependencies list only when the +foo tool is selected.

    The rest of the Makefile, lines 11-25 defines what should be done at the +different steps of the Linux tool build process like for a +generic package. They will actually be +used only when the foo tool is selected. The only supported commands are +_BUILD_CMDS, _INSTALL_STAGING_CMDS and _INSTALL_TARGET_CMDS.

    Note. One must not call $(eval $(generic-package)) or any other +package infrastructure! Linux tools are not packages by themselves, +they are part of the linux-tools package.

    18.22.2. linux-kernel-extensions

    Some packages provide new features that require the Linux kernel tree +to be modified. This can be in the form of patches to be applied on +the kernel tree, or in the form of new files to be added to the +tree. The Buildroot’s Linux kernel extensions infrastructure provides +a simple solution to automatically do this, just after the kernel +sources are extracted and before the kernel patches are +applied. Examples of extensions packaged using this mechanism are the +real-time extensions Xenomai and RTAI, as well as the set of +out-of-tree LCD screens drivers fbtft.

    Let’s look at an example on how to add a new Linux extension foo.

    First, create the package foo that provides the extension: this +package is a standard package; see the previous chapters on how to +create such a package. This package is in charge of downloading the +sources archive, checking the hash, defining the licence informations +and building user space tools if any.

    Then create the Linux extension proper: create a new menu entry in +the existing linux/Config.ext.in. This file contains the option +descriptions related to each kernel extension that will be used and +displayed in the configuration tool. It would basically look like:

    01: config BR2_LINUX_KERNEL_EXT_FOO
    +02:     bool "foo"
    +03:     help
    +04:       This is a comment that explains what foo kernel extension is.
    +05:
    +06:       http://foosoftware.org/foo/

    Then for each linux extension, add a new .mk file named +linux/linux-ext-foo.mk. It should basically contain:

    01: ################################################################################
    +02: #
    +03: # foo
    +04: #
    +05: ################################################################################
    +06:
    +07: LINUX_EXTENSIONS += foo
    +08:
    +09: define FOO_PREPARE_KERNEL
    +10:     $(FOO_DIR)/prepare-kernel-tree.sh --linux-dir=$(@D)
    +11: endef

    On line 7, we add the Linux extension foo to the list of available +Linux extensions.

    On line 9-11, we define what should be done by the extension to modify +the Linux kernel tree; this is specific to the linux extension and can +use the variables defined by the foo package, like: $(FOO_DIR) or +$(FOO_VERSION)… as well as all the Linux variables, like: +$(LINUX_VERSION) or $(LINUX_VERSION_PROBED), $(KERNEL_ARCH)… +See the definition of those kernel variables.

    18.23. Hooks available in the various build steps

    The generic infrastructure (and as a result also the derived autotools +and cmake infrastructures) allow packages to specify hooks. +These define further actions to perform after existing steps. +Most hooks aren’t really useful for generic packages, since the .mk +file already has full control over the actions performed in each step +of the package construction.

    The following hook points are available:

    • +LIBFOO_PRE_DOWNLOAD_HOOKS +
    • +LIBFOO_POST_DOWNLOAD_HOOKS +
    • +LIBFOO_PRE_EXTRACT_HOOKS +
    • +LIBFOO_POST_EXTRACT_HOOKS +
    • +LIBFOO_PRE_RSYNC_HOOKS +
    • +LIBFOO_POST_RSYNC_HOOKS +
    • +LIBFOO_PRE_PATCH_HOOKS +
    • +LIBFOO_POST_PATCH_HOOKS +
    • +LIBFOO_PRE_CONFIGURE_HOOKS +
    • +LIBFOO_POST_CONFIGURE_HOOKS +
    • +LIBFOO_PRE_BUILD_HOOKS +
    • +LIBFOO_POST_BUILD_HOOKS +
    • +LIBFOO_PRE_INSTALL_HOOKS (for host packages only) +
    • +LIBFOO_POST_INSTALL_HOOKS (for host packages only) +
    • +LIBFOO_PRE_INSTALL_STAGING_HOOKS (for target packages only) +
    • +LIBFOO_POST_INSTALL_STAGING_HOOKS (for target packages only) +
    • +LIBFOO_PRE_INSTALL_TARGET_HOOKS (for target packages only) +
    • +LIBFOO_POST_INSTALL_TARGET_HOOKS (for target packages only) +
    • +LIBFOO_PRE_INSTALL_IMAGES_HOOKS +
    • +LIBFOO_POST_INSTALL_IMAGES_HOOKS +
    • +LIBFOO_PRE_LEGAL_INFO_HOOKS +
    • +LIBFOO_POST_LEGAL_INFO_HOOKS +
    • +LIBFOO_TARGET_FINALIZE_HOOKS +

    These variables are lists of variable names containing actions to be +performed at this hook point. This allows several hooks to be +registered at a given hook point. Here is an example:

    define LIBFOO_POST_PATCH_FIXUP
    +        action1
    +        action2
    +endef
    +
    +LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP

    18.23.1. Using the POST_RSYNC hook

    The POST_RSYNC hook is run only for packages that use a local source, +either through the local site method or the OVERRIDE_SRCDIR +mechanism. In this case, package sources are copied using rsync from +the local location into the buildroot build directory. The rsync +command does not copy all files from the source directory, though. +Files belonging to a version control system, like the directories +.git, .hg, etc. are not copied. For most packages this is +sufficient, but a given package can perform additional actions using +the POST_RSYNC hook.

    In principle, the hook can contain any command you want. One specific +use case, though, is the intentional copying of the version control +directory using rsync. The rsync command you use in the hook can, among +others, use the following variables:

    • +$(SRCDIR): the path to the overridden source directory +
    • +$(@D): the path to the build directory +

    18.23.2. Target-finalize hook

    Packages may also register hooks in LIBFOO_TARGET_FINALIZE_HOOKS. +These hooks are run after all packages are built, but before the +filesystem images are generated. They are seldom used, and your +package probably do not need them.

    18.24. Gettext integration and interaction with packages

    Many packages that support internationalization use the gettext +library. Dependencies for this library are fairly complicated and +therefore, deserve some explanation.

    The glibc C library integrates a full-blown implementation of +gettext, supporting translation. Native Language Support is +therefore built-in in glibc.

    On the other hand, the uClibc and musl C libraries only provide a +stub implementation of the gettext functionality, which allows to +compile libraries and programs using gettext functions, but without +providing the translation capabilities of a full-blown gettext +implementation. With such C libraries, if real Native Language Support +is necessary, it can be provided by the libintl library of the +gettext package.

    Due to this, and in order to make sure that Native Language Support is +properly handled, packages in Buildroot that can use NLS support +should:

    1. +Ensure NLS support is enabled when BR2_SYSTEM_ENABLE_NLS=y. This + is done automatically for autotools packages and therefore should + only be done for packages using other package infrastructures. +
    2. +Add $(TARGET_NLS_DEPENDENCIES) to the package + <pkg>_DEPENDENCIES variable. This addition should be done + unconditionally: the value of this variable is automatically + adjusted by the core infrastructure to contain the relevant list of + packages. If NLS support is disabled, this variable is empty. If + NLS support is enabled, this variable contains host-gettext so + that tools needed to compile translation files are available on the + host. In addition, if uClibc or musl are used, this variable + also contains gettext in order to get the full-blown gettext + implementation. +
    3. +If needed, add $(TARGET_NLS_LIBS) to the linker flags, so that + the package gets linked with libintl. This is generally not + needed with autotools packages as they usually detect + automatically that they should link with libintl. However, + packages using other build systems, or problematic autotools-based + packages may need this. $(TARGET_NLS_LIBS) should be added + unconditionally to the linker flags, as the core automatically + makes it empty or defined to -lintl depending on the + configuration. +

    No changes should be made to the Config.in file to support NLS.

    Finally, certain packages need some gettext utilities on the target, +such as the gettext program itself, which allows to retrieve +translated strings, from the command line. In such a case, the package +should:

    • +use select BR2_PACKAGE_GETTEXT in their Config.in file, + indicating in a comment above that it’s a runtime dependency only. +
    • +not add any gettext dependency in the DEPENDENCIES variable of + their .mk file. +

    18.25. Tips and tricks

    18.25.1. Package name, config entry name and makefile variable relationship

    In Buildroot, there is some relationship between:

    • +the package name, which is the package directory name (and the + name of the *.mk file); +
    • +the config entry name that is declared in the Config.in file; +
    • +the makefile variable prefix. +

    It is mandatory to maintain consistency between these elements, +using the following rules:

    • +the package directory and the *.mk name are the package name + itself (e.g.: package/foo-bar_boo/foo-bar_boo.mk); +
    • +the make target name is the package name itself (e.g.: + foo-bar_boo); +
    • +the config entry is the upper case package name with . and - + characters substituted with _, prefixed with BR2_PACKAGE_ (e.g.: + BR2_PACKAGE_FOO_BAR_BOO); +
    • +the *.mk file variable prefix is the upper case package name + with . and - characters substituted with _ (e.g.: + FOO_BAR_BOO_VERSION). +

    18.25.2. How to check the coding style

    Buildroot provides a script in utils/check-package that checks new or +changed files for coding style. It is not a complete language validator, +but it catches many common mistakes. It is meant to run in the actual +files you created or modified, before creating the patch for submission.

    This script can be used for packages, filesystem makefiles, Config.in +files, etc. It does not check the files defining the package +infrastructures and some other files containing similar common code.

    To use it, run the check-package script, by telling which files you +created or changed:

    $ ./utils/check-package package/new-package/*

    If you have the utils directory in your path you can also run:

    $ cd package/new-package/
    +$ check-package *

    The tool can also be used for packages in a br2-external:

    $ check-package -b /path/to/br2-ext-tree/package/my-package/*

    18.25.3. How to test your package

    Once you have added your new package, it is important that you test it +under various conditions: does it build for all architectures? Does it +build with the different C libraries? Does it need threads, NPTL? And +so on…

    Buildroot runs autobuilders which +continuously test random configurations. However, these only build the +master branch of the git tree, and your new fancy package is not yet +there.

    Buildroot provides a script in utils/test-pkg that uses the same base +configurations as used by the autobuilders so you can test your package +in the same conditions.

    First, create a config snippet that contains all the necessary options +needed to enable your package, but without any architecture or toolchain +option. For example, let’s create a config snippet that just enables +libcurl, without any TLS backend:

    $ cat libcurl.config
    +BR2_PACKAGE_LIBCURL=y

    If your package needs more configuration options, you can add them to the +config snippet. For example, here’s how you would test libcurl with +openssl as a TLS backend and the curl program:

    $ cat libcurl.config
    +BR2_PACKAGE_LIBCURL=y
    +BR2_PACKAGE_LIBCURL_CURL=y
    +BR2_PACKAGE_OPENSSL=y

    Then run the test-pkg script, by telling it what config snippet to use +and what package to test:

    $ ./utils/test-pkg -c libcurl.config -p libcurl

    By default, test-pkg will build your package against a subset of the +toolchains used by the autobuilders, which has been selected by the +Buildroot developers as being the most useful and representative +subset. If you want to test all toolchains, pass the -a option. Note +that in any case, internal toolchains are excluded as they take too +long to build.

    The output lists all toolchains that are tested and the corresponding +result (excerpt, results are fake):

    $ ./utils/test-pkg -c libcurl.config -p libcurl
    +                armv5-ctng-linux-gnueabi [ 1/11]: OK
    +              armv7-ctng-linux-gnueabihf [ 2/11]: OK
    +                        br-aarch64-glibc [ 3/11]: SKIPPED
    +                           br-arcle-hs38 [ 4/11]: SKIPPED
    +                            br-arm-basic [ 5/11]: FAILED
    +                  br-arm-cortex-a9-glibc [ 6/11]: OK
    +                   br-arm-cortex-a9-musl [ 7/11]: FAILED
    +                   br-arm-cortex-m4-full [ 8/11]: OK
    +                             br-arm-full [ 9/11]: OK
    +                    br-arm-full-nothread [10/11]: FAILED
    +                      br-arm-full-static [11/11]: OK
    +11 builds, 2 skipped, 2 build failed, 1 legal-info failed

    The results mean:

    • +OK: the build was successful. +
    • +SKIPPED: one or more configuration options listed in the config + snippet were not present in the final configuration. This is due to + options having dependencies not satisfied by the toolchain, such as + for example a package that depends on BR2_USE_MMU with a noMMU + toolchain. The missing options are reported in missing.config in + the output build directory (~/br-test-pkg/TOOLCHAIN_NAME/ by + default). +
    • +FAILED: the build failed. Inspect the logfile file in the output + build directory to see what went wrong: +

      • +the actual build failed, +
      • +the legal-info failed, +
      • +one of the preliminary steps (downloading the config file, applying + the configuration, running dirclean for the package) failed. +

    When there are failures, you can just re-run the script with the same +options (after you fixed your package); the script will attempt to +re-build the package specified with -p for all toolchains, without +the need to re-build all the dependencies of that package.

    The test-pkg script accepts a few options, for which you can get some +help by running:

    $ ./utils/test-pkg -h

    18.25.4. How to add a package from GitHub

    Packages on GitHub often don’t have a download area with release tarballs. +However, it is possible to download tarballs directly from the repository +on GitHub. As GitHub is known to have changed download mechanisms in the +past, the github helper function should be used as shown below.

    # Use a tag or a full commit ID
    +FOO_VERSION = 1.0
    +FOO_SITE = $(call github,<user>,<package>,v$(FOO_VERSION))

    Notes

    • +The FOO_VERSION can either be a tag or a commit ID. +
    • +The tarball name generated by github matches the default one from + Buildroot (e.g.: foo-f6fb6654af62045239caed5950bc6c7971965e60.tar.gz), + so it is not necessary to specify it in the .mk file. +
    • +When using a commit ID as version, you should use the full 40 hex characters. +
    • +When the tag contains a prefix such as v in v1.0, then the + VERSION variable should contain just 1.0, and the v should be + added directly in the SITE variable, as illustrated above. This + ensures that the VERSION variable value can be used to match + against release-monitoring.org + results. +

    If the package you wish to add does have a release section on GitHub, the +maintainer may have uploaded a release tarball, or the release may just point +to the automatically generated tarball from the git tag. If there is a +release tarball uploaded by the maintainer, we prefer to use that since it +may be slightly different (e.g. it contains a configure script so we don’t +need to do AUTORECONF).

    You can see on the release page if it’s an uploaded tarball or a git tag:

    github_hash_mongrel2.png
    • +If it looks like the image above then it was uploaded by the + maintainer and you should use that link (in that example: + mongrel2-v1.9.2.tar.bz2) to specify FOO_SITE, and not use the + github helper. +
    • +On the other hand, if there’s is only the "Source code" link, then + it’s an automatically generated tarball and you should use the + github helper function. +

    18.25.5. How to add a package from Gitlab

    In a similar way to the github macro described in +Section 18.25.4, “How to add a package from GitHub”, Buildroot also provides the gitlab macro +to download from Gitlab repositories. It can be used to download +auto-generated tarballs produced by Gitlab, either for specific tags +or commits:

    # Use a tag or a full commit ID
    +FOO_VERSION = 1.0
    +FOO_SITE = $(call gitlab,<user>,<package>,v$(FOO_VERSION))

    By default, it will use a .tar.gz tarball, but Gitlab also provides +.tar.bz2 tarballs, so by adding a <pkg>_SOURCE variable, this +.tar.bz2 tarball can be used:

    # Use a tag or a full commit ID
    +FOO_VERSION = 1.0
    +FOO_SITE = $(call gitlab,<user>,<package>,v$(FOO_VERSION))
    +FOO_SOURCE = foo-$(FOO_VERSION).tar.bz2

    If there is a specific tarball uploaded by the upstream developers in +https://gitlab.com/<project>/releases/, do not use this macro, but +rather use directly the link to the tarball.

    18.26. Conclusion

    As you can see, adding a software package to Buildroot is simply a +matter of writing a Makefile using an existing example and modifying it +according to the compilation process required by the package.

    If you package software that might be useful for other people, don’t +forget to send a patch to the Buildroot mailing list (see +Section 22.5, “Submitting patches”)!

    Chapter 19. Patching a package

    While integrating a new package or updating an existing one, it may be +necessary to patch the source of the software to get it cross-built within +Buildroot.

    Buildroot offers an infrastructure to automatically handle this during +the builds. It supports three ways of applying patch sets: downloaded patches, +patches supplied within buildroot and patches located in a user-defined +global patch directory.

    19.1. Providing patches

    19.1.1. Downloaded

    If it is necessary to apply a patch that is available for download, then add it +to the <packagename>_PATCH variable. If an entry contains ://, +then Buildroot will assume it is a full URL and download the patch +from this location. Otherwise, Buildroot will assume that the patch should be +downloaded from <packagename>_SITE. It can be a single patch, +or a tarball containing a patch series.

    Like for all downloads, a hash should be added to the <packagename>.hash +file.

    This method is typically used for packages from Debian.

    19.1.2. Within Buildroot

    Most patches are provided within Buildroot, in the package +directory; these typically aim to fix cross-compilation, libc support, +or other such issues.

    These patch files should be named <number>-<description>.patch.

    Notes

    • +The patch files coming with Buildroot should not contain any package version + reference in their filename. +
    • +The field <number> in the patch file name refers to the apply order, + and shall start at 1; It is preferred to pad the number with zeros up to 4 + digits, like git-format-patch does. E.g.: 0001-foobar-the-buz.patch +
    • +The patch email subject prefix shall not be numbered. Patches shall + be generated with the git format-patch -N command, since this + numbering is automatically added for series. For example, the patch + subject line should look like Subject: [PATCH] foobar the buz rather + than Subject: [PATCH n/m] foobar the buz. +
    • +Previously, it was mandatory for patches to be prefixed with the name of + the package, like <package>-<number>-<description>.patch, but that is + no longer the case. Existing packages will be fixed as time passes. Do + not prefix patches with the package name. +
    • +Previously, a series file, as used by quilt, could also be added in + the package directory. In that case, the series file defines the patch + application order. This is deprecated, and will be removed in the future. + Do not use a series file. +

    19.1.3. Global patch directory

    The BR2_GLOBAL_PATCH_DIR configuration file option can be +used to specify a space separated list of one or more directories +containing global package patches. See Section 9.8, “Adding project-specific patches” for +details.

    19.2. How patches are applied

    1. +Run the <packagename>_PRE_PATCH_HOOKS commands if defined; +
    2. +Cleanup the build directory, removing any existing *.rej files; +
    3. +If <packagename>_PATCH is defined, then patches from these + tarballs are applied; +
    4. +If there are some *.patch files in the package’s Buildroot + directory or in a package subdirectory named <packageversion>, + then: +

      • +If a series file exists in the package directory, then patches are + applied according to the series file; +
      • +Otherwise, patch files matching *.patch are applied in alphabetical + order. + So, to ensure they are applied in the right order, it is highly + recommended to name the patch files like this: + <number>-<description>.patch, where <number> refers to the + apply order. +
    5. +If BR2_GLOBAL_PATCH_DIR is defined, the directories will be + enumerated in the order they are specified. The patches are applied + as described in the previous step. +
    6. +Run the <packagename>_POST_PATCH_HOOKS commands if defined. +

    If something goes wrong in the steps 3 or 4, then the build fails.

    19.3. Format and licensing of the package patches

    Patches are released under the same license as the software they apply +to (see Section 13.2, “Complying with the Buildroot license”).

    A message explaining what the patch does, and why it is needed, should +be added in the header commentary of the patch.

    You should add a Signed-off-by statement in the header of the each +patch to help with keeping track of the changes and to certify that the +patch is released under the same license as the software that is modified.

    If the software is under version control, it is recommended to use the +upstream SCM software to generate the patch set.

    Otherwise, concatenate the header with the output of the +diff -purN package-version.orig/ package-version/ command.

    If you update an existing patch (e.g. when bumping the package version), +make sure the existing From header and Signed-off-by tags are not +removed, but do update the rest of the patch comment when appropriate.

    At the end, the patch should look like:

    configure.ac: add C++ support test
    +
    +Signed-off-by: John Doe <john.doe@noname.org>
    +
    +--- configure.ac.orig
    ++++ configure.ac
    +@@ -40,2 +40,12 @@
    +
    +AC_PROG_MAKE_SET
    ++
    ++AC_CACHE_CHECK([whether the C++ compiler works],
    ++               [rw_cv_prog_cxx_works],
    ++               [AC_LANG_PUSH([C++])
    ++                AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
    ++                               [rw_cv_prog_cxx_works=yes],
    ++                               [rw_cv_prog_cxx_works=no])
    ++                AC_LANG_POP([C++])])
    ++
    ++AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"])

    19.4. Additional patch documentation

    Ideally, all patches should document an upstream patch or patch submission, when +applicable, via the Upstream trailer.

    When backporting an upstream patch that has been accepted into mainline, it is +preferred that the URL to the commit is referenced:

    Upstream: <URL to upstream commit>

    If a new issue is identified in Buildroot and upstream is generally affected by +the issue (it’s not a Buildroot specific issue), users should submit the patch +upstream and provide a link to that submission when possible:

    Upstream: <URL to upstream mailing list submission or merge request>

    Patches that have been submitted but were denied upstream should note that and +include comments about why the patch is being used despite the upstream status.

    Note: in any of the above scenarios, it is also sensible to add a few words +about any changes to the patch that may have been necessary.

    If a patch does not apply upstream then this should be noted with a comment:

    Upstream: N/A <additional information about why patch is Buildroot specific>

    Adding this documentation helps streamline the patch review process during +package version updates.

    Chapter 20. Download infrastructure

    TODO

    Chapter 21. Debugging Buildroot

    It is possible to instrument the steps Buildroot does when building +packages. Define the variable BR2_INSTRUMENTATION_SCRIPTS to contain +the path of one or more scripts (or other executables), in a +space-separated list, you want called before and after each step. The +scripts are called in sequence, with three parameters:

    • +start or end to denote the start (resp. the end) of a step; +
    • +the name of the step about to be started, or which just ended; +
    • +the name of the package. +

    For example :

    make BR2_INSTRUMENTATION_SCRIPTS="/path/to/my/script1 /path/to/my/script2"

    The list of steps is:

    • +extract +
    • +patch +
    • +configure +
    • +build +
    • +install-host, when a host-package is installed in $(HOST_DIR) +
    • +install-target, when a target-package is installed in $(TARGET_DIR) +
    • +install-staging, when a target-package is installed in $(STAGING_DIR) +
    • +install-image, when a target-package installs files in $(BINARIES_DIR) +

    The script has access to the following variables:

    • +BR2_CONFIG: the path to the Buildroot .config file +
    • +HOST_DIR, STAGING_DIR, TARGET_DIR: see + Section 18.6.2, “generic-package reference” +
    • +BUILD_DIR: the directory where packages are extracted and built +
    • +BINARIES_DIR: the place where all binary files (aka images) are + stored +
    • +BASE_DIR: the base output directory +

    Chapter 22. Contributing to Buildroot

    There are many ways in which you can contribute to Buildroot: analyzing +and fixing bugs, analyzing and fixing package build failures detected by +the autobuilders, testing and reviewing patches sent by other +developers, working on the items in our TODO list and sending your own +improvements to Buildroot or its manual. The following sections give a +little more detail on each of these items.

    If you are interested in contributing to Buildroot, the first thing you +should do is to subscribe to the Buildroot mailing list. This list is +the main way of interacting with other Buildroot developers and to send +contributions to. If you aren’t subscribed yet, then refer to +Chapter 5, Community resources for the subscription link.

    If you are going to touch the code, it is highly recommended to use a +git repository of Buildroot, rather than starting from an extracted +source code tarball. Git is the easiest way to develop from and directly +send your patches to the mailing list. Refer to Chapter 3, Getting Buildroot +for more information on obtaining a Buildroot git tree.

    22.1. Reproducing, analyzing and fixing bugs

    A first way of contributing is to have a look at the open bug reports in +the Buildroot bug +tracker. As we strive to keep the bug count as small as possible, all +help in reproducing, analyzing and fixing reported bugs is more than +welcome. Don’t hesitate to add a comment to bug reports reporting your +findings, even if you don’t yet see the full picture.

    22.2. Analyzing and fixing autobuild failures

    The Buildroot autobuilders are a set of build machines that continuously +run Buildroot builds based on random configurations. This is done for +all architectures supported by Buildroot, with various toolchains, and +with a random selection of packages. With the large commit activity on +Buildroot, these autobuilders are a great help in detecting problems +very early after commit.

    All build results are available at http://autobuild.buildroot.org, +statistics are at http://autobuild.buildroot.org/stats.php. Every day, +an overview of all failed packages is sent to the mailing list.

    Detecting problems is great, but obviously these problems have to be +fixed as well. Your contribution is very welcome here! There are +basically two things that can be done:

    • +Analyzing the problems. The daily summary mails do not contain details + about the actual failures: in order to see what’s going on you have to + open the build log and check the last output. Having someone doing + this for all packages in the mail is very useful for other developers, + as they can make a quick initial analysis based on this output alone. +
    • +Fixing a problem. When fixing autobuild failures, you should follow + these steps: +

      1. +Check if you can reproduce the problem by building with the same + configuration. You can do this manually, or use the + br-reproduce-build + script that will automatically clone a Buildroot git repository, + checkout the correct revision, download and set the right + configuration, and start the build. +
      2. +Analyze the problem and create a fix. +
      3. +Verify that the problem is really fixed by starting from a clean + Buildroot tree and only applying your fix. +
      4. +Send the fix to the Buildroot mailing list (see + Section 22.5, “Submitting patches”). In case you created a patch against the + package sources, you should also send the patch upstream so that the + problem will be fixed in a later release, and the patch in Buildroot + can be removed. + In the commit message of a patch fixing an autobuild failure, add a + reference to the build result directory, as follows: +
    Fixes: http://autobuild.buildroot.org/results/51000a9d4656afe9e0ea6f07b9f8ed374c2e4069

    22.3. Reviewing and testing patches

    With the amount of patches sent to the mailing list each day, the +maintainer has a very hard job to judge which patches are ready to apply +and which ones aren’t. Contributors can greatly help here by reviewing +and testing these patches.

    In the review process, do not hesitate to respond to patch submissions +for remarks, suggestions or anything that will help everyone to +understand the patches and make them better. Please use internet +style replies in plain text emails when responding to patch +submissions.

    To indicate approval of a patch, there are three formal tags that keep +track of this approval. To add your tag to a patch, reply to it with the +approval tag below the original author’s Signed-off-by line. These tags +will be picked up automatically by patchwork (see +Section 22.3.1, “Applying Patches from Patchwork”) and will be part of the commit log when +the patch is accepted.

    +Tested-by +
    +Indicates that the patch has been tested successfully. + You are encouraged to specify what kind of testing you performed + (compile-test on architecture X and Y, runtime test on target A, + …). This additional information helps other testers and the + maintainer. +
    +Reviewed-by +
    +Indicates that you code-reviewed the patch and did your + best in spotting problems, but you are not sufficiently familiar with + the area touched to provide an Acked-by tag. This means that there + may be remaining problems in the patch that would be spotted by + someone with more experience in that area. Should such problems be + detected, your Reviewed-by tag remains appropriate and you cannot + be blamed. +
    +Acked-by +
    +Indicates that you code-reviewed the patch and you are + familiar enough with the area touched to feel that the patch can be + committed as-is (no additional changes required). In case it later + turns out that something is wrong with the patch, your Acked-by could + be considered inappropriate. The difference between Acked-by and + Reviewed-by is thus mainly that you are prepared to take the blame on + Acked patches, but not on Reviewed ones. +

    If you reviewed a patch and have comments on it, you should simply reply +to the patch stating these comments, without providing a Reviewed-by or +Acked-by tag. These tags should only be provided if you judge the patch +to be good as it is.

    It is important to note that neither Reviewed-by nor Acked-by imply +that testing has been performed. To indicate that you both reviewed and +tested the patch, provide two separate tags (Reviewed/Acked-by and +Tested-by).

    Note also that any developer can provide Tested/Reviewed/Acked-by +tags, without exception, and we encourage everyone to do this. Buildroot +does not have a defined group of core developers, it just so happens +that some developers are more active than others. The maintainer will +value tags according to the track record of their submitter. Tags +provided by a regular contributor will naturally be trusted more than +tags provided by a newcomer. As you provide tags more regularly, your +trustworthiness (in the eyes of the maintainer) will go up, but any +tag provided is valuable.

    Buildroot’s Patchwork website can be used to pull in patches for testing +purposes. Please see Section 22.3.1, “Applying Patches from Patchwork” for more +information on using Buildroot’s Patchwork website to apply patches.

    22.3.1. Applying Patches from Patchwork

    The main use of Buildroot’s Patchwork website for a developer is for +pulling in patches into their local git repository for testing +purposes.

    When browsing patches in the patchwork management interface, an mbox +link is provided at the top of the page. Copy this link address and +run the following commands:

    $ git checkout -b <test-branch-name>
    +$ wget -O - <mbox-url> | git am

    Another option for applying patches is to create a bundle. A bundle is +a set of patches that you can group together using the patchwork +interface. Once the bundle is created and the bundle is made public, +you can copy the mbox link for the bundle and apply the bundle +using the above commands.

    22.4. Work on items from the TODO list

    If you want to contribute to Buildroot but don’t know where to start, +and you don’t like any of the above topics, you can always work on items +from the Buildroot TODO list. +Don’t hesitate to discuss an item first on the mailing list or on IRC. +Do edit the wiki to indicate when you start working on an item, so we +avoid duplicate efforts.

    22.5. Submitting patches

    Note

    Please, do not attach patches to bugs, send them to the mailing list +instead.

    If you made some changes to Buildroot and you would like to contribute +them to the Buildroot project, proceed as follows.

    22.5.1. The formatting of a patch

    We expect patches to be formatted in a specific way. This is necessary +to make it easy to review patches, to be able to apply them easily to +the git repository, to make it easy to find back in the history how +and why things have changed, and to make it possible to use git +bisect to locate the origin of a problem.

    First of all, it is essential that the patch has a good commit +message. The commit message should start with a separate line with a +brief summary of the change, prefixed by the area touched by the +patch. A few examples of good commit titles:

    • +package/linuxptp: bump version to 2.0 +
    • +configs/imx23evk: bump Linux version to 4.19 +
    • +package/pkg-generic: postpone evaluation of dependency conditions +
    • +boot/uboot: needs host-{flex,bison} +
    • +support/testing: add python-ubjson tests +

    The description that follows the prefix should start with a lower case +letter (i.e "bump", "needs", "postpone", "add" in the above examples).

    Second, the body of the commit message should describe why this +change is needed, and if necessary also give details about how it +was done. When writing the commit message, think of how the reviewers +will read it, but also think about how you will read it when you look +at this change again a few years down the line.

    Third, the patch itself should do only one change, but do it +completely. Two unrelated or weakly related changes should usually be +done in two separate patches. This usually means that a patch affects +only a single package. If several changes are related, it is often +still possible to split them up in small patches and apply them in a +specific order. Small patches make it easier to review, and often +make it easier to understand afterwards why a change was done. +However, each patch must be complete. It is not allowed that the +build is broken when only the first but not the second patch is +applied. This is necessary to be able to use git bisect afterwards.

    Of course, while you’re doing your development, you’re probably going +back and forth between packages, and certainly not committing things +immediately in a way that is clean enough for submission. So most +developers rewrite the history of commits to produce a clean set of +commits that is appropriate for submission. To do this, you need to +use interactive rebasing. You can learn about it +in the Pro +Git book. Sometimes, it is even easier to discard you history with +git reset --soft origin/master and select individual changes with +git add -i or git add -p.

    Finally, the patch should be signed off. This is done by adding +Signed-off-by: Your Real Name <your@email.address> at the end of the +commit message. git commit -s does that for you, if configured +properly. The Signed-off-by tag means that you publish the patch +under the Buildroot license (i.e. GPL-2.0+, except for package patches, +which have the upstream license), and that you are allowed to do so. +See the Developer Certificate of +Origin for details.

    To give credits to who sponsored the creation of a patch or the process of +upstreaming it, you may use +email subaddressing for +your git identity (i.e. what is used as commit author and email From: +field, as well as your Signed-off-by tag); add suffix to the local part, +separated from it by a plus + sign. E.g.:

    • +for a company which sponsored the submitted work, use the company name + as the detail (suffix) part: +

      Your-Name Your-Surname <your-name.your-surname+companyname@mail.com>

    • +for an individual who sponsored who sponsored the submitted work, use + their name and surname: +

      Your-Name Your-Surname <your-name.your-surname+their-name.their-surname@mail.com>

    When adding new packages, you should submit every package in a +separate patch. This patch should have the update to +package/Config.in, the package Config.in file, the .mk file, the +.hash file, any init script, and all package patches. If the package +has many sub-options, these are sometimes better added as separate +follow-up patches. The summary line should be something like +<packagename>: new package. The body of the commit message can be +empty for simple packages, or it can contain the description of the +package (like the Config.in help text). If anything special has to be +done to build the package, this should also be explained explicitly in +the commit message body.

    When you bump a package to a new version, you should also submit a +separate patch for each package. Don’t forget to update the .hash +file, or add it if it doesn’t exist yet. Also don’t forget to check if +the _LICENSE and _LICENSE_FILES are still valid. The summary line +should be something like <packagename>: bump to version <new +version>. If the new version only contains security updates compared +to the existing one, the summary should be <packagename>: security +bump to version <new version> and the commit message body should show +the CVE numbers that are fixed. If some package patches can be removed +in the new version, it should be explained explicitly why they can be +removed, preferably with the upstream commit ID. Also any other +required changes should be explained explicitly, like configure +options that no longer exist or are no longer needed.

    If you are interested in getting notified of build failures and of +further changes in the packages you added or modified, please add +yourself to the DEVELOPERS file. This should be done in the same patch +creating or modifying the package. See the DEVELOPERS file +for more information.

    Buildroot provides a handy tool to check for common coding style +mistakes on files you created or modified, called check-package (see +Section 18.25.2, “How to check the coding style” for more information).

    22.5.2. Preparing a patch series

    Starting from the changes committed in your local git view, rebase +your development branch on top of the upstream tree before generating +a patch set. To do so, run:

    $ git fetch --all --tags
    +$ git rebase origin/master

    Now check the coding style for the changes you committed:

    $ utils/docker-run make check-package

    Now, you are ready to generate then submit your patch set.

    To generate it, run:

    $ git format-patch -M -n -s -o outgoing origin/master

    This will generate patch files in the outgoing subdirectory, +automatically adding the Signed-off-by line.

    Once patch files are generated, you can review/edit the commit message +before submitting them, using your favorite text editor.

    Buildroot provides a handy tool to know to whom your patches should be +sent, called get-developers (see Chapter 23, DEVELOPERS file and get-developers for more +information). This tool reads your patches and outputs the appropriate +git send-email command to use:

    $ ./utils/get-developers outgoing/*

    Use the output of get-developers to send your patches:

    $ git send-email --to buildroot@buildroot.org --cc bob --cc alice outgoing/*

    Alternatively, get-developers -e can be used directly with the +--cc-cmd argument to git send-email to automatically CC the +affected developers:

    $ git send-email --to buildroot@buildroot.org \
    +      --cc-cmd './utils/get-developers -e' origin/master

    git can be configured to automatically do this out of the box with:

    $ git config sendemail.to buildroot@buildroot.org
    +$ git config sendemail.ccCmd "$(pwd)/utils/get-developers -e"

    And then just do:

    $ git send-email origin/master

    Note that git should be configured to use your mail account. +To configure git, see man git-send-email or google it.

    If you do not use git send-email, make sure posted patches are not +line-wrapped, otherwise they cannot easily be applied. In such a case, +fix your e-mail client, or better yet, learn to use git send-email.

    22.5.3. Cover letter

    If you want to present the whole patch set in a separate mail, add +--cover-letter to the git format-patch command (see man +git-format-patch for further information). This will generate a +template for an introduction e-mail to your patch series.

    A cover letter may be useful to introduce the changes you propose +in the following cases:

    • +large number of commits in the series; +
    • +deep impact of the changes in the rest of the project; +
    • +RFC [4]; +
    • +whenever you feel it will help presenting your work, your choices, + the review process, etc. +

    22.5.4. Patches for maintenance branches

    When fixing bugs on a maintenance branch, bugs should be fixed on the +master branch first. The commit log for such a patch may then contain a +post-commit note specifying what branches are affected:

    package/foo: fix stuff
    +
    +Signed-off-by: Your Real Name <your@email.address>
    +---
    +Backport to: 2020.02.x, 2020.05.x
    +(2020.08.x not affected as the version was bumped)

    Those changes will then be backported by a maintainer to the affected +branches.

    However, some bugs may apply only to a specific release, for example +because it is using an older version of a package. In that case, patches +should be based off the maintenance branch, and the patch subject prefix +must include the maintenance branch name (for example "[PATCH 2020.02.x]"). +This can be done with the git format-patch flag --subject-prefix:

    $ git format-patch --subject-prefix "PATCH 2020.02.x" \
    +    -M -s -o outgoing origin/2020.02.x

    Then send the patches with git send-email, as described above.

    22.5.5. Patch revision changelog

    When improvements are requested, the new revision of each commit +should include a changelog of the modifications between each +submission. Note that when your patch series is introduced by a cover +letter, an overall changelog may be added to the cover letter in +addition to the changelog in the individual commits. +The best thing to rework a patch series is by interactive rebasing: +git rebase -i origin/master. Consult the git manual for more +information.

    When added to the individual commits, this changelog is added when +editing the commit message. Below the Signed-off-by section, add +--- and your changelog.

    Although the changelog will be visible for the reviewers in the mail +thread, as well as in +patchwork, git +will automatically ignores lines below --- when the patch will be +merged. This is the intended behavior: the changelog is not meant to +be preserved forever in the git history of the project.

    Hereafter the recommended layout:

    Patch title: short explanation, max 72 chars
    +
    +A paragraph that explains the problem, and how it manifests itself. If
    +the problem is complex, it is OK to add more paragraphs. All paragraphs
    +should be wrapped at 72 characters.
    +
    +A paragraph that explains the root cause of the problem. Again, more
    +than one paragraph is OK.
    +
    +Finally, one or more paragraphs that explain how the problem is solved.
    +Don't hesitate to explain complex solutions in detail.
    +
    +Signed-off-by: John DOE <john.doe@example.net>
    +
    +---
    +Changes v2 -> v3:
    +  - foo bar  (suggested by Jane)
    +  - bar buz
    +
    +Changes v1 -> v2:
    +  - alpha bravo  (suggested by John)
    +  - charly delta

    Any patch revision should include the version number. The version number +is simply composed of the letter v followed by an integer greater or +equal to two (i.e. "PATCH v2", "PATCH v3" …).

    This can be easily handled with git format-patch by using the option +--subject-prefix:

    $ git format-patch --subject-prefix "PATCH v4" \
    +    -M -s -o outgoing origin/master

    Since git version 1.8.1, you can also use -v <n> (where <n> is the +version number):

    $ git format-patch -v4 -M -s -o outgoing origin/master

    When you provide a new version of a patch, please mark the old one as +superseded in +patchwork. You +need to create an account on +patchwork to be +able to modify the status of your patches. Note that you can only change +the status of patches you submitted yourself, which means the email +address you register in +patchwork should +match the one you use for sending patches to the mailing list.

    You can also add the --in-reply-to <message-id> option when +submitting a patch to the mailing list. The id of the mail to reply to +can be found under the "Message Id" tag on +patchwork. The +advantage of in-reply-to is that patchwork will automatically mark +the previous version of the patch as superseded.

    22.6. Reporting issues/bugs or getting help

    Before reporting any issue, please check in +the mailing list archive whether someone has +already reported and/or fixed a similar problem.

    However you choose to report bugs or get help, either by +opening a bug in the bug tracker or by +sending a mail to the mailing list, there are +a number of details to provide in order to help people reproduce and +find a solution to the issue.

    Try to think as if you were trying to help someone else; in +that case, what would you need?

    Here is a short list of details to provide in such case:

    • +host machine (OS/release) +
    • +version of Buildroot +
    • +target for which the build fails +
    • +package(s) for which the build fails +
    • +the command that fails and its output +
    • +any information you think that may be relevant +

    Additionally, you should add the .config file (or if you know how, a +defconfig; see Section 9.3, “Storing the Buildroot configuration”).

    If some of these details are too large, do not hesitate to use a +pastebin service. Note that not all available pastebin services will +preserve Unix-style line terminators when downloading raw pastes. +Following pastebin services are known to work correctly: +- https://gist.github.com/ +- http://code.bulix.org/

    22.7. Using the runtime tests framework

    Buildroot includes a run-time testing framework built upon Python +scripting and QEMU runtime execution. The goals of the framework are +the following:

    • +build a well defined Buildroot configuration +
    • +optionally, verify some properties of the build output +
    • +optionally, boot the build results under Qemu, and verify that a + given feature is working as expected +

    The entry point to use the runtime tests framework is the +support/testing/run-tests tool, which has a series of options +documented in the tool’s help -h description. Some common options +include setting the download folder, the output folder, keeping build +output, and for multiple test cases, you can set the JLEVEL for each.

    Here is an example walk through of running a test case.

    • +For a first step, let us see what all the test case options are. The test +cases can be listed by executing support/testing/run-tests -l. These tests +can all be run individually during test development from the console. Both +one at a time and selectively as a group of a subset of tests. +
    $ support/testing/run-tests -l
    +List of tests
    +test_run (tests.utils.test_check_package.TestCheckPackage)
    +test_run (tests.toolchain.test_external.TestExternalToolchainBuildrootMusl) ... ok
    +test_run (tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc) ... ok
    +test_run (tests.toolchain.test_external.TestExternalToolchainCCache) ... ok
    +test_run (tests.toolchain.test_external.TestExternalToolchainCtngMusl) ... ok
    +test_run (tests.toolchain.test_external.TestExternalToolchainLinaroArm) ... ok
    +test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv4) ... ok
    +test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv5) ... ok
    +test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv7) ... ok
    +[snip]
    +test_run (tests.init.test_systemd.TestInitSystemSystemdRoFull) ... ok
    +test_run (tests.init.test_systemd.TestInitSystemSystemdRoIfupdown) ... ok
    +test_run (tests.init.test_systemd.TestInitSystemSystemdRoNetworkd) ... ok
    +test_run (tests.init.test_systemd.TestInitSystemSystemdRwFull) ... ok
    +test_run (tests.init.test_systemd.TestInitSystemSystemdRwIfupdown) ... ok
    +test_run (tests.init.test_systemd.TestInitSystemSystemdRwNetworkd) ... ok
    +test_run (tests.init.test_busybox.TestInitSystemBusyboxRo) ... ok
    +test_run (tests.init.test_busybox.TestInitSystemBusyboxRoNet) ... ok
    +test_run (tests.init.test_busybox.TestInitSystemBusyboxRw) ... ok
    +test_run (tests.init.test_busybox.TestInitSystemBusyboxRwNet) ... ok
    +
    +Ran 157 tests in 0.021s
    +
    +OK
    • +Then, to run one test case: +
    $ support/testing/run-tests -d dl -o output_folder -k tests.init.test_busybox.TestInitSystemBusyboxRw
    +15:03:26 TestInitSystemBusyboxRw                  Starting
    +15:03:28 TestInitSystemBusyboxRw                  Building
    +15:08:18 TestInitSystemBusyboxRw                  Building done
    +15:08:27 TestInitSystemBusyboxRw                  Cleaning up
    +.
    +Ran 1 test in 301.140s
    +
    +OK

    The standard output indicates if the test is successful or not. By +default, the output folder for the test is deleted automatically +unless the option -k is passed to keep the output directory.

    22.7.1. Creating a test case

    Within the Buildroot repository, the testing framework is organized at the +top level in support/testing/ by folders of conf, infra and tests. +All the test cases live under the tests folder and are organized in various +folders representing the category of test.

    The best way to get familiar with how to create a test case is to look +at a few of the basic file system support/testing/tests/fs/ and init +support/testing/tests/init/ test scripts. Those tests give good +examples of a basic tests that include both checking the build +results, and doing runtime tests. There are other more advanced cases +that use things like nested br2-external folders to provide +skeletons and additional packages.

    Creating a basic test case involves:

    • +Defining a test class that inherits from infra.basetest.BRTest +
    • +Defining the config member of the test class, to the Buildroot + configuration to build for this test case. It can optionally rely on + configuration snippets provided by the runtime test infrastructure: + infra.basetest.BASIC_TOOLCHAIN_CONFIG to get a basic + architecture/toolchain configuration, and + infra.basetest.MINIMAL_CONFIG to not build any filesystem. The + advantage of using infra.basetest.BASIC_TOOLCHAIN_CONFIG is that a + matching Linux kernel image is provided, which allows to boot the + resulting image in Qemu without having to build a Linux kernel image + as part of the test case, therefore significant decreasing the build + time required for the test case. +
    • +Implementing a def test_run(self): function to implement the + actual tests to run after the build has completed. They may be tests + that verify the build output, by running command on the host using + the run_cmd_on_host() helper function. Or they may boot the + generated system in Qemu using the Emulator object available as + self.emulator in the test case. For example self.emulator.boot() + allows to boot the system in Qemu, self.emulator.login() allows to + login, self.emulator.run() allows to run shell commands inside + Qemu. +

    After creating the test script, add yourself to the DEVELOPERS file to +be the maintainer of that test case.

    22.7.2. Debugging a test case

    When a test case runs, the output_folder will contain the following:

    $ ls output_folder/
    +TestInitSystemBusyboxRw/
    +TestInitSystemBusyboxRw-build.log
    +TestInitSystemBusyboxRw-run.log

    TestInitSystemBusyboxRw/ is the Buildroot output directory, and it +is preserved only if the -k option is passed.

    TestInitSystemBusyboxRw-build.log is the log of the Buildroot build.

    TestInitSystemBusyboxRw-run.log is the log of the Qemu boot and +test. This file will only exist if the build was successful and the +test case involves booting under Qemu.

    If you want to manually run Qemu to do manual tests of the build +result, the first few lines of TestInitSystemBusyboxRw-run.log +contain the Qemu command line to use.

    You can also make modifications to the current sources inside the +output_folder (e.g. for debug purposes) and rerun the standard +Buildroot make targets (in order to regenerate the complete image with +the new modifications) and then rerun the test.

    22.7.3. Runtime tests and Gitlab CI

    All runtime tests are regularly executed by Buildroot Gitlab CI +infrastructure, see .gitlab.yml and +https://gitlab.com/buildroot.org/buildroot/-/jobs.

    You can also use Gitlab CI to test your new test cases, or verify that +existing tests continue to work after making changes in Buildroot.

    In order to achieve this, you need to create a fork of the Buildroot +project on Gitlab, and be able to push branches to your Buildroot fork +on Gitlab.

    The name of the branch that you push will determine if a Gitlab CI +pipeline will be triggered or not, and for which test cases.

    In the examples below, the <name> component of the branch name is an +arbitrary string you choose.

    • +To trigger all run-test test case jobs, push a branch that ends with + -runtime-tests: +
     $ git push gitlab HEAD:<name>-runtime-tests
    • +To trigger one or several test case jobs, push a branch that ends + with the complete test case name + (tests.init.test_busybox.TestInitSystemBusyboxRo) or with the name + of a category of tests (tests.init.test_busybox): +
     $ git push gitlab HEAD:<name>-<test case name>

    Example to run one test:

     $ git push gitlab HEAD:foo-tests.init.test_busybox.TestInitSystemBusyboxRo

    Examples to run several tests part of the same group:

     $ git push gitlab HEAD:foo-tests.init.test_busybox
    + $ git push gitlab HEAD:foo-tests.init


    [4] RFC: (Request for comments) change proposal

    Chapter 23. DEVELOPERS file and get-developers

    The main Buildroot directory contains a file named DEVELOPERS that +lists the developers involved with various areas of Buildroot. Thanks +to this file, the get-developers tool allows to:

    • +Calculate the list of developers to whom patches should be sent, by + parsing the patches and matching the modified files with the + relevant developers. See Section 22.5, “Submitting patches” for details. +
    • +Find which developers are taking care of a given architecture or + package, so that they can be notified when a build failure occurs on + this architecture or package. This is done in interaction with + Buildroot’s autobuild infrastructure. +

    We ask developers adding new packages, new boards, or generally new +functionality in Buildroot, to register themselves in the DEVELOPERS +file. As an example, we expect a developer contributing a new package +to include in his patch the appropriate modification to the +DEVELOPERS file.

    The DEVELOPERS file format is documented in detail inside the file +itself.

    The get-developers tool, located in utils/ allows to use +the DEVELOPERS file for various tasks:

    • +When passing one or several patches as command line argument, + get-developers will return the appropriate git send-email + command. If the -e option is passed, only the email addresses are + printed in a format suitable for git send-email --cc-cmd. +
    • +When using the -a <arch> command line option, get-developers will + return the list of developers in charge of the given architecture. +
    • +When using the -p <package> command line option, get-developers + will return the list of developers in charge of the given package. +
    • +When using the -c command line option, get-developers will look + at all files under version control in the Buildroot repository, and + list the ones that are not handled by any developer. The purpose of + this option is to help completing the DEVELOPERS file. +
    • +When using the -v command line option, it validates the integrity + of the DEVELOPERS file and will note WARNINGS for items that don’t + match. +

    Chapter 24. Release Engineering

    24.1. Releases

    The Buildroot project makes quarterly releases with monthly bugfix +releases. The first release of each year is a long term support +release, LTS.

    • +Quarterly releases: 2020.02, 2020.05, 2020.08, and 2020.11 +
    • +Bugfix releases: 2020.02.1, 2020.02.2, … +
    • +LTS releases: 2020.02, 2021.02, … +

    Releases are supported until the first bugfix release of the next +release, e.g., 2020.05.x is EOL when 2020.08.1 is released.

    LTS releases are supported until the first bugfix release of the next +LTS, e.g., 2020.02.x is supported until 2021.02.1 is released.

    24.2. Development

    Each release cycle consist of two months of development on the master +branch and one month stabilization before the release is made. During +this phase no new features are added to master, only bugfixes.

    The stabilization phase starts with tagging -rc1, and every week until +the release, another release candidate is tagged.

    To handle new features and version bumps during the stabilization phase, +a next branch may be created for these features. Once the current +release has been made, the next branch is merged into master and +the development cycle for the next release continues there.

    Part IV. Appendix

    Chapter 25. Makedev syntax documentation

    The makedev syntax is used in several places in Buildroot to +define changes to be made for permissions, or which device files to +create and how to create them, in order to avoid calls to mknod.

    This syntax is derived from the makedev utility, and more complete +documentation can be found in the package/makedevs/README file.

    It takes the form of a space separated list of fields, one file per +line; the fields are:

    name

    type

    mode

    uid

    gid

    major

    minor

    start

    inc

    count

    There are a few non-trivial blocks:

    • +name is the path to the file you want to create/modify +
    • +type is the type of the file, being one of: +

      • +f: a regular file +
      • +d: a directory +
      • +r: a directory recursively +
      • +c: a character device file +
      • +b: a block device file +
      • +p: a named pipe +
    • +mode are the usual permissions settings (only numerical values + are allowed) +
    • +uid and gid are the UID and GID to set on this file; can be + either numerical values or actual names +
    • +major and minor are here for device files, set to - for other + files +
    • +start, inc and count are for when you want to create a batch + of files, and can be reduced to a loop, beginning at start, + incrementing its counter by inc until it reaches count +

    Let’s say you want to change the permissions of a given file; using +this syntax, you will need to write:

    /usr/bin/foo f 755 0 0 - - - - -
    +/usr/bin/bar f 755 root root - - - - -
    +/data/buz f 644 buz-user buz-group - - - - -

    Alternatively, if you want to change owner/permission of a directory +recursively, you can write (to set UID to foo, GID to bar and access +rights to rwxr-x--- for the directory /usr/share/myapp and all files +and directories below it):

    /usr/share/myapp r 750 foo bar - - - - -

    On the other hand, if you want to create the device file /dev/hda +and the corresponding 15 files for the partitions, you will need for +/dev/hda:

    /dev/hda b 640 root root 3 0 0 0 -

    and then for device files corresponding to the partitions of +/dev/hda, /dev/hdaX, X ranging from 1 to 15:

    /dev/hda b 640 root root 3 1 1 1 15

    Extended attributes are supported if +BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES is enabled. +This is done by adding a line starting with |xattr after +the line describing the file. Right now, only capability +is supported as extended attribute.

    |xattr

    capability

    • +|xattr is a "flag" that indicate an extended attribute +
    • +capability is a capability to add to the previous file +

    If you want to add the capability cap_sys_admin to the binary foo, +you will write :

    /usr/bin/foo f 755 root root - - - - -
    +|xattr cap_sys_admin+eip

    You can add several capabilities to a file by using several |xattr lines. +If you want to add the capability cap_sys_admin and cap_net_admin to the +binary foo, you will write :

    /usr/bin/foo f 755 root root - - - - -
    +|xattr cap_sys_admin+eip
    +|xattr cap_net_admin+eip

    Chapter 26. Makeusers syntax documentation

    The syntax to create users is inspired by the makedev syntax, above, but +is specific to Buildroot.

    The syntax for adding a user is a space-separated list of fields, one +user per line; the fields are:

    username

    uid

    group

    gid

    password

    home

    shell

    groups

    comment

    Where:

    • +username is the desired user name (aka login name) for the user. + It can not be root, and must be unique. If set to -, then just a + group will be created. +
    • +uid is the desired UID for the user. It must be unique, and not + 0. If set to -1 or -2, then a unique UID will be computed by + Buildroot, with -1 denoting a system UID from [100…999] and -2 + denoting a user UID from [1000…1999]. +
    • +group is the desired name for the user’s main group. It can not + be root. If the group does not exist, it will be created. +
    • +gid is the desired GID for the user’s main group. It must be unique, + and not 0. If set to -1 or -2, and the group does not already + exist, then a unique GID will be computed by Buildroot, with -1 + denoting a system GID from [100…999] and -2 denoting a user GID + from [1000…1999]. +
    • +password is the crypt(3)-encoded password. If prefixed with !, + then login is disabled. If prefixed with =, then it is interpreted + as clear-text, and will be crypt-encoded (using MD5). If prefixed with + !=, then the password will be crypt-encoded (using MD5) and login + will be disabled. If set to *, then login is not allowed. If set to + -, then no password value will be set. +
    • +home is the desired home directory for the user. If set to -, no + home directory will be created, and the user’s home will be /. + Explicitly setting home to / is not allowed. +
    • +shell is the desired shell for the user. If set to -, then + /bin/false is set as the user’s shell. +
    • +groups is the comma-separated list of additional groups the user + should be part of. If set to -, then the user will be a member of + no additional group. Missing groups will be created with an arbitrary + gid. +
    • +comment (aka GECOS + field) is an almost-free-form text. +

    There are a few restrictions on the content of each field:

    • +except for comment, all fields are mandatory. +
    • +except for comment, fields may not contain spaces. +
    • +no field may contain a colon (:). +

    If home is not -, then the home directory, and all files below, +will belong to the user and its main group.

    Examples:

    foo -1 bar -1 !=blabla /home/foo /bin/sh alpha,bravo Foo user

    This will create this user:

    • +username (aka login name) is: foo +
    • +uid is computed by Buildroot +
    • +main group is: bar +
    • +main group gid is computed by Buildroot +
    • +clear-text password is: blabla, will be crypt(3)-encoded, and login is disabled. +
    • +home is: /home/foo +
    • +shell is: /bin/sh +
    • +foo is also a member of groups: alpha and bravo +
    • +comment is: Foo user +
    test 8000 wheel -1 = - /bin/sh - Test user

    This will create this user:

    • +username (aka login name) is: test +
    • +uid is : 8000 +
    • +main group is: wheel +
    • +main group gid is computed by Buildroot, and will use the value defined in the rootfs skeleton +
    • +password is empty (aka no password). +
    • +home is / but will not belong to test +
    • +shell is: /bin/sh +
    • +test is not a member of any additional groups +
    • +comment is: Test user +

    26.1. Caveat with automatic UIDs and GIDs

    When updating buildroot or when packages are added or removed to/from +the configuration, it is possible that the automatic UIDs and GIDs are +changed. This can be a problem if persistent files were created with +that user or group: after upgrade, they will suddenly have a different +owner.

    Therefore, it is advisable to perpetuate the automatic IDs. This can be +done by adding a users table with the generated IDs. It is only needed +to do this for UIDs that actually create persistent files, e.g. database.

    Chapter 27. Migrating from older Buildroot versions

    Some versions have introduced backward incompatibilities. This section +explains those incompatibilities, and for each explains what to do to +complete the migration.

    27.1. General approach

    To migrate from an older Buildroot version, take the following steps.

    1. +For all your configurations, do a build in the old Buildroot + environment. Run make graph-size. Save + graphs/file-size-stats.csv in a different location. Run make + clean to remove the rest. +
    2. +Review the specific migration notes below and make the required + adaptations to external packages and custom build scripts. +
    3. +Update Buildroot. +
    4. +Run make menuconfig starting from the existing .config. +
    5. +If anything is enabled in the Legacy menu, check its help text, + unselect it, and save the configuration. +
    6. +For more details, review the git commit messages for the packages that + you need. Change into the packages directory and run + git log <old version>.. — <your packages>. +
    7. +Build in the new Buildroot environment. +
    8. +Fix build issues in external packages (usually due to updated + dependencies). +
    9. +Run make graph-size. +
    10. +Compare the new file-size-stats.csv with the original one, to + check if no required files have disappeared and if no new big unneeded + files have appeared. +
    11. +For configuration (and other) files in a custom overlay that overwrite + files created by Buildroot, check if there are changes in the + Buildroot-generated file that need to be propagated to your custom + file. +

    27.2. Migrating to 2016.11

    Before Buildroot 2016.11, it was possible to use only one br2-external +tree at once. With Buildroot 2016.11 came the possibility to use more +than one simultaneously (for details, see Section 9.2, “Keeping customizations outside of Buildroot”).

    This however means that older br2-external trees are not usable as-is. +A minor change has to be made: adding a name to your br2-external tree.

    This can be done very easily in just a few steps:

    • +First, create a new file named external.desc, at the root of your + br2-external tree, with a single line defining the name of your + br2-external tree: +

      $ echo 'name: NAME_OF_YOUR_TREE' >external.desc

      Note. Be careful when choosing a name: It has to be unique and be made +with only ASCII characters from the set [A-Za-z0-9_].

    • +Then, change every occurence of BR2_EXTERNAL in your br2-external + tree with the new variable: +

      $ find . -type f | xargs sed -i 's/BR2_EXTERNAL/BR2_EXTERNAL_NAME_OF_YOUR_TREE_PATH/g'

    Now, your br2-external tree can be used with Buildroot 2016.11 onward.

    Note: This change makes your br2-external tree incompatible with Buildroot +before 2016.11.

    27.3. Migrating to 2017.08

    Before Buildroot 2017.08, host packages were installed in $(HOST_DIR)/usr +(with e.g. the autotools' --prefix=$(HOST_DIR)/usr). With Buildroot +2017.08, they are now installed directly in $(HOST_DIR).

    Whenever a package installs an executable that is linked with a library +in $(HOST_DIR)/lib, it must have an RPATH pointing to that directory.

    An RPATH pointing to $(HOST_DIR)/usr/lib is no longer accepted.

    \ No newline at end of file diff --git a/docs/manual/manual.pdf b/docs/manual/manual.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d1a2d1b786648d4500eb02368ac54d1642ce00ac GIT binary patch literal 615586 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

    rX?ksK>a_OxLsVc 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

    q$@n~l@!lhd9JqIBs{pQb)*|I;Wa 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

    0Bu~v;W!7Dp(15)2xJvr1p3i4IAVNtBWxuE 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�GhuvE|b0)G$M#uwgE-c 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

    +=aOpM0QmbCq;J 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%0A35-ZR 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

    o56gLbPf;`;EB&+(I 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�Z55vyNz^%f7 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 z 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 E2c`w`Pyhe` literal 0 HcmV?d00001 diff --git a/docs/manual/manual.text b/docs/manual/manual.text new file mode 100644 index 0000000000..4e2fd9db77 --- /dev/null +++ b/docs/manual/manual.text @@ -0,0 +1,8758 @@ + +--------------------------------------------------------------------- + +The Buildroot user manual + +--------------------------------------------------------------------- +--------------------------------------------------------------------- + +Table of Contents + + +I. Getting started + + 1. About Buildroot + 2. System requirements + + 2.1. Mandatory packages + 2.2. Optional packages + + 3. Getting Buildroot + 4. Buildroot quick start + 5. Community resources + +II. User guide + + 6. Buildroot configuration + + 6.1. Cross-compilation toolchain + 6.2. /dev management + 6.3. init system + + 7. Configuration of other components + 8. General Buildroot usage + + 8.1. make tips + 8.2. Understanding when a full rebuild is necessary + 8.3. Understanding how to rebuild packages + 8.4. Offline builds + 8.5. Building out-of-tree + 8.6. Environment variables + 8.7. Dealing efficiently with filesystem images + 8.8. Details about packages + 8.9. Graphing the dependencies between packages + 8.10. Graphing the build duration + 8.11. Graphing the filesystem size contribution of packages + 8.12. Top-level parallel build + 8.13. Advanced usage + + 9. Project-specific customization + + 9.1. Recommended directory structure + 9.2. Keeping customizations outside of Buildroot + 9.3. Storing the Buildroot configuration + 9.4. Storing the configuration of other components + 9.5. Customizing the generated target filesystem + 9.6. Adding custom user accounts + 9.7. Customization after the images have been created + 9.8. Adding project-specific patches + 9.9. Adding project-specific packages + 9.10. Quick guide to storing your project-specific + customizations + + 10. Integration topics + + 10.1. Systemd + 10.2. Using SELinux in Buildroot + + 11. Frequently Asked Questions & Troubleshooting + + 11.1. The boot hangs after Starting network… + 11.2. Why is there no compiler on the target? + 11.3. Why are there no development files on the target? + 11.4. Why is there no documentation on the target? + 11.5. Why are some packages not visible in the Buildroot + config menu? + 11.6. Why not use the target directory as a chroot directory? + 11.7. Why doesn’t Buildroot generate binary packages (.deb, + .ipkg…)? + 11.8. How to speed-up the build process? + + 12. Known issues + 13. Legal notice and licensing + + 13.1. Complying with open source licenses + 13.2. Complying with the Buildroot license + + 14. Beyond Buildroot + + 14.1. Boot the generated images + 14.2. Chroot + +III. Developer guide + + 15. How Buildroot works + 16. Coding style + + 16.1. Config.in file + 16.2. The .mk file + 16.3. The genimage.cfg file + 16.4. The documentation + 16.5. Support scripts + + 17. Adding support for a particular board + 18. Adding new packages to Buildroot + + 18.1. Package directory + 18.2. Config files + 18.3. The .mk file + 18.4. The .hash file + 18.5. The SNNfoo start script + 18.6. Infrastructure for packages with specific build systems + 18.7. Infrastructure for autotools-based packages + 18.8. Infrastructure for CMake-based packages + 18.9. Infrastructure for Python packages + 18.10. Infrastructure for LuaRocks-based packages + 18.11. Infrastructure for Perl/CPAN packages + 18.12. Infrastructure for virtual packages + 18.13. Infrastructure for packages using kconfig for + configuration files + 18.14. Infrastructure for rebar-based packages + 18.15. Infrastructure for Waf-based packages + 18.16. Infrastructure for Meson-based packages + 18.17. Infrastructure for Cargo-based packages + 18.18. Infrastructure for Go packages + 18.19. Infrastructure for QMake-based packages + 18.20. Infrastructure for packages building kernel modules + 18.21. Infrastructure for asciidoc documents + 18.22. Infrastructure specific to the Linux kernel package + 18.23. Hooks available in the various build steps + 18.24. Gettext integration and interaction with packages + 18.25. Tips and tricks + 18.26. Conclusion + + 19. Patching a package + + 19.1. Providing patches + 19.2. How patches are applied + 19.3. Format and licensing of the package patches + 19.4. Additional patch documentation + + 20. Download infrastructure + 21. Debugging Buildroot + 22. Contributing to Buildroot + + 22.1. Reproducing, analyzing and fixing bugs + 22.2. Analyzing and fixing autobuild failures + 22.3. Reviewing and testing patches + 22.4. Work on items from the TODO list + 22.5. Submitting patches + 22.6. Reporting issues/bugs or getting help + 22.7. Using the runtime tests framework + + 23. DEVELOPERS file and get-developers + 24. Release Engineering + + 24.1. Releases + 24.2. Development + +IV. Appendix + + 25. Makedev syntax documentation + 26. Makeusers syntax documentation + + 26.1. Caveat with automatic UIDs and GIDs + + 27. Migrating from older Buildroot versions + + 27.1. General approach + 27.2. Migrating to 2016.11 + 27.3. Migrating to 2017.08 + +List of Examples + +18.1. Config script: divine package +18.2. Config script: imagemagick package: + + +--------------------------------------------------------------------- + +--------------------------------------------------------------------- + +Buildroot 2023.08.2 manual generated on 2023-10-15 21:10:50 UTC from +git revision fe50c054bc + +The Buildroot manual is written by the Buildroot developers. It is +licensed under the GNU General Public License, version 2. Refer to +the COPYING [http://git.buildroot.org/buildroot/tree/COPYING?id= +fe50c054bce7fb9b2e073b9c1bc78dd8a187289a] file in the Buildroot +sources for the full text of this license. + +Copyright © The Buildroot developers <> + +Part I. Getting started + +Table of Contents + +1. About Buildroot +2. System requirements + + 2.1. Mandatory packages + 2.2. Optional packages + +3. Getting Buildroot +4. Buildroot quick start +5. Community resources + +Chapter 1. About Buildroot + +Buildroot is a tool that simplifies and automates the process of +building a complete Linux system for an embedded system, using +cross-compilation. + +In order to achieve this, Buildroot is able to generate a +cross-compilation toolchain, a root filesystem, a Linux kernel image +and a bootloader for your target. Buildroot can be used for any +combination of these options, independently (you can for example use +an existing cross-compilation toolchain, and build only your root +filesystem with Buildroot). + +Buildroot is useful mainly for people working with embedded systems. +Embedded systems often use processors that are not the regular x86 +processors everyone is used to having in his PC. They can be PowerPC +processors, MIPS processors, ARM processors, etc. + +Buildroot supports numerous processors and their variants; it also +comes with default configurations for several boards available +off-the-shelf. Besides this, a number of third-party projects are +based on, or develop their BSP ^[1] or SDK ^[2] on top of Buildroot. + + +--------------------------------------------------------------------- + +^[1] BSP: Board Support Package + +^[2] SDK: Software Development Kit + +Chapter 2. System requirements + +Buildroot is designed to run on Linux systems. + +While Buildroot itself will build most host packages it needs for the +compilation, certain standard Linux utilities are expected to be +already installed on the host system. Below you will find an overview +of the mandatory and optional packages (note that package names may +vary between distributions). + +2.1. Mandatory packages + + * Build tools: + + + which + + sed + + make (version 3.81 or any later) + + binutils + + build-essential (only for Debian based systems) + + diffutils + + gcc (version 4.8 or any later) + + g++ (version 4.8 or any later) + + bash + + patch + + gzip + + bzip2 + + perl (version 5.8.7 or any later) + + tar + + cpio + + unzip + + rsync + + file (must be in /usr/bin/file) + + bc + + findutils + * Source fetching tools: + + + wget + +2.2. Optional packages + + * Recommended dependencies: + + Some features or utilities in Buildroot, like the legal-info, or + the graph generation tools, have additional dependencies. + Although they are not mandatory for a simple build, they are + still highly recommended: + + + python (version 2.7 or any later) + * Configuration interface dependencies: + + For these libraries, you need to install both runtime and + development data, which in many distributions are packaged + separately. The development packages typically have a -dev or + -devel suffix. + + + ncurses5 to use the menuconfig interface + + qt5 to use the xconfig interface + + glib2, gtk2 and glade2 to use the gconfig interface + * Source fetching tools: + + In the official tree, most of the package sources are retrieved + using wget from ftp, http or https locations. A few packages are + only available through a version control system. Moreover, + Buildroot is capable of downloading sources via other tools, like + rsync or scp (refer to Chapter 20, Download infrastructure for + more details). If you enable packages using any of these methods, + you will need to install the corresponding tool on the host + system: + + + bazaar + + cvs + + git + + mercurial + + rsync + + scp + + sftp + + subversion + * Java-related packages, if the Java Classpath needs to be built + for the target system: + + + The javac compiler + + The jar tool + * Documentation generation tools: + + + asciidoc, version 8.6.3 or higher + + w3m + + python with the argparse module (automatically present in + 2.7+ and 3.2+) + + dblatex (required for the pdf manual only) + * Graph generation tools: + + + graphviz to use graph-depends and -graph-depends + + python-matplotlib to use graph-build + +Chapter 3. Getting Buildroot + +Buildroot releases are made every 3 months, in February, May, August +and November. Release numbers are in the format YYYY.MM, so for +example 2013.02, 2014.08. + +Release tarballs are available at http://buildroot.org/downloads/. + +For your convenience, a Vagrantfile [https://www.vagrantup.com/] is +available in support/misc/Vagrantfile in the Buildroot source tree to +quickly set up a virtual machine with the needed dependencies to get +started. + +If you want to setup an isolated buildroot environment on Linux or +Mac Os X, paste this line onto your terminal: + +curl -O https://buildroot.org/downloads/Vagrantfile; vagrant up + +If you are on Windows, paste this into your powershell: + +(new-object System.Net.WebClient).DownloadFile( +"https://buildroot.org/downloads/Vagrantfile","Vagrantfile"); +vagrant up + +If you want to follow development, you can use the daily snapshots or +make a clone of the Git repository. Refer to the Download page [http: +//buildroot.org/download] of the Buildroot website for more details. + +Chapter 4. Buildroot quick start + +Important: you can and should build everything as a normal user. +There is no need to be root to configure and use Buildroot. By +running all commands as a regular user, you protect your system +against packages behaving badly during compilation and installation. + +The first step when using Buildroot is to create a configuration. +Buildroot has a nice configuration tool similar to the one you can +find in the Linux kernel [http://www.kernel.org/] or in BusyBox +[http://www.busybox.net/]. + +From the buildroot directory, run + + $ make menuconfig + +for the original curses-based configurator, or + + $ make nconfig + +for the new curses-based configurator, or + + $ make xconfig + +for the Qt-based configurator, or + + $ make gconfig + +for the GTK-based configurator. + +All of these "make" commands will need to build a configuration +utility (including the interface), so you may need to install +"development" packages for relevant libraries used by the +configuration utilities. Refer to Chapter 2, System requirements for +more details, specifically the optional requirements to get the +dependencies of your favorite interface. + +For each menu entry in the configuration tool, you can find +associated help that describes the purpose of the entry. Refer to +Chapter 6, Buildroot configuration for details on some specific +configuration aspects. + +Once everything is configured, the configuration tool generates a +.config file that contains the entire configuration. This file will +be read by the top-level Makefile. + +To start the build process, simply run: + + $ make + +By default, Buildroot does not support top-level parallel build, so +running make -jN is not necessary. There is however experimental +support for top-level parallel build, see Section 8.12, “Top-level +parallel build”. + +The make command will generally perform the following steps: + + * download source files (as required); + * configure, build and install the cross-compilation toolchain, or + simply import an external toolchain; + * configure, build and install selected target packages; + * build a kernel image, if selected; + * build a bootloader image, if selected; + * create a root filesystem in selected formats. + +Buildroot output is stored in a single directory, output/. This +directory contains several subdirectories: + + * images/ where all the images (kernel image, bootloader and root + filesystem images) are stored. These are the files you need to + put on your target system. + * build/ where all the components are built (this includes tools + needed by Buildroot on the host and packages compiled for the + target). This directory contains one subdirectory for each of + these components. + * host/ contains both the tools built for the host, and the sysroot + of the target toolchain. The former is an installation of tools + compiled for the host that are needed for the proper execution of + Buildroot, including the cross-compilation toolchain. The latter + is a hierarchy similar to a root filesystem hierarchy. It + contains the headers and libraries of all user-space packages + that provide and install libraries used by other packages. + However, this directory is not intended to be the root filesystem + for the target: it contains a lot of development files, + unstripped binaries and libraries that make it far too big for an + embedded system. These development files are used to compile + libraries and applications for the target that depend on other + libraries. + * staging/ is a symlink to the target toolchain sysroot inside host + /, which exists for backwards compatibility. + * target/ which contains almost the complete root filesystem for + the target: everything needed is present except the device files + in /dev/ (Buildroot can’t create them because Buildroot doesn’t + run as root and doesn’t want to run as root). Also, it doesn’t + have the correct permissions (e.g. setuid for the busybox + binary). Therefore, this directory should not be used on your + target. Instead, you should use one of the images built in the + images/ directory. If you need an extracted image of the root + filesystem for booting over NFS, then use the tarball image + generated in images/ and extract it as root. Compared to staging + /, target/ contains only the files and libraries needed to run + the selected target applications: the development files (headers, + etc.) are not present, the binaries are stripped. + +These commands, make menuconfig|nconfig|gconfig|xconfig and make, are +the basic ones that allow to easily and quickly generate images +fitting your needs, with all the features and applications you +enabled. + +More details about the "make" command usage are given in Section 8.1, +“make tips”. + +Chapter 5. Community resources + +Like any open source project, Buildroot has different ways to share +information in its community and outside. + +Each of those ways may interest you if you are looking for some help, +want to understand Buildroot or contribute to the project. + +Mailing List + + Buildroot has a mailing list for discussion and development. It + is the main method of interaction for Buildroot users and + developers. + + Only subscribers to the Buildroot mailing list are allowed to + post to this list. You can subscribe via the mailing list info + page [http://lists.buildroot.org/mailman/listinfo/buildroot]. + + Mails that are sent to the mailing list are also available in the + mailing list archives, available through Mailman [http:// + lists.buildroot.org/pipermail/buildroot] or at lore.kernel.org + [https://lore.kernel.org/buildroot/]. + +IRC + + The Buildroot IRC channel #buildroot [irc://irc.oftc.net/# + buildroot] is hosted on OFTC [https://www.oftc.net/WebChat/]. It + is a useful place to ask quick questions or discuss on certain + topics. + + When asking for help on IRC, share relevant logs or pieces of + code using a code sharing website, such as https://paste.ack.tf/. + + Note that for certain questions, posting to the mailing list may + be better as it will reach more people, both developers and + users. + +Bug tracker + Bugs in Buildroot can be reported via the mailing list or + alternatively via the Buildroot bugtracker [https:// + bugs.buildroot.org/buglist.cgi?product=buildroot]. Please refer + to Section 22.6, “Reporting issues/bugs or getting help” before + creating a bug report. +Wiki + The Buildroot wiki page [http://elinux.org/Buildroot] is hosted + on the eLinux [http://elinux.org] wiki. It contains some useful + links, an overview of past and upcoming events, and a TODO list. +Patchwork + + Patchwork is a web-based patch tracking system designed to + facilitate the contribution and management of contributions to an + open-source project. Patches that have been sent to a mailing + list are 'caught' by the system, and appear on a web page. Any + comments posted that reference the patch are appended to the + patch page too. For more information on Patchwork see http:// + jk.ozlabs.org/projects/patchwork/. + + Buildroot’s Patchwork website is mainly for use by Buildroot’s + maintainer to ensure patches aren’t missed. It is also used by + Buildroot patch reviewers (see also Section 22.3.1, “Applying + Patches from Patchwork”). However, since the website exposes + patches and their corresponding review comments in a clean and + concise web interface, it can be useful for all Buildroot + developers. + + The Buildroot patch management interface is available at https:// + patchwork.ozlabs.org/project/buildroot/list/. + +Part II. User guide + +Table of Contents + +6. Buildroot configuration + + 6.1. Cross-compilation toolchain + 6.2. /dev management + 6.3. init system + +7. Configuration of other components +8. General Buildroot usage + + 8.1. make tips + 8.2. Understanding when a full rebuild is necessary + 8.3. Understanding how to rebuild packages + 8.4. Offline builds + 8.5. Building out-of-tree + 8.6. Environment variables + 8.7. Dealing efficiently with filesystem images + 8.8. Details about packages + 8.9. Graphing the dependencies between packages + 8.10. Graphing the build duration + 8.11. Graphing the filesystem size contribution of packages + 8.12. Top-level parallel build + 8.13. Advanced usage + +9. Project-specific customization + + 9.1. Recommended directory structure + 9.2. Keeping customizations outside of Buildroot + 9.3. Storing the Buildroot configuration + 9.4. Storing the configuration of other components + 9.5. Customizing the generated target filesystem + 9.6. Adding custom user accounts + 9.7. Customization after the images have been created + 9.8. Adding project-specific patches + 9.9. Adding project-specific packages + 9.10. Quick guide to storing your project-specific customizations + +10. Integration topics + + 10.1. Systemd + 10.2. Using SELinux in Buildroot + +11. Frequently Asked Questions & Troubleshooting + + 11.1. The boot hangs after Starting network… + 11.2. Why is there no compiler on the target? + 11.3. Why are there no development files on the target? + 11.4. Why is there no documentation on the target? + 11.5. Why are some packages not visible in the Buildroot config + menu? + 11.6. Why not use the target directory as a chroot directory? + 11.7. Why doesn’t Buildroot generate binary packages (.deb, + .ipkg…)? + 11.8. How to speed-up the build process? + +12. Known issues +13. Legal notice and licensing + + 13.1. Complying with open source licenses + 13.2. Complying with the Buildroot license + +14. Beyond Buildroot + + 14.1. Boot the generated images + 14.2. Chroot + +Chapter 6. Buildroot configuration + +All the configuration options in make *config have a help text +providing details about the option. + +The make *config commands also offer a search tool. Read the help +message in the different frontend menus to know how to use it: + + * in menuconfig, the search tool is called by pressing /; + * in xconfig, the search tool is called by pressing Ctrl + f. + +The result of the search shows the help message of the matching +items. In menuconfig, numbers in the left column provide a shortcut +to the corresponding entry. Just type this number to directly jump to +the entry, or to the containing menu in case the entry is not +selectable due to a missing dependency. + +Although the menu structure and the help text of the entries should +be sufficiently self-explanatory, a number of topics require +additional explanation that cannot easily be covered in the help text +and are therefore covered in the following sections. + +6.1. Cross-compilation toolchain + +A compilation toolchain is the set of tools that allows you to +compile code for your system. It consists of a compiler (in our case, +gcc), binary utils like assembler and linker (in our case, binutils) +and a C standard library (for example GNU Libc [http://www.gnu.org/ +software/libc/libc.html], uClibc-ng [http://www.uclibc-ng.org/]). + +The system installed on your development station certainly already +has a compilation toolchain that you can use to compile an +application that runs on your system. If you’re using a PC, your +compilation toolchain runs on an x86 processor and generates code for +an x86 processor. Under most Linux systems, the compilation toolchain +uses the GNU libc (glibc) as the C standard library. This compilation +toolchain is called the "host compilation toolchain". The machine on +which it is running, and on which you’re working, is called the "host +system" ^[3]. + +The compilation toolchain is provided by your distribution, and +Buildroot has nothing to do with it (other than using it to build a +cross-compilation toolchain and other tools that are run on the +development host). + +As said above, the compilation toolchain that comes with your system +runs on and generates code for the processor in your host system. As +your embedded system has a different processor, you need a +cross-compilation toolchain - a compilation toolchain that runs on +your host system but generates code for your target system (and +target processor). For example, if your host system uses x86 and your +target system uses ARM, the regular compilation toolchain on your +host runs on x86 and generates code for x86, while the +cross-compilation toolchain runs on x86 and generates code for ARM. + +Buildroot provides two solutions for the cross-compilation toolchain: + + * The internal toolchain backend, called Buildroot toolchain in the + configuration interface. + * The external toolchain backend, called External toolchain in the + configuration interface. + +The choice between these two solutions is done using the Toolchain +Type option in the Toolchain menu. Once one solution has been chosen, +a number of configuration options appear, they are detailed in the +following sections. + +6.1.1. Internal toolchain backend + +The internal toolchain backend is the backend where Buildroot builds +by itself a cross-compilation toolchain, before building the +userspace applications and libraries for your target embedded system. + +This backend supports several C libraries: uClibc-ng [http:// +www.uclibc-ng.org], glibc [http://www.gnu.org/software/libc/ +libc.html] and musl [http://www.musl-libc.org]. + +Once you have selected this backend, a number of options appear. The +most important ones allow to: + + * Change the version of the Linux kernel headers used to build the + toolchain. This item deserves a few explanations. In the process + of building a cross-compilation toolchain, the C library is being + built. This library provides the interface between userspace + applications and the Linux kernel. In order to know how to "talk" + to the Linux kernel, the C library needs to have access to the + Linux kernel headers (i.e. the .h files from the kernel), which + define the interface between userspace and the kernel (system + calls, data structures, etc.). Since this interface is backward + compatible, the version of the Linux kernel headers used to build + your toolchain do not need to match exactly the version of the + Linux kernel you intend to run on your embedded system. They only + need to have a version equal or older to the version of the Linux + kernel you intend to run. If you use kernel headers that are more + recent than the Linux kernel you run on your embedded system, + then the C library might be using interfaces that are not + provided by your Linux kernel. + * Change the version of the GCC compiler, binutils and the C + library. + * Select a number of toolchain options (uClibc only): whether the + toolchain should have RPC support (used mainly for NFS), + wide-char support, locale support (for internationalization), C++ + support or thread support. Depending on which options you choose, + the number of userspace applications and libraries visible in + Buildroot menus will change: many applications and libraries + require certain toolchain options to be enabled. Most packages + show a comment when a certain toolchain option is required to be + able to enable those packages. If needed, you can further refine + the uClibc configuration by running make uclibc-menuconfig. Note + however that all packages in Buildroot are tested against the + default uClibc configuration bundled in Buildroot: if you deviate + from this configuration by removing features from uClibc, some + packages may no longer build. + +It is worth noting that whenever one of those options is modified, +then the entire toolchain and system must be rebuilt. See +Section 8.2, “Understanding when a full rebuild is necessary”. + +Advantages of this backend: + + * Well integrated with Buildroot + * Fast, only builds what’s necessary + +Drawbacks of this backend: + + * Rebuilding the toolchain is needed when doing make clean, which + takes time. If you’re trying to reduce your build time, consider + using the External toolchain backend. + +6.1.2. External toolchain backend + +The external toolchain backend allows to use existing pre-built +cross-compilation toolchains. Buildroot knows about a number of +well-known cross-compilation toolchains (from Linaro [http:// +www.linaro.org] for ARM, Sourcery CodeBench [http://www.mentor.com/ +embedded-software/sourcery-tools/sourcery-codebench/editions/ +lite-edition/] for ARM, x86-64, PowerPC, and MIPS, and is capable of +downloading them automatically, or it can be pointed to a custom +toolchain, either available for download or installed locally. + +Then, you have three solutions to use an external toolchain: + + * Use a predefined external toolchain profile, and let Buildroot + download, extract and install the toolchain. Buildroot already + knows about a few CodeSourcery and Linaro toolchains. Just select + the toolchain profile in Toolchain from the available ones. This + is definitely the easiest solution. + * Use a predefined external toolchain profile, but instead of + having Buildroot download and extract the toolchain, you can tell + Buildroot where your toolchain is already installed on your + system. Just select the toolchain profile in Toolchain through + the available ones, unselect Download toolchain automatically, + and fill the Toolchain path text entry with the path to your + cross-compiling toolchain. + * Use a completely custom external toolchain. This is particularly + useful for toolchains generated using crosstool-NG or with + Buildroot itself. To do this, select the Custom toolchain + solution in the Toolchain list. You need to fill the Toolchain + path, Toolchain prefix and External toolchain C library options. + Then, you have to tell Buildroot what your external toolchain + supports. If your external toolchain uses the glibc library, you + only have to tell whether your toolchain supports C++ or not and + whether it has built-in RPC support. If your external toolchain + uses the uClibc library, then you have to tell Buildroot if it + supports RPC, wide-char, locale, program invocation, threads and + C++. At the beginning of the execution, Buildroot will tell you + if the selected options do not match the toolchain configuration. + +Our external toolchain support has been tested with toolchains from +CodeSourcery and Linaro, toolchains generated by crosstool-NG [http:/ +/crosstool-ng.org], and toolchains generated by Buildroot itself. In +general, all toolchains that support the sysroot feature should work. +If not, do not hesitate to contact the developers. + +We do not support toolchains or SDK generated by OpenEmbedded or +Yocto, because these toolchains are not pure toolchains (i.e. just +the compiler, binutils, the C and C++ libraries). Instead these +toolchains come with a very large set of pre-compiled libraries and +programs. Therefore, Buildroot cannot import the sysroot of the +toolchain, as it would contain hundreds of megabytes of pre-compiled +libraries that are normally built by Buildroot. + +We also do not support using the distribution toolchain (i.e. the gcc +/binutils/C library installed by your distribution) as the toolchain +to build software for the target. This is because your distribution +toolchain is not a "pure" toolchain (i.e. only with the C/C++ +library), so we cannot import it properly into the Buildroot build +environment. So even if you are building a system for a x86 or x86_64 +target, you have to generate a cross-compilation toolchain with +Buildroot or crosstool-NG. + +If you want to generate a custom toolchain for your project, that can +be used as an external toolchain in Buildroot, our recommendation is +to build it either with Buildroot itself (see Section 6.1.3, “Build +an external toolchain with Buildroot”) or with crosstool-NG [http:// +crosstool-ng.org]. + +Advantages of this backend: + + * Allows to use well-known and well-tested cross-compilation + toolchains. + * Avoids the build time of the cross-compilation toolchain, which + is often very significant in the overall build time of an + embedded Linux system. + +Drawbacks of this backend: + + * If your pre-built external toolchain has a bug, may be hard to + get a fix from the toolchain vendor, unless you build your + external toolchain by yourself using Buildroot or Crosstool-NG. + +6.1.3. Build an external toolchain with Buildroot + +The Buildroot internal toolchain option can be used to create an +external toolchain. Here are a series of steps to build an internal +toolchain and package it up for reuse by Buildroot itself (or other +projects). + +Create a new Buildroot configuration, with the following details: + + * Select the appropriate Target options for your target CPU + architecture + * In the Toolchain menu, keep the default of Buildroot toolchain + for Toolchain type, and configure your toolchain as desired + * In the System configuration menu, select None as the Init system + and none as /bin/sh + * In the Target packages menu, disable BusyBox + * In the Filesystem images menu, disable tar the root filesystem + +Then, we can trigger the build, and also ask Buildroot to generate a +SDK. This will conveniently generate for us a tarball which contains +our toolchain: + +make sdk + +This produces the SDK tarball in $(O)/images, with a name similar to +arm-buildroot-linux-uclibcgnueabi_sdk-buildroot.tar.gz. Save this +tarball, as it is now the toolchain that you can re-use as an +external toolchain in other Buildroot projects. + +In those other Buildroot projects, in the Toolchain menu: + + * Set Toolchain type to External toolchain + * Set Toolchain to Custom toolchain + * Set Toolchain origin to Toolchain to be downloaded and installed + * Set Toolchain URL to file:///path/to/your/sdk/tarball.tar.gz + +6.1.3.1. External toolchain wrapper + +When using an external toolchain, Buildroot generates a wrapper +program, that transparently passes the appropriate options (according +to the configuration) to the external toolchain programs. In case you +need to debug this wrapper to check exactly what arguments are +passed, you can set the environment variable BR2_DEBUG_WRAPPER to +either one of: + + * 0, empty or not set: no debug + * 1: trace all arguments on a single line + * 2: trace one argument per line + +6.2. /dev management + +On a Linux system, the /dev directory contains special files, called +device files, that allow userspace applications to access the +hardware devices managed by the Linux kernel. Without these device +files, your userspace applications would not be able to use the +hardware devices, even if they are properly recognized by the Linux +kernel. + +Under System configuration, /dev management, Buildroot offers four +different solutions to handle the /dev directory : + + * The first solution is Static using device table. This is the old + classical way of handling device files in Linux. With this + method, the device files are persistently stored in the root + filesystem (i.e. they persist across reboots), and there is + nothing that will automatically create and remove those device + files when hardware devices are added or removed from the system. + Buildroot therefore creates a standard set of device files using + a device table, the default one being stored in system/ + device_table_dev.txt in the Buildroot source code. This file is + processed when Buildroot generates the final root filesystem + image, and the device files are therefore not visible in the + output/target directory. The BR2_ROOTFS_STATIC_DEVICE_TABLE + option allows to change the default device table used by + Buildroot, or to add an additional device table, so that + additional device files are created by Buildroot during the + build. So, if you use this method, and a device file is missing + in your system, you can for example create a board// + /device_table_dev.txt file that contains the + description of your additional device files, and then you can set + BR2_ROOTFS_STATIC_DEVICE_TABLE to system/device_table_dev.txt + board///device_table_dev.txt. For more + details about the format of the device table file, see + Chapter 25, Makedev syntax documentation. + * The second solution is Dynamic using devtmpfs only. devtmpfs is a + virtual filesystem inside the Linux kernel that has been + introduced in kernel 2.6.32 (if you use an older kernel, it is + not possible to use this option). When mounted in /dev, this + virtual filesystem will automatically make device files appear + and disappear as hardware devices are added and removed from the + system. This filesystem is not persistent across reboots: it is + filled dynamically by the kernel. Using devtmpfs requires the + following kernel configuration options to be enabled: + CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT. When Buildroot is in + charge of building the Linux kernel for your embedded device, it + makes sure that those two options are enabled. However, if you + build your Linux kernel outside of Buildroot, then it is your + responsibility to enable those two options (if you fail to do so, + your Buildroot system will not boot). + * The third solution is Dynamic using devtmpfs + mdev. This method + also relies on the devtmpfs virtual filesystem detailed above (so + the requirement to have CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT + enabled in the kernel configuration still apply), but adds the + mdev userspace utility on top of it. mdev is a program part of + BusyBox that the kernel will call every time a device is added or + removed. Thanks to the /etc/mdev.conf configuration file, mdev + can be configured to for example, set specific permissions or + ownership on a device file, call a script or application whenever + a device appears or disappear, etc. Basically, it allows + userspace to react on device addition and removal events. mdev + can for example be used to automatically load kernel modules when + devices appear on the system. mdev is also important if you have + devices that require a firmware, as it will be responsible for + pushing the firmware contents to the kernel. mdev is a + lightweight implementation (with fewer features) of udev. For + more details about mdev and the syntax of its configuration file, + see http://git.busybox.net/busybox/tree/docs/mdev.txt. + * The fourth solution is Dynamic using devtmpfs + eudev. This + method also relies on the devtmpfs virtual filesystem detailed + above, but adds the eudev userspace daemon on top of it. eudev is + a daemon that runs in the background, and gets called by the + kernel when a device gets added or removed from the system. It is + a more heavyweight solution than mdev, but provides higher + flexibility. eudev is a standalone version of udev, the original + userspace daemon used in most desktop Linux distributions, which + is now part of Systemd. For more details, see http:// + en.wikipedia.org/wiki/Udev. + +The Buildroot developers recommendation is to start with the Dynamic +using devtmpfs only solution, until you have the need for userspace +to be notified when devices are added/removed, or if firmwares are +needed, in which case Dynamic using devtmpfs + mdev is usually a good +solution. + +Note that if systemd is chosen as init system, /dev management will +be performed by the udev program provided by systemd. + +6.3. init system + +The init program is the first userspace program started by the kernel +(it carries the PID number 1), and is responsible for starting the +userspace services and programs (for example: web server, graphical +applications, other network servers, etc.). + +Buildroot allows to use three different types of init systems, which +can be chosen from System configuration, Init system: + + * The first solution is BusyBox. Amongst many programs, BusyBox has + an implementation of a basic init program, which is sufficient + for most embedded systems. Enabling the BR2_INIT_BUSYBOX will + ensure BusyBox will build and install its init program. This is + the default solution in Buildroot. The BusyBox init program will + read the /etc/inittab file at boot to know what to do. The syntax + of this file can be found in http://git.busybox.net/busybox/tree/ + examples/inittab (note that BusyBox inittab syntax is special: do + not use a random inittab documentation from the Internet to learn + about BusyBox inittab). The default inittab in Buildroot is + stored in system/skeleton/etc/inittab. Apart from mounting a few + important filesystems, the main job the default inittab does is + to start the /etc/init.d/rcS shell script, and start a getty + program (which provides a login prompt). + * The second solution is systemV. This solution uses the old + traditional sysvinit program, packed in Buildroot in package/ + sysvinit. This was the solution used in most desktop Linux + distributions, until they switched to more recent alternatives + such as Upstart or Systemd. sysvinit also works with an inittab + file (which has a slightly different syntax than the one from + BusyBox). The default inittab installed with this init solution + is located in package/sysvinit/inittab. + * The third solution is systemd. systemd is the new generation init + system for Linux. It does far more than traditional init + programs: aggressive parallelization capabilities, uses socket + and D-Bus activation for starting services, offers on-demand + starting of daemons, keeps track of processes using Linux control + groups, supports snapshotting and restoring of the system state, + etc. systemd will be useful on relatively complex embedded + systems, for example the ones requiring D-Bus and services + communicating between each other. It is worth noting that systemd + brings a fairly big number of large dependencies: dbus, udev and + more. For more details about systemd, see http:// + www.freedesktop.org/wiki/Software/systemd. + +The solution recommended by Buildroot developers is to use the +BusyBox init as it is sufficient for most embedded systems. systemd +can be used for more complex situations. + + +--------------------------------------------------------------------- + +^[3] This terminology differs from what is used by GNU configure, +where the host is the machine on which the application will run +(which is usually the same as target) + +Chapter 7. Configuration of other components + +Before attempting to modify any of the components below, make sure +you have already configured Buildroot itself, and have enabled the +corresponding package. + +BusyBox + + If you already have a BusyBox configuration file, you can + directly specify this file in the Buildroot configuration, using + BR2_PACKAGE_BUSYBOX_CONFIG. Otherwise, Buildroot will start from + a default BusyBox configuration file. + + To make subsequent changes to the configuration, use make + busybox-menuconfig to open the BusyBox configuration editor. + + It is also possible to specify a BusyBox configuration file + through an environment variable, although this is not + recommended. Refer to Section 8.6, “Environment variables” for + more details. + +uClibc + Configuration of uClibc is done in the same way as for BusyBox. + The configuration variable to specify an existing configuration + file is BR2_UCLIBC_CONFIG. The command to make subsequent changes + is make uclibc-menuconfig. +Linux kernel + + If you already have a kernel configuration file, you can directly + specify this file in the Buildroot configuration, using + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG. + + If you do not yet have a kernel configuration file, you can + either start by specifying a defconfig in the Buildroot + configuration, using BR2_LINUX_KERNEL_USE_DEFCONFIG, or start by + creating an empty file and specifying it as custom configuration + file, using BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG. + + To make subsequent changes to the configuration, use make + linux-menuconfig to open the Linux configuration editor. + +Barebox + Configuration of Barebox is done in the same way as for the Linux + kernel. The corresponding configuration variables are + BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG and + BR2_TARGET_BAREBOX_USE_DEFCONFIG. To open the configuration + editor, use make barebox-menuconfig. +U-Boot + Configuration of U-Boot (version 2015.04 or newer) is done in the + same way as for the Linux kernel. The corresponding configuration + variables are BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG and + BR2_TARGET_UBOOT_USE_DEFCONFIG. To open the configuration editor, + use make uboot-menuconfig. + +Chapter 8. General Buildroot usage + +8.1. make tips + +This is a collection of tips that help you make the most of +Buildroot. + +Display all commands executed by make:  + + $ make V=1 + +Display the list of boards with a defconfig:  + + $ make list-defconfigs + +Display all available targets:  + + $ make help + +Not all targets are always available, some settings in the .config +file may hide some targets: + + * busybox-menuconfig only works when busybox is enabled; + * linux-menuconfig and linux-savedefconfig only work when linux is + enabled; + * uclibc-menuconfig is only available when the uClibc C library is + selected in the internal toolchain backend; + * barebox-menuconfig and barebox-savedefconfig only work when the + barebox bootloader is enabled. + * uboot-menuconfig and uboot-savedefconfig only work when the + U-Boot bootloader is enabled and the uboot build system is set to + Kconfig. + +Cleaning: Explicit cleaning is required when any of the architecture +or toolchain configuration options are changed. + +To delete all build products (including build directories, host, +staging and target trees, the images and the toolchain): + + $ make clean + +Generating the manual: The present manual sources are located in the +docs/manual directory. To generate the manual: + + $ make manual-clean + $ make manual + +The manual outputs will be generated in output/docs/manual. + +Notes + + * A few tools are required to build the documentation (see: + Section 2.2, “Optional packages”). + +Resetting Buildroot for a new target: To delete all build products as +well as the configuration: + + $ make distclean + +Notes. If ccache is enabled, running make clean or distclean does not +empty the compiler cache used by Buildroot. To delete it, refer to +Section 8.13.3, “Using ccache in Buildroot”. + +Dumping the internal make variables: One can dump the variables known +to make, along with their values: + + $ make -s printvars VARS='VARIABLE1 VARIABLE2' + VARIABLE1=value_of_variable + VARIABLE2=value_of_variable + +It is possible to tweak the output using some variables: + + * VARS will limit the listing to variables which names match the + specified make-patterns - this must be set else nothing is + printed + * QUOTED_VARS, if set to YES, will single-quote the value + * RAW_VARS, if set to YES, will print the unexpanded value + +For example: + + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES + BUSYBOX_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_ALL_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_PATCH_DEPENDENCIES= + BUSYBOX_RDEPENDENCIES=ncurses util-linux + + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES QUOTED_VARS=YES + BUSYBOX_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_ALL_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_PATCH_DEPENDENCIES='' + BUSYBOX_RDEPENDENCIES='ncurses util-linux' + + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES RAW_VARS=YES + BUSYBOX_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_ALL_DEPENDENCIES=$(sort $(BUSYBOX_FINAL_DEPENDENCIES) $(BUSYBOX_FINAL_PATCH_DEPENDENCIES)) + BUSYBOX_FINAL_DEPENDENCIES=$(sort $(BUSYBOX_DEPENDENCIES)) + BUSYBOX_FINAL_PATCH_DEPENDENCIES=$(sort $(BUSYBOX_PATCH_DEPENDENCIES)) + BUSYBOX_RDEPENDENCIES=ncurses util-linux + +The output of quoted variables can be reused in shell scripts, for +example: + + $ eval $(make -s printvars VARS=BUSYBOX_DEPENDENCIES QUOTED_VARS=YES) + $ echo $BUSYBOX_DEPENDENCIES + skeleton toolchain + +8.2. Understanding when a full rebuild is necessary + +Buildroot does not attempt to detect what parts of the system should +be rebuilt when the system configuration is changed through make +menuconfig, make xconfig or one of the other configuration tools. In +some cases, Buildroot should rebuild the entire system, in some +cases, only a specific subset of packages. But detecting this in a +completely reliable manner is very difficult, and therefore the +Buildroot developers have decided to simply not attempt to do this. + +Instead, it is the responsibility of the user to know when a full +rebuild is necessary. As a hint, here are a few rules of thumb that +can help you understand how to work with Buildroot: + + * When the target architecture configuration is changed, a complete + rebuild is needed. Changing the architecture variant, the binary + format or the floating point strategy for example has an impact + on the entire system. + * When the toolchain configuration is changed, a complete rebuild + generally is needed. Changing the toolchain configuration often + involves changing the compiler version, the type of C library or + its configuration, or some other fundamental configuration item, + and these changes have an impact on the entire system. + * When an additional package is added to the configuration, a full + rebuild is not necessarily needed. Buildroot will detect that + this package has never been built, and will build it. However, if + this package is a library that can optionally be used by packages + that have already been built, Buildroot will not automatically + rebuild those. Either you know which packages should be rebuilt, + and you can rebuild them manually, or you should do a full + rebuild. For example, let’s suppose you have built a system with + the ctorrent package, but without openssl. Your system works, but + you realize you would like to have SSL support in ctorrent, so + you enable the openssl package in Buildroot configuration and + restart the build. Buildroot will detect that openssl should be + built and will be build it, but it will not detect that ctorrent + should be rebuilt to benefit from openssl to add OpenSSL support. + You will either have to do a full rebuild, or rebuild ctorrent + itself. + * When a package is removed from the configuration, Buildroot does + not do anything special. It does not remove the files installed + by this package from the target root filesystem or from the + toolchain sysroot. A full rebuild is needed to get rid of this + package. However, generally you don’t necessarily need this + package to be removed right now: you can wait for the next lunch + break to restart the build from scratch. + * When the sub-options of a package are changed, the package is not + automatically rebuilt. After making such changes, rebuilding only + this package is often sufficient, unless enabling the package + sub-option adds some features to the package that are useful for + another package which has already been built. Again, Buildroot + does not track when a package should be rebuilt: once a package + has been built, it is never rebuilt unless explicitly told to do + so. + * When a change to the root filesystem skeleton is made, a full + rebuild is needed. However, when changes to the root filesystem + overlay, a post-build script or a post-image script are made, + there is no need for a full rebuild: a simple make invocation + will take the changes into account. + * When a package listed in FOO_DEPENDENCIES is rebuilt or removed, + the package foo is not automatically rebuilt. For example, if a + package bar is listed in FOO_DEPENDENCIES with FOO_DEPENDENCIES = + bar and the configuration of the bar package is changed, the + configuration change would not result in a rebuild of package foo + automatically. In this scenario, you may need to either rebuild + any packages in your build which reference bar in their + DEPENDENCIES, or perform a full rebuild to ensure any bar + dependent packages are up to date. + +Generally speaking, when you’re facing a build error and you’re +unsure of the potential consequences of the configuration changes +you’ve made, do a full rebuild. If you get the same build error, then +you are sure that the error is not related to partial rebuilds of +packages, and if this error occurs with packages from the official +Buildroot, do not hesitate to report the problem! As your experience +with Buildroot progresses, you will progressively learn when a full +rebuild is really necessary, and you will save more and more time. + +For reference, a full rebuild is achieved by running: + +$ make clean all + +8.3. Understanding how to rebuild packages + +One of the most common questions asked by Buildroot users is how to +rebuild a given package or how to remove a package without rebuilding +everything from scratch. + +Removing a package is unsupported by Buildroot without rebuilding +from scratch. This is because Buildroot doesn’t keep track of which +package installs what files in the output/staging and output/target +directories, or which package would be compiled differently depending +on the availability of another package. + +The easiest way to rebuild a single package from scratch is to remove +its build directory in output/build. Buildroot will then re-extract, +re-configure, re-compile and re-install this package from scratch. +You can ask buildroot to do this with the make -dirclean +command. + +On the other hand, if you only want to restart the build process of a +package from its compilation step, you can run make +-rebuild. It will restart the compilation and installation of the +package, but not from scratch: it basically re-executes make and make +install inside the package, so it will only rebuild files that +changed. + +If you want to restart the build process of a package from its +configuration step, you can run make -reconfigure. It will +restart the configuration, compilation and installation of the +package. + +While -rebuild implies -reinstall and +-reconfigure implies -rebuild, these targets as well as + only act on the said package, and do not trigger +re-creating the root filesystem image. If re-creating the root +filesystem in necessary, one should in addition run make or make all. + +Internally, Buildroot creates so-called stamp files to keep track of +which build steps have been completed for each package. They are +stored in the package build directory, output/build/- +/ and are named .stamp_. The commands detailed +above simply manipulate these stamp files to force Buildroot to +restart a specific set of steps of a package build process. + +Further details about package special make targets are explained in +Section 8.13.5, “Package-specific make targets”. + +8.4. Offline builds + +If you intend to do an offline build and just want to download all +sources that you previously selected in the configurator (menuconfig, +nconfig, xconfig or gconfig), then issue: + + $ make source + +You can now disconnect or copy the content of your dl directory to +the build-host. + +8.5. Building out-of-tree + +As default, everything built by Buildroot is stored in the directory +output in the Buildroot tree. + +Buildroot also supports building out of tree with a syntax similar to +the Linux kernel. To use it, add O= to the make command +line: + + $ make O=/tmp/build menuconfig + +Or: + + $ cd /tmp/build; make O=$PWD -C path/to/buildroot menuconfig + +All the output files will be located under /tmp/build. If the O path +does not exist, Buildroot will create it. + +Note: the O path can be either an absolute or a relative path, but if +it’s passed as a relative path, it is important to note that it is +interpreted relative to the main Buildroot source directory, not the +current working directory. + +When using out-of-tree builds, the Buildroot .config and temporary +files are also stored in the output directory. This means that you +can safely run multiple builds in parallel using the same source tree +as long as they use unique output directories. + +For ease of use, Buildroot generates a Makefile wrapper in the output +directory - so after the first run, you no longer need to pass O=<…> +and -C <…>, simply run (in the output directory): + + $ make + +8.6. Environment variables + +Buildroot also honors some environment variables, when they are +passed to make or set in the environment: + + * HOSTCXX, the host C++ compiler to use + * HOSTCC, the host C compiler to use + * UCLIBC_CONFIG_FILE=, path to the uClibc + configuration file, used to compile uClibc, if an internal + toolchain is being built. Note that the uClibc configuration file + can also be set from the configuration interface, so through the + Buildroot .config file; this is the recommended way of setting + it. + * BUSYBOX_CONFIG_FILE=, path to the BusyBox + configuration file. Note that the BusyBox configuration file can + also be set from the configuration interface, so through the + Buildroot .config file; this is the recommended way of setting + it. + * BR2_CCACHE_DIR to override the directory where Buildroot stores + the cached files when using ccache. + * BR2_DL_DIR to override the directory in which Buildroot stores/ + retrieves downloaded files. Note that the Buildroot download + directory can also be set from the configuration interface, so + through the Buildroot .config file. See Section 8.13.4, “Location + of downloaded packages” for more details on how you can set the + download directory. + * BR2_GRAPH_ALT, if set and non-empty, to use an alternate + color-scheme in build-time graphs + * BR2_GRAPH_OUT to set the filetype of generated graphs, either pdf + (the default), or png. + * BR2_GRAPH_DEPS_OPTS to pass extra options to the dependency + graph; see Section 8.9, “Graphing the dependencies between + packages” for the accepted options + * BR2_GRAPH_DOT_OPTS is passed verbatim as options to the dot + utility to draw the dependency graph. + * BR2_GRAPH_SIZE_OPTS to pass extra options to the size graph; see + Section 8.11, “Graphing the filesystem size contribution of + packages” for the acepted options + +An example that uses config files located in the toplevel directory +and in your $HOME: + + $ make UCLIBC_CONFIG_FILE=uClibc.config BUSYBOX_CONFIG_FILE=$HOME/bb.config + +If you want to use a compiler other than the default gcc or g++ for +building helper-binaries on your host, then do + + $ make HOSTCXX=g++-4.3-HEAD HOSTCC=gcc-4.3-HEAD + +8.7. Dealing efficiently with filesystem images + +Filesystem images can get pretty big, depending on the filesystem you +choose, the number of packages, whether you provisioned free space… +Yet, some locations in the filesystems images may just be empty (e.g. +a long run of zeroes); such a file is called a sparse file. + +Most tools can handle sparse files efficiently, and will only store +or write those parts of a sparse file that are not empty. + +For example: + + * tar accepts the -S option to tell it to only store non-zero + blocks of sparse files: + + + tar cf archive.tar -S [files…] will efficiently store sparse + files in a tarball + + tar xf archive.tar -S will efficiently store sparse files + extracted from a tarball + * cp accepts the --sparse=WHEN option (WHEN is one of auto, never + or always): + + + cp --sparse=always source.file dest.file will make dest.file + a sparse file if source.file has long runs of zeroes + +Other tools may have similar options. Please consult their respective +man pages. + +You can use sparse files if you need to store the filesystem images +(e.g. to transfer from one machine to another), or if you need to +send them (e.g. to the Q&A team). + +Note however that flashing a filesystem image to a device while using +the sparse mode of dd may result in a broken filesystem (e.g. the +block bitmap of an ext2 filesystem may be corrupted; or, if you have +sparse files in your filesystem, those parts may not be all-zeroes +when read back). You should only use sparse files when handling files +on the build machine, not when transferring them to an actual device +that will be used on the target. + +8.8. Details about packages + +Buildroot can produce a JSON blurb that describes the set of enabled +packages in the current configuration, together with their +dependencies, licenses and other metadata. This JSON blurb is +produced by using the show-info make target: + +make show-info + +Buildroot can also produce details about packages as HTML and JSON +output using the pkg-stats make target. Amongst other things, these +details include whether known CVEs (security vulnerabilities) affect +the packages in your current configuration. It also shows if there is +a newer upstream version for those packages. + +make pkg-stats + +8.9. Graphing the dependencies between packages + +One of Buildroot’s jobs is to know the dependencies between packages, +and make sure they are built in the right order. These dependencies +can sometimes be quite complicated, and for a given system, it is +often not easy to understand why such or such package was brought +into the build by Buildroot. + +In order to help understanding the dependencies, and therefore better +understand what is the role of the different components in your +embedded Linux system, Buildroot is capable of generating dependency +graphs. + +To generate a dependency graph of the full system you have compiled, +simply run: + +make graph-depends + +You will find the generated graph in output/graphs/graph-depends.pdf. + +If your system is quite large, the dependency graph may be too +complex and difficult to read. It is therefore possible to generate +the dependency graph just for a given package: + +make -graph-depends + +You will find the generated graph in output/graph/ +-graph-depends.pdf. + +Note that the dependency graphs are generated using the dot tool from +the Graphviz project, which you must have installed on your system to +use this feature. In most distributions, it is available as the +graphviz package. + +By default, the dependency graphs are generated in the PDF format. +However, by passing the BR2_GRAPH_OUT environment variable, you can +switch to other output formats, such as PNG, PostScript or SVG. All +formats supported by the -T option of the dot tool are supported. + +BR2_GRAPH_OUT=svg make graph-depends + +The graph-depends behaviour can be controlled by setting options in +the BR2_GRAPH_DEPS_OPTS environment variable. The accepted options +are: + + * --depth N, -d N, to limit the dependency depth to N levels. The + default, 0, means no limit. + * --stop-on PKG, -s PKG, to stop the graph on the package PKG. PKG + can be an actual package name, a glob, the keyword virtual (to + stop on virtual packages), or the keyword host (to stop on host + packages). The package is still present on the graph, but its + dependencies are not. + * --exclude PKG, -x PKG, like --stop-on, but also omits PKG from + the graph. + * --transitive, --no-transitive, to draw (or not) the transitive + dependencies. The default is to not draw transitive dependencies. + * --colors R,T,H, the comma-separated list of colors to draw the + root package (R), the target packages (T) and the host packages + (H). Defaults to: lightblue,grey,gainsboro + +BR2_GRAPH_DEPS_OPTS='-d 3 --no-transitive --colors=red,green,blue' make graph-depends + +8.10. Graphing the build duration + +When the build of a system takes a long time, it is sometimes useful +to be able to understand which packages are the longest to build, to +see if anything can be done to speed up the build. In order to help +such build time analysis, Buildroot collects the build time of each +step of each package, and allows to generate graphs from this data. + +To generate the build time graph after a build, run: + +make graph-build + +This will generate a set of files in output/graphs : + + * build.hist-build.pdf, a histogram of the build time for each + package, ordered in the build order. + * build.hist-duration.pdf, a histogram of the build time for each + package, ordered by duration (longest first) + * build.hist-name.pdf, a histogram of the build time for each + package, order by package name. + * build.pie-packages.pdf, a pie chart of the build time per package + * build.pie-steps.pdf, a pie chart of the global time spent in each + step of the packages build process. + +This graph-build target requires the Python Matplotlib and Numpy +libraries to be installed (python-matplotlib and python-numpy on most +distributions), and also the argparse module if you’re using a Python +version older than 2.7 (python-argparse on most distributions). + +By default, the output format for the graph is PDF, but a different +format can be selected using the BR2_GRAPH_OUT environment variable. +The only other format supported is PNG: + +BR2_GRAPH_OUT=png make graph-build + +8.11. Graphing the filesystem size contribution of packages + +When your target system grows, it is sometimes useful to understand +how much each Buildroot package is contributing to the overall root +filesystem size. To help with such an analysis, Buildroot collects +data about files installed by each package and using this data, +generates a graph and CSV files detailing the size contribution of +the different packages. + +To generate these data after a build, run: + +make graph-size + +This will generate: + + * output/graphs/graph-size.pdf, a pie chart of the contribution of + each package to the overall root filesystem size + * output/graphs/package-size-stats.csv, a CSV file giving the size + contribution of each package to the overall root filesystem size + * output/graphs/file-size-stats.csv, a CSV file giving the size + contribution of each installed file to the package it belongs, + and to the overall filesystem size. + +This graph-size target requires the Python Matplotlib library to be +installed (python-matplotlib on most distributions), and also the +argparse module if you’re using a Python version older than 2.7 +(python-argparse on most distributions). + +Just like for the duration graph, a BR2_GRAPH_OUT environment +variable is supported to adjust the output file format. See +Section 8.9, “Graphing the dependencies between packages” for details +about this environment variable. + +Additionally, one may set the environment variable +BR2_GRAPH_SIZE_OPTS to further control the generated graph. Accepted +options are: + + * --size-limit X, -l X, will group all packages which individual + contribution is below X percent, to a single entry labelled + Others in the graph. By default, X=0.01, which means packages + each contributing less than 1% are grouped under Others. Accepted + values are in the range [0.0..1.0]. + * --iec, --binary, --si, --decimal, to use IEC (binary, powers of + 1024) or SI (decimal, powers of 1000; the default) prefixes. + * --biggest-first, to sort packages in decreasing size order, + rather than in increasing size order. + +Note. The collected filesystem size data is only meaningful after a +complete clean rebuild. Be sure to run make clean all before using +make graph-size. + +To compare the root filesystem size of two different Buildroot +compilations, for example after adjusting the configuration or when +switching to another Buildroot release, use the size-stats-compare +script. It takes two file-size-stats.csv files (produced by make +graph-size) as input. Refer to the help text of this script for more +details: + +utils/size-stats-compare -h + +8.12. Top-level parallel build + +Note. This section deals with a very experimental feature, which is +known to break even in some non-unusual situations. Use at your own +risk. + +Buildroot has always been capable of using parallel build on a per +package basis: each package is built by Buildroot using make -jN (or +the equivalent invocation for non-make-based build systems). The +level of parallelism is by default number of CPUs + 1, but it can be +adjusted using the BR2_JLEVEL configuration option. + +Until 2020.02, Buildroot was however building packages in a serial +fashion: each package was built one after the other, without +parallelization of the build between packages. As of 2020.02, +Buildroot has experimental support for top-level parallel build, +which allows some signicant build time savings by building packages +that have no dependency relationship in parallel. This feature is +however marked as experimental and is known not to work in some +cases. + +In order to use top-level parallel build, one must: + + 1. Enable the option BR2_PER_PACKAGE_DIRECTORIES in the Buildroot + configuration + 2. Use make -jN when starting the Buildroot build + +Internally, the BR2_PER_PACKAGE_DIRECTORIES will enable a mechanism +called per-package directories, which will have the following +effects: + + * Instead of a global target directory and a global host directory + common to all packages, per-package target and host directories + will be used, in $(O)/per-package//target/ and $(O)/ + per-package//host/ respectively. Those folders will be + populated from the corresponding folders of the package + dependencies at the beginning of build. The compiler and + all other tools will therefore only be able to see and access + files installed by dependencies explicitly listed by . + * At the end of the build, the global target and host directories + will be populated, located in $(O)/target and $(O)/host + respectively. This means that during the build, those folders + will be empty and it’s only at the very end of the build that + they will be populated. + +8.13. Advanced usage + +8.13.1. Using the generated toolchain outside Buildroot + +You may want to compile, for your target, your own programs or other +software that are not packaged in Buildroot. In order to do this you +can use the toolchain that was generated by Buildroot. + +The toolchain generated by Buildroot is located by default in output/ +host/. The simplest way to use it is to add output/host/bin/ to your +PATH environment variable and then to use ARCH-linux-gcc, +ARCH-linux-objdump, ARCH-linux-ld, etc. + +Alternatively, Buildroot can also export the toolchain and the +development files of all selected packages, as an SDK, by running the +command make sdk. This generates a tarball of the content of the host +directory output/host/, named _sdk-buildroot.tar.gz +(which can be overriden by setting the environment variable +BR2_SDK_PREFIX) and located in the output directory output/images/. + +This tarball can then be distributed to application developers, when +they want to develop their applications that are not (yet) packaged +as a Buildroot package. + +Upon extracting the SDK tarball, the user must run the script +relocate-sdk.sh (located at the top directory of the SDK), to make +sure all paths are updated with the new location. + +Alternatively, if you just want to prepare the SDK without generating +the tarball (e.g. because you will just be moving the host directory, +or will be generating the tarball on your own), Buildroot also allows +you to just prepare the SDK with make prepare-sdk without actually +generating a tarball. + +For your convenience, by selecting the option +BR2_PACKAGE_HOST_ENVIRONMENT_SETUP, you can get a environment-setup +script installed in output/host/ and therefore in your SDK. This +script can be sourced with . your/sdk/path/environment-setup to +export a number of environment variables that will help cross-compile +your projects using the Buildroot SDK: the PATH will contain the SDK +binaries, standard autotools variables will be defined with the +appropriate values, and CONFIGURE_FLAGS will contain basic ./ +configure options to cross-compile autotools projects. It also +provides some useful commands. Note however that once this script is +sourced, the environment is setup only for cross-compilation, and no +longer for native compilation. + +8.13.2. Using gdb in Buildroot + +Buildroot allows to do cross-debugging, where the debugger runs on +the build machine and communicates with gdbserver on the target to +control the execution of the program. + +To achieve this: + + * If you are using an internal toolchain (built by Buildroot), you + must enable BR2_PACKAGE_HOST_GDB, BR2_PACKAGE_GDB and + BR2_PACKAGE_GDB_SERVER. This ensures that both the cross gdb and + gdbserver get built, and that gdbserver gets installed to your + target. + * If you are using an external toolchain, you should enable + BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY, which will copy the + gdbserver included with the external toolchain to the target. If + your external toolchain does not have a cross gdb or gdbserver, + it is also possible to let Buildroot build them, by enabling the + same options as for the internal toolchain backend. + +Now, to start debugging a program called foo, you should run on the +target: + +gdbserver :2345 foo + +This will cause gdbserver to listen on TCP port 2345 for a connection +from the cross gdb. + +Then, on the host, you should start the cross gdb using the following +command line: + +/output/host/bin/-gdb -ix /output/staging/usr/share/buildroot/gdbinit foo + +Of course, foo must be available in the current directory, built with +debugging symbols. Typically you start this command from the +directory where foo is built (and not from output/target/ as the +binaries in that directory are stripped). + +The /output/staging/usr/share/buildroot/gdbinit file will +tell the cross gdb where to find the libraries of the target. + +Finally, to connect to the target from the cross gdb: + +(gdb) target remote :2345 + +8.13.3. Using ccache in Buildroot + +ccache [http://ccache.samba.org] is a compiler cache. It stores the +object files resulting from each compilation process, and is able to +skip future compilation of the same source file (with same compiler +and same arguments) by using the pre-existing object files. When +doing almost identical builds from scratch a number of times, it can +nicely speed up the build process. + +ccache support is integrated in Buildroot. You just have to enable +Enable compiler cache in Build options. This will automatically build +ccache and use it for every host and target compilation. + +The cache is located in the directory defined by the BR2_CCACHE_DIR +configuration option, which defaults to $HOME/.buildroot-ccache. This +default location is outside of Buildroot output directory so that it +can be shared by separate Buildroot builds. If you want to get rid of +the cache, simply remove this directory. + +You can get statistics on the cache (its size, number of hits, +misses, etc.) by running make ccache-stats. + +The make target ccache-options and the CCACHE_OPTIONS variable +provide more generic access to the ccache. For example + +# set cache limit size +make CCACHE_OPTIONS="--max-size=5G" ccache-options + +# zero statistics counters +make CCACHE_OPTIONS="--zero-stats" ccache-options + +ccache makes a hash of the source files and of the compiler options. +If a compiler option is different, the cached object file will not be +used. Many compiler options, however, contain an absolute path to the +staging directory. Because of this, building in a different output +directory would lead to many cache misses. + +To avoid this issue, buildroot has the Use relative paths option +(BR2_CCACHE_USE_BASEDIR). This will rewrite all absolute paths that +point inside the output directory into relative paths. Thus, changing +the output directory no longer leads to cache misses. + +A disadvantage of the relative paths is that they also end up to be +relative paths in the object file. Therefore, for example, the +debugger will no longer find the file, unless you cd to the output +directory first. + +See the ccache manual’s section on "Compiling in different +directories" [https://ccache.samba.org/manual.html# +_compiling_in_different_directories] for more details about this +rewriting of absolute paths. + +When ccache is enabled in Buildroot using the BR2_CCACHE=y option: + + * ccache is used during the Buildroot build itself + * ccache is not used when building outside of Buildroot, for + example when directly calling the cross-compiler or using the SDK + +One can override this behavior using the BR2_USE_CCACHE environment +variable: when set to 1, usage of ccache is enabled (default during +the Buildroot build), when unset or set to a value different from 1, +usage of ccache is disabled. + +8.13.4. Location of downloaded packages + +The various tarballs that are downloaded by Buildroot are all stored +in BR2_DL_DIR, which by default is the dl directory. If you want to +keep a complete version of Buildroot which is known to be working +with the associated tarballs, you can make a copy of this directory. +This will allow you to regenerate the toolchain and the target +filesystem with exactly the same versions. + +If you maintain several Buildroot trees, it might be better to have a +shared download location. This can be achieved by pointing the +BR2_DL_DIR environment variable to a directory. If this is set, then +the value of BR2_DL_DIR in the Buildroot configuration is overridden. +The following line should be added to <~/.bashrc>. + + export BR2_DL_DIR= + +The download location can also be set in the .config file, with the +BR2_DL_DIR option. Unlike most options in the .config file, this +value is overridden by the BR2_DL_DIR environment variable. + +8.13.5. Package-specific make targets + +Running make builds and installs that particular package +and its dependencies. + +For packages relying on the Buildroot infrastructure, there are +numerous special make targets that can be called independently like +this: + +make - + +The package build targets are (in the order they are executed): + ++------------------------------------------------------------+ +|command/target |Description | +|---------------+--------------------------------------------| +| source |Fetch the source (download the tarball, | +| |clone the source repository, etc) | +|---------------+--------------------------------------------| +| depends |Build and install all dependencies required | +| |to build the package | +|---------------+--------------------------------------------| +| extract |Put the source in the package build | +| |directory (extract the tarball, copy the | +| |source, etc) | +|---------------+--------------------------------------------| +| patch |Apply the patches, if any | +|---------------+--------------------------------------------| +| configure |Run the configure commands, if any | +|---------------+--------------------------------------------| +| build |Run the compilation commands | +|---------------+--------------------------------------------| +|install-staging|target package: Run the installation of the | +| |package in the staging directory, if | +| |necessary | +|---------------+--------------------------------------------| +|install-target |target package: Run the installation of the | +| |package in the target directory, if | +| |necessary | +|---------------+--------------------------------------------| +| install |target package: Run the 2 previous | +| |installation commands | +| | | +| |host package: Run the installation of the | +| |package in the host directory | ++------------------------------------------------------------+ + +Additionally, there are some other useful make targets: + ++------------------------------------------------------------+ +| command/target |Description | +|-----------------------+------------------------------------| +| show-depends |Displays the first-order | +| |dependencies required to build the | +| |package | +|-----------------------+------------------------------------| +|show-recursive-depends |Recursively displays the | +| |dependencies required to build the | +| |package | +|-----------------------+------------------------------------| +| show-rdepends |Displays the first-order reverse | +| |dependencies of the package (i.e | +| |packages that directly depend on it)| +|-----------------------+------------------------------------| +|show-recursive-rdepends|Recursively displays the reverse | +| |dependencies of the package (i.e the| +| |packages that depend on it, directly| +| |or indirectly) | +|-----------------------+------------------------------------| +| graph-depends |Generate a dependency graph of the | +| |package, in the context of the | +| |current Buildroot configuration. See| +| |this section for more details about | +| |dependency graphs. | +|-----------------------+------------------------------------| +| graph-rdepends |Generate a graph of this package | +| |reverse dependencies (i.e the | +| |packages that depend on it, directly| +| |or indirectly) | +|-----------------------+------------------------------------| +| dirclean |Remove the whole package build | +| |directory | +|-----------------------+------------------------------------| +| reinstall |Re-run the install commands | +|-----------------------+------------------------------------| +| rebuild |Re-run the compilation commands - | +| |this only makes sense when using the| +| |OVERRIDE_SRCDIR feature or when you | +| |modified a file directly in the | +| |build directory | +|-----------------------+------------------------------------| +| reconfigure |Re-run the configure commands, then | +| |rebuild - this only makes sense when| +| |using the OVERRIDE_SRCDIR feature or| +| |when you modified a file directly in| +| |the build directory | ++------------------------------------------------------------+ + +8.13.6. Using Buildroot during development + +The normal operation of Buildroot is to download a tarball, extract +it, configure, compile and install the software component found +inside this tarball. The source code is extracted in output/build/ +-, which is a temporary directory: whenever make +clean is used, this directory is entirely removed, and re-created at +the next make invocation. Even when a Git or Subversion repository is +used as the input for the package source code, Buildroot creates a +tarball out of it, and then behaves as it normally does with +tarballs. + +This behavior is well-suited when Buildroot is used mainly as an +integration tool, to build and integrate all the components of an +embedded Linux system. However, if one uses Buildroot during the +development of certain components of the system, this behavior is not +very convenient: one would instead like to make a small change to the +source code of one package, and be able to quickly rebuild the system +with Buildroot. + +Making changes directly in output/build/- is not an +appropriate solution, because this directory is removed on make +clean. + +Therefore, Buildroot provides a specific mechanism for this use case: +the _OVERRIDE_SRCDIR mechanism. Buildroot reads an override +file, which allows the user to tell Buildroot the location of the +source for certain packages. + +The default location of the override file is $(CONFIG_DIR)/local.mk, +as defined by the BR2_PACKAGE_OVERRIDE_FILE configuration option. $ +(CONFIG_DIR) is the location of the Buildroot .config file, so +local.mk by default lives side-by-side with the .config file, which +means: + + * In the top-level Buildroot source directory for in-tree builds + (i.e., when O= is not used) + * In the out-of-tree directory for out-of-tree builds (i.e., when O + = is used) + +If a different location than these defaults is required, it can be +specified through the BR2_PACKAGE_OVERRIDE_FILE configuration option. + +In this override file, Buildroot expects to find lines of the form: + +_OVERRIDE_SRCDIR = /path/to/pkg1/sources +_OVERRIDE_SRCDIR = /path/to/pkg2/sources + +For example: + +LINUX_OVERRIDE_SRCDIR = /home/bob/linux/ +BUSYBOX_OVERRIDE_SRCDIR = /home/bob/busybox/ + +When Buildroot finds that for a given package, an +_OVERRIDE_SRCDIR has been defined, it will no longer attempt to +download, extract and patch the package. Instead, it will directly +use the source code available in the specified directory and make +clean will not touch this directory. This allows to point Buildroot +to your own directories, that can be managed by Git, Subversion, or +any other version control system. To achieve this, Buildroot will use +rsync to copy the source code of the component from the specified +_OVERRIDE_SRCDIR to output/build/-custom/. + +This mechanism is best used in conjunction with the make +-rebuild and make -reconfigure targets. A make -rebuild all +sequence will rsync the source code from _OVERRIDE_SRCDIR to +output/build/-custom (thanks to rsync, only the modified +files are copied), and restart the build process of just this +package. + +In the example of the linux package above, the developer can then +make a source code change in /home/bob/linux and then run: + +make linux-rebuild all + +and in a matter of seconds gets the updated Linux kernel image in +output/images. Similarly, a change can be made to the BusyBox source +code in /home/bob/busybox, and after: + +make busybox-rebuild all + +the root filesystem image in output/images contains the updated +BusyBox. + +Source trees for big projects often contain hundreds or thousands of +files which are not needed for building, but will slow down the +process of copying the sources with rsync. Optionally, it is possible +define _OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS to skip syncing certain +files from the source tree. For example, when working on the +webkitgtk package, the following will exclude the tests and in-tree +builds from a local WebKit source tree: + +WEBKITGTK_OVERRIDE_SRCDIR = /home/bob/WebKit +WEBKITGTK_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = \ + --exclude JSTests --exclude ManualTests --exclude PerformanceTests \ + --exclude WebDriverTests --exclude WebKitBuild --exclude WebKitLibraries \ + --exclude WebKit.xcworkspace --exclude Websites --exclude Examples + +By default, Buildroot skips syncing of VCS artifacts (e.g., the .git +and .svn directories). Some packages prefer to have these VCS +directories available during build, for example for automatically +determining a precise commit reference for version information. To +undo this built-in filtering at a cost of a slower speed, add these +directories back: + +LINUX_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = --include .git + +Chapter 9. Project-specific customization + +Typical actions you may need to perform for a given project are: + + * configuring Buildroot (including build options and toolchain, + bootloader, kernel, package and filesystem image type selection) + * configuring other components, like the Linux kernel and BusyBox + * customizing the generated target filesystem + + + adding or overwriting files on the target filesystem (using + BR2_ROOTFS_OVERLAY) + + modifying or deleting files on the target filesystem (using + BR2_ROOTFS_POST_BUILD_SCRIPT) + + running arbitrary commands prior to generating the filesystem + image (using BR2_ROOTFS_POST_BUILD_SCRIPT) + + setting file permissions and ownership (using + BR2_ROOTFS_DEVICE_TABLE) + + adding custom devices nodes (using + BR2_ROOTFS_STATIC_DEVICE_TABLE) + * adding custom user accounts (using BR2_ROOTFS_USERS_TABLES) + * running arbitrary commands after generating the filesystem image + (using BR2_ROOTFS_POST_IMAGE_SCRIPT) + * adding project-specific patches to some packages (using + BR2_GLOBAL_PATCH_DIR) + * adding project-specific packages + +An important note regarding such project-specific customizations: +please carefully consider which changes are indeed project-specific +and which changes are also useful to developers outside your project. +The Buildroot community highly recommends and encourages the +upstreaming of improvements, packages and board support to the +official Buildroot project. Of course, it is sometimes not possible +or desirable to upstream because the changes are highly specific or +proprietary. + +This chapter describes how to make such project-specific +customizations in Buildroot and how to store them in a way that you +can build the same image in a reproducible way, even after running +make clean. By following the recommended strategy, you can even use +the same Buildroot tree to build multiple distinct projects! + +9.1. Recommended directory structure + +When customizing Buildroot for your project, you will be creating one +or more project-specific files that need to be stored somewhere. +While most of these files could be placed in any location as their +path is to be specified in the Buildroot configuration, the Buildroot +developers recommend a specific directory structure which is +described in this section. + +Orthogonal to this directory structure, you can choose where you +place this structure itself: either inside the Buildroot tree, or +outside of it using a br2-external tree. Both options are valid, the +choice is up to you. + ++-- board/ +| +-- / +| +-- / +| +-- linux.config +| +-- busybox.config +| +-- +| +-- post_build.sh +| +-- post_image.sh +| +-- rootfs_overlay/ +| | +-- etc/ +| | +-- +| +-- patches/ +| +-- foo/ +| | +-- +| +-- libbar/ +| +-- +| ++-- configs/ +| +-- _defconfig +| ++-- package/ +| +-- / +| +-- Config.in (if not using a br2-external tree) +| +-- .mk (if not using a br2-external tree) +| +-- package1/ +| | +-- Config.in +| | +-- package1.mk +| +-- package2/ +| +-- Config.in +| +-- package2.mk +| ++-- Config.in (if using a br2-external tree) ++-- external.mk (if using a br2-external tree) ++-- external.desc (if using a br2-external tree) + +Details on the files shown above are given further in this chapter. + +Note: if you choose to place this structure outside of the Buildroot +tree but in a br2-external tree, the and possibly + components may be superfluous and can be left out. + +9.1.1. Implementing layered customizations + +It is quite common for a user to have several related projects that +partly need the same customizations. Instead of duplicating these +customizations for each project, it is recommended to use a layered +customization approach, as explained in this section. + +Almost all of the customization methods available in Buildroot, like +post-build scripts and root filesystem overlays, accept a +space-separated list of items. The specified items are always treated +in order, from left to right. By creating more than one such item, +one for the common customizations and another one for the really +project-specific customizations, you can avoid unnecessary +duplication. Each layer is typically embodied by a separate directory +inside board//. Depending on your projects, you could even +introduce more than two layers. + +An example directory structure for where a user has two customization +layers common and fooboard is: + ++-- board/ + +-- / + +-- common/ + | +-- post_build.sh + | +-- rootfs_overlay/ + | | +-- ... + | +-- patches/ + | +-- ... + | + +-- fooboard/ + +-- linux.config + +-- busybox.config + +-- + +-- post_build.sh + +-- rootfs_overlay/ + | +-- ... + +-- patches/ + +-- ... + +For example, if the user has the BR2_GLOBAL_PATCH_DIR configuration +option set as: + +BR2_GLOBAL_PATCH_DIR="board//common/patches board//fooboard/patches" + +then first the patches from the common layer would be applied, +followed by the patches from the fooboard layer. + +9.2. Keeping customizations outside of Buildroot + +As already briefly mentioned in Section 9.1, “Recommended directory +structure”, you can place project-specific customizations in two +locations: + + * directly within the Buildroot tree, typically maintaining them + using branches in a version control system so that upgrading to a + newer Buildroot release is easy. + * outside of the Buildroot tree, using the br2-external mechanism. + This mechanism allows to keep package recipes, board support and + configuration files outside of the Buildroot tree, while still + having them nicely integrated in the build logic. We call this + location a br2-external tree. This section explains how to use + the br2-external mechanism and what to provide in a br2-external + tree. + +One can tell Buildroot to use one or more br2-external trees by +setting the BR2_EXTERNAL make variable set to the path(s) of the +br2-external tree(s) to use. It can be passed to any Buildroot make +invocation. It is automatically saved in the hidden .br2-external.mk +file in the output directory. Thanks to this, there is no need to +pass BR2_EXTERNAL at every make invocation. It can however be changed +at any time by passing a new value, and can be removed by passing an +empty value. + +Note. The path to a br2-external tree can be either absolute or +relative. If it is passed as a relative path, it is important to note +that it is interpreted relative to the main Buildroot source +directory, not to the Buildroot output directory. + +Note: If using an br2-external tree from before Buildroot 2016.11, +you need to convert it before you can use it with Buildroot 2016.11 +onward. See Section 27.2, “Migrating to 2016.11” for help on doing +so. + +Some examples: + +buildroot/ $ make BR2_EXTERNAL=/path/to/foo menuconfig + +From now on, definitions from the /path/to/foo br2-external tree will +be used: + +buildroot/ $ make +buildroot/ $ make legal-info + +We can switch to another br2-external tree at any time: + +buildroot/ $ make BR2_EXTERNAL=/where/we/have/bar xconfig + +We can also use multiple br2-external trees: + +buildroot/ $ make BR2_EXTERNAL=/path/to/foo:/where/we/have/bar menuconfig + +Or disable the usage of any br2-external tree: + +buildroot/ $ make BR2_EXTERNAL= xconfig + +9.2.1. Layout of a br2-external tree + +A br2-external tree must contain at least those three files, +described in the following chapters: + + * external.desc + * external.mk + * Config.in + +Apart from those mandatory files, there may be additional and +optional content that may be present in a br2-external tree, like the +configs/ or provides/ directories. They are described in the +following chapters as well. + +A complete example br2-external tree layout is also described later. + +9.2.1.1. The external.desc file + +That file describes the br2-external tree: the name and description +for that br2-external tree. + +The format for this file is line based, with each line starting by a +keyword, followed by a colon and one or more spaces, followed by the +value assigned to that keyword. There are two keywords currently +recognised: + + * name, mandatory, defines the name for that br2-external tree. + That name must only use ASCII characters in the set [A-Za-z0-9_]; + any other character is forbidden. Buildroot sets the variable + BR2_EXTERNAL_$(NAME)_PATH to the absolute path of the + br2-external tree, so that you can use it to refer to your + br2-external tree. This variable is available both in Kconfig, so + you can use it to source your Kconfig files (see below) and in + the Makefile, so that you can use it to include other Makefiles + (see below) or refer to other files (like data files) from your + br2-external tree. + + Note: Since it is possible to use multiple br2-external trees at + once, this name is used by Buildroot to generate variables for + each of those trees. That name is used to identify your + br2-external tree, so try to come up with a name that really + describes your br2-external tree, in order for it to be + relatively unique, so that it does not clash with another name + from another br2-external tree, especially if you are planning on + somehow sharing your br2-external tree with third parties or + using br2-external trees from third parties. + + * desc, optional, provides a short description for that + br2-external tree. It shall fit on a single line, is mostly + free-form (see below), and is used when displaying information + about a br2-external tree (e.g. above the list of defconfig + files, or as the prompt in the menuconfig); as such, it should + relatively brief (40 chars is probably a good upper limit). The + description is available in the BR2_EXTERNAL_$(NAME)_DESC + variable. + +Examples of names and the corresponding BR2_EXTERNAL_$(NAME)_PATH +variables: + + * FOO → BR2_EXTERNAL_FOO_PATH + * BAR_42 → BR2_EXTERNAL_BAR_42_PATH + +In the following examples, it is assumed the name to be set to +BAR_42. + +Note: Both BR2_EXTERNAL_$(NAME)_PATH and BR2_EXTERNAL_$(NAME)_DESC +are available in the Kconfig files and the Makefiles. They are also +exported in the environment so are available in post-build, +post-image and in-fakeroot scripts. + +9.2.1.2. The Config.in and external.mk files + +Those files (which may each be empty) can be used to define package +recipes (i.e. foo/Config.in and foo/foo.mk like for packages bundled +in Buildroot itself) or other custom configuration options or make +logic. + +Buildroot automatically includes the Config.in from each br2-external +tree to make it appear in the top-level configuration menu, and +includes the external.mk from each br2-external tree with the rest of +the makefile logic. + +The main usage of this is to store package recipes. The recommended +way to do this is to write a Config.in file that looks like: + +source "$BR2_EXTERNAL_BAR_42_PATH/package/package1/Config.in" +source "$BR2_EXTERNAL_BAR_42_PATH/package/package2/Config.in" + +Then, have an external.mk file that looks like: + +include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk)) + +And then in $(BR2_EXTERNAL_BAR_42_PATH)/package/package1 and $ +(BR2_EXTERNAL_BAR_42_PATH)/package/package2 create normal Buildroot +package recipes, as explained in Chapter 18, Adding new packages to +Buildroot. If you prefer, you can also group the packages in +subdirectories called and adapt the above paths +accordingly. + +You can also define custom configuration options in Config.in and +custom make logic in external.mk. + +9.2.1.3. The configs/ directory + +One can store Buildroot defconfigs in the configs subdirectory of the +br2-external tree. Buildroot will automatically show them in the +output of make list-defconfigs and allow them to be loaded with the +normal make _defconfig command. They will be visible in the +make list-defconfigs output, below an External configs label that +contains the name of the br2-external tree they are defined in. + +Note: If a defconfig file is present in more than one br2-external +tree, then the one from the last br2-external tree is used. It is +thus possible to override a defconfig bundled in Buildroot or another +br2-external tree. + +9.2.1.4. The provides/ directory + +For some packages, Buildroot provides a choice between two (or more) +implementations of API-compatible such packages. For example, there +is a choice to choose either libjpeg ot jpeg-turbo; there is one +between openssl or libressl; there is one to select one of the known, +pre-configured toolchains… + +It is possible for a br2-external to extend those choices, by +providing a set of files that define those alternatives: + + * provides/toolchains.in defines the pre-configured toolchains, + which will then be listed in the toolchain selection; + * provides/jpeg.in defines the alternative libjpeg implementations; + * provides/openssl.in defines the alternative openssl + implementations; + * provides/skeleton.in defines the alternative skeleton + implementations; + * provides/init.in defines the alternative init system + implementations, this can be used to select a default skeleton + for your init. + +9.2.1.5. Free-form content + +One can store all the board-specific configuration files there, such +as the kernel configuration, the root filesystem overlay, or any +other configuration file for which Buildroot allows to set the +location (by using the BR2_EXTERNAL_$(NAME)_PATH variable). For +example, you could set the paths to a global patch directory, to a +rootfs overlay and to the kernel configuration file as follows (e.g. +by running make menuconfig and filling in these options): + +BR2_GLOBAL_PATCH_DIR=$(BR2_EXTERNAL_BAR_42_PATH)/patches/ +BR2_ROOTFS_OVERLAY=$(BR2_EXTERNAL_BAR_42_PATH)/board//overlay/ +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=$(BR2_EXTERNAL_BAR_42_PATH)/board//kernel.config + +9.2.1.6. Additional Linux kernel extensions + +Additional Linux kernel extensions (see Section 18.22.2, +“linux-kernel-extensions”) can be added by storing them in the linux/ +directory at the root of a br2-external tree. + +9.2.1.7. Example layout + +Here is an example layout using all features of br2-external (the +sample content is shown for the file above it, when it is relevant to +explain the br2-external tree; this is all entirely made up just for +the sake of illustration, of course): + +/path/to/br2-ext-tree/ + |- external.desc + | |name: BAR_42 + | |desc: Example br2-external tree + | `---- + | + |- Config.in + | |source "$BR2_EXTERNAL_BAR_42_PATH/toolchain/toolchain-external-mine/Config.in.options" + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-1/Config.in" + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-2/Config.in" + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/my-jpeg/Config.in" + | | + | |config BAR_42_FLASH_ADDR + | | hex "my-board flash address" + | | default 0x10AD + | `---- + | + |- external.mk + | |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk)) + | |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/toolchain/*/*.mk)) + | | + | |flash-my-board: + | | $(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/flash-image \ + | | --image $(BINARIES_DIR)/image.bin \ + | | --address $(BAR_42_FLASH_ADDR) + | `---- + | + |- package/pkg-1/Config.in + | |config BR2_PACKAGE_PKG_1 + | | bool "pkg-1" + | | help + | | Some help about pkg-1 + | `---- + |- package/pkg-1/pkg-1.hash + |- package/pkg-1/pkg-1.mk + | |PKG_1_VERSION = 1.2.3 + | |PKG_1_SITE = /some/where/to/get/pkg-1 + | |PKG_1_LICENSE = blabla + | | + | |define PKG_1_INSTALL_INIT_SYSV + | | $(INSTALL) -D -m 0755 $(PKG_1_PKGDIR)/S99my-daemon \ + | | $(TARGET_DIR)/etc/init.d/S99my-daemon + | |endef + | | + | |$(eval $(autotools-package)) + | `---- + |- package/pkg-1/S99my-daemon + | + |- package/pkg-2/Config.in + |- package/pkg-2/pkg-2.hash + |- package/pkg-2/pkg-2.mk + | + |- provides/jpeg.in + | |config BR2_PACKAGE_MY_JPEG + | | bool "my-jpeg" + | `---- + |- package/my-jpeg/Config.in + | |config BR2_PACKAGE_PROVIDES_JPEG + | | default "my-jpeg" if BR2_PACKAGE_MY_JPEG + | `---- + |- package/my-jpeg/my-jpeg.mk + | |# This is a normal package .mk file + | |MY_JPEG_VERSION = 1.2.3 + | |MY_JPEG_SITE = https://example.net/some/place + | |MY_JPEG_PROVIDES = jpeg + | |$(eval $(autotools-package)) + | `---- + | + |- provides/init.in + | |config BR2_INIT_MINE + | | bool "my custom init" + | | select BR2_PACKAGE_MY_INIT + | | select BR2_PACKAGE_SKELETON_INIT_MINE if BR2_ROOTFS_SKELETON_DEFAULT + | `---- + | + |- provides/skeleton.in + | |config BR2_ROOTFS_SKELETON_MINE + | | bool "my custom skeleton" + | | select BR2_PACKAGE_SKELETON_MINE + | `---- + |- package/skeleton-mine/Config.in + | |config BR2_PACKAGE_SKELETON_MINE + | | bool + | | select BR2_PACKAGE_HAS_SKELETON + | | + | |config BR2_PACKAGE_PROVIDES_SKELETON + | | default "skeleton-mine" if BR2_PACKAGE_SKELETON_MINE + | `---- + |- package/skeleton-mine/skeleton-mine.mk + | |SKELETON_MINE_ADD_TOOLCHAIN_DEPENDENCY = NO + | |SKELETON_MINE_ADD_SKELETON_DEPENDENCY = NO + | |SKELETON_MINE_PROVIDES = skeleton + | |SKELETON_MINE_INSTALL_STAGING = YES + | |$(eval $(generic-package)) + | `---- + | + |- provides/toolchains.in + | |config BR2_TOOLCHAIN_EXTERNAL_MINE + | | bool "my custom toolchain" + | | depends on BR2_some_arch + | | select BR2_INSTALL_LIBSTDCPP + | `---- + |- toolchain/toolchain-external-mine/Config.in.options + | |if BR2_TOOLCHAIN_EXTERNAL_MINE + | |config BR2_TOOLCHAIN_EXTERNAL_PREFIX + | | default "arch-mine-linux-gnu" + | |config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + | | default "toolchain-external-mine" + | |endif + | `---- + |- toolchain/toolchain-external-mine/toolchain-external-mine.mk + | |TOOLCHAIN_EXTERNAL_MINE_SITE = https://example.net/some/place + | |TOOLCHAIN_EXTERNAL_MINE_SOURCE = my-toolchain.tar.gz + | |$(eval $(toolchain-external-package)) + | `---- + | + |- linux/Config.ext.in + | |config BR2_LINUX_KERNEL_EXT_EXAMPLE_DRIVER + | | bool "example-external-driver" + | | help + | | Example external driver + | |--- + |- linux/linux-ext-example-driver.mk + | + |- configs/my-board_defconfig + | |BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_BAR_42_PATH)/patches/" + | |BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/overlay/" + | |BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/post-image.sh" + | |BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/kernel.config" + | `---- + | + |- patches/linux/0001-some-change.patch + |- patches/linux/0002-some-other-change.patch + |- patches/busybox/0001-fix-something.patch + | + |- board/my-board/kernel.config + |- board/my-board/overlay/var/www/index.html + |- board/my-board/overlay/var/www/my.css + |- board/my-board/flash-image + `- board/my-board/post-image.sh + |#!/bin/sh + |generate-my-binary-image \ + | --root ${BINARIES_DIR}/rootfs.tar \ + | --kernel ${BINARIES_DIR}/zImage \ + | --dtb ${BINARIES_DIR}/my-board.dtb \ + | --output ${BINARIES_DIR}/image.bin + `---- + +The br2-external tree will then be visible in the menuconfig (with +the layout expanded): + +External options ---> + *** Example br2-external tree (in /path/to/br2-ext-tree/) + [ ] pkg-1 + [ ] pkg-2 + (0x10AD) my-board flash address + +If you are using more than one br2-external tree, it would look like +(with the layout expanded and the second one with name FOO_27 but no +desc: field in external.desc): + +External options ---> + Example br2-external tree ---> + *** Example br2-external tree (in /path/to/br2-ext-tree) + [ ] pkg-1 + [ ] pkg-2 + (0x10AD) my-board flash address + FOO_27 ---> + *** FOO_27 (in /path/to/another-br2-ext) + [ ] foo + [ ] bar + +Additionally, the jpeg provider will be visible in the jpeg choice: + +Target packages ---> + Libraries ---> + Graphics ---> + [*] jpeg support + jpeg variant () ---> + ( ) jpeg + ( ) jpeg-turbo + *** jpeg from: Example br2-external tree *** + (X) my-jpeg + *** jpeg from: FOO_27 *** + ( ) another-jpeg + +And similarly for the toolchains: + +Toolchain ---> + Toolchain () ---> + ( ) Custom toolchain + *** Toolchains from: Example br2-external tree *** + (X) my custom toolchain + +Note. The toolchain options in toolchain/toolchain-external-mine/ +Config.in.options will not appear in the Toolchain menu. They must be +explicitly included from within the br2-external’s top-level +Config.in and will thus appear in the External options menu. + +9.3. Storing the Buildroot configuration + +The Buildroot configuration can be stored using the command make +savedefconfig. + +This strips the Buildroot configuration down by removing +configuration options that are at their default value. The result is +stored in a file called defconfig. If you want to save it in another +place, change the BR2_DEFCONFIG option in the Buildroot configuration +itself, or call make with make savedefconfig BR2_DEFCONFIG= +. + +The recommended place to store this defconfig is configs/ +_defconfig. If you follow this recommendation, the configuration will +be listed in make list-defconfigs and can be set again by running +make _defconfig. + +Alternatively, you can copy the file to any other place and rebuild +with make defconfig BR2_DEFCONFIG=. + +9.4. Storing the configuration of other components + +The configuration files for BusyBox, the Linux kernel, Barebox, +U-Boot and uClibc should be stored as well if changed. For each of +these components, a Buildroot configuration option exists to point to +an input configuration file, e.g. +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE. To store their configuration, +set these configuration options to a path where you want to save the +configuration files, and then use the helper targets described below +to actually store the configuration. + +As explained in Section 9.1, “Recommended directory structure”, the +recommended path to store these configuration files is board/ +//foo.config. + +Make sure that you create a configuration file before changing the +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE etc. options. Otherwise, +Buildroot will try to access this config file, which doesn’t exist +yet, and will fail. You can create the configuration file by running +make linux-menuconfig etc. + +Buildroot provides a few helper targets to make the saving of +configuration files easier. + + * make linux-update-defconfig saves the linux configuration to the + path specified by BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE. It + simplifies the config file by removing default values. However, + this only works with kernels starting from 2.6.33. For earlier + kernels, use make linux-update-config. + * make busybox-update-config saves the busybox configuration to the + path specified by BR2_PACKAGE_BUSYBOX_CONFIG. + * make uclibc-update-config saves the uClibc configuration to the + path specified by BR2_UCLIBC_CONFIG. + * make barebox-update-defconfig saves the barebox configuration to + the path specified by BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE. + * make uboot-update-defconfig saves the U-Boot configuration to the + path specified by BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE. + * For at91bootstrap3, no helper exists so you have to copy the + config file manually to + BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE. + +9.5. Customizing the generated target filesystem + +Besides changing the configuration through make *config, there are a +few other ways to customize the resulting target filesystem. + +The two recommended methods, which can co-exist, are root filesystem +overlay(s) and post build script(s). + +Root filesystem overlays (BR2_ROOTFS_OVERLAY) + + A filesystem overlay is a tree of files that is copied directly + over the target filesystem after it has been built. To enable + this feature, set config option BR2_ROOTFS_OVERLAY (in the System + configuration menu) to the root of the overlay. You can even + specify multiple overlays, space-separated. If you specify a + relative path, it will be relative to the root of the Buildroot + tree. Hidden directories of version control systems, like .git, + .svn, .hg, etc., files called .empty and files ending in ~ are + excluded from the copy. + + When BR2_ROOTFS_MERGED_USR is enabled, then the overlay must not + contain the /bin, /lib or /sbin directories, as Buildroot will + create them as symbolic links to the relevant folders in /usr. In + such a situation, should the overlay have any programs or + libraries, they should be placed in /usr/bin, /usr/sbin and /usr/ + lib. + + As shown in Section 9.1, “Recommended directory structure”, the + recommended path for this overlay is board/// + rootfs-overlay. + +Post-build scripts (BR2_ROOTFS_POST_BUILD_SCRIPT) + + Post-build scripts are shell scripts called after Buildroot + builds all the selected software, but before the rootfs images + are assembled. To enable this feature, specify a space-separated + list of post-build scripts in config option + BR2_ROOTFS_POST_BUILD_SCRIPT (in the System configuration menu). + If you specify a relative path, it will be relative to the root + of the Buildroot tree. + + Using post-build scripts, you can remove or modify any file in + your target filesystem. You should, however, use this feature + with care. Whenever you find that a certain package generates + wrong or unneeded files, you should fix that package rather than + work around it with some post-build cleanup scripts. + + As shown in Section 9.1, “Recommended directory structure”, the + recommended path for this script is board/// + post_build.sh. + + The post-build scripts are run with the main Buildroot tree as + current working directory. The path to the target filesystem is + passed as the first argument to each script. If the config option + BR2_ROOTFS_POST_SCRIPT_ARGS is not empty, these arguments will be + passed to the script too. All the scripts will be passed the + exact same set of arguments, it is not possible to pass different + sets of arguments to each script. + + In addition, you may also use these environment variables: + + + BR2_CONFIG: the path to the Buildroot .config file + + CONFIG_DIR: the directory containing the .config file, and + therefore the top-level Buildroot Makefile to use (which is + correct for both in-tree and out-of-tree builds) + + HOST_DIR, STAGING_DIR, TARGET_DIR: see Section 18.6.2, + “generic-package reference” + + BUILD_DIR: the directory where packages are extracted and + built + + BINARIES_DIR: the place where all binary files (aka images) + are stored + + BASE_DIR: the base output directory + +Below three more methods of customizing the target filesystem are +described, but they are not recommended. + +Direct modification of the target filesystem + + For temporary modifications, you can modify the target filesystem + directly and rebuild the image. The target filesystem is + available under output/target/. After making your changes, run + make to rebuild the target filesystem image. + + This method allows you to do anything to the target filesystem, + but if you need to clean your Buildroot tree using make clean, + these changes will be lost. Such cleaning is necessary in several + cases, refer to Section 8.2, “Understanding when a full rebuild + is necessary” for details. This solution is therefore only useful + for quick tests: changes do not survive the make clean command. + Once you have validated your changes, you should make sure that + they will persist after a make clean, using a root filesystem + overlay or a post-build script. + +Custom target skeleton (BR2_ROOTFS_SKELETON_CUSTOM) + + The root filesystem image is created from a target skeleton, on + top of which all packages install their files. The skeleton is + copied to the target directory output/target before any package + is built and installed. The default target skeleton provides the + standard Unix filesystem layout and some basic init scripts and + configuration files. + + If the default skeleton (available under system/skeleton) does + not match your needs, you would typically use a root filesystem + overlay or post-build script to adapt it. However, if the default + skeleton is entirely different than what you need, using a custom + skeleton may be more suitable. + + To enable this feature, enable config option + BR2_ROOTFS_SKELETON_CUSTOM and set + BR2_ROOTFS_SKELETON_CUSTOM_PATH to the path of your custom + skeleton. Both options are available in the System configuration + menu. If you specify a relative path, it will be relative to the + root of the Buildroot tree. + + Custom skeletons don’t need to contain the /bin, /lib or /sbin + directories, since they are created automatically during the + build. When BR2_ROOTFS_MERGED_USR is enabled, then the custom + skeleton must not contain the /bin, /lib or /sbin directories, as + Buildroot will create them as symbolic links to the relevant + folders in /usr. In such a situation, should the skeleton have + any programs or libraries, they should be placed in /usr/bin, / + usr/sbin and /usr/lib. + + This method is not recommended because it duplicates the entire + skeleton, which prevents taking advantage of the fixes or + improvements brought to the default skeleton in later Buildroot + releases. + +Post-fakeroot scripts (BR2_ROOTFS_POST_FAKEROOT_SCRIPT) + + When aggregating the final images, some parts of the process + requires root rights: creating device nodes in /dev, setting + permissions or ownership to files and directories… To avoid + requiring actual root rights, Buildroot uses fakeroot to simulate + root rights. This is not a complete substitute for actually being + root, but is enough for what Buildroot needs. + + Post-fakeroot scripts are shell scripts that are called at the + end of the fakeroot phase, right before the filesystem image + generator is called. As such, they are called in the fakeroot + context. + + Post-fakeroot scripts can be useful in case you need to tweak the + filesystem to do modifications that are usually only available to + the root user. + + Note: It is recommended to use the existing mechanisms to set + file permissions or create entries in /dev (see Section 9.5.1, + “Setting file permissions and ownership and adding custom devices + nodes”) or to create users (see Section 9.6, “Adding custom user + accounts”) + + Note: The difference between post-build scripts (above) and + fakeroot scripts, is that post-build scripts are not called in + the fakeroot context. + + Note: Using fakeroot is not an absolute substitute for actually + being root. fakeroot only ever fakes the file access rights and + types (regular, block-or-char device…) and uid/gid; these are + emulated in-memory. + +9.5.1. Setting file permissions and ownership and adding custom +devices nodes + +Sometimes it is needed to set specific permissions or ownership on +files or device nodes. For example, certain files may need to be +owned by root. Since the post-build scripts are not run as root, you +cannot do such changes from there unless you use an explicit fakeroot +from the post-build script. + +Instead, Buildroot provides support for so-called permission tables. +To use this feature, set config option BR2_ROOTFS_DEVICE_TABLE to a +space-separated list of permission tables, regular text files +following the makedev syntax. + +If you are using a static device table (i.e. not using devtmpfs, +mdev, or (e)udev) then you can add device nodes using the same +syntax, in so-called device tables. To use this feature, set config +option BR2_ROOTFS_STATIC_DEVICE_TABLE to a space-separated list of +device tables. + +As shown in Section 9.1, “Recommended directory structure”, the +recommended location for such files is board///. + +It should be noted that if the specific permissions or device nodes +are related to a specific application, you should set variables +FOO_PERMISSIONS and FOO_DEVICES in the package’s .mk file instead +(see Section 18.6.2, “generic-package reference”). + +9.6. Adding custom user accounts + +Sometimes it is needed to add specific users in the target system. To +cover this requirement, Buildroot provides support for so-called +users tables. To use this feature, set config option +BR2_ROOTFS_USERS_TABLES to a space-separated list of users tables, +regular text files following the makeusers syntax. + +As shown in Section 9.1, “Recommended directory structure”, the +recommended location for such files is board///. + +It should be noted that if the custom users are related to a specific +application, you should set variable FOO_USERS in the package’s .mk +file instead (see Section 18.6.2, “generic-package reference”). + +9.7. Customization after the images have been created + +While post-build scripts (Section 9.5, “Customizing the generated +target filesystem”) are run before building the filesystem image, +kernel and bootloader, post-image scripts can be used to perform some +specific actions after all images have been created. + +Post-image scripts can for example be used to automatically extract +your root filesystem tarball in a location exported by your NFS +server, or to create a special firmware image that bundles your root +filesystem and kernel image, or any other custom action required for +your project. + +To enable this feature, specify a space-separated list of post-image +scripts in config option BR2_ROOTFS_POST_IMAGE_SCRIPT (in the System +configuration menu). If you specify a relative path, it will be +relative to the root of the Buildroot tree. + +Just like post-build scripts, post-image scripts are run with the +main Buildroot tree as current working directory. The path to the +images output directory is passed as the first argument to each +script. If the config option BR2_ROOTFS_POST_SCRIPT_ARGS is not +empty, these arguments will be passed to the script too. All the +scripts will be passed the exact same set of arguments, it is not +possible to pass different sets of arguments to each script. + +Again just like for the post-build scripts, the scripts have access +to the environment variables BR2_CONFIG, HOST_DIR, STAGING_DIR, +TARGET_DIR, BUILD_DIR, BINARIES_DIR, CONFIG_DIR and BASE_DIR. + +The post-image scripts will be executed as the user that executes +Buildroot, which should normally not be the root user. Therefore, any +action requiring root permissions in one of these scripts will +require special handling (usage of fakeroot or sudo), which is left +to the script developer. + +9.8. Adding project-specific patches + +It is sometimes useful to apply extra patches to packages - on top of +those provided in Buildroot. This might be used to support custom +features in a project, for example, or when working on a new +architecture. + +The BR2_GLOBAL_PATCH_DIR configuration option can be used to specify +a space separated list of one or more directories containing package +patches. + +For a specific version of a specific package +, patches are applied from BR2_GLOBAL_PATCH_DIR as +follows: + + 1. For every directory - - that exists in + BR2_GLOBAL_PATCH_DIR, a will be determined as + follows: + + + /// if the + directory exists. + + Otherwise, / if the directory + exists. + 2. Patches will then be applied from a as + follows: + + + If a series file exists in the package directory, then + patches are applied according to the series file; + + Otherwise, patch files matching *.patch are applied in + alphabetical order. So, to ensure they are applied in the + right order, it is highly recommended to name the patch files + like this: -.patch, where + refers to the apply order. + +For information about how patches are applied for a package, see +Section 19.2, “How patches are applied” + +The BR2_GLOBAL_PATCH_DIR option is the preferred method for +specifying a custom patch directory for packages. It can be used to +specify a patch directory for any package in buildroot. It should +also be used in place of the custom patch directory options that are +available for packages such as U-Boot and Barebox. By doing this, it +will allow a user to manage their patches from one top-level +directory. + +The exception to BR2_GLOBAL_PATCH_DIR being the preferred method for +specifying custom patches is BR2_LINUX_KERNEL_PATCH. +BR2_LINUX_KERNEL_PATCH should be used to specify kernel patches that +are available at a URL. Note: BR2_LINUX_KERNEL_PATCH specifies kernel +patches that are applied after patches available in +BR2_GLOBAL_PATCH_DIR, as it is done from a post-patch hook of the +Linux package. + +9.9. Adding project-specific packages + +In general, any new package should be added directly in the package +directory and submitted to the Buildroot upstream project. How to add +packages to Buildroot in general is explained in full detail in +Chapter 18, Adding new packages to Buildroot and will not be repeated +here. However, your project may need some proprietary packages that +cannot be upstreamed. This section will explain how you can keep such +project-specific packages in a project-specific directory. + +As shown in Section 9.1, “Recommended directory structure”, the +recommended location for project-specific packages is package/ +/. If you are using the br2-external tree feature (see +Section 9.2, “Keeping customizations outside of Buildroot”) the +recommended location is to put them in a sub-directory named package/ +in your br2-external tree. + +However, Buildroot will not be aware of the packages in this +location, unless we perform some additional steps. As explained in +Chapter 18, Adding new packages to Buildroot, a package in Buildroot +basically consists of two files: a .mk file (describing how to build +the package) and a Config.in file (describing the configuration +options for this package). + +Buildroot will automatically include the .mk files in first-level +subdirectories of the package directory (using the pattern package/*/ +*.mk). If we want Buildroot to include .mk files from deeper +subdirectories (like package//package1/) then we simply have +to add a .mk file in a first-level subdirectory that includes these +additional .mk files. Therefore, create a file package// +.mk with following contents (assuming you have only one +extra directory level below package//): + +include $(sort $(wildcard package//*/*.mk)) + +For the Config.in files, create a file package//Config.in +that includes the Config.in files of all your packages. An exhaustive +list has to be provided since wildcards are not supported in the +source command of kconfig. For example: + +source "package//package1/Config.in" +source "package//package2/Config.in" + +Include this new file package//Config.in from package/ +Config.in, preferably in a company-specific menu to make merges with +future Buildroot versions easier. + +If using a br2-external tree, refer to Section 9.2, “Keeping +customizations outside of Buildroot” for how to fill in those files. + +9.10. Quick guide to storing your project-specific customizations + +Earlier in this chapter, the different methods for making +project-specific customizations have been described. This section +will now summarize all this by providing step-by-step instructions to +storing your project-specific customizations. Clearly, the steps that +are not relevant to your project can be skipped. + + 1. make menuconfig to configure toolchain, packages and kernel. + 2. make linux-menuconfig to update the kernel config, similar for + other configuration like busybox, uclibc, … + 3. mkdir -p board// + 4. Set the following options to board/// + .config (as far as they are relevant): + + + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE + + BR2_PACKAGE_BUSYBOX_CONFIG + + BR2_UCLIBC_CONFIG + + BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE + + BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE + + BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE + 5. Write the configuration files: + + + make linux-update-defconfig + + make busybox-update-config + + make uclibc-update-config + + cp /build/at91bootstrap3-*/.config board/ + //at91bootstrap3.config + + make barebox-update-defconfig + + make uboot-update-defconfig + 6. Create board///rootfs-overlay/ and fill + it with additional files you need on your rootfs, e.g. board/ + //rootfs-overlay/etc/inittab. Set + BR2_ROOTFS_OVERLAY to board/// + rootfs-overlay. + 7. Create a post-build script board/// + post_build.sh. Set BR2_ROOTFS_POST_BUILD_SCRIPT to board/ + //post_build.sh + 8. If additional setuid permissions have to be set or device nodes + have to be created, create board/// + device_table.txt and add that path to BR2_ROOTFS_DEVICE_TABLE. + 9. If additional user accounts have to be created, create board/ + //users_table.txt and add that path to + BR2_ROOTFS_USERS_TABLES. +10. To add custom patches to certain packages, set + BR2_GLOBAL_PATCH_DIR to board///patches/ + and add your patches for each package in a subdirectory named + after the package. Each patch should be called - + -.patch. +11. Specifically for the Linux kernel, there also exists the option + BR2_LINUX_KERNEL_PATCH with as main advantage that it can also + download patches from a URL. If you do not need this, + BR2_GLOBAL_PATCH_DIR is preferred. U-Boot, Barebox, at91bootstrap + and at91bootstrap3 also have separate options, but these do not + provide any advantage over BR2_GLOBAL_PATCH_DIR and will likely + be removed in the future. +12. If you need to add project-specific packages, create package/ + / and place your packages in that directory. Create + an overall .mk file that includes the .mk files of + all your packages. Create an overall Config.in file that sources + the Config.in files of all your packages. Include this Config.in + file from Buildroot’s package/Config.in file. +13. make savedefconfig to save the buildroot configuration. +14. cp defconfig configs/_defconfig + +Chapter 10. Integration topics + +This chapter discusses how various things are integrated at system +level. Buildroot is highly configurable, almost everything discussed +here can be changed or overridden by rootfs overlay or custom +skeleton configuration. + +10.1. Systemd + +This chapter describes the decisions taken in Buildroot’s integration +of systemd, and how various use cases can be implemented. + +10.1.1. DBus daemon + +Systemd requires a DBus daemon. There are two options for it: +traditional dbus (BR2_PACKAGE_DBUS) and bus1 dbus-broker +(BR2_PACKAGE_DBUS_BROKER). At least one of them must be chosen. If +both are included in the configuration, dbus-broker will be used as +system bus, but the traditional dbus-daemon is still installed as +well and can be used as session bus. Also its tools (e.g. dbus-send) +can be used (systemd itself has busctl as an alternative). In +addition, the traditional dbus package is the only one that provides +libdbus, which is used by many packages as dbus integration library. + +Both in the dbus and in the dbus-broker case, the daemon runs as user +dbus. The DBus configuration files are also identical for both. + +To make sure that only one of the two daemons is started as system +bus, the systemd activation files of the dbus package (dbus.socket +and the dbus.service symlink in multi-user.target.wants) are removed +when dbus-broker is selected. + +10.2. Using SELinux in Buildroot + +SELinux [https://selinuxproject.org] is a Linux kernel security +module enforcing access control policies. In addition to the +traditional file permissions and access control lists, SELinux allows +to write rules for users or processes to access specific functions of +resources (files, sockets…). + +SELinux has three modes of operation: + + * Disabled: the policy is not applied + * Permissive: the policy is applied, and non-authorized actions are + simply logged. This mode is often used for troubleshooting + SELinux issues. + * Enforcing: the policy is applied, and non-authorized actions are + denied + +In Buildroot the mode of operation is controlled by the +BR2_PACKAGE_REFPOLICY_POLICY_STATE_* configuration options. The Linux +kernel also has various configuration options that affect how SELinux +is enabled (see security/selinux/Kconfig in the Linux kernel +sources). + +By default in Buildroot the SELinux policy is provided by the +upstream refpolicy [https://github.com/SELinuxProject/refpolicy] +project, enabled with BR2_PACKAGE_REFPOLICY. + +10.2.1. Enabling SELinux support + +To have proper support for SELinux in a Buildroot generated system, +the following configuration options must be enabled: + + * BR2_PACKAGE_LIBSELINUX + * BR2_PACKAGE_REFPOLICY + +In addition, your filesystem image format must support extended +attributes. + +10.2.2. SELinux policy tweaking + +The SELinux refpolicy contains modules that can be enabled or +disabled when being built. Each module provide a number of SELinux +rules. In Buildroot the non-base modules are disabled by default and +several ways to enable such modules are provided: + + * Packages can enable a list of SELinux modules within the + refpolicy using the _SELINUX_MODULES variable. + * Packages can provide additional SELinux modules by putting them + (.fc, .if and .te files) in package//selinux/. + * Extra SELinux modules can be added in directories pointed by the + BR2_REFPOLICY_EXTRA_MODULES_DIRS configuration option. + * Additional modules in the refpolicy can be enabled if listed in + the BR2_REFPOLICY_EXTRA_MODULES_DEPENDENCIES configuration + option. + +Buildroot also allows to completely override the refpolicy. This +allows to provide a full custom policy designed specifically for a +given system. When going this way, all of the above mechanisms are +disabled: no extra SElinux module is added to the policy, and all the +available modules within the custom policy are enabled and built into +the final binary policy. The custom policy must be a fork of the +official refpolicy [https://github.com/SELinuxProject/refpolicy]. + +In order to fully override the refpolicy the following configuration +variables have to be set: + + * BR2_PACKAGE_REFPOLICY_CUSTOM_GIT + * BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL + * BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION + +Chapter 11. Frequently Asked Questions & Troubleshooting + +11.1. The boot hangs after Starting network… + +If the boot process seems to hang after the following messages +(messages not necessarily exactly similar, depending on the list of +packages selected): + +Freeing init memory: 3972K +Initializing random number generator... done. +Starting network... +Starting dropbear sshd: generating rsa key... generating dsa key... OK + +then it means that your system is running, but didn’t start a shell +on the serial console. In order to have the system start a shell on +your serial console, you have to go into the Buildroot configuration, +in System configuration, modify Run a getty (login prompt) after boot +and set the appropriate port and baud rate in the getty options +submenu. This will automatically tune the /etc/inittab file of the +generated system so that a shell starts on the correct serial port. + +11.2. Why is there no compiler on the target? + +It has been decided that support for the native compiler on the +target would be stopped from the Buildroot-2012.11 release because: + + * this feature was neither maintained nor tested, and often broken; + * this feature was only available for Buildroot toolchains; + * Buildroot mostly targets small or very small target hardware with + limited resource onboard (CPU, ram, mass-storage), for which + compiling on the target does not make much sense; + * Buildroot aims at easing the cross-compilation, making native + compilation on the target unnecessary. + +If you need a compiler on your target anyway, then Buildroot is not +suitable for your purpose. In such case, you need a real distribution +and you should opt for something like: + + * openembedded [http://www.openembedded.org] + * yocto [https://www.yoctoproject.org] + * Debian [https://www.debian.org/ports/] + * Fedora [https://fedoraproject.org/wiki/Architectures] + * openSUSE ARM [http://en.opensuse.org/Portal:ARM] + * Arch Linux ARM [http://archlinuxarm.org] + * … + +11.3. Why are there no development files on the target? + +Since there is no compiler available on the target (see Section 11.2, +“Why is there no compiler on the target?”), it does not make sense to +waste space with headers or static libraries. + +Therefore, those files are always removed from the target since the +Buildroot-2012.11 release. + +11.4. Why is there no documentation on the target? + +Because Buildroot mostly targets small or very small target hardware +with limited resource onboard (CPU, ram, mass-storage), it does not +make sense to waste space with the documentation data. + +If you need documentation data on your target anyway, then Buildroot +is not suitable for your purpose, and you should look for a real +distribution (see: Section 11.2, “Why is there no compiler on the +target?”). + +11.5. Why are some packages not visible in the Buildroot config menu? + +If a package exists in the Buildroot tree and does not appear in the +config menu, this most likely means that some of the package’s +dependencies are not met. + +To know more about the dependencies of a package, search for the +package symbol in the config menu (see Section 8.1, “make tips”). + +Then, you may have to recursively enable several options (which +correspond to the unmet dependencies) to finally be able to select +the package. + +If the package is not visible due to some unmet toolchain options, +then you should certainly run a full rebuild (see Section 8.1, “make +tips” for more explanations). + +11.6. Why not use the target directory as a chroot directory? + +There are plenty of reasons to not use the target directory a chroot +one, among these: + + * file ownerships, modes and permissions are not correctly set in + the target directory; + * device nodes are not created in the target directory. + +For these reasons, commands run through chroot, using the target +directory as the new root, will most likely fail. + +If you want to run the target filesystem inside a chroot, or as an +NFS root, then use the tarball image generated in images/ and extract +it as root. + +11.7. Why doesn’t Buildroot generate binary packages (.deb, .ipkg…)? + +One feature that is often discussed on the Buildroot list is the +general topic of "package management". To summarize, the idea would +be to add some tracking of which Buildroot package installs what +files, with the goals of: + + * being able to remove files installed by a package when this + package gets unselected from the menuconfig; + * being able to generate binary packages (ipk or other format) that + can be installed on the target without re-generating a new root + filesystem image. + +In general, most people think it is easy to do: just track which +package installed what and remove it when the package is unselected. +However, it is much more complicated than that: + + * It is not only about the target/ directory, but also the sysroot + in host//sysroot and the host/ directory itself. All files + installed in those directories by various packages must be + tracked. + * When a package is unselected from the configuration, it is not + sufficient to remove just the files it installed. One must also + remove all its reverse dependencies (i.e. packages relying on it) + and rebuild all those packages. For example, package A depends + optionally on the OpenSSL library. Both are selected, and + Buildroot is built. Package A is built with crypto support using + OpenSSL. Later on, OpenSSL gets unselected from the + configuration, but package A remains (since OpenSSL is an + optional dependency, this is possible.) If only OpenSSL files are + removed, then the files installed by package A are broken: they + use a library that is no longer present on the target. Although + this is technically doable, it adds a lot of complexity to + Buildroot, which goes against the simplicity we try to stick to. + * In addition to the previous problem, there is the case where the + optional dependency is not even known to Buildroot. For example, + package A in version 1.0 never used OpenSSL, but in version 2.0 + it automatically uses OpenSSL if available. If the Buildroot .mk + file hasn’t been updated to take this into account, then package + A will not be part of the reverse dependencies of OpenSSL and + will not be removed and rebuilt when OpenSSL is removed. For + sure, the .mk file of package A should be fixed to mention this + optional dependency, but in the mean time, you can have + non-reproducible behaviors. + * The request is to also allow changes in the menuconfig to be + applied on the output directory without having to rebuild + everything from scratch. However, this is very difficult to + achieve in a reliable way: what happens when the suboptions of a + package are changed (we would have to detect this, and rebuild + the package from scratch and potentially all its reverse + dependencies), what happens if toolchain options are changed, + etc. At the moment, what Buildroot does is clear and simple so + its behaviour is very reliable and it is easy to support users. + If configuration changes done in menuconfig are applied after the + next make, then it has to work correctly and properly in all + situations, and not have some bizarre corner cases. The risk is + to get bug reports like "I have enabled package A, B and C, then + ran make, then disabled package C and enabled package D and ran + make, then re-enabled package C and enabled package E and then + there is a build failure". Or worse "I did some configuration, + then built, then did some changes, built, some more changes, + built, some more changes, built, and now it fails, but I don’t + remember all the changes I did and in which order". This will be + impossible to support. + +For all these reasons, the conclusion is that adding tracking of +installed files to remove them when the package is unselected, or to +generate a repository of binary packages, is something that is very +hard to achieve reliably and will add a lot of complexity. + +On this matter, the Buildroot developers make this position +statement: + + * Buildroot strives to make it easy to generate a root filesystem + (hence the name, by the way.) That is what we want to make + Buildroot good at: building root filesystems. + * Buildroot is not meant to be a distribution (or rather, a + distribution generator.) It is the opinion of most Buildroot + developers that this is not a goal we should pursue. We believe + that there are other tools better suited to generate a distro + than Buildroot is. For example, Open Embedded [http:// + openembedded.org/], or openWRT [https://openwrt.org/], are such + tools. + * We prefer to push Buildroot in a direction that makes it easy (or + even easier) to generate complete root filesystems. This is what + makes Buildroot stands out in the crowd (among other things, of + course!) + * We believe that for most embedded Linux systems, binary packages + are not necessary, and potentially harmful. When binary packages + are used, it means that the system can be partially upgraded, + which creates an enormous number of possible combinations of + package versions that should be tested before doing the upgrade + on the embedded device. On the other hand, by doing complete + system upgrades by upgrading the entire root filesystem image at + once, the image deployed to the embedded system is guaranteed to + really be the one that has been tested and validated. + +11.8. How to speed-up the build process? + +Since Buildroot often involves doing full rebuilds of the entire +system that can be quite long, we provide below a number of tips to +help reduce the build time: + + * Use a pre-built external toolchain instead of the default + Buildroot internal toolchain. By using a pre-built Linaro + toolchain (on ARM) or a Sourcery CodeBench toolchain (for ARM, + x86, x86-64, MIPS, etc.), you will save the build time of the + toolchain at each complete rebuild, approximately 15 to 20 + minutes. Note that temporarily using an external toolchain does + not prevent you to switch back to an internal toolchain (that may + provide a higher level of customization) once the rest of your + system is working; + * Use the ccache compiler cache (see: Section 8.13.3, “Using ccache + in Buildroot”); + * Learn about rebuilding only the few packages you actually care + about (see Section 8.3, “Understanding how to rebuild packages”), + but beware that sometimes full rebuilds are anyway necessary (see + Section 8.2, “Understanding when a full rebuild is necessary”); + * Make sure you are not using a virtual machine for the Linux + system used to run Buildroot. Most of the virtual machine + technologies are known to cause a significant performance impact + on I/O, which is really important for building source code; + * Make sure that you’re using only local files: do not attempt to + do a build over NFS, which significantly slows down the build. + Having the Buildroot download folder available locally also helps + a bit. + * Buy new hardware. SSDs and lots of RAM are key to speeding up the + builds. + * Experiment with top-level parallel build, see Section 8.12, + “Top-level parallel build”. + +Chapter 12. Known issues + + * It is not possible to pass extra linker options via + BR2_TARGET_LDFLAGS if such options contain a $ sign. For example, + the following is known to break: BR2_TARGET_LDFLAGS="-Wl,-rpath= + '$ORIGIN/../lib'" + * The libffi package is not supported on the SuperH 2 and ARMv7-M + architectures. + * The prboom package triggers a compiler failure with the SuperH 4 + compiler from Sourcery CodeBench, version 2012.09. + +Chapter 13. Legal notice and licensing + +13.1. Complying with open source licenses + +All of the end products of Buildroot (toolchain, root filesystem, +kernel, bootloaders) contain open source software, released under +various licenses. + +Using open source software gives you the freedom to build rich +embedded systems, choosing from a wide range of packages, but also +imposes some obligations that you must know and honour. Some licenses +require you to publish the license text in the documentation of your +product. Others require you to redistribute the source code of the +software to those that receive your product. + +The exact requirements of each license are documented in each +package, and it is your responsibility (or that of your legal office) +to comply with those requirements. To make this easier for you, +Buildroot can collect for you some material you will probably need. +To produce this material, after you have configured Buildroot with +make menuconfig, make xconfig or make gconfig, run: + +make legal-info + +Buildroot will collect legally-relevant material in your output +directory, under the legal-info/ subdirectory. There you will find: + + * A README file, that summarizes the produced material and contains + warnings about material that Buildroot could not produce. + * buildroot.config: this is the Buildroot configuration file that + is usually produced with make menuconfig, and which is necessary + to reproduce the build. + * The source code for all packages; this is saved in the sources/ + and host-sources/ subdirectories for target and host packages + respectively. The source code for packages that set + _REDISTRIBUTE = NO will not be saved. Patches that were applied + are also saved, along with a file named series that lists the + patches in the order they were applied. Patches are under the + same license as the files that they modify. Note: Buildroot + applies additional patches to Libtool scripts of autotools-based + packages. These patches can be found under support/libtool in the + Buildroot source and, due to technical limitations, are not saved + with the package sources. You may need to collect them manually. + * A manifest file (one for host and one for target packages) + listing the configured packages, their version, license and + related information. Some of this information might not be + defined in Buildroot; such items are marked as "unknown". + * The license texts of all packages, in the licenses/ and + host-licenses/ subdirectories for target and host packages + respectively. If the license file(s) are not defined in + Buildroot, the file is not produced and a warning in the README + indicates this. + +Please note that the aim of the legal-info feature of Buildroot is to +produce all the material that is somehow relevant for legal +compliance with the package licenses. Buildroot does not try to +produce the exact material that you must somehow make public. +Certainly, more material is produced than is needed for a strict +legal compliance. For example, it produces the source code for +packages released under BSD-like licenses, that you are not required +to redistribute in source form. + +Moreover, due to technical limitations, Buildroot does not produce +some material that you will or may need, such as the toolchain source +code for some of the external toolchains and the Buildroot source +code itself. When you run make legal-info, Buildroot produces +warnings in the README file to inform you of relevant material that +could not be saved. + +Finally, keep in mind that the output of make legal-info is based on +declarative statements in each of the packages recipes. The Buildroot +developers try to do their best to keep those declarative statements +as accurate as possible, to the best of their knowledge. However, it +is very well possible that those declarative statements are not all +fully accurate nor exhaustive. You (or your legal department) have to +check the output of make legal-info before using it as your own +compliance delivery. See the NO WARRANTY clauses (clauses 11 and 12) +in the COPYING file at the root of the Buildroot distribution. + +13.2. Complying with the Buildroot license + +Buildroot itself is an open source software, released under the GNU +General Public License, version 2 [http://www.gnu.org/licenses/ +old-licenses/gpl-2.0.html] or (at your option) any later version, +with the exception of the package patches detailed below. However, +being a build system, it is not normally part of the end product: if +you develop the root filesystem, kernel, bootloader or toolchain for +a device, the code of Buildroot is only present on the development +machine, not in the device storage. + +Nevertheless, the general view of the Buildroot developers is that +you should release the Buildroot source code along with the source +code of other packages when releasing a product that contains +GPL-licensed software. This is because the GNU GPL [http:// +www.gnu.org/licenses/old-licenses/gpl-2.0.html] defines the "complete +source code" for an executable work as "all the source code for all +modules it contains, plus any associated interface definition files, +plus the scripts used to control compilation and installation of the +executable". Buildroot is part of the scripts used to control +compilation and installation of the executable, and as such it is +considered part of the material that must be redistributed. + +Keep in mind that this is only the Buildroot developers' opinion, and +you should consult your legal department or lawyer in case of any +doubt. + +13.2.1. Patches to packages + +Buildroot also bundles patch files, which are applied to the sources +of the various packages. Those patches are not covered by the license +of Buildroot. Instead, they are covered by the license of the +software to which the patches are applied. When said software is +available under multiple licenses, the Buildroot patches are only +provided under the publicly accessible licenses. + +See Chapter 19, Patching a package for the technical details. + +Chapter 14. Beyond Buildroot + +14.1. Boot the generated images + +14.1.1. NFS boot + +To achieve NFS-boot, enable tar root filesystem in the Filesystem +images menu. + +After a complete build, just run the following commands to setup the +NFS-root directory: + +sudo tar -xavf /path/to/output_dir/rootfs.tar -C /path/to/nfs_root_dir + +Remember to add this path to /etc/exports. + +Then, you can execute a NFS-boot from your target. + +14.1.2. Live CD + +To build a live CD image, enable the iso image option in the +Filesystem images menu. Note that this option is only available on +the x86 and x86-64 architectures, and if you are building your kernel +with Buildroot. + +You can build a live CD image with either IsoLinux, Grub or Grub 2 as +a bootloader, but only Isolinux supports making this image usable +both as a live CD and live USB (through the Build hybrid image +option). + +You can test your live CD image using QEMU: + +qemu-system-i386 -cdrom output/images/rootfs.iso9660 + +Or use it as a hard-drive image if it is a hybrid ISO: + +qemu-system-i386 -hda output/images/rootfs.iso9660 + +It can be easily flashed to a USB drive with dd: + +dd if=output/images/rootfs.iso9660 of=/dev/sdb + +14.2. Chroot + +If you want to chroot in a generated image, then there are few thing +you should be aware of: + + * you should setup the new root from the tar root filesystem image; + * either the selected target architecture is compatible with your + host machine, or you should use some qemu-* binary and correctly + set it within the binfmt properties to be able to run the + binaries built for the target on your host machine; + * Buildroot does not currently provide host-qemu and binfmt + correctly built and set for that kind of use. + +Part III. Developer guide + +Table of Contents + +15. How Buildroot works +16. Coding style + + 16.1. Config.in file + 16.2. The .mk file + 16.3. The genimage.cfg file + 16.4. The documentation + 16.5. Support scripts + +17. Adding support for a particular board +18. Adding new packages to Buildroot + + 18.1. Package directory + 18.2. Config files + 18.3. The .mk file + 18.4. The .hash file + 18.5. The SNNfoo start script + 18.6. Infrastructure for packages with specific build systems + 18.7. Infrastructure for autotools-based packages + 18.8. Infrastructure for CMake-based packages + 18.9. Infrastructure for Python packages + 18.10. Infrastructure for LuaRocks-based packages + 18.11. Infrastructure for Perl/CPAN packages + 18.12. Infrastructure for virtual packages + 18.13. Infrastructure for packages using kconfig for + configuration files + 18.14. Infrastructure for rebar-based packages + 18.15. Infrastructure for Waf-based packages + 18.16. Infrastructure for Meson-based packages + 18.17. Infrastructure for Cargo-based packages + 18.18. Infrastructure for Go packages + 18.19. Infrastructure for QMake-based packages + 18.20. Infrastructure for packages building kernel modules + 18.21. Infrastructure for asciidoc documents + 18.22. Infrastructure specific to the Linux kernel package + 18.23. Hooks available in the various build steps + 18.24. Gettext integration and interaction with packages + 18.25. Tips and tricks + 18.26. Conclusion + +19. Patching a package + + 19.1. Providing patches + 19.2. How patches are applied + 19.3. Format and licensing of the package patches + 19.4. Additional patch documentation + +20. Download infrastructure +21. Debugging Buildroot +22. Contributing to Buildroot + + 22.1. Reproducing, analyzing and fixing bugs + 22.2. Analyzing and fixing autobuild failures + 22.3. Reviewing and testing patches + 22.4. Work on items from the TODO list + 22.5. Submitting patches + 22.6. Reporting issues/bugs or getting help + 22.7. Using the runtime tests framework + +23. DEVELOPERS file and get-developers +24. Release Engineering + + 24.1. Releases + 24.2. Development + +Chapter 15. How Buildroot works + +As mentioned above, Buildroot is basically a set of Makefiles that +download, configure, and compile software with the correct options. +It also includes patches for various software packages - mainly the +ones involved in the cross-compilation toolchain (gcc, binutils and +uClibc). + +There is basically one Makefile per software package, and they are +named with the .mk extension. Makefiles are split into many different +parts. + + * The toolchain/ directory contains the Makefiles and associated + files for all software related to the cross-compilation + toolchain: binutils, gcc, gdb, kernel-headers and uClibc. + * The arch/ directory contains the definitions for all the + processor architectures that are supported by Buildroot. + * The package/ directory contains the Makefiles and associated + files for all user-space tools and libraries that Buildroot can + compile and add to the target root filesystem. There is one + sub-directory per package. + * The linux/ directory contains the Makefiles and associated files + for the Linux kernel. + * The boot/ directory contains the Makefiles and associated files + for the bootloaders supported by Buildroot. + * The system/ directory contains support for system integration, + e.g. the target filesystem skeleton and the selection of an init + system. + * The fs/ directory contains the Makefiles and associated files for + software related to the generation of the target root filesystem + image. + +Each directory contains at least 2 files: + + * something.mk is the Makefile that downloads, configures, compiles + and installs the package something. + * Config.in is a part of the configuration tool description file. + It describes the options related to the package. + +The main Makefile performs the following steps (once the +configuration is done): + + * Create all the output directories: staging, target, build, etc. + in the output directory (output/ by default, another value can be + specified using O=) + * Generate the toolchain target. When an internal toolchain is + used, this means generating the cross-compilation toolchain. When + an external toolchain is used, this means checking the features + of the external toolchain and importing it into the Buildroot + environment. + * Generate all the targets listed in the TARGETS variable. This + variable is filled by all the individual components' Makefiles. + Generating these targets will trigger the compilation of the + userspace packages (libraries, programs), the kernel, the + bootloader and the generation of the root filesystem images, + depending on the configuration. + +Chapter 16. Coding style + +Overall, these coding style rules are here to help you to add new +files in Buildroot or refactor existing ones. + +If you slightly modify some existing file, the important thing is to +keep the consistency of the whole file, so you can: + + * either follow the potentially deprecated coding style used in + this file, + * or entirely rework it in order to make it comply with these + rules. + +16.1. Config.in file + +Config.in files contain entries for almost anything configurable in +Buildroot. + +An entry has the following pattern: + +config BR2_PACKAGE_LIBFOO + bool "libfoo" + depends on BR2_PACKAGE_LIBBAZ + select BR2_PACKAGE_LIBBAR + help + This is a comment that explains what libfoo is. The help text + should be wrapped. + + http://foosoftware.org/libfoo/ + + * The bool, depends on, select and help lines are indented with one + tab. + * The help text itself should be indented with one tab and two + spaces. + * The help text should be wrapped to fit 72 columns, where tab + counts for 8, so 62 characters in the text itself. + +The Config.in files are the input for the configuration tool used in +Buildroot, which is the regular Kconfig. For further details about +the Kconfig language, refer to http://kernel.org/doc/Documentation/ +kbuild/kconfig-language.txt. + +16.2. The .mk file + + * Header: The file starts with a header. It contains the module + name, preferably in lowercase, enclosed between separators made + of 80 hashes. A blank line is mandatory after the header: + + ################################################################################ + # + # libfoo + # + ################################################################################ + + * Assignment: use = preceded and followed by one space: + + LIBFOO_VERSION = 1.0 + LIBFOO_CONF_OPTS += --without-python-support + + Do not align the = signs. + + * Indentation: use tab only: + + define LIBFOO_REMOVE_DOC + $(RM) -r $(TARGET_DIR)/usr/share/libfoo/doc \ + $(TARGET_DIR)/usr/share/man/man3/libfoo* + endef + + Note that commands inside a define block should always start with + a tab, so make recognizes them as commands. + + * Optional dependency: + + + Prefer multi-line syntax. + + YES: + + ifeq ($(BR2_PACKAGE_PYTHON3),y) + LIBFOO_CONF_OPTS += --with-python-support + LIBFOO_DEPENDENCIES += python3 + else + LIBFOO_CONF_OPTS += --without-python-support + endif + + NO: + + LIBFOO_CONF_OPTS += --with$(if $(BR2_PACKAGE_PYTHON3),,out)-python-support + LIBFOO_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON3),python3,) + + + Keep configure options and dependencies close together. + * Optional hooks: keep hook definition and assignment together in + one if block. + + YES: + + ifneq ($(BR2_LIBFOO_INSTALL_DATA),y) + define LIBFOO_REMOVE_DATA + $(RM) -r $(TARGET_DIR)/usr/share/libfoo/data + endef + LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA + endif + + NO: + + define LIBFOO_REMOVE_DATA + $(RM) -r $(TARGET_DIR)/usr/share/libfoo/data + endef + + ifneq ($(BR2_LIBFOO_INSTALL_DATA),y) + LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA + endif + +16.3. The genimage.cfg file + +genimage.cfg files contain the output image layout that genimage +utility uses to create final .img file. + +An example follows: + +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + + file Image { + image = "Image" + } + } + + size = 32M +} + +image sdimage.img { + hdimage { + } + + partition u-boot { + image = "efi-part.vfat" + offset = 8K + } + + partition root { + image = "rootfs.ext2" + size = 512M + } +} + + * Every section(i.e. hdimage, vfat etc.), partition must be + indented with one tab. + * Every file or other subnode must be indented with two tabs. + * Every node(section, partition, file, subnode) must have an open + curly bracket on the same line of the node’s name, while the + closing one must be on a newline and after it a newline must be + added except for the last one node. Same goes for its option, for + example option size =. + * Every option(i.e. image, offset, size) must have the = assignment + one space from it and one space from the value specified. + * Filename must at least begin with genimage prefix and have the + .cfg extension to be easy to recognize. + * Allowed notations for offset and size options are: G, M, K (not + k). If it’s not possible to express a precise byte count with + notations above then use hexadecimal 0x prefix or, as last + chance, the byte count. In comments instead use GB, MB, KB (not + kb) in place of G, M, K. + * For GPT partitions, the partition-type-uuid value must be U for + the EFI System Partition (expanded to + c12a7328-f81f-11d2-ba4b-00a0c93ec93b by genimage), F for a FAT + partition (expanded to ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 by + genimage) or L for the root filesystem or other filesystems + (expanded to 0fc63daf-8483-4772-8e79-3d69d8477de4 by genimage). + Even though L is the default value of genimage, we prefer to have + it explicitly specified in our genimage.cfg files. Finally, these + shortcuts should be used without double quotes, e.g + partition-type-uuid = U. If an explicit GUID is specified, + lower-case letters should be used. + +The genimage.cfg files are the input for the genimage tool used in +Buildroot to generate the final image file(i.e. sdcard.img). For +further details about the genimage language, refer to https:// +github.com/pengutronix/genimage/blob/master/README.rst. + +16.4. The documentation + +The documentation uses the asciidoc [https://asciidoc-py.github.io/] +format. + +For further details about the asciidoc syntax, refer to https:// +asciidoc-py.github.io/userguide.html. + +16.5. Support scripts + +Some scripts in the support/ and utils/ directories are written in +Python and should follow the PEP8 Style Guide for Python Code [https: +//www.python.org/dev/peps/pep-0008/]. + +Chapter 17. Adding support for a particular board + +Buildroot contains basic configurations for several publicly +available hardware boards, so that users of such a board can easily +build a system that is known to work. You are welcome to add support +for other boards to Buildroot too. + +To do so, you need to create a normal Buildroot configuration that +builds a basic system for the hardware: (internal) toolchain, kernel, +bootloader, filesystem and a simple BusyBox-only userspace. No +specific package should be selected: the configuration should be as +minimal as possible, and should only build a working basic BusyBox +system for the target platform. You can of course use more +complicated configurations for your internal projects, but the +Buildroot project will only integrate basic board configurations. +This is because package selections are highly application-specific. + +Once you have a known working configuration, run make savedefconfig. +This will generate a minimal defconfig file at the root of the +Buildroot source tree. Move this file into the configs/ directory, +and rename it _defconfig. If the configuration is a bit +more complicated, it is nice to manually reformat it and separate it +into sections, with a comment before each section. Typical sections +are Architecture, Toolchain options (typically just linux headers +version), Firmware, Bootloader, Kernel, and Filesystem. + +Always use fixed versions or commit hashes for the different +components, not the "latest" version. For example, set +BR2_LINUX_KERNEL_CUSTOM_VERSION=y and +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE to the kernel version you +tested with. + +It is recommended to use as much as possible upstream versions of the +Linux kernel and bootloaders, and to use as much as possible default +kernel and bootloader configurations. If they are incorrect for your +board, or no default exists, we encourage you to send fixes to the +corresponding upstream projects. + +However, in the mean time, you may want to store kernel or bootloader +configuration or patches specific to your target platform. To do so, +create a directory board/ and a subdirectory board/ +/. You can then store your patches and +configurations in these directories, and reference them from the main +Buildroot configuration. Refer to Chapter 9, Project-specific +customization for more details. + +Before submitting patches for new boards it is recommended to test it +by building it using latest gitlab-CI docker container. To do this +use utils/docker-run script and inside it issue these commands: + + $ make _defconfig + $ make + +By default, Buildroot developers use the official image hosted on the +gitlab.com registry [https://gitlab.com/buildroot.org/buildroot/ +container_registry/2395076] and it should be convenient for most +usage. If you still want to build your own docker image, you can base +it off the official image as the FROM directive of your own +Dockerfile: + +FROM registry.gitlab.com/buildroot.org/buildroot/base:YYYYMMDD.HHMM +RUN ... +COPY ... + +The current version YYYYMMDD.HHMM can be found in the .gitlab-ci.yml +file at the top of the Buildroot source tree; all past versions are +listed in the aforementioned registry as well. + +Chapter 18. Adding new packages to Buildroot + +This section covers how new packages (userspace libraries or +applications) can be integrated into Buildroot. It also shows how +existing packages are integrated, which is needed for fixing issues +or tuning their configuration. + +When you add a new package, be sure to test it in various conditions +(see Section 18.25.3, “How to test your package”) and also check it +for coding style (see Section 18.25.2, “How to check the coding +style”). + +18.1. Package directory + +First of all, create a directory under the package directory for your +software, for example libfoo. + +Some packages have been grouped by topic in a sub-directory: x11r7, +qt5 and gstreamer. If your package fits in one of these categories, +then create your package directory in these. New subdirectories are +discouraged, however. + +18.2. Config files + +For the package to be displayed in the configuration tool, you need +to create a Config file in your package directory. There are two +types: Config.in and Config.in.host. + +18.2.1. Config.in file + +For packages used on the target, create a file named Config.in. This +file will contain the option descriptions related to our libfoo +software that will be used and displayed in the configuration tool. +It should basically contain: + +config BR2_PACKAGE_LIBFOO + bool "libfoo" + help + This is a comment that explains what libfoo is. The help text + should be wrapped. + + http://foosoftware.org/libfoo/ + +The bool line, help line and other metadata information about the +configuration option must be indented with one tab. The help text +itself should be indented with one tab and two spaces, lines should +be wrapped to fit 72 columns, where tab counts for 8, so 62 +characters in the text itself. The help text must mention the +upstream URL of the project after an empty line. + +As a convention specific to Buildroot, the ordering of the attributes +is as follows: + + 1. The type of option: bool, string… with the prompt + 2. If needed, the default value(s) + 3. Any dependencies on the target in depends on form + 4. Any dependencies on the toolchain in depends on form + 5. Any dependencies on other packages in depends on form + 6. Any dependency of the select form + 7. The help keyword and help text. + +You can add other sub-options into a if BR2_PACKAGE_LIBFOO…endif +statement to configure particular things in your software. You can +look at examples in other packages. The syntax of the Config.in file +is the same as the one for the kernel Kconfig file. The documentation +for this syntax is available at http://kernel.org/doc/Documentation/ +kbuild/kconfig-language.txt + +Finally you have to add your new libfoo/Config.in to package/ +Config.in (or in a category subdirectory if you decided to put your +package in one of the existing categories). The files included there +are sorted alphabetically per category and are NOT supposed to +contain anything but the bare name of the package. + +source "package/libfoo/Config.in" + +18.2.2. Config.in.host file + +Some packages also need to be built for the host system. There are +two options here: + + * The host package is only required to satisfy build-time + dependencies of one or more target packages. In this case, add + host-foo to the target package’s BAR_DEPENDENCIES variable. No + Config.in.host file should be created. + * The host package should be explicitly selectable by the user from + the configuration menu. In this case, create a Config.in.host + file for that host package: + + config BR2_PACKAGE_HOST_FOO + bool "host foo" + help + This is a comment that explains what foo for the host is. + + http://foosoftware.org/foo/ + + The same coding style and options as for the Config.in file are + valid. + + Finally you have to add your new libfoo/Config.in.host to package + /Config.in.host. The files included there are sorted + alphabetically and are NOT supposed to contain anything but the + bare name of the package. + + source "package/foo/Config.in.host" + + The host package will then be available from the Host utilities + menu. + +18.2.3. Choosing depends on or select + +The Config.in file of your package must also ensure that dependencies +are enabled. Typically, Buildroot uses the following rules: + + * Use a select type of dependency for dependencies on libraries. + These dependencies are generally not obvious and it therefore + make sense to have the kconfig system ensure that the + dependencies are selected. For example, the libgtk2 package uses + select BR2_PACKAGE_LIBGLIB2 to make sure this library is also + enabled. The select keyword expresses the dependency with a + backward semantic. + * Use a depends on type of dependency when the user really needs to + be aware of the dependency. Typically, Buildroot uses this type + of dependency for dependencies on target architecture, MMU + support and toolchain options (see Section 18.2.4, “Dependencies + on target and toolchain options”), or for dependencies on "big" + things, such as the X.org system. The depends on keyword + expresses the dependency with a forward semantic. + +Note. The current problem with the kconfig language is that these two +dependency semantics are not internally linked. Therefore, it may be +possible to select a package, whom one of its dependencies/ +requirement is not met. + +An example illustrates both the usage of select and depends on. + +config BR2_PACKAGE_RRDTOOL + bool "rrdtool" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBART + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_ZLIB + help + RRDtool is the OpenSource industry standard, high performance + data logging and graphing system for time series data. + + http://oss.oetiker.ch/rrdtool/ + +comment "rrdtool needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +Note that these two dependency types are only transitive with the +dependencies of the same kind. + +This means, in the following example: + +config BR2_PACKAGE_A + bool "Package A" + +config BR2_PACKAGE_B + bool "Package B" + depends on BR2_PACKAGE_A + +config BR2_PACKAGE_C + bool "Package C" + depends on BR2_PACKAGE_B + +config BR2_PACKAGE_D + bool "Package D" + select BR2_PACKAGE_B + +config BR2_PACKAGE_E + bool "Package E" + select BR2_PACKAGE_D + + * Selecting Package C will be visible if Package B has been + selected, which in turn is only visible if Package A has been + selected. + * Selecting Package E will select Package D, which will select + Package B, it will not check for the dependencies of Package B, + so it will not select Package A. + * Since Package B is selected but Package A is not, this violates + the dependency of Package B on Package A. Therefore, in such a + situation, the transitive dependency has to be added explicitly: + +config BR2_PACKAGE_D + bool "Package D" + depends on BR2_PACKAGE_A + select BR2_PACKAGE_B + +config BR2_PACKAGE_E + bool "Package E" + depends on BR2_PACKAGE_A + select BR2_PACKAGE_D + +Overall, for package library dependencies, select should be +preferred. + +Note that such dependencies will ensure that the dependency option is +also enabled, but not necessarily built before your package. To do +so, the dependency also needs to be expressed in the .mk file of the +package. + +Further formatting details: see the coding style. + +18.2.4. Dependencies on target and toolchain options + +Many packages depend on certain options of the toolchain: the choice +of C library, C++ support, thread support, RPC support, wchar +support, or dynamic library support. Some packages can only be built +on certain target architectures, or if an MMU is available in the +processor. + +These dependencies have to be expressed with the appropriate depends +on statements in the Config.in file. Additionally, for dependencies +on toolchain options, a comment should be displayed when the option +is not enabled, so that the user knows why the package is not +available. Dependencies on target architecture or MMU support should +not be made visible in a comment: since it is unlikely that the user +can freely choose another target, it makes little sense to show these +dependencies explicitly. + +The comment should only be visible if the config option itself would +be visible when the toolchain option dependencies are met. This means +that all other dependencies of the package (including dependencies on +target architecture and MMU support) have to be repeated on the +comment definition. To keep it clear, the depends on statement for +these non-toolchain option should be kept separate from the depends +on statement for the toolchain options. If there is a dependency on a +config option in that same file (typically the main package) it is +preferable to have a global if … endif construct rather than +repeating the depends on statement on the comment and other config +options. + +The general format of a dependency comment for package foo is: + +foo needs a toolchain w/ featA, featB, featC + +for example: + +mpd needs a toolchain w/ C++, threads, wchar + +or + +crda needs a toolchain w/ threads + +Note that this text is kept brief on purpose, so that it will fit on +a 80-character terminal. + +The rest of this section enumerates the different target and +toolchain options, the corresponding config symbols to depend on, and +the text to use in the comment. + + * Target architecture + + + Dependency symbol: BR2_powerpc, BR2_mips, … (see arch/ + Config.in) + + Comment string: no comment to be added + * MMU support + + + Dependency symbol: BR2_USE_MMU + + Comment string: no comment to be added + * Gcc _sync* built-ins used for atomic operations. They are + available in variants operating on 1 byte, 2 bytes, 4 bytes and 8 + bytes. Since different architectures support atomic operations on + different sizes, one dependency symbol is available for each + size: + + + Dependency symbol: BR2_TOOLCHAIN_HAS_SYNC_1 for 1 byte, + BR2_TOOLCHAIN_HAS_SYNC_2 for 2 bytes, + BR2_TOOLCHAIN_HAS_SYNC_4 for 4 bytes, + BR2_TOOLCHAIN_HAS_SYNC_8 for 8 bytes. + + Comment string: no comment to be added + * Gcc _atomic* built-ins used for atomic operations. + + + Dependency symbol: BR2_TOOLCHAIN_HAS_ATOMIC. + + Comment string: no comment to be added + * Kernel headers + + + Dependency symbol: BR2_TOOLCHAIN_HEADERS_AT_LEAST_X_Y, + (replace X_Y with the proper version, see toolchain/ + Config.in) + + Comment string: headers >= X.Y and/or headers <= X.Y (replace + X.Y with the proper version) + * GCC version + + + Dependency symbol: BR2_TOOLCHAIN_GCC_AT_LEAST_X_Y, (replace + X_Y with the proper version, see toolchain/Config.in) + + Comment string: gcc >= X.Y and/or gcc <= X.Y (replace X.Y + with the proper version) + * Host GCC version + + + Dependency symbol: BR2_HOST_GCC_AT_LEAST_X_Y, (replace X_Y + with the proper version, see Config.in) + + Comment string: no comment to be added + + Note that it is usually not the package itself that has a + minimum host GCC version, but rather a host-package on which + it depends. + * C library + + + Dependency symbol: BR2_TOOLCHAIN_USES_GLIBC, + BR2_TOOLCHAIN_USES_MUSL, BR2_TOOLCHAIN_USES_UCLIBC + + Comment string: for the C library, a slightly different + comment text is used: foo needs a glibc toolchain, or foo + needs a glibc toolchain w/ C++ + * C++ support + + + Dependency symbol: BR2_INSTALL_LIBSTDCPP + + Comment string: C++ + * D support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_DLANG + + Comment string: Dlang + * Fortran support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_FORTRAN + + Comment string: fortran + * thread support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_THREADS + + Comment string: threads (unless + BR2_TOOLCHAIN_HAS_THREADS_NPTL is also needed, in which case, + specifying only NPTL is sufficient) + * NPTL thread support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_THREADS_NPTL + + Comment string: NPTL + * RPC support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_NATIVE_RPC + + Comment string: RPC + * wchar support + + + Dependency symbol: BR2_USE_WCHAR + + Comment string: wchar + * dynamic library + + + Dependency symbol: !BR2_STATIC_LIBS + + Comment string: dynamic library + +18.2.5. Dependencies on a Linux kernel built by buildroot + +Some packages need a Linux kernel to be built by buildroot. These are +typically kernel modules or firmware. A comment should be added in +the Config.in file to express this dependency, similar to +dependencies on toolchain options. The general format is: + +foo needs a Linux kernel to be built + +If there is a dependency on both toolchain options and the Linux +kernel, use this format: + +foo needs a toolchain w/ featA, featB, featC and a Linux kernel to be built + +18.2.6. Dependencies on udev /dev management + +If a package needs udev /dev management, it should depend on symbol +BR2_PACKAGE_HAS_UDEV, and the following comment should be added: + +foo needs udev /dev management + +If there is a dependency on both toolchain options and udev /dev +management, use this format: + +foo needs udev /dev management and a toolchain w/ featA, featB, featC + +18.2.7. Dependencies on features provided by virtual packages + +Some features can be provided by more than one package, such as the +openGL libraries. + +See Section 18.12, “Infrastructure for virtual packages” for more on +the virtual packages. + +18.3. The .mk file + +Finally, here’s the hardest part. Create a file named libfoo.mk. It +describes how the package should be downloaded, configured, built, +installed, etc. + +Depending on the package type, the .mk file must be written in a +different way, using different infrastructures: + + * Makefiles for generic packages (not using autotools or CMake): + These are based on an infrastructure similar to the one used for + autotools-based packages, but require a little more work from the + developer. They specify what should be done for the + configuration, compilation and installation of the package. This + infrastructure must be used for all packages that do not use the + autotools as their build system. In the future, other specialized + infrastructures might be written for other build systems. We + cover them through in a tutorial and a reference. + * Makefiles for autotools-based software (autoconf, automake, + etc.): We provide a dedicated infrastructure for such packages, + since autotools is a very common build system. This + infrastructure must be used for new packages that rely on the + autotools as their build system. We cover them through a tutorial + and reference. + * Makefiles for cmake-based software: We provide a dedicated + infrastructure for such packages, as CMake is a more and more + commonly used build system and has a standardized behaviour. This + infrastructure must be used for new packages that rely on CMake. + We cover them through a tutorial and reference. + * Makefiles for Python modules: We have a dedicated infrastructure + for Python modules that use the distutils, flit, pep517 or + setuptools mechanisms. We cover them through a tutorial and a + reference. + * Makefiles for Lua modules: We have a dedicated infrastructure for + Lua modules available through the LuaRocks web site. We cover + them through a tutorial and a reference. + +Further formatting details: see the writing rules. + +18.4. The .hash file + +When possible, you must add a third file, named libfoo.hash, that +contains the hashes of the downloaded files for the libfoo package. +The only reason for not adding a .hash file is when hash checking is +not possible due to how the package is downloaded. + +When a package has a version selection choice, then the hash file may +be stored in a subdirectory named after the version, e.g. package/ +libfoo/1.2.3/libfoo.hash. This is especially important if the +different versions have different licensing terms, but they are +stored in the same file. Otherwise, the hash file should stay in the +package’s directory. + +The hashes stored in that file are used to validate the integrity of +the downloaded files and of the license files. + +The format of this file is one line for each file for which to check +the hash, each line with the following three fields separated by two +spaces: + + * the type of hash, one of: + + + md5, sha1, sha224, sha256, sha384, sha512 + * the hash of the file: + + + for md5, 32 hexadecimal characters + + for sha1, 40 hexadecimal characters + + for sha224, 56 hexadecimal characters + + for sha256, 64 hexadecimal characters + + for sha384, 96 hexadecimal characters + + for sha512, 128 hexadecimal characters + * the name of the file: + + + for a source archive: the basename of the file, without any + directory component, + + for a license file: the path as it appears in + FOO_LICENSE_FILES. + +Lines starting with a # sign are considered comments, and ignored. +Empty lines are ignored. + +There can be more than one hash for a single file, each on its own +line. In this case, all hashes must match. + +Note. Ideally, the hashes stored in this file should match the hashes +published by upstream, e.g. on their website, in the e-mail +announcement… If upstream provides more than one type of hash (e.g. +sha1 and sha512), then it is best to add all those hashes in the +.hash file. If upstream does not provide any hash, or only provides +an md5 hash, then compute at least one strong hash yourself +(preferably sha256, but not md5), and mention this in a comment line +above the hashes. + +Note. The hashes for license files are used to detect a license +change when a package version is bumped. The hashes are checked +during the make legal-info target run. For a package with multiple +versions (like Qt5), create the hash file in a subdirectory + of that package (see also Section 19.2, “How patches +are applied”). + +The example below defines a sha1 and a sha256 published by upstream +for the main libfoo-1.2.3.tar.bz2 tarball, an md5 from upstream and a +locally-computed sha256 hashes for a binary blob, a sha256 for a +downloaded patch, and an archive with no hash: + +# Hashes from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.{sha1,sha256}: +sha1 486fb55c3efa71148fe07895fd713ea3a5ae343a libfoo-1.2.3.tar.bz2 +sha256 efc8103cc3bcb06bda6a781532d12701eb081ad83e8f90004b39ab81b65d4369 libfoo-1.2.3.tar.bz2 + +# md5 from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.md5, sha256 locally computed: +md5 2d608f3c318c6b7557d551a5a09314f03452f1a1 libfoo-data.bin +sha256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b libfoo-data.bin + +# Locally computed: +sha256 ff52101fb90bbfc3fe9475e425688c660f46216d7e751c4bbdb1dc85cdccacb9 libfoo-fix-blabla.patch + +# Hash for license files: +sha256 a45a845012742796534f7e91fe623262ccfb99460a2bd04015bd28d66fba95b8 COPYING +sha256 01b1f9f2c8ee648a7a596a1abe8aa4ed7899b1c9e5551bda06da6e422b04aa55 doc/COPYING.LGPL + +If the .hash file is present, and it contains one or more hashes for +a downloaded file, the hash(es) computed by Buildroot (after +download) must match the hash(es) stored in the .hash file. If one or +more hashes do not match, Buildroot considers this an error, deletes +the downloaded file, and aborts. + +If the .hash file is present, but it does not contain a hash for a +downloaded file, Buildroot considers this an error and aborts. +However, the downloaded file is left in the download directory since +this typically indicates that the .hash file is wrong but the +downloaded file is probably OK. + +Hashes are currently checked for files fetched from http/ftp servers, +Git repositories, files copied using scp and local files. Hashes are +not checked for other version control systems (such as Subversion, +CVS, etc.) because Buildroot currently does not generate reproducible +tarballs when source code is fetched from such version control +systems. + +Hashes should only be added in .hash files for files that are +guaranteed to be stable. For example, patches auto-generated by +Github are not guaranteed to be stable, and therefore their hashes +can change over time. Such patches should not be downloaded, and +instead be added locally to the package folder. + +If the .hash file is missing, then no check is done at all. + +18.5. The SNNfoo start script + +Packages that provide a system daemon usually need to be started +somehow at boot. Buildroot comes with support for several init +systems, some are considered tier one (see Section 6.3, “init system” +), while others are also available but do not have the same level of +integration. Ideally, all packages providing a system daemon should +provide a start script for BusyBox/SysV init and a systemd unit file. + +For consistency, the start script must follow the style and +composition as shown in the reference: package/busybox/S01syslogd. An +annotated example of this style is shown below. There is no specific +coding style for systemd unit files, but if a package comes with its +own unit file, that is preferred over a buildroot specific one, if it +is compatible with buildroot. + +The name of the start script is composed of the SNN and the daemon +name. The NN is the start order number which needs to be carefully +chosen. For example, a program that requires networking to be up +should not start before S40network. The scripts are started in +alphabetical order, so S01syslogd starts before S01watchdogd, and +S02sysctl start thereafter. + +01: #!/bin/sh +02: +03: DAEMON="syslogd" +04: PIDFILE="/var/run/$DAEMON.pid" +05: +06: SYSLOGD_ARGS="" +07: +08: # shellcheck source=/dev/null +09: [ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" +10: +11: # BusyBox' syslogd does not create a pidfile, so pass "-n" in the command line +12: # and use "-m" to instruct start-stop-daemon to create one. +13: start() { +14: printf 'Starting %s: ' "$DAEMON" +15: # shellcheck disable=SC2086 # we need the word splitting +16: start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/sbin/$DAEMON" \ +17: -- -n $SYSLOGD_ARGS +18: status=$? +19: if [ "$status" -eq 0 ]; then +20: echo "OK" +21: else +22: echo "FAIL" +23: fi +24: return "$status" +25: } +26: +27: stop() { +28: printf 'Stopping %s: ' "$DAEMON" +29: start-stop-daemon -K -q -p "$PIDFILE" +30: status=$? +31: if [ "$status" -eq 0 ]; then +32: rm -f "$PIDFILE" +33: echo "OK" +34: else +35: echo "FAIL" +36: fi +37: return "$status" +38: } +39: +40: restart() { +41: stop +42: sleep 1 +43: start +44: } +45: +46: case "$1" in +47: start|stop|restart) +48: "$1";; +49: reload) +50: # Restart, since there is no true "reload" feature. +51: restart;; +52: *) +53: echo "Usage: $0 {start|stop|restart|reload}" +54: exit 1 +55: esac + +Note: programs that support reloading their configuration in some +fashion (SIGHUP) should provide a reload() function similar to stop +(). The start-stop-daemon supports -K -s HUP for this. It is +recommended to always append -x "/sbin/$DAEMON" to all the +start-stop-daemon commands to ensure signals are set to a PID that +matches $DAEMON. + +Both start scripts and unit files can source command line arguments +from /etc/default/foo, in general, if such a file does not exist it +should not block the start of the daemon, unless there is some site +specirfic command line argument the daemon requires to start. For +start scripts a FOO_ARGS="-s -o -m -e -args" can be defined to a +default value in and the user can override this from /etc/default/ +foo. + +18.6. Infrastructure for packages with specific build systems + +By packages with specific build systems we mean all the packages +whose build system is not one of the standard ones, such as autotools +or CMake. This typically includes packages whose build system is +based on hand-written Makefiles or shell scripts. + +18.6.1. generic-package tutorial + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_LICENSE = GPL-3.0+ +11: LIBFOO_LICENSE_FILES = COPYING +12: LIBFOO_INSTALL_STAGING = YES +13: LIBFOO_CONFIG_SCRIPTS = libfoo-config +14: LIBFOO_DEPENDENCIES = host-libaaa libbbb +15: +16: define LIBFOO_BUILD_CMDS +17: $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +18: endef +19: +20: define LIBFOO_INSTALL_STAGING_CMDS +21: $(INSTALL) -D -m 0755 $(@D)/libfoo.a $(STAGING_DIR)/usr/lib/libfoo.a +22: $(INSTALL) -D -m 0644 $(@D)/foo.h $(STAGING_DIR)/usr/include/foo.h +23: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(STAGING_DIR)/usr/lib +24: endef +25: +26: define LIBFOO_INSTALL_TARGET_CMDS +27: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(TARGET_DIR)/usr/lib +28: $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/foo.d +29: endef +30: +31: define LIBFOO_USERS +32: foo -1 libfoo -1 * - - - LibFoo daemon +33: endef +34: +35: define LIBFOO_DEVICES +36: /dev/foo c 666 0 0 42 0 - - - +37: endef +38: +39: define LIBFOO_PERMISSIONS +40: /bin/foo f 4755 foo libfoo - - - - - +41: endef +42: +43: $(eval $(generic-package)) + +The Makefile begins on line 7 to 11 with metadata information: the +version of the package (LIBFOO_VERSION), the name of the tarball +containing the package (LIBFOO_SOURCE) (xz-ed tarball recommended) +the Internet location at which the tarball can be downloaded from +(LIBFOO_SITE), the license (LIBFOO_LICENSE) and file with the license +text (LIBFOO_LICENSE_FILES). All variables must start with the same +prefix, LIBFOO_ in this case. This prefix is always the uppercased +version of the package name (see below to understand where the +package name is defined). + +On line 12, we specify that this package wants to install something +to the staging space. This is often needed for libraries, since they +must install header files and other development files in the staging +space. This will ensure that the commands listed in the +LIBFOO_INSTALL_STAGING_CMDS variable will be executed. + +On line 13, we specify that there is some fixing to be done to some +of the libfoo-config files that were installed during +LIBFOO_INSTALL_STAGING_CMDS phase. These *-config files are +executable shell script files that are located in $(STAGING_DIR)/usr/ +bin directory and are executed by other 3rd party packages to find +out the location and the linking flags of this particular package. + +The problem is that all these *-config files by default give wrong, +host system linking flags that are unsuitable for cross-compiling. + +For example: -I/usr/include instead of -I$(STAGING_DIR)/usr/include +or: -L/usr/lib instead of -L$(STAGING_DIR)/usr/lib + +So some sed magic is done to these scripts to make them give correct +flags. The argument to be given to LIBFOO_CONFIG_SCRIPTS is the file +name(s) of the shell script(s) needing fixing. All these names are +relative to $(STAGING_DIR)/usr/bin and if needed multiple names can +be given. + +In addition, the scripts listed in LIBFOO_CONFIG_SCRIPTS are removed +from $(TARGET_DIR)/usr/bin, since they are not needed on the target. + +Example 18.1. Config script: divine package + +Package divine installs shell script $(STAGING_DIR)/usr/bin/ +divine-config. + +So its fixup would be: + +DIVINE_CONFIG_SCRIPTS = divine-config + + +Example 18.2. Config script: imagemagick package: + +Package imagemagick installs the following scripts: $(STAGING_DIR)/ +usr/bin/{Magick,Magick++,MagickCore,MagickWand,Wand}-config + +So it’s fixup would be: + +IMAGEMAGICK_CONFIG_SCRIPTS = \ + Magick-config Magick++-config \ + MagickCore-config MagickWand-config Wand-config + + +On line 14, we specify the list of dependencies this package relies +on. These dependencies are listed in terms of lower-case package +names, which can be packages for the target (without the host- +prefix) or packages for the host (with the host-) prefix). Buildroot +will ensure that all these packages are built and installed before +the current package starts its configuration. + +The rest of the Makefile, lines 16..29, defines what should be done +at the different steps of the package configuration, compilation and +installation. LIBFOO_BUILD_CMDS tells what steps should be performed +to build the package. LIBFOO_INSTALL_STAGING_CMDS tells what steps +should be performed to install the package in the staging space. +LIBFOO_INSTALL_TARGET_CMDS tells what steps should be performed to +install the package in the target space. + +All these steps rely on the $(@D) variable, which contains the +directory where the source code of the package has been extracted. + +On lines 31..33, we define a user that is used by this package (e.g. +to run a daemon as non-root) (LIBFOO_USERS). + +On line 35..37, we define a device-node file used by this package +(LIBFOO_DEVICES). + +On line 39..41, we define the permissions to set to specific files +installed by this package (LIBFOO_PERMISSIONS). + +Finally, on line 43, we call the generic-package function, which +generates, according to the variables defined previously, all the +Makefile code necessary to make your package working. + +18.6.2. generic-package reference + +There are two variants of the generic target. The generic-package +macro is used for packages to be cross-compiled for the target. The +host-generic-package macro is used for host packages, natively +compiled for the host. It is possible to call both of them in a +single .mk file: once to create the rules to generate a target +package and once to create the rules to generate a host package: + +$(eval $(generic-package)) +$(eval $(host-generic-package)) + +This might be useful if the compilation of the target package +requires some tools to be installed on the host. If the package name +is libfoo, then the name of the package for the target is also +libfoo, while the name of the package for the host is host-libfoo. +These names should be used in the DEPENDENCIES variables of other +packages, if they depend on libfoo or host-libfoo. + +The call to the generic-package and/or host-generic-package macro +must be at the end of the .mk file, after all variable definitions. +The call to host-generic-package must be after the call to +generic-package, if any. + +For the target package, the generic-package uses the variables +defined by the .mk file and prefixed by the uppercased package name: +LIBFOO_*. host-generic-package uses the HOST_LIBFOO_* variables. For +some variables, if the HOST_LIBFOO_ prefixed variable doesn’t exist, +the package infrastructure uses the corresponding variable prefixed +by LIBFOO_. This is done for variables that are likely to have the +same value for both the target and host packages. See below for +details. + +The list of variables that can be set in a .mk file to give metadata +information is (assuming the package name is libfoo) : + + * LIBFOO_VERSION, mandatory, must contain the version of the + package. Note that if HOST_LIBFOO_VERSION doesn’t exist, it is + assumed to be the same as LIBFOO_VERSION. It can also be a + revision number or a tag for packages that are fetched directly + from their version control system. Examples: + + + a version for a release tarball: LIBFOO_VERSION = 0.1.2 + + a sha1 for a git tree: LIBFOO_VERSION = + cb9d6aa9429e838f0e54faa3d455bcbab5eef057 + + a tag for a git tree LIBFOO_VERSION = v0.1.2 + + Note: Using a branch name as FOO_VERSION is not supported, + because it does not and can not work as people would expect + it should: + + 1. due to local caching, Buildroot will not re-fetch the + repository, so people who expect to be able to follow the + remote repository would be quite surprised and + disappointed; + 2. because two builds can never be perfectly simultaneous, + and because the remote repository may get new commits on + the branch anytime, two users, using the same Buildroot + tree and building the same configuration, may get + different source, thus rendering the build non + reproducible, and people would be quite surprised and + disappointed. + * LIBFOO_SOURCE may contain the name of the tarball of the package, + which Buildroot will use to download the tarball from + LIBFOO_SITE. If HOST_LIBFOO_SOURCE is not specified, it defaults + to LIBFOO_SOURCE. If none are specified, then the value is + assumed to be libfoo-$(LIBFOO_VERSION).tar.gz. Example: + LIBFOO_SOURCE = foobar-$(LIBFOO_VERSION).tar.bz2 + * LIBFOO_PATCH may contain a space-separated list of patch file + names, that Buildroot will download and apply to the package + source code. If an entry contains ://, then Buildroot will assume + it is a full URL and download the patch from this location. + Otherwise, Buildroot will assume that the patch should be + downloaded from LIBFOO_SITE. If HOST_LIBFOO_PATCH is not + specified, it defaults to LIBFOO_PATCH. Note that patches that + are included in Buildroot itself use a different mechanism: all + files of the form *.patch present in the package directory inside + Buildroot will be applied to the package after extraction (see + patching a package). Finally, patches listed in the LIBFOO_PATCH + variable are applied before the patches stored in the Buildroot + package directory. + * LIBFOO_SITE provides the location of the package, which can be a + URL or a local filesystem path. HTTP, FTP and SCP are supported + URL types for retrieving package tarballs. In these cases don’t + include a trailing slash: it will be added by Buildroot between + the directory and the filename as appropriate. Git, Subversion, + Mercurial, and Bazaar are supported URL types for retrieving + packages directly from source code management systems. There is a + helper function to make it easier to download source tarballs + from GitHub (refer to Section 18.25.4, “How to add a package from + GitHub” for details). A filesystem path may be used to specify + either a tarball or a directory containing the package source + code. See LIBFOO_SITE_METHOD below for more details on how + retrieval works. Note that SCP URLs should be of the form scp:// + [user@]host:filepath, and that filepath is relative to the user’s + home directory, so you may want to prepend the path with a slash + for absolute paths: scp://[user@]host:/absolutepath. The same + goes for SFTP URLs. If HOST_LIBFOO_SITE is not specified, it + defaults to LIBFOO_SITE. Examples: LIBFOO_SITE=http:// + www.libfoosoftware.org/libfoo LIBFOO_SITE=http://svn.xiph.org/ + trunk/Tremor LIBFOO_SITE=/opt/software/libfoo.tar.gz LIBFOO_SITE= + $(TOPDIR)/../src/libfoo + * LIBFOO_DL_OPTS is a space-separated list of additional options to + pass to the downloader. Useful for retrieving documents with + server-side checking for user logins and passwords, or to use a + proxy. All download methods valid for LIBFOO_SITE_METHOD are + supported; valid options depend on the download method (consult + the man page for the respective download utilities). + * LIBFOO_EXTRA_DOWNLOADS is a space-separated list of additional + files that Buildroot should download. If an entry contains :// + then Buildroot will assume it is a complete URL and will download + the file using this URL. Otherwise, Buildroot will assume the + file to be downloaded is located at LIBFOO_SITE. Buildroot will + not do anything with those additional files, except download + them: it will be up to the package recipe to use them from $ + (LIBFOO_DL_DIR). + * LIBFOO_SITE_METHOD determines the method used to fetch or copy + the package source code. In many cases, Buildroot guesses the + method from the contents of LIBFOO_SITE and setting + LIBFOO_SITE_METHOD is unnecessary. When HOST_LIBFOO_SITE_METHOD + is not specified, it defaults to the value of LIBFOO_SITE_METHOD. + The possible values of LIBFOO_SITE_METHOD are: + + + wget for normal FTP/HTTP downloads of tarballs. Used by + default when LIBFOO_SITE begins with http://, https:// or + ftp://. + + scp for downloads of tarballs over SSH with scp. Used by + default when LIBFOO_SITE begins with scp://. + + sftp for downloads of tarballs over SSH with sftp. Used by + default when LIBFOO_SITE begins with sftp://. + + svn for retrieving source code from a Subversion repository. + Used by default when LIBFOO_SITE begins with svn://. When a + http:// Subversion repository URL is specified in + LIBFOO_SITE, one must specify LIBFOO_SITE_METHOD=svn. + Buildroot performs a checkout which is preserved as a tarball + in the download cache; subsequent builds use the tarball + instead of performing another checkout. + + cvs for retrieving source code from a CVS repository. Used by + default when LIBFOO_SITE begins with cvs://. The downloaded + source code is cached as with the svn method. Anonymous + pserver mode is assumed otherwise explicitly defined on + LIBFOO_SITE. Both LIBFOO_SITE=cvs://libfoo.net:/cvsroot/ + libfoo and LIBFOO_SITE=cvs://:ext:libfoo.net:/cvsroot/libfoo + are accepted, on the former anonymous pserver access mode is + assumed. LIBFOO_SITE must contain the source URL as well as + the remote repository directory. The module is the package + name. LIBFOO_VERSION is mandatory and must be a tag, a + branch, or a date (e.g. "2014-10-20", "2014-10-20 13:45", + "2014-10-20 13:45+01" see "man cvs" for further details). + + git for retrieving source code from a Git repository. Used by + default when LIBFOO_SITE begins with git://. The downloaded + source code is cached as with the svn method. + + hg for retrieving source code from a Mercurial repository. + One must specify LIBFOO_SITE_METHOD=hg when LIBFOO_SITE + contains a Mercurial repository URL. The downloaded source + code is cached as with the svn method. + + bzr for retrieving source code from a Bazaar repository. Used + by default when LIBFOO_SITE begins with bzr://. The + downloaded source code is cached as with the svn method. + + file for a local tarball. One should use this when + LIBFOO_SITE specifies a package tarball as a local filename. + Useful for software that isn’t available publicly or in + version control. + + local for a local source code directory. One should use this + when LIBFOO_SITE specifies a local directory path containing + the package source code. Buildroot copies the contents of the + source directory into the package’s build directory. Note + that for local packages, no patches are applied. If you need + to still patch the source code, use LIBFOO_POST_RSYNC_HOOKS, + see Section 18.23.1, “Using the POST_RSYNC hook”. + * LIBFOO_GIT_SUBMODULES can be set to YES to create an archive with + the git submodules in the repository. This is only available for + packages downloaded with git (i.e. when LIBFOO_SITE_METHOD=git). + Note that we try not to use such git submodules when they contain + bundled libraries, in which case we prefer to use those libraries + from their own package. + * LIBFOO_GIT_LFS should be set to YES if the Git repository uses + Git LFS to store large files out of band. This is only available + for packages downloaded with git (i.e. when LIBFOO_SITE_METHOD= + git). + * LIBFOO_STRIP_COMPONENTS is the number of leading components + (directories) that tar must strip from file names on extraction. + The tarball for most packages has one leading component named " + -", thus Buildroot passes + --strip-components=1 to tar to remove it. For non-standard + packages that don’t have this component, or that have more than + one leading component to strip, set this variable with the value + to be passed to tar. Default: 1. + * LIBFOO_EXCLUDES is a space-separated list of patterns to exclude + when extracting the archive. Each item from that list is passed + as a tar’s --exclude option. By default, empty. + * LIBFOO_DEPENDENCIES lists the dependencies (in terms of package + name) that are required for the current target package to + compile. These dependencies are guaranteed to be compiled and + installed before the configuration of the current package starts. + However, modifications to configuration of these dependencies + will not force a rebuild of the current package. In a similar + way, HOST_LIBFOO_DEPENDENCIES lists the dependencies for the + current host package. + * LIBFOO_EXTRACT_DEPENDENCIES lists the dependencies (in terms of + package name) that are required for the current target package to + be extracted. These dependencies are guaranteed to be compiled + and installed before the extract step of the current package + starts. This is only used internally by the package + infrastructure, and should typically not be used directly by + packages. + * LIBFOO_PATCH_DEPENDENCIES lists the dependencies (in terms of + package name) that are required for the current package to be + patched. These dependencies are guaranteed to be extracted and + patched (but not necessarily built) before the current package is + patched. In a similar way, HOST_LIBFOO_PATCH_DEPENDENCIES lists + the dependencies for the current host package. This is seldom + used; usually, LIBFOO_DEPENDENCIES is what you really want to + use. + * LIBFOO_PROVIDES lists all the virtual packages libfoo is an + implementation of. See Section 18.12, “Infrastructure for virtual + packages”. + * LIBFOO_INSTALL_STAGING can be set to YES or NO (default). If set + to YES, then the commands in the LIBFOO_INSTALL_STAGING_CMDS + variables are executed to install the package into the staging + directory. + * LIBFOO_INSTALL_TARGET can be set to YES (default) or NO. If set + to YES, then the commands in the LIBFOO_INSTALL_TARGET_CMDS + variables are executed to install the package into the target + directory. + * LIBFOO_INSTALL_IMAGES can be set to YES or NO (default). If set + to YES, then the commands in the LIBFOO_INSTALL_IMAGES_CMDS + variable are executed to install the package into the images + directory. + * LIBFOO_CONFIG_SCRIPTS lists the names of the files in $ + (STAGING_DIR)/usr/bin that need some special fixing to make them + cross-compiling friendly. Multiple file names separated by space + can be given and all are relative to $(STAGING_DIR)/usr/bin. The + files listed in LIBFOO_CONFIG_SCRIPTS are also removed from $ + (TARGET_DIR)/usr/bin since they are not needed on the target. + * LIBFOO_DEVICES lists the device files to be created by Buildroot + when using the static device table. The syntax to use is the + makedevs one. You can find some documentation for this syntax in + the Chapter 25, Makedev syntax documentation. This variable is + optional. + * LIBFOO_PERMISSIONS lists the changes of permissions to be done at + the end of the build process. The syntax is once again the + makedevs one. You can find some documentation for this syntax in + the Chapter 25, Makedev syntax documentation. This variable is + optional. + * LIBFOO_USERS lists the users to create for this package, if it + installs a program you want to run as a specific user (e.g. as a + daemon, or as a cron-job). The syntax is similar in spirit to the + makedevs one, and is described in the Chapter 26, Makeusers + syntax documentation. This variable is optional. + * LIBFOO_LICENSE defines the license (or licenses) under which the + package is released. This name will appear in the manifest file + produced by make legal-info. If the license appears in the SPDX + License List [https://spdx.org/licenses/], use the SPDX short + identifier to make the manifest file uniform. Otherwise, describe + the license in a precise and concise way, avoiding ambiguous + names such as BSD which actually name a family of licenses. This + variable is optional. If it is not defined, unknown will appear + in the license field of the manifest file for this package. The + expected format for this variable must comply with the following + rules: + + + If different parts of the package are released under + different licenses, then comma separate licenses (e.g. + LIBFOO_LICENSE = GPL-2.0+, LGPL-2.1+). If there is clear + distinction between which component is licensed under what + license, then annotate the license with that component, + between parenthesis (e.g. LIBFOO_LICENSE = GPL-2.0+ + (programs), LGPL-2.1+ (libraries)). + + If some licenses are conditioned on a sub-option being + enabled, append the conditional licenses with a comma (e.g.: + FOO_LICENSE += , GPL-2.0+ (programs)); the infrastructure + will internally remove the space before the comma. + + If the package is dual licensed, then separate licenses with + the or keyword (e.g. LIBFOO_LICENSE = AFL-2.1 or GPL-2.0+). + * LIBFOO_LICENSE_FILES is a space-separated list of files in the + package tarball that contain the license(s) under which the + package is released. make legal-info copies all of these files in + the legal-info directory. See Chapter 13, Legal notice and + licensing for more information. This variable is optional. If it + is not defined, a warning will be produced to let you know, and + not saved will appear in the license files field of the manifest + file for this package. + * LIBFOO_ACTUAL_SOURCE_TARBALL only applies to packages whose + LIBFOO_SITE / LIBFOO_SOURCE pair points to an archive that does + not actually contain source code, but binary code. This a very + uncommon case, only known to apply to external toolchains which + come already compiled, although theoretically it might apply to + other packages. In such cases a separate tarball is usually + available with the actual source code. Set + LIBFOO_ACTUAL_SOURCE_TARBALL to the name of the actual source + code archive and Buildroot will download it and use it when you + run make legal-info to collect legally-relevant material. Note + this file will not be downloaded during regular builds nor by + make source. + * LIBFOO_ACTUAL_SOURCE_SITE provides the location of the actual + source tarball. The default value is LIBFOO_SITE, so you don’t + need to set this variable if the binary and source archives are + hosted on the same directory. If LIBFOO_ACTUAL_SOURCE_TARBALL is + not set, it doesn’t make sense to define + LIBFOO_ACTUAL_SOURCE_SITE. + * LIBFOO_REDISTRIBUTE can be set to YES (default) or NO to indicate + if the package source code is allowed to be redistributed. Set it + to NO for non-opensource packages: Buildroot will not save the + source code for this package when collecting the legal-info. + * LIBFOO_FLAT_STACKSIZE defines the stack size of an application + built into the FLAT binary format. The application stack size on + the NOMMU architecture processors can’t be enlarged at run time. + The default stack size for the FLAT binary format is only 4k + bytes. If the application consumes more stack, append the + required number here. + * LIBFOO_BIN_ARCH_EXCLUDE is a space-separated list of paths + (relative to the target directory) to ignore when checking that + the package installs correctly cross-compiled binaries. You + seldom need to set this variable, unless the package installs + binary blobs outside the default locations, /lib/firmware, /usr/ + lib/firmware, /lib/modules, /usr/lib/modules, and /usr/share, + which are automatically excluded. + * LIBFOO_IGNORE_CVES is a space-separated list of CVEs that tells + Buildroot CVE tracking tools which CVEs should be ignored for + this package. This is typically used when the CVE is fixed by a + patch in the package, or when the CVE for some reason does not + affect the Buildroot package. A Makefile comment must always + precede the addition of a CVE to this variable. Example: + +# 0001-fix-cve-2020-12345.patch +LIBFOO_IGNORE_CVES += CVE-2020-12345 +# only when built with libbaz, which Buildroot doesn't support +LIBFOO_IGNORE_CVES += CVE-2020-54321 + + * LIBFOO_CPE_ID_* variables is a set of variables that allows the + package to define its CPE identifier [https://nvd.nist.gov/ + products/cpe]. The available variables are: + + + LIBFOO_CPE_ID_PREFIX, specifies the prefix of the CPE + identifier, i.e the first three fields. When not defined, the + default value is cpe:2.3:a. + + LIBFOO_CPE_ID_VENDOR, specifies the vendor part of the CPE + identifier. When not defined, the default value is + _project. + + LIBFOO_CPE_ID_PRODUCT, specifies the product part of the CPE + identifier. When not defined, the default value is . + + LIBFOO_CPE_ID_VERSION, specifies the version part of the CPE + identifier. When not defined the default value is $ + (LIBFOO_VERSION). + + LIBFOO_CPE_ID_UPDATE specifies the update part of the CPE + identifier. When not defined the default value is *. + + If any of those variables is defined, then the generic package + infrastructure assumes the package provides valid CPE + information. In this case, the generic package infrastructure + will define LIBFOO_CPE_ID. + + For a host package, if its LIBFOO_CPE_ID_* variables are not + defined, it inherits the value of those variables from the + corresponding target package. + +The recommended way to define these variables is to use the following +syntax: + +LIBFOO_VERSION = 2.32 + +Now, the variables that define what should be performed at the +different steps of the build process. + + * LIBFOO_EXTRACT_CMDS lists the actions to be performed to extract + the package. This is generally not needed as tarballs are + automatically handled by Buildroot. However, if the package uses + a non-standard archive format, such as a ZIP or RAR file, or has + a tarball with a non-standard organization, this variable allows + to override the package infrastructure default behavior. + * LIBFOO_CONFIGURE_CMDS lists the actions to be performed to + configure the package before its compilation. + * LIBFOO_BUILD_CMDS lists the actions to be performed to compile + the package. + * HOST_LIBFOO_INSTALL_CMDS lists the actions to be performed to + install the package, when the package is a host package. The + package must install its files to the directory given by $ + (HOST_DIR). All files, including development files such as + headers should be installed, since other packages might be + compiled on top of this package. + * LIBFOO_INSTALL_TARGET_CMDS lists the actions to be performed to + install the package to the target directory, when the package is + a target package. The package must install its files to the + directory given by $(TARGET_DIR). Only the files required for + execution of the package have to be installed. Header files, + static libraries and documentation will be removed again when the + target filesystem is finalized. + * LIBFOO_INSTALL_STAGING_CMDS lists the actions to be performed to + install the package to the staging directory, when the package is + a target package. The package must install its files to the + directory given by $(STAGING_DIR). All development files should + be installed, since they might be needed to compile other + packages. + * LIBFOO_INSTALL_IMAGES_CMDS lists the actions to be performed to + install the package to the images directory, when the package is + a target package. The package must install its files to the + directory given by $(BINARIES_DIR). Only files that are binary + images (aka images) that do not belong in the TARGET_DIR but are + necessary for booting the board should be placed here. For + example, a package should utilize this step if it has binaries + which would be similar to the kernel image, bootloader or root + filesystem images. + * LIBFOO_INSTALL_INIT_SYSV, LIBFOO_INSTALL_INIT_OPENRC and + LIBFOO_INSTALL_INIT_SYSTEMD list the actions to install init + scripts either for the systemV-like init systems (busybox, + sysvinit, etc.), openrc or for the systemd units. These commands + will be run only when the relevant init system is installed (i.e. + if systemd is selected as the init system in the configuration, + only LIBFOO_INSTALL_INIT_SYSTEMD will be run). The only exception + is when openrc is chosen as init system and + LIBFOO_INSTALL_INIT_OPENRC has not been set, in such situation + LIBFOO_INSTALL_INIT_SYSV will be called, since openrc supports + sysv init scripts. When systemd is used as the init system, + buildroot will automatically enable all services using the + systemctl preset-all command in the final phase of image + building. You can add preset files to prevent a particular unit + from being automatically enabled by buildroot. + * LIBFOO_HELP_CMDS lists the actions to print the package help, + which is included to the main make help output. These commands + can print anything in any format. This is seldom used, as + packages rarely have custom rules. Do not use this variable, + unless you really know that you need to print help. + * LIBFOO_LINUX_CONFIG_FIXUPS lists the Linux kernel configuration + options that are needed to build and use this package, and + without which the package is fundamentally broken. This shall be + a set of calls to one of the kconfig tweaking option: + KCONFIG_ENABLE_OPT, KCONFIG_DISABLE_OPT, or KCONFIG_SET_OPT. This + is seldom used, as package usually have no strict requirements on + the kernel options. + +The preferred way to define these variables is: + +define LIBFOO_CONFIGURE_CMDS + action 1 + action 2 + action 3 +endef + +In the action definitions, you can use the following variables: + + * $(LIBFOO_PKGDIR) contains the path to the directory containing + the libfoo.mk and Config.in files. This variable is useful when + it is necessary to install a file bundled in Buildroot, like a + runtime configuration file, a splashscreen image… + * $(@D), which contains the directory in which the package source + code has been uncompressed. + * $(LIBFOO_DL_DIR) contains the path to the directory where all the + downloads made by Buildroot for libfoo are stored in. + * $(TARGET_CC), $(TARGET_LD), etc. to get the target + cross-compilation utilities + * $(TARGET_CROSS) to get the cross-compilation toolchain prefix + * Of course the $(HOST_DIR), $(STAGING_DIR) and $(TARGET_DIR) + variables to install the packages properly. Those variables point + to the global host, staging and target directories, unless + per-package directory support is used, in which case they point + to the current package host, staging and target directories. In + both cases, it doesn’t make any difference from the package point + of view: it should simply use HOST_DIR, STAGING_DIR and + TARGET_DIR. See Section 8.12, “Top-level parallel build” for more + details about per-package directory support. + +Finally, you can also use hooks. See Section 18.23, “Hooks available +in the various build steps” for more information. + +18.7. Infrastructure for autotools-based packages + +18.7.1. autotools-package tutorial + +First, let’s see how to write a .mk file for an autotools-based +package, with an example : + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_INSTALL_STAGING = YES +11: LIBFOO_INSTALL_TARGET = NO +12: LIBFOO_CONF_OPTS = --disable-shared +13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf +14: +15: $(eval $(autotools-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in output/staging/ is the +directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed +in the staging directory: their development files are needed to +compile other libraries or applications depending on them. Also by +default, when staging installation is enabled, packages are installed +in this location using the make install command. + +On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they +will not be used at runtime. By default, target installation is +enabled; setting this variable to NO is almost never needed. Also by +default, packages are installed in this location using the make +install command. + +On line 12, we tell Buildroot to pass a custom configure option, that +will be passed to the ./configure script before configuring and +building the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line line 15, we invoke the autotools-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +18.7.2. autotools-package reference + +The main macro of the autotools package infrastructure is +autotools-package. It is similar to the generic-package macro. The +ability to have target and host packages is also available, with the +host-autotools-package macro. + +Just like the generic infrastructure, the autotools infrastructure +works by defining a number of variables before calling the +autotools-package macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the autotools +infrastructure: LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, +LIBFOO_SITE, LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, +LIBFOO_INSTALL_STAGING, LIBFOO_INSTALL_TARGET. + +A few additional variables, specific to the autotools infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them. + + * LIBFOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the configure script. This is useful, if + for example, the main configure script is not at the root of the + tree extracted by the tarball. If HOST_LIBFOO_SUBDIR is not + specified, it defaults to LIBFOO_SUBDIR. + * LIBFOO_CONF_ENV, to specify additional environment variables to + pass to the configure script. By default, empty. + * LIBFOO_CONF_OPTS, to specify additional configure options to pass + to the configure script. By default, empty. + * LIBFOO_MAKE, to specify an alternate make command. This is + typically useful when parallel make is enabled in the + configuration (using BR2_JLEVEL) but that this feature should be + disabled for the given package, for one reason or another. By + default, set to $(MAKE). If parallel building is not supported by + the package, then it should be set to LIBFOO_MAKE=$(MAKE1). + * LIBFOO_MAKE_ENV, to specify additional environment variables to + pass to make in the build step. These are passed before the make + command. By default, empty. + * LIBFOO_MAKE_OPTS, to specify additional variables to pass to make + in the build step. These are passed after the make command. By + default, empty. + * LIBFOO_AUTORECONF, tells whether the package should be + autoreconfigured or not (i.e. if the configure script and + Makefile.in files should be re-generated by re-running autoconf, + automake, libtool, etc.). Valid values are YES and NO. By + default, the value is NO + * LIBFOO_AUTORECONF_ENV, to specify additional environment + variables to pass to the autoreconf program if LIBFOO_AUTORECONF= + YES. These are passed in the environment of the autoreconf + command. By default, empty. + * LIBFOO_AUTORECONF_OPTS to specify additional options passed to + the autoreconf program if LIBFOO_AUTORECONF=YES. By default, + empty. + * LIBFOO_AUTOPOINT, tells whether the package should be autopointed + or not (i.e. if the package needs I18N infrastructure copied in.) + Only valid when LIBFOO_AUTORECONF=YES. Valid values are YES and + NO. The default is NO. + * LIBFOO_LIBTOOL_PATCH tells whether the Buildroot patch to fix + libtool cross-compilation issues should be applied or not. Valid + values are YES and NO. By default, the value is YES + * LIBFOO_INSTALL_STAGING_OPTS contains the make options used to + install the package to the staging directory. By default, the + value is DESTDIR=$(STAGING_DIR) install, which is correct for + most autotools packages. It is still possible to override it. + * LIBFOO_INSTALL_TARGET_OPTS contains the make options used to + install the package to the target directory. By default, the + value is DESTDIR=$(TARGET_DIR) install. The default value is + correct for most autotools packages, but it is still possible to + override it if needed. + +With the autotools infrastructure, all the steps required to build +and install the packages are already defined, and they generally work +well for most autotools-based packages. However, when required, it is +still possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the + autotools infrastructure is used, if the package .mk file defines + its own LIBFOO_CONFIGURE_CMDS variable, it will be used instead + of the default autotools one. However, using this method should + be restricted to very specific cases. Do not use it in the + general case. + +18.8. Infrastructure for CMake-based packages + +18.8.1. cmake-package tutorial + +First, let’s see how to write a .mk file for a CMake-based package, +with an example : + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_INSTALL_STAGING = YES +11: LIBFOO_INSTALL_TARGET = NO +12: LIBFOO_CONF_OPTS = -DBUILD_DEMOS=ON +13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf +14: +15: $(eval $(cmake-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in output/staging/ is the +directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed +in the staging directory: their development files are needed to +compile other libraries or applications depending on them. Also by +default, when staging installation is enabled, packages are installed +in this location using the make install command. + +On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they +will not be used at runtime. By default, target installation is +enabled; setting this variable to NO is almost never needed. Also by +default, packages are installed in this location using the make +install command. + +On line 12, we tell Buildroot to pass custom options to CMake when it +is configuring the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line line 15, we invoke the cmake-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +18.8.2. cmake-package reference + +The main macro of the CMake package infrastructure is cmake-package. +It is similar to the generic-package macro. The ability to have +target and host packages is also available, with the +host-cmake-package macro. + +Just like the generic infrastructure, the CMake infrastructure works +by defining a number of variables before calling the cmake-package +macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the CMake infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, LIBFOO_INSTALL_STAGING, +LIBFOO_INSTALL_TARGET. + +A few additional variables, specific to the CMake infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + + * LIBFOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main CMakeLists.txt file. This is + useful, if for example, the main CMakeLists.txt file is not at + the root of the tree extracted by the tarball. If + HOST_LIBFOO_SUBDIR is not specified, it defaults to + LIBFOO_SUBDIR. + * LIBFOO_CONF_ENV, to specify additional environment variables to + pass to CMake. By default, empty. + * LIBFOO_CONF_OPTS, to specify additional configure options to pass + to CMake. By default, empty. A number of common CMake options are + set by the cmake-package infrastructure; so it is normally not + necessary to set them in the package’s *.mk file unless you want + to override them: + + + CMAKE_BUILD_TYPE is driven by BR2_ENABLE_RUNTIME_DEBUG; + + CMAKE_INSTALL_PREFIX; + + BUILD_SHARED_LIBS is driven by BR2_STATIC_LIBS; + + BUILD_DOC, BUILD_DOCS are disabled; + + BUILD_EXAMPLE, BUILD_EXAMPLES are disabled; + + BUILD_TEST, BUILD_TESTS, BUILD_TESTING are disabled. + * LIBFOO_SUPPORTS_IN_SOURCE_BUILD = NO should be set when the + package cannot be built inside the source tree but needs a + separate build directory. + * LIBFOO_MAKE, to specify an alternate make command. This is + typically useful when parallel make is enabled in the + configuration (using BR2_JLEVEL) but that this feature should be + disabled for the given package, for one reason or another. By + default, set to $(MAKE). If parallel building is not supported by + the package, then it should be set to LIBFOO_MAKE=$(MAKE1). + * LIBFOO_MAKE_ENV, to specify additional environment variables to + pass to make in the build step. These are passed before the make + command. By default, empty. + * LIBFOO_MAKE_OPTS, to specify additional variables to pass to make + in the build step. These are passed after the make command. By + default, empty. + * LIBFOO_INSTALL_OPTS contains the make options used to install the + package to the host directory. By default, the value is install, + which is correct for most CMake packages. It is still possible to + override it. + * LIBFOO_INSTALL_STAGING_OPTS contains the make options used to + install the package to the staging directory. By default, the + value is DESTDIR=$(STAGING_DIR) install/fast, which is correct + for most CMake packages. It is still possible to override it. + * LIBFOO_INSTALL_TARGET_OPTS contains the make options used to + install the package to the target directory. By default, the + value is DESTDIR=$(TARGET_DIR) install/fast. The default value is + correct for most CMake packages, but it is still possible to + override it if needed. + +With the CMake infrastructure, all the steps required to build and +install the packages are already defined, and they generally work +well for most CMake-based packages. However, when required, it is +still possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the CMake + infrastructure is used, if the package .mk file defines its own + LIBFOO_CONFIGURE_CMDS variable, it will be used instead of the + default CMake one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. + +18.9. Infrastructure for Python packages + +This infrastructure applies to Python packages that use the standard +Python setuptools or pep517 mechanisms as their build system, +generally recognizable by the usage of a setup.py script or +pyproject.toml file. + +18.9.1. python-package tutorial + +First, let’s see how to write a .mk file for a Python package, with +an example : + +01: ################################################################################ +02: # +03: # python-foo +04: # +05: ################################################################################ +06: +07: PYTHON_FOO_VERSION = 1.0 +08: PYTHON_FOO_SOURCE = python-foo-$(PYTHON_FOO_VERSION).tar.xz +09: PYTHON_FOO_SITE = http://www.foosoftware.org/download +10: PYTHON_FOO_LICENSE = BSD-3-Clause +11: PYTHON_FOO_LICENSE_FILES = LICENSE +12: PYTHON_FOO_ENV = SOME_VAR=1 +13: PYTHON_FOO_DEPENDENCIES = libmad +14: PYTHON_FOO_SETUP_TYPE = distutils +15: +16: $(eval $(python-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10 and 11, we give licensing details about the package (its +license on line 10, and the file containing the license text on line +11). + +On line 12, we tell Buildroot to pass custom options to the Python +setup.py script when it is configuring the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +On line 14, we declare the specific Python build system being used. +In this case the distutils Python build system is used. The four +supported ones are distutils, flit, pep517 and setuptools. + +Finally, on line 16, we invoke the python-package macro that +generates all the Makefile rules that actually allow the package to +be built. + +18.9.2. python-package reference + +As a policy, packages that merely provide Python modules should all +be named python- in Buildroot. Other packages that use the +Python build system, but are not Python modules, can freely choose +their name (existing examples in Buildroot are scons and supervisor). + +The main macro of the Python package infrastructure is +python-package. It is similar to the generic-package macro. It is +also possible to create Python host packages with the +host-python-package macro. + +Just like the generic infrastructure, the Python infrastructure works +by defining a number of variables before calling the python-package +or host-python-package macros. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the Python +infrastructure: PYTHON_FOO_VERSION, PYTHON_FOO_SOURCE, +PYTHON_FOO_PATCH, PYTHON_FOO_SITE, PYTHON_FOO_SUBDIR, +PYTHON_FOO_DEPENDENCIES, PYTHON_FOO_LICENSE, +PYTHON_FOO_LICENSE_FILES, PYTHON_FOO_INSTALL_STAGING, etc. + +Note that: + + * It is not necessary to add python or host-python in the + PYTHON_FOO_DEPENDENCIES variable of a package, since these basic + dependencies are automatically added as needed by the Python + package infrastructure. + * Similarly, it is not needed to add host-setuptools to + PYTHON_FOO_DEPENDENCIES for setuptools-based packages, since it’s + automatically added by the Python infrastructure as needed. + +One variable specific to the Python infrastructure is mandatory: + + * PYTHON_FOO_SETUP_TYPE, to define which Python build system is + used by the package. The four supported values are distutils, + flit, pep517 and setuptools. If you don’t know which one is used + in your package, look at the setup.py or pyproject.toml file in + your package source code, and see whether it imports things from + the distutils, flit module or the setuptools module. If the + package is using a pyproject.toml file without any build-system + requires and with a local in-tree backend-path one should use + pep517. + +A few additional variables, specific to the Python infrastructure, +can optionally be defined, depending on the package’s needs. Many of +them are only useful in very specific cases, typical packages will +therefore only use a few of them, or none. + + * PYTHON_FOO_SUBDIR may contain the name of a subdirectory inside + the package that contains the main setup.py or pyproject.toml + file. This is useful, if for example, the main setup.py or + pyproject.toml file is not at the root of the tree extracted by + the tarball. If HOST_PYTHON_FOO_SUBDIR is not specified, it + defaults to PYTHON_FOO_SUBDIR. + * PYTHON_FOO_ENV, to specify additional environment variables to + pass to the Python setup.py script (for distutils/setuptools + packages) or the support/scripts/pyinstaller.py script (for flit/ + pep517 packages) for both the build and install steps. Note that + the infrastructure is automatically passing several standard + variables, defined in PKG_PYTHON_DISTUTILS_ENV (for distutils + target packages), HOST_PKG_PYTHON_DISTUTILS_ENV (for distutils + host packages), PKG_PYTHON_SETUPTOOLS_ENV (for setuptools target + packages), HOST_PKG_PYTHON_SETUPTOOLS_ENV (for setuptools host + packages), PKG_PYTHON_PEP517_ENV (for flit/pep517 target + packages) and HOST_PKG_PYTHON_PEP517_ENV (for flit/pep517 host + packages). + * PYTHON_FOO_BUILD_OPTS, to specify additional options to pass to + the Python setup.py script during the build step, this generally + only makes sense to use for distutils/setuptools based packages + as flit/pep517 based packages do not pass these options to a + setup.py script but instead pass them to support/scripts/ + pyinstaller.py. For target distutils packages, the + PKG_PYTHON_DISTUTILS_BUILD_OPTS options are already passed + automatically by the infrastructure. + * PYTHON_FOO_INSTALL_TARGET_OPTS, PYTHON_FOO_INSTALL_STAGING_OPTS, + HOST_PYTHON_FOO_INSTALL_OPTS to specify additional options to + pass to the Python setup.py script (for distutils/setuptools + packages) or support/scripts/pyinstaller.py (for flit/pep517 + packages) during the target installation step, the staging + installation step or the host installation, respectively. Note + that the infrastructure is automatically passing some options, + defined in PKG_PYTHON_DISTUTILS_INSTALL_TARGET_OPTS or + PKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS (for target distutils + packages), HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS (for host + distutils packages), PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_OPTS or + PKG_PYTHON_SETUPTOOLS_INSTALL_STAGING_OPTS (for target setuptools + packages), HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS (for host + setuptools packages) and PKG_PYTHON_PEP517_INSTALL_TARGET_OPTS or + PKG_PYTHON_PEP517_INSTALL_STAGING_OPTS (for target flit/pep517 + packages). + +With the Python infrastructure, all the steps required to build and +install the packages are already defined, and they generally work +well for most Python-based packages. However, when required, it is +still possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the Python + infrastructure is used, if the package .mk file defines its own + PYTHON_FOO_BUILD_CMDS variable, it will be used instead of the + default Python one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. + +18.9.3. Generating a python-package from a PyPI repository + +If the Python package for which you would like to create a Buildroot +package is available on PyPI, you may want to use the scanpypi tool +located in utils/ to automate the process. + +You can find the list of existing PyPI packages here [https:// +pypi.python.org]. + +scanpypi requires Python’s setuptools package to be installed on your +host. + +When at the root of your buildroot directory just do : + +utils/scanpypi foo bar -o package + +This will generate packages python-foo and python-bar in the package +folder if they exist on https://pypi.python.org. + +Find the external python modules menu and insert your package inside. +Keep in mind that the items inside a menu should be in alphabetical +order. + +Please keep in mind that you’ll most likely have to manually check +the package for any mistakes as there are things that cannot be +guessed by the generator (e.g. dependencies on any of the python core +modules such as BR2_PACKAGE_PYTHON_ZLIB). Also, please take note that +the license and license files are guessed and must be checked. You +also need to manually add the package to the package/Config.in file. + +If your Buildroot package is not in the official Buildroot tree but +in a br2-external tree, use the -o flag as follows: + +utils/scanpypi foo bar -o other_package_dir + +This will generate packages python-foo and python-bar in the +other_package_directory instead of package. + +Option -h will list the available options: + +utils/scanpypi -h + +18.9.4. python-package CFFI backend + +C Foreign Function Interface for Python (CFFI) provides a convenient +and reliable way to call compiled C code from Python using interface +declarations written in C. Python packages relying on this backend +can be identified by the appearance of a cffi dependency in the +install_requires field of their setup.py file. + +Such a package should: + + * add python-cffi as a runtime dependency in order to install the + compiled C library wrapper on the target. This is achieved by + adding select BR2_PACKAGE_PYTHON_CFFI to the package Config.in. + +config BR2_PACKAGE_PYTHON_FOO + bool "python-foo" + select BR2_PACKAGE_PYTHON_CFFI # runtime + + * add host-python-cffi as a build-time dependency in order to + cross-compile the C wrapper. This is achieved by adding + host-python-cffi to the PYTHON_FOO_DEPENDENCIES variable. + +################################################################################ +# +# python-foo +# +################################################################################ + +... + +PYTHON_FOO_DEPENDENCIES = host-python-cffi + +$(eval $(python-package)) + +18.10. Infrastructure for LuaRocks-based packages + +18.10.1. luarocks-package tutorial + +First, let’s see how to write a .mk file for a LuaRocks-based +package, with an example : + +01: ################################################################################ +02: # +03: # lua-foo +04: # +05: ################################################################################ +06: +07: LUA_FOO_VERSION = 1.0.2-1 +08: LUA_FOO_NAME_UPSTREAM = foo +09: LUA_FOO_DEPENDENCIES = bar +10: +11: LUA_FOO_BUILD_OPTS += BAR_INCDIR=$(STAGING_DIR)/usr/include +12: LUA_FOO_BUILD_OPTS += BAR_LIBDIR=$(STAGING_DIR)/usr/lib +13: LUA_FOO_LICENSE = luaFoo license +14: LUA_FOO_LICENSE_FILES = $(LUA_FOO_SUBDIR)/COPYING +15: +16: $(eval $(luarocks-package)) + +On line 7, we declare the version of the package (the same as in the +rockspec, which is the concatenation of the upstream version and the +rockspec revision, separated by a hyphen -). + +On line 8, we declare that the package is called "foo" on LuaRocks. +In Buildroot, we give Lua-related packages a name that starts with +"lua", so the Buildroot name is different from the upstream name. +LUA_FOO_NAME_UPSTREAM makes the link between the two names. + +On line 9, we declare our dependencies against native libraries, so +that they are built before the build process of our package starts. + +On lines 11-12, we tell Buildroot to pass custom options to LuaRocks +when it is building the package. + +On lines 13-14, we specify the licensing terms for the package. + +Finally, on line 16, we invoke the luarocks-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +Most of these details can be retrieved from the rock and rockspec. +So, this file and the Config.in file can be generated by running the +command luarocks buildroot foo lua-foo in the Buildroot directory. +This command runs a specific Buildroot addon of luarocks that will +automatically generate a Buildroot package. The result must still be +manually inspected and possibly modified. + + * The package/Config.in file has to be updated manually to include + the generated Config.in files. + +18.10.2. luarocks-package reference + +LuaRocks is a deployment and management system for Lua modules, and +supports various build.type: builtin, make and cmake. In the context +of Buildroot, the luarocks-package infrastructure only supports the +builtin mode. LuaRocks packages that use the make or cmake build +mechanisms should instead be packaged using the generic-package and +cmake-package infrastructures in Buildroot, respectively. + +The main macro of the LuaRocks package infrastructure is +luarocks-package: like generic-package it works by defining a number +of variables providing metadata information about the package, and +then calling luarocks-package. + +Just like the generic infrastructure, the LuaRocks infrastructure +works by defining a number of variables before calling the +luarocks-package macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the LuaRocks infrastructure: +LUA_FOO_VERSION, LUA_FOO_SOURCE, LUA_FOO_SITE, LUA_FOO_DEPENDENCIES, +LUA_FOO_LICENSE, LUA_FOO_LICENSE_FILES. + +Two of them are populated by the LuaRocks infrastructure (for the +download step). If your package is not hosted on the LuaRocks mirror +$(BR2_LUAROCKS_MIRROR), you can override them: + + * LUA_FOO_SITE, which defaults to $(BR2_LUAROCKS_MIRROR) + * LUA_FOO_SOURCE, which defaults to $(lowercase + LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).src.rock + +A few additional variables, specific to the LuaRocks infrastructure, +are also defined. They can be overridden in specific cases. + + * LUA_FOO_NAME_UPSTREAM, which defaults to lua-foo, i.e. the + Buildroot package name + * LUA_FOO_ROCKSPEC, which defaults to $(lowercase + LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).rockspec + * LUA_FOO_SUBDIR, which defaults to $(LUA_FOO_NAME_UPSTREAM)-$ + (LUA_FOO_VERSION_WITHOUT_ROCKSPEC_REVISION) + * LUA_FOO_BUILD_OPTS contains additional build options for the + luarocks build call. + +18.11. Infrastructure for Perl/CPAN packages + +18.11.1. perl-package tutorial + +First, let’s see how to write a .mk file for a Perl/CPAN package, +with an example : + +01: ################################################################################ +02: # +03: # perl-foo-bar +04: # +05: ################################################################################ +06: +07: PERL_FOO_BAR_VERSION = 0.02 +08: PERL_FOO_BAR_SOURCE = Foo-Bar-$(PERL_FOO_BAR_VERSION).tar.gz +09: PERL_FOO_BAR_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MO/MONGER +10: PERL_FOO_BAR_DEPENDENCIES = perl-strictures +11: PERL_FOO_BAR_LICENSE = Artistic or GPL-1.0+ +12: PERL_FOO_BAR_LICENSE_FILES = LICENSE +13: PERL_FOO_BAR_DISTNAME = Foo-Bar +14: +15: $(eval $(perl-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball and the location +of the tarball on a CPAN server. Buildroot will automatically +download the tarball from this location. + +On line 10, we declare our dependencies, so that they are built +before the build process of our package starts. + +On line 11 and 12, we give licensing details about the package (its +license on line 11, and the file containing the license text on line +12). + +On line 13, the name of the distribution as needed by the script +utils/scancpan (in order to regenerate/upgrade these package files). + +Finally, on line 15, we invoke the perl-package macro that generates +all the Makefile rules that actually allow the package to be built. + +Most of these data can be retrieved from https://metacpan.org/. So, +this file and the Config.in can be generated by running the script +utils/scancpan Foo-Bar in the Buildroot directory (or in a +br2-external tree). This script creates a Config.in file and +foo-bar.mk file for the requested package, and also recursively for +all dependencies specified by CPAN. You should still manually edit +the result. In particular, the following things should be checked. + + * If the perl module links with a shared library that is provided + by another (non-perl) package, this dependency is not added + automatically. It has to be added manually to + PERL_FOO_BAR_DEPENDENCIES. + * The package/Config.in file has to be updated manually to include + the generated Config.in files. As a hint, the scancpan script + prints out the required source "…" statements, sorted + alphabetically. + +18.11.2. perl-package reference + +As a policy, packages that provide Perl/CPAN modules should all be +named perl- in Buildroot. + +This infrastructure handles various Perl build systems : +ExtUtils-MakeMaker (EUMM), Module-Build (MB) and Module-Build-Tiny. +Build.PL is preferred by default when a package provides a +Makefile.PL and a Build.PL. + +The main macro of the Perl/CPAN package infrastructure is +perl-package. It is similar to the generic-package macro. The ability +to have target and host packages is also available, with the +host-perl-package macro. + +Just like the generic infrastructure, the Perl/CPAN infrastructure +works by defining a number of variables before calling the +perl-package macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the Perl/CPAN +infrastructure: PERL_FOO_VERSION, PERL_FOO_SOURCE, PERL_FOO_PATCH, +PERL_FOO_SITE, PERL_FOO_SUBDIR, PERL_FOO_DEPENDENCIES, +PERL_FOO_INSTALL_TARGET. + +Note that setting PERL_FOO_INSTALL_STAGING to YES has no effect +unless a PERL_FOO_INSTALL_STAGING_CMDS variable is defined. The perl +infrastructure doesn’t define these commands since Perl modules +generally don’t need to be installed to the staging directory. + +A few additional variables, specific to the Perl/CPAN infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them. + + * PERL_FOO_PREFER_INSTALLER/HOST_PERL_FOO_PREFER_INSTALLER, + specifies the preferred installation method. Possible values are + EUMM (for Makefile.PL based installation using + ExtUtils-MakeMaker) and MB (for Build.PL based installation using + Module-Build). This variable is only used when the package + provides both installation methods. + * PERL_FOO_CONF_ENV/HOST_PERL_FOO_CONF_ENV, to specify additional + environment variables to pass to the perl Makefile.PL or perl + Build.PL. By default, empty. + * PERL_FOO_CONF_OPTS/HOST_PERL_FOO_CONF_OPTS, to specify additional + configure options to pass to the perl Makefile.PL or perl + Build.PL. By default, empty. + * PERL_FOO_BUILD_OPTS/HOST_PERL_FOO_BUILD_OPTS, to specify + additional options to pass to make pure_all or perl Build build + in the build step. By default, empty. + * PERL_FOO_INSTALL_TARGET_OPTS, to specify additional options to + pass to make pure_install or perl Build install in the install + step. By default, empty. + * HOST_PERL_FOO_INSTALL_OPTS, to specify additional options to pass + to make pure_install or perl Build install in the install step. + By default, empty. + +18.12. Infrastructure for virtual packages + +In Buildroot, a virtual package is a package whose functionalities +are provided by one or more packages, referred to as providers. The +virtual package management is an extensible mechanism allowing the +user to choose the provider used in the rootfs. + +For example, OpenGL ES is an API for 2D and 3D graphics on embedded +systems. The implementation of this API is different for the +Allwinner Tech Sunxi and the Texas Instruments OMAP35xx platforms. So +libgles will be a virtual package and sunxi-mali-utgard and ti-gfx +will be the providers. + +18.12.1. virtual-package tutorial + +In the following example, we will explain how to add a new virtual +package (something-virtual) and a provider for it (some-provider). + +First, let’s create the virtual package. + +18.12.2. Virtual package’s Config.in file + +The Config.in file of virtual package something-virtual should +contain: + +01: config BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +02: bool +03: +04: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL +05: depends on BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +06: string + +In this file, we declare two options, +BR2_PACKAGE_HAS_SOMETHING_VIRTUAL and +BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL, whose values will be used by +the providers. + +18.12.3. Virtual package’s .mk file + +The .mk for the virtual package should just evaluate the +virtual-package macro: + +01: ################################################################################ +02: # +03: # something-virtual +04: # +05: ################################################################################ +06: +07: $(eval $(virtual-package)) + +The ability to have target and host packages is also available, with +the host-virtual-package macro. + +18.12.4. Provider’s Config.in file + +When adding a package as a provider, only the Config.in file requires +some modifications. + +The Config.in file of the package some-provider, which provides the +functionalities of something-virtual, should contain: + +01: config BR2_PACKAGE_SOME_PROVIDER +02: bool "some-provider" +03: select BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +04: help +05: This is a comment that explains what some-provider is. +06: +07: http://foosoftware.org/some-provider/ +08: +09: if BR2_PACKAGE_SOME_PROVIDER +10: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL +11: default "some-provider" +12: endif + +On line 3, we select BR2_PACKAGE_HAS_SOMETHING_VIRTUAL, and on line +11, we set the value of BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL to the +name of the provider, but only if it is selected. + +18.12.5. Provider’s .mk file + +The .mk file should also declare an additional variable +SOME_PROVIDER_PROVIDES to contain the names of all the virtual +packages it is an implementation of: + +01: SOME_PROVIDER_PROVIDES = something-virtual + +Of course, do not forget to add the proper build and runtime +dependencies for this package! + +18.12.6. Notes on depending on a virtual package + +When adding a package that requires a certain FEATURE provided by a +virtual package, you have to use depends on BR2_PACKAGE_HAS_FEATURE, +like so: + +config BR2_PACKAGE_HAS_FEATURE + bool + +config BR2_PACKAGE_FOO + bool "foo" + depends on BR2_PACKAGE_HAS_FEATURE + +18.12.7. Notes on depending on a specific provider + +If your package really requires a specific provider, then you’ll have +to make your package depends on this provider; you can not select a +provider. + +Let’s take an example with two providers for a FEATURE: + +config BR2_PACKAGE_HAS_FEATURE + bool + +config BR2_PACKAGE_FOO + bool "foo" + select BR2_PACKAGE_HAS_FEATURE + +config BR2_PACKAGE_BAR + bool "bar" + select BR2_PACKAGE_HAS_FEATURE + +And you are adding a package that needs FEATURE as provided by foo, +but not as provided by bar. + +If you were to use select BR2_PACKAGE_FOO, then the user would still +be able to select BR2_PACKAGE_BAR in the menuconfig. This would +create a configuration inconsistency, whereby two providers of the +same FEATURE would be enabled at once, one explicitly set by the +user, the other implicitly by your select. + +Instead, you have to use depends on BR2_PACKAGE_FOO, which avoids any +implicit configuration inconsistency. + +18.13. Infrastructure for packages using kconfig for configuration +files + +A popular way for a software package to handle user-specified +configuration is kconfig. Among others, it is used by the Linux +kernel, Busybox, and Buildroot itself. The presence of a .config file +and a menuconfig target are two well-known symptoms of kconfig being +used. + +Buildroot features an infrastructure for packages that use kconfig +for their configuration. This infrastructure provides the necessary +logic to expose the package’s menuconfig target as foo-menuconfig in +Buildroot, and to handle the copying back and forth of the +configuration file in a correct way. + +The kconfig-package infrastructure is based on the generic-package +infrastructure. All variables supported by generic-package are +available in kconfig-package as well. See Section 18.6.2, +“generic-package reference” for more details. + +In order to use the kconfig-package infrastructure for a Buildroot +package, the minimally required lines in the .mk file, in addition to +the variables required by the generic-package infrastructure, are: + +FOO_KCONFIG_FILE = reference-to-source-configuration-file + +$(eval $(kconfig-package)) + +This snippet creates the following make targets: + + * foo-menuconfig, which calls the package’s menuconfig target + * foo-update-config, which copies the configuration back to the + source configuration file. It is not possible to use this target + when fragment files are set. + * foo-update-defconfig, which copies the configuration back to the + source configuration file. The configuration file will only list + the options that differ from the default values. It is not + possible to use this target when fragment files are set. + * foo-diff-config, which outputs the differences between the + current configuration and the one defined in the Buildroot + configuration for this kconfig package. The output is useful to + identify the configuration changes that may have to be propagated + to configuration fragments for example. + +and ensures that the source configuration file is copied to the build +directory at the right moment. + +There are two options to specify a configuration file to use, either +FOO_KCONFIG_FILE (as in the example, above) or FOO_KCONFIG_DEFCONFIG. +It is mandatory to provide either, but not both: + + * FOO_KCONFIG_FILE specifies the path to a defconfig or full-config + file to be used to configure the package. + * FOO_KCONFIG_DEFCONFIG specifies the defconfig make rule to call + to configure the package. + +In addition to these minimally required lines, several optional +variables can be set to suit the needs of the package under +consideration: + + * FOO_KCONFIG_EDITORS: a space-separated list of kconfig editors to + support, for example menuconfig xconfig. By default, menuconfig. + * FOO_KCONFIG_FRAGMENT_FILES: a space-separated list of + configuration fragment files that are merged to the main + configuration file. Fragment files are typically used when there + is a desire to stay in sync with an upstream (def)config file, + with some minor modifications. + * FOO_KCONFIG_OPTS: extra options to pass when calling the kconfig + editors. This may need to include $(FOO_MAKE_OPTS), for example. + By default, empty. + * FOO_KCONFIG_FIXUP_CMDS: a list of shell commands needed to fixup + the configuration file after copying it or running a kconfig + editor. Such commands may be needed to ensure a configuration + consistent with other configuration of Buildroot, for example. By + default, empty. + * FOO_KCONFIG_DOTCONFIG: path (with filename) of the .config file, + relative to the package source tree. The default, .config, should + be well suited for all packages that use the standard kconfig + infrastructure as inherited from the Linux kernel; some packages + use a derivative of kconfig that use a different location. + * FOO_KCONFIG_DEPENDENCIES: the list of packages (most probably, + host packages) that need to be built before this package’s + kconfig is interpreted. Seldom used. By default, empty. + * FOO_KCONFIG_SUPPORTS_DEFCONFIG: whether the package’s kconfig + system supports using defconfig files; few packages do not. By + default, YES. + +18.14. Infrastructure for rebar-based packages + +18.14.1. rebar-package tutorial + +First, let’s see how to write a .mk file for a rebar-based package, +with an example : + +01: ################################################################################ +02: # +03: # erlang-foobar +04: # +05: ################################################################################ +06: +07: ERLANG_FOOBAR_VERSION = 1.0 +08: ERLANG_FOOBAR_SOURCE = erlang-foobar-$(ERLANG_FOOBAR_VERSION).tar.xz +09: ERLANG_FOOBAR_SITE = http://www.foosoftware.org/download +10: ERLANG_FOOBAR_DEPENDENCIES = host-libaaa libbbb +11: +12: $(eval $(rebar-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line 12, we invoke the rebar-package macro that generates +all the Makefile rules that actually allows the package to be built. + +18.14.2. rebar-package reference + +The main macro of the rebar package infrastructure is rebar-package. +It is similar to the generic-package macro. The ability to have host +packages is also available, with the host-rebar-package macro. + +Just like the generic infrastructure, the rebar infrastructure works +by defining a number of variables before calling the rebar-package +macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the rebar infrastructure: +ERLANG_FOOBAR_VERSION, ERLANG_FOOBAR_SOURCE, ERLANG_FOOBAR_PATCH, +ERLANG_FOOBAR_SITE, ERLANG_FOOBAR_SUBDIR, ERLANG_FOOBAR_DEPENDENCIES, +ERLANG_FOOBAR_INSTALL_STAGING, ERLANG_FOOBAR_INSTALL_TARGET, +ERLANG_FOOBAR_LICENSE and ERLANG_FOOBAR_LICENSE_FILES. + +A few additional variables, specific to the rebar infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + + * ERLANG_FOOBAR_USE_AUTOCONF, to specify that the package uses + autoconf at the configuration step. When a package sets this + variable to YES, the autotools infrastructure is used. + + Note. You can also use some of the variables from the autotools + infrastructure: ERLANG_FOOBAR_CONF_ENV, ERLANG_FOOBAR_CONF_OPTS, + ERLANG_FOOBAR_AUTORECONF, ERLANG_FOOBAR_AUTORECONF_ENV and + ERLANG_FOOBAR_AUTORECONF_OPTS. + + * ERLANG_FOOBAR_USE_BUNDLED_REBAR, to specify that the package has + a bundled version of rebar and that it shall be used. Valid + values are YES or NO (the default). + + Note. If the package bundles a rebar utility, but can use the + generic one that Buildroot provides, just say NO (i.e., do not + specify this variable). Only set if it is mandatory to use the + rebar utility bundled in this package. + + * ERLANG_FOOBAR_REBAR_ENV, to specify additional environment + variables to pass to the rebar utility. + * ERLANG_FOOBAR_KEEP_DEPENDENCIES, to keep the dependencies + described in the rebar.config file. Valid values are YES or NO + (the default). Unless this variable is set to YES, the rebar + infrastructure removes such dependencies in a post-patch hook to + ensure rebar does not download nor compile them. + +With the rebar infrastructure, all the steps required to build and +install the packages are already defined, and they generally work +well for most rebar-based packages. However, when required, it is +still possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the rebar + infrastructure is used, if the package .mk file defines its own + ERLANG_FOOBAR_BUILD_CMDS variable, it will be used instead of the + default rebar one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. + +18.15. Infrastructure for Waf-based packages + +18.15.1. waf-package tutorial + +First, let’s see how to write a .mk file for a Waf-based package, +with an example : + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_CONF_OPTS = --enable-bar --disable-baz +11: LIBFOO_DEPENDENCIES = bar +12: +13: $(eval $(waf-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot what options to enable for libfoo. + +On line 11, we tell Buildroot the dependencies of libfoo. + +Finally, on line line 13, we invoke the waf-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +18.15.2. waf-package reference + +The main macro of the Waf package infrastructure is waf-package. It +is similar to the generic-package macro. + +Just like the generic infrastructure, the Waf infrastructure works by +defining a number of variables before calling the waf-package macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the Waf infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, LIBFOO_INSTALL_STAGING, +LIBFOO_INSTALL_TARGET. + +An additional variable, specific to the Waf infrastructure, can also +be defined. + + * LIBFOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main wscript file. This is useful, if + for example, the main wscript file is not at the root of the tree + extracted by the tarball. If HOST_LIBFOO_SUBDIR is not specified, + it defaults to LIBFOO_SUBDIR. + * LIBFOO_NEEDS_EXTERNAL_WAF can be set to YES or NO to tell + Buildroot to use the bundled waf executable. If set to NO, the + default, then Buildroot will use the waf executable provided in + the package source tree; if set to YES, then Buildroot will + download, install waf as a host tool and use it to build the + package. + * LIBFOO_WAF_OPTS, to specify additional options to pass to the waf + script at every step of the package build process: configure, + build and installation. By default, empty. + * LIBFOO_CONF_OPTS, to specify additional options to pass to the + waf script for the configuration step. By default, empty. + * LIBFOO_BUILD_OPTS, to specify additional options to pass to the + waf script during the build step. By default, empty. + * LIBFOO_INSTALL_STAGING_OPTS, to specify additional options to + pass to the waf script during the staging installation step. By + default, empty. + * LIBFOO_INSTALL_TARGET_OPTS, to specify additional options to pass + to the waf script during the target installation step. By + default, empty. + +18.16. Infrastructure for Meson-based packages + +18.16.1. meson-package tutorial + +Meson [http://mesonbuild.com] is an open source build system meant to +be both extremely fast, and, even more importantly, as user friendly +as possible. It uses Ninja [https://ninja-build.org] as a companion +tool to perform the actual build operations. + +Let’s see how to write a .mk file for a Meson-based package, with an +example: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-3.0+ +11: FOO_LICENSE_FILES = COPYING +12: FOO_INSTALL_STAGING = YES +13: +14: FOO_DEPENDENCIES = host-pkgconf bar +15: +16: ifeq ($(BR2_PACKAGE_BAZ),y) +17: FOO_CONF_OPTS += -Dbaz=true +18: FOO_DEPENDENCIES += baz +19: else +20: FOO_CONF_OPTS += -Dbaz=false +21: endif +22: +23: $(eval $(meson-package)) + +The Makefile starts with the definition of the standard variables for +package declaration (lines 7 to 11). + +On line line 23, we invoke the meson-package macro that generates all +the Makefile rules that actually allows the package to be built. + +In the example, host-pkgconf and bar are declared as dependencies in +FOO_DEPENDENCIES at line 14 because the Meson build file of foo uses +pkg-config to determine the compilation flags and libraries of +package bar. + +Note that it is not necessary to add host-meson in the +FOO_DEPENDENCIES variable of a package, since this basic dependency +is automatically added as needed by the Meson package infrastructure. + +If the "baz" package is selected, then support for the "baz" feature +in "foo" is activated by adding -Dbaz=true to FOO_CONF_OPTS at line +17, as specified in the meson_options.txt file in "foo" source tree. +The "baz" package is also added to FOO_DEPENDENCIES. Note that the +support for baz is explicitly disabled at line 20, if the package is +not selected. + +To sum it up, to add a new meson-based package, the Makefile example +can be copied verbatim then edited to replace all occurences of FOO +with the uppercase name of the new package and update the values of +the standard variables. + +18.16.2. meson-package reference + +The main macro of the Meson package infrastructure is meson-package. +It is similar to the generic-package macro. The ability to have +target and host packages is also available, with the +host-meson-package macro. + +Just like the generic infrastructure, the Meson infrastructure works +by defining a number of variables before calling the meson-package +macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the Meson infrastructure: +FOO_VERSION, FOO_SOURCE, FOO_PATCH, FOO_SITE, FOO_SUBDIR, +FOO_DEPENDENCIES, FOO_INSTALL_STAGING, FOO_INSTALL_TARGET. + +A few additional variables, specific to the Meson infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + + * FOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main meson.build file. This is useful, + if for example, the main meson.build file is not at the root of + the tree extracted by the tarball. If HOST_FOO_SUBDIR is not + specified, it defaults to FOO_SUBDIR. + * FOO_CONF_ENV, to specify additional environment variables to pass + to meson for the configuration step. By default, empty. + * FOO_CONF_OPTS, to specify additional options to pass to meson for + the configuration step. By default, empty. + * FOO_CFLAGS, to specify compiler arguments added to the package + specific cross-compile.conf file c_args property. By default, the + value of TARGET_CFLAGS. + * FOO_CXXFLAGS, to specify compiler arguments added to the package + specific cross-compile.conf file cpp_args property. By default, + the value of TARGET_CXXFLAGS. + * FOO_LDFLAGS, to specify compiler arguments added to the package + specific cross-compile.conf file c_link_args and cpp_link_args + properties. By default, the value of TARGET_LDFLAGS. + * FOO_MESON_EXTRA_BINARIES, to specify a space-separated list of + programs to add to the [binaries] section of the meson + cross-compilation.conf configuration file. The format is + program-name='/path/to/program', with no space around the = sign, + and with the path of the program between single quotes. By + default, empty. Note that Buildroot already sets the correct + values for c, cpp, ar, strip, and pkgconfig. + * FOO_MESON_EXTRA_PROPERTIES, to specify a space-separated list of + properties to add to the [properties] section of the meson + cross-compilation.conf configuration file. The format is + property-name= with no space around the = sign, and with + single quotes around string values. By default, empty. Note that + Buildroot already sets values for needs_exe_wrapper, c_args, + c_link_args, cpp_args, cpp_link_args, sys_root, and + pkg_config_libdir. + * FOO_NINJA_ENV, to specify additional environment variables to + pass to ninja, meson companion tool in charge of the build + operations. By default, empty. + * FOO_NINJA_OPTS, to specify a space-separated list of targets to + build. By default, empty, to build the default target(s). + +18.17. Infrastructure for Cargo-based packages + +Cargo is the package manager for the Rust programming language. It +allows the user to build programs or libraries written in Rust, but +it also downloads and manages their dependencies, to ensure +repeatable builds. Cargo packages are called "crates". + +18.17.1. cargo-package tutorial + +The Config.in file of Cargo-based package foo should contain: + +01: config BR2_PACKAGE_FOO +02: bool "foo" +03: depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS +04: select BR2_PACKAGE_HOST_RUSTC +05: help +06: This is a comment that explains what foo is. +07: +08: http://foosoftware.org/foo/ + +And the .mk file for this package should contain: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-3.0+ +11: FOO_LICENSE_FILES = COPYING +12: +13: $(eval $(cargo-package)) + +The Makefile starts with the definition of the standard variables for +package declaration (lines 7 to 11). + +As seen in line 13, it is based on the cargo-package infrastructure. +Cargo will be invoked automatically by this infrastructure to build +and install the package. + +It is still possible to define custom build commands or install +commands (i.e. with FOO_BUILD_CMDS and FOO_INSTALL_TARGET_CMDS). +Those will then replace the commands from the cargo infrastructure. + +18.17.2. cargo-package reference + +The main macros for the Cargo package infrastructure are +cargo-package for target packages and host-cargo-package for host +packages. + +Just like the generic infrastructure, the Cargo infrastructure works +by defining a number of variables before calling the cargo-package or +host-cargo-package macros. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the Cargo infrastructure: +FOO_VERSION, FOO_SOURCE, FOO_PATCH, FOO_SITE, FOO_DEPENDENCIES, +FOO_LICENSE, FOO_LICENSE_FILES, etc. + +A few additional variables, specific to the Cargo infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + + * FOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the Cargo.toml file. This is useful, if for + example, it is not at the root of the tree extracted by the + tarball. If HOST_FOO_SUBDIR is not specified, it defaults to + FOO_SUBDIR. + * FOO_CARGO_ENV can be used to pass additional variables in the + environment of cargo invocations. It used at both build and + installation time + * FOO_CARGO_BUILD_OPTS can be used to pass additional options to + cargo at build time. + * FOO_CARGO_INSTALL_OPTS can be used to pass additional options to + cargo at install time. + +A crate can depend on other libraries from crates.io or git +repositories, listed in its Cargo.toml file. Buildroot automatically +takes care of downloading such dependencies as part of the download +step of packages that use the cargo-package infrastructure. Such +dependencies are then kept together with the package source code in +the tarball cached in Buildroot’s DL_DIR, and therefore the hash of +the package’s tarball includes such dependencies. + +This mechanism ensures that any change in the dependencies will be +detected, and allows the build to be performed completely offline. + +18.18. Infrastructure for Go packages + +This infrastructure applies to Go packages that use the standard +build system and use bundled dependencies. + +18.18.1. golang-package tutorial + +First, let’s see how to write a .mk file for a go package, with an +example : + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SITE = $(call github,bar,foo,$(FOO_VERSION)) +09: FOO_LICENSE = BSD-3-Clause +10: FOO_LICENSE_FILES = LICENSE +11: +12: $(eval $(golang-package)) + +On line 7, we declare the version of the package. + +On line 8, we declare the upstream location of the package, here +fetched from Github, since a large number of Go packages are hosted +on Github. + +On line 9 and 10, we give licensing details about the package. + +Finally, on line 12, we invoke the golang-package macro that +generates all the Makefile rules that actually allow the package to +be built. + +18.18.2. golang-package reference + +In their Config.in file, packages using the golang-package +infrastructure should depend on +BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS because Buildroot will +automatically add a dependency on host-go to such packages. If you +need CGO support in your package, you must add a dependency on +BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS. + +The main macro of the Go package infrastructure is golang-package. It +is similar to the generic-package macro. The ability to build host +packages is also available, with the host-golang-package macro. Host +packages built by host-golang-package macro should depend on +BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS. + +Just like the generic infrastructure, the Go infrastructure works by +defining a number of variables before calling the golang-package. + +All the package metadata information variables that exist in the +generic package infrastructure also exist in the Go infrastructure: +FOO_VERSION, FOO_SOURCE, FOO_PATCH, FOO_SITE, FOO_SUBDIR, +FOO_DEPENDENCIES, FOO_LICENSE, FOO_LICENSE_FILES, +FOO_INSTALL_STAGING, etc. + +Note that it is not necessary to add host-go in the FOO_DEPENDENCIES +variable of a package, since this basic dependency is automatically +added as needed by the Go package infrastructure. + +A few additional variables, specific to the Go infrastructure, can +optionally be defined, depending on the package’s needs. Many of them +are only useful in very specific cases, typical packages will +therefore only use a few of them, or none. + + * The package must specify its Go module name in the FOO_GOMOD + variable. If not specified, it defaults to URL-domain/ + 1st-part-of-URL/2nd-part-of-URL, e.g FOO_GOMOD will take the + value github.com/bar/foo for a package that specifies FOO_SITE = + $(call github,bar,foo,$(FOO_VERSION)). The Go package + infrastructure will automatically generate a minimal go.mod file + in the package source tree if it doesn’t exist. + * FOO_LDFLAGS and FOO_TAGS can be used to pass respectively the + LDFLAGS or the TAGS to the go build command. + * FOO_BUILD_TARGETS can be used to pass the list of targets that + should be built. If FOO_BUILD_TARGETS is not specified, it + defaults to .. We then have two cases: + + + FOO_BUILD_TARGETS is .. In this case, we assume only one + binary will be produced, and that by default we name it after + the package name. If that is not appropriate, the name of the + produced binary can be overridden using FOO_BIN_NAME. + + FOO_BUILD_TARGETS is not .. In this case, we iterate over the + values to build each target, and for each produced a binary + that is the non-directory component of the target. For + example if FOO_BUILD_TARGETS = cmd/docker cmd/dockerd the + binaries produced are docker and dockerd. + * FOO_INSTALL_BINS can be used to pass the list of binaries that + should be installed in /usr/bin on the target. If + FOO_INSTALL_BINS is not specified, it defaults to the lower-case + name of package. + +With the Go infrastructure, all the steps required to build and +install the packages are already defined, and they generally work +well for most Go-based packages. However, when required, it is still +possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 18.23, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the Go + infrastructure is used, if the package .mk file defines its own + FOO_BUILD_CMDS variable, it will be used instead of the default + Go one. However, using this method should be restricted to very + specific cases. Do not use it in the general case. + +A Go package can depend on other Go modules, listed in its go.mod +file. Buildroot automatically takes care of downloading such +dependencies as part of the download step of packages that use the +golang-package infrastructure. Such dependencies are then kept +together with the package source code in the tarball cached in +Buildroot’s DL_DIR, and therefore the hash of the package’s tarball +includes such dependencies. + +This mechanism ensures that any change in the dependencies will be +detected, and allows the build to be performed completely offline. + +18.19. Infrastructure for QMake-based packages + +18.19.1. qmake-package tutorial + +First, let’s see how to write a .mk file for a QMake-based package, +with an example : + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_CONF_OPTS = QT_CONFIG+=bar QT_CONFIG-=baz +11: LIBFOO_DEPENDENCIES = bar +12: +13: $(eval $(qmake-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot what options to enable for libfoo. + +On line 11, we tell Buildroot the dependencies of libfoo. + +Finally, on line line 13, we invoke the qmake-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +18.19.2. qmake-package reference + +The main macro of the QMake package infrastructure is qmake-package. +It is similar to the generic-package macro. + +Just like the generic infrastructure, the QMake infrastructure works +by defining a number of variables before calling the qmake-package +macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the QMake infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, LIBFOO_INSTALL_STAGING, +LIBFOO_INSTALL_TARGET. + +An additional variable, specific to the QMake infrastructure, can +also be defined. + + * LIBFOO_CONF_ENV, to specify additional environment variables to + pass to the qmake script for the configuration step. By default, + empty. + * LIBFOO_CONF_OPTS, to specify additional options to pass to the + qmake script for the configuration step. By default, empty. + * LIBFOO_MAKE_ENV, to specify additional environment variables to + the make command during the build and install steps. By default, + empty. + * LIBFOO_MAKE_OPTS, to specify additional targets to pass to the + make command during the build step. By default, empty. + * LIBFOO_INSTALL_STAGING_OPTS, to specify additional targets to + pass to the make command during the staging installation step. By + default, install. + * LIBFOO_INSTALL_TARGET_OPTS, to specify additional targets to pass + to the make command during the target installation step. By + default, install. + * LIBFOO_SYNC_QT_HEADERS, to run syncqt.pl before qmake. Some + packages need this to have a properly populated include directory + before running the build. + +18.20. Infrastructure for packages building kernel modules + +Buildroot offers a helper infrastructure to make it easy to write +packages that build and install Linux kernel modules. Some packages +only contain a kernel module, other packages contain programs and +libraries in addition to kernel modules. Buildroot’s helper +infrastructure supports either case. + +18.20.1. kernel-module tutorial + +Let’s start with an example on how to prepare a simple package that +only builds a kernel module, and no other component: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.2.3 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-2.0 +11: FOO_LICENSE_FILES = COPYING +12: +13: $(eval $(kernel-module)) +14: $(eval $(generic-package)) + +Lines 7-11 define the usual meta-data to specify the version, archive +name, remote URI where to find the package source, licensing +information. + +On line 13, we invoke the kernel-module helper infrastructure, that +generates all the appropriate Makefile rules and variables to build +that kernel module. + +Finally, on line 14, we invoke the generic-package infrastructure. + +The dependency on linux is automatically added, so it is not needed +to specify it in FOO_DEPENDENCIES. + +What you may have noticed is that, unlike other package +infrastructures, we explicitly invoke a second infrastructure. This +allows a package to build a kernel module, but also, if needed, use +any one of other package infrastructures to build normal userland +components (libraries, executables…). Using the kernel-module +infrastructure on its own is not sufficient; another package +infrastructure must be used. + +Let’s look at a more complex example: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.2.3 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-2.0 +11: FOO_LICENSE_FILES = COPYING +12: +13: FOO_MODULE_SUBDIRS = driver/base +14: FOO_MODULE_MAKE_OPTS = KVERSION=$(LINUX_VERSION_PROBED) +15: +16: ifeq ($(BR2_PACKAGE_LIBBAR),y) +17: FOO_DEPENDENCIES += libbar +18: FOO_CONF_OPTS += --enable-bar +19: FOO_MODULE_SUBDIRS += driver/bar +20: else +21: FOO_CONF_OPTS += --disable-bar +22: endif +23: +24: $(eval $(kernel-module)) +26: $(eval $(autotools-package)) + +Here, we see that we have an autotools-based package, that also +builds the kernel module located in sub-directory driver/base and, if +libbar is enabled, the kernel module located in sub-directory driver/ +bar, and defines the variable KVERSION to be passed to the Linux +buildsystem when building the module(s). + +18.20.2. kernel-module reference + +The main macro for the kernel module infrastructure is kernel-module. +Unlike other package infrastructures, it is not stand-alone, and +requires any of the other *-package macros be called after it. + +The kernel-module macro defines post-build and post-target-install +hooks to build the kernel modules. If the package’s .mk needs access +to the built kernel modules, it should do so in a post-build hook, +registered after the call to kernel-module. Similarly, if the +package’s .mk needs access to the kernel module after it has been +installed, it should do so in a post-install hook, registered after +the call to kernel-module. Here’s an example: + +$(eval $(kernel-module)) + +define FOO_DO_STUFF_WITH_KERNEL_MODULE + # Do something with it... +endef +FOO_POST_BUILD_HOOKS += FOO_DO_STUFF_WITH_KERNEL_MODULE + +$(eval $(generic-package)) + +Finally, unlike the other package infrastructures, there is no +host-kernel-module variant to build a host kernel module. + +The following additional variables can optionally be defined to +further configure the build of the kernel module: + + * FOO_MODULE_SUBDIRS may be set to one or more sub-directories + (relative to the package source top-directory) where the kernel + module sources are. If empty or not set, the sources for the + kernel module(s) are considered to be located at the top of the + package source tree. + * FOO_MODULE_MAKE_OPTS may be set to contain extra variable + definitions to pass to the Linux buildsystem. + +You may also reference (but you may not set!) those variables: + + * LINUX_DIR contains the path to where the Linux kernel has been + extracted and built. + * LINUX_VERSION contains the version string as configured by the + user. + * LINUX_VERSION_PROBED contains the real version string of the + kernel, retrieved with running make -C $(LINUX_DIR) kernelrelease + * KERNEL_ARCH contains the name of the current architecture, like + arm, mips… + +18.21. Infrastructure for asciidoc documents + +The Buildroot manual, which you are currently reading, is entirely +written using the AsciiDoc [http://asciidoc.org/] mark-up syntax. The +manual is then rendered to many formats: + + * html + * split-html + * pdf + * epub + * text + +Although Buildroot only contains one document written in AsciiDoc, +there is, as for packages, an infrastructure for rendering documents +using the AsciiDoc syntax. + +Also as for packages, the AsciiDoc infrastructure is available from a +br2-external tree. This allows documentation for a br2-external tree +to match the Buildroot documentation, as it will be rendered to the +same formats and use the same layout and theme. + +18.21.1. asciidoc-document tutorial + +Whereas package infrastructures are suffixed with -package, the +document infrastructures are suffixed with -document. So, the +AsciiDoc infrastructure is named asciidoc-document. + +Here is an example to render a simple AsciiDoc document. + +01: ################################################################################ +02: # +03: # foo-document +04: # +05: ################################################################################ +06: +07: FOO_SOURCES = $(sort $(wildcard $(FOO_DOCDIR)/*)) +08: $(eval $(call asciidoc-document)) + +On line 7, the Makefile declares what the sources of the document +are. Currently, it is expected that the document’s sources are only +local; Buildroot will not attempt to download anything to render a +document. Thus, you must indicate where the sources are. Usually, the +string above is sufficient for a document with no sub-directory +structure. + +On line 8, we call the asciidoc-document function, which generates +all the Makefile code necessary to render the document. + +18.21.2. asciidoc-document reference + +The list of variables that can be set in a .mk file to give metadata +information is (assuming the document name is foo) : + + * FOO_SOURCES, mandatory, defines the source files for the + document. + * FOO_RESOURCES, optional, may contain a space-separated list of + paths to one or more directories containing so-called resources + (like CSS or images). By default, empty. + * FOO_DEPENDENCIES, optional, the list of packages (most probably, + host-packages) that must be built before building this document. + * FOO_TOC_DEPTH, FOO_TOC_DEPTH_, optionals, the depth of the + table of content for this document, which can be overridden for + the specified format (see the list of rendered formats, + above, but in uppercase, and with dash replaced by underscore; + see example, below). By default: 1. + +There are also additional hooks (see Section 18.23, “Hooks available +in the various build steps” for general information on hooks), that a +document may set to define extra actions to be done at various steps: + + * FOO_POST_RSYNC_HOOKS to run additional commands after the sources + have been copied by Buildroot. This can for example be used to + generate part of the manual with information extracted from the + tree. As an example, Buildroot uses this hook to generate the + tables in the appendices. + * FOO_CHECK_DEPENDENCIES_HOOKS to run additional tests on required + components to generate the document. In AsciiDoc, it is possible + to call filters, that is, programs that will parse an AsciiDoc + block and render it appropriately (e.g. ditaa [http:// + ditaa.sourceforge.net/] or aafigure [https://pythonhosted.org/ + aafigure/]). + * FOO_CHECK_DEPENDENCIES__HOOKS, to run additional tests for + the specified format (see the list of rendered formats, + above). + +Buildroot sets the following variable that can be used in the +definitions above: + + * $(FOO_DOCDIR), similar to $(FOO_PKGDIR), contains the path to the + directory containing foo.mk. It can be used to refer to the + document sources, and can be used in the hooks, especially the + post-rsync hook if parts of the documentation needs to be + generated. + * $(@D), as for traditional packages, contains the path to the + directory where the document will be copied and built. + +Here is a complete example that uses all variables and all hooks: + +01: ################################################################################ +02: # +03: # foo-document +04: # +05: ################################################################################ +06: +07: FOO_SOURCES = $(sort $(wildcard $(FOO_DOCDIR)/*)) +08: FOO_RESOURCES = $(sort $(wildcard $(FOO_DOCDIR)/ressources)) +09: +10: FOO_TOC_DEPTH = 2 +11: FOO_TOC_DEPTH_HTML = 1 +12: FOO_TOC_DEPTH_SPLIT_HTML = 3 +13: +14: define FOO_GEN_EXTRA_DOC +15: /path/to/generate-script --outdir=$(@D) +16: endef +17: FOO_POST_RSYNC_HOOKS += FOO_GEN_EXTRA_DOC +18: +19: define FOO_CHECK_MY_PROG +20: if ! which my-prog >/dev/null 2>&1; then \ +21: echo "You need my-prog to generate the foo document"; \ +22: exit 1; \ +23: fi +24: endef +25: FOO_CHECK_DEPENDENCIES_HOOKS += FOO_CHECK_MY_PROG +26: +27: define FOO_CHECK_MY_OTHER_PROG +28: if ! which my-other-prog >/dev/null 2>&1; then \ +29: echo "You need my-other-prog to generate the foo document as PDF"; \ +30: exit 1; \ +31: fi +32: endef +33: FOO_CHECK_DEPENDENCIES_PDF_HOOKS += FOO_CHECK_MY_OTHER_PROG +34: +35: $(eval $(call asciidoc-document)) + +18.22. Infrastructure specific to the Linux kernel package + +The Linux kernel package can use some specific infrastructures based +on package hooks for building Linux kernel tools or/and building +Linux kernel extensions. + +18.22.1. linux-kernel-tools + +Buildroot offers a helper infrastructure to build some userspace +tools for the target available within the Linux kernel sources. Since +their source code is part of the kernel source code, a special +package, linux-tools, exists and re-uses the sources of the Linux +kernel that runs on the target. + +Let’s look at an example of a Linux tool. For a new Linux tool named +foo, create a new menu entry in the existing package/linux-tools/ +Config.in. This file will contain the option descriptions related to +each kernel tool that will be used and displayed in the configuration +tool. It would basically look like: + +01: config BR2_PACKAGE_LINUX_TOOLS_FOO +02: bool "foo" +03: select BR2_PACKAGE_LINUX_TOOLS +04: help +05: This is a comment that explains what foo kernel tool is. +06: +07: http://foosoftware.org/foo/ + +The name of the option starts with the prefix +BR2_PACKAGE_LINUX_TOOLS_, followed by the uppercase name of the tool +(like is done for packages). + +Note. Unlike other packages, the linux-tools package options appear +in the linux kernel menu, under the Linux Kernel Tools sub-menu, not +under the Target packages main menu. + +Then for each linux tool, add a new .mk.in file named package/ +linux-tools/linux-tool-foo.mk.in. It would basically look like: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: LINUX_TOOLS += foo +08: +09: FOO_DEPENDENCIES = libbbb +10: +11: define FOO_BUILD_CMDS +12: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools foo +13: endef +14: +15: define FOO_INSTALL_STAGING_CMDS +16: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ +17: DESTDIR=$(STAGING_DIR) \ +18: foo_install +19: endef +20: +21: define FOO_INSTALL_TARGET_CMDS +22: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ +23: DESTDIR=$(TARGET_DIR) \ +24: foo_install +25: endef + +On line 7, we register the Linux tool foo to the list of available +Linux tools. + +On line 9, we specify the list of dependencies this tool relies on. +These dependencies are added to the Linux package dependencies list +only when the foo tool is selected. + +The rest of the Makefile, lines 11-25 defines what should be done at +the different steps of the Linux tool build process like for a +generic package. They will actually be used only when the foo tool is +selected. The only supported commands are _BUILD_CMDS, +_INSTALL_STAGING_CMDS and _INSTALL_TARGET_CMDS. + +Note. One must not call $(eval $(generic-package)) or any other +package infrastructure! Linux tools are not packages by themselves, +they are part of the linux-tools package. + +18.22.2. linux-kernel-extensions + +Some packages provide new features that require the Linux kernel tree +to be modified. This can be in the form of patches to be applied on +the kernel tree, or in the form of new files to be added to the tree. +The Buildroot’s Linux kernel extensions infrastructure provides a +simple solution to automatically do this, just after the kernel +sources are extracted and before the kernel patches are applied. +Examples of extensions packaged using this mechanism are the +real-time extensions Xenomai and RTAI, as well as the set of +out-of-tree LCD screens drivers fbtft. + +Let’s look at an example on how to add a new Linux extension foo. + +First, create the package foo that provides the extension: this +package is a standard package; see the previous chapters on how to +create such a package. This package is in charge of downloading the +sources archive, checking the hash, defining the licence informations +and building user space tools if any. + +Then create the Linux extension proper: create a new menu entry in +the existing linux/Config.ext.in. This file contains the option +descriptions related to each kernel extension that will be used and +displayed in the configuration tool. It would basically look like: + +01: config BR2_LINUX_KERNEL_EXT_FOO +02: bool "foo" +03: help +04: This is a comment that explains what foo kernel extension is. +05: +06: http://foosoftware.org/foo/ + +Then for each linux extension, add a new .mk file named linux/ +linux-ext-foo.mk. It should basically contain: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: LINUX_EXTENSIONS += foo +08: +09: define FOO_PREPARE_KERNEL +10: $(FOO_DIR)/prepare-kernel-tree.sh --linux-dir=$(@D) +11: endef + +On line 7, we add the Linux extension foo to the list of available +Linux extensions. + +On line 9-11, we define what should be done by the extension to +modify the Linux kernel tree; this is specific to the linux extension +and can use the variables defined by the foo package, like: $ +(FOO_DIR) or $(FOO_VERSION)… as well as all the Linux variables, +like: $(LINUX_VERSION) or $(LINUX_VERSION_PROBED), $(KERNEL_ARCH)… +See the definition of those kernel variables. + +18.23. Hooks available in the various build steps + +The generic infrastructure (and as a result also the derived +autotools and cmake infrastructures) allow packages to specify hooks. +These define further actions to perform after existing steps. Most +hooks aren’t really useful for generic packages, since the .mk file +already has full control over the actions performed in each step of +the package construction. + +The following hook points are available: + + * LIBFOO_PRE_DOWNLOAD_HOOKS + * LIBFOO_POST_DOWNLOAD_HOOKS + * LIBFOO_PRE_EXTRACT_HOOKS + * LIBFOO_POST_EXTRACT_HOOKS + * LIBFOO_PRE_RSYNC_HOOKS + * LIBFOO_POST_RSYNC_HOOKS + * LIBFOO_PRE_PATCH_HOOKS + * LIBFOO_POST_PATCH_HOOKS + * LIBFOO_PRE_CONFIGURE_HOOKS + * LIBFOO_POST_CONFIGURE_HOOKS + * LIBFOO_PRE_BUILD_HOOKS + * LIBFOO_POST_BUILD_HOOKS + * LIBFOO_PRE_INSTALL_HOOKS (for host packages only) + * LIBFOO_POST_INSTALL_HOOKS (for host packages only) + * LIBFOO_PRE_INSTALL_STAGING_HOOKS (for target packages only) + * LIBFOO_POST_INSTALL_STAGING_HOOKS (for target packages only) + * LIBFOO_PRE_INSTALL_TARGET_HOOKS (for target packages only) + * LIBFOO_POST_INSTALL_TARGET_HOOKS (for target packages only) + * LIBFOO_PRE_INSTALL_IMAGES_HOOKS + * LIBFOO_POST_INSTALL_IMAGES_HOOKS + * LIBFOO_PRE_LEGAL_INFO_HOOKS + * LIBFOO_POST_LEGAL_INFO_HOOKS + * LIBFOO_TARGET_FINALIZE_HOOKS + +These variables are lists of variable names containing actions to be +performed at this hook point. This allows several hooks to be +registered at a given hook point. Here is an example: + +define LIBFOO_POST_PATCH_FIXUP + action1 + action2 +endef + +LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP + +18.23.1. Using the POST_RSYNC hook + +The POST_RSYNC hook is run only for packages that use a local source, +either through the local site method or the OVERRIDE_SRCDIR +mechanism. In this case, package sources are copied using rsync from +the local location into the buildroot build directory. The rsync +command does not copy all files from the source directory, though. +Files belonging to a version control system, like the directories +.git, .hg, etc. are not copied. For most packages this is sufficient, +but a given package can perform additional actions using the +POST_RSYNC hook. + +In principle, the hook can contain any command you want. One specific +use case, though, is the intentional copying of the version control +directory using rsync. The rsync command you use in the hook can, +among others, use the following variables: + + * $(SRCDIR): the path to the overridden source directory + * $(@D): the path to the build directory + +18.23.2. Target-finalize hook + +Packages may also register hooks in LIBFOO_TARGET_FINALIZE_HOOKS. +These hooks are run after all packages are built, but before the +filesystem images are generated. They are seldom used, and your +package probably do not need them. + +18.24. Gettext integration and interaction with packages + +Many packages that support internationalization use the gettext +library. Dependencies for this library are fairly complicated and +therefore, deserve some explanation. + +The glibc C library integrates a full-blown implementation of gettext +, supporting translation. Native Language Support is therefore +built-in in glibc. + +On the other hand, the uClibc and musl C libraries only provide a +stub implementation of the gettext functionality, which allows to +compile libraries and programs using gettext functions, but without +providing the translation capabilities of a full-blown gettext +implementation. With such C libraries, if real Native Language +Support is necessary, it can be provided by the libintl library of +the gettext package. + +Due to this, and in order to make sure that Native Language Support +is properly handled, packages in Buildroot that can use NLS support +should: + + 1. Ensure NLS support is enabled when BR2_SYSTEM_ENABLE_NLS=y. This + is done automatically for autotools packages and therefore should + only be done for packages using other package infrastructures. + 2. Add $(TARGET_NLS_DEPENDENCIES) to the package _DEPENDENCIES + variable. This addition should be done unconditionally: the value + of this variable is automatically adjusted by the core + infrastructure to contain the relevant list of packages. If NLS + support is disabled, this variable is empty. If NLS support is + enabled, this variable contains host-gettext so that tools needed + to compile translation files are available on the host. In + addition, if uClibc or musl are used, this variable also contains + gettext in order to get the full-blown gettext implementation. + 3. If needed, add $(TARGET_NLS_LIBS) to the linker flags, so that + the package gets linked with libintl. This is generally not + needed with autotools packages as they usually detect + automatically that they should link with libintl. However, + packages using other build systems, or problematic + autotools-based packages may need this. $(TARGET_NLS_LIBS) should + be added unconditionally to the linker flags, as the core + automatically makes it empty or defined to -lintl depending on + the configuration. + +No changes should be made to the Config.in file to support NLS. + +Finally, certain packages need some gettext utilities on the target, +such as the gettext program itself, which allows to retrieve +translated strings, from the command line. In such a case, the +package should: + + * use select BR2_PACKAGE_GETTEXT in their Config.in file, + indicating in a comment above that it’s a runtime dependency + only. + * not add any gettext dependency in the DEPENDENCIES variable of + their .mk file. + +18.25. Tips and tricks + +18.25.1. Package name, config entry name and makefile variable +relationship + +In Buildroot, there is some relationship between: + + * the package name, which is the package directory name (and the + name of the *.mk file); + * the config entry name that is declared in the Config.in file; + * the makefile variable prefix. + +It is mandatory to maintain consistency between these elements, using +the following rules: + + * the package directory and the *.mk name are the package name + itself (e.g.: package/foo-bar_boo/foo-bar_boo.mk); + * the make target name is the package name itself (e.g.: + foo-bar_boo); + * the config entry is the upper case package name with . and - + characters substituted with _, prefixed with BR2_PACKAGE_ (e.g.: + BR2_PACKAGE_FOO_BAR_BOO); + * the *.mk file variable prefix is the upper case package name with + . and - characters substituted with _ (e.g.: + FOO_BAR_BOO_VERSION). + +18.25.2. How to check the coding style + +Buildroot provides a script in utils/check-package that checks new or +changed files for coding style. It is not a complete language +validator, but it catches many common mistakes. It is meant to run in +the actual files you created or modified, before creating the patch +for submission. + +This script can be used for packages, filesystem makefiles, Config.in +files, etc. It does not check the files defining the package +infrastructures and some other files containing similar common code. + +To use it, run the check-package script, by telling which files you +created or changed: + +$ ./utils/check-package package/new-package/* + +If you have the utils directory in your path you can also run: + +$ cd package/new-package/ +$ check-package * + +The tool can also be used for packages in a br2-external: + +$ check-package -b /path/to/br2-ext-tree/package/my-package/* + +18.25.3. How to test your package + +Once you have added your new package, it is important that you test +it under various conditions: does it build for all architectures? +Does it build with the different C libraries? Does it need threads, +NPTL? And so on… + +Buildroot runs autobuilders [http://autobuild.buildroot.org/] which +continuously test random configurations. However, these only build +the master branch of the git tree, and your new fancy package is not +yet there. + +Buildroot provides a script in utils/test-pkg that uses the same base +configurations as used by the autobuilders so you can test your +package in the same conditions. + +First, create a config snippet that contains all the necessary +options needed to enable your package, but without any architecture +or toolchain option. For example, let’s create a config snippet that +just enables libcurl, without any TLS backend: + +$ cat libcurl.config +BR2_PACKAGE_LIBCURL=y + +If your package needs more configuration options, you can add them to +the config snippet. For example, here’s how you would test libcurl +with openssl as a TLS backend and the curl program: + +$ cat libcurl.config +BR2_PACKAGE_LIBCURL=y +BR2_PACKAGE_LIBCURL_CURL=y +BR2_PACKAGE_OPENSSL=y + +Then run the test-pkg script, by telling it what config snippet to +use and what package to test: + +$ ./utils/test-pkg -c libcurl.config -p libcurl + +By default, test-pkg will build your package against a subset of the +toolchains used by the autobuilders, which has been selected by the +Buildroot developers as being the most useful and representative +subset. If you want to test all toolchains, pass the -a option. Note +that in any case, internal toolchains are excluded as they take too +long to build. + +The output lists all toolchains that are tested and the corresponding +result (excerpt, results are fake): + +$ ./utils/test-pkg -c libcurl.config -p libcurl + armv5-ctng-linux-gnueabi [ 1/11]: OK + armv7-ctng-linux-gnueabihf [ 2/11]: OK + br-aarch64-glibc [ 3/11]: SKIPPED + br-arcle-hs38 [ 4/11]: SKIPPED + br-arm-basic [ 5/11]: FAILED + br-arm-cortex-a9-glibc [ 6/11]: OK + br-arm-cortex-a9-musl [ 7/11]: FAILED + br-arm-cortex-m4-full [ 8/11]: OK + br-arm-full [ 9/11]: OK + br-arm-full-nothread [10/11]: FAILED + br-arm-full-static [11/11]: OK +11 builds, 2 skipped, 2 build failed, 1 legal-info failed + +The results mean: + + * OK: the build was successful. + * SKIPPED: one or more configuration options listed in the config + snippet were not present in the final configuration. This is due + to options having dependencies not satisfied by the toolchain, + such as for example a package that depends on BR2_USE_MMU with a + noMMU toolchain. The missing options are reported in + missing.config in the output build directory (~/br-test-pkg/ + TOOLCHAIN_NAME/ by default). + * FAILED: the build failed. Inspect the logfile file in the output + build directory to see what went wrong: + + + the actual build failed, + + the legal-info failed, + + one of the preliminary steps (downloading the config file, + applying the configuration, running dirclean for the package) + failed. + +When there are failures, you can just re-run the script with the same +options (after you fixed your package); the script will attempt to +re-build the package specified with -p for all toolchains, without +the need to re-build all the dependencies of that package. + +The test-pkg script accepts a few options, for which you can get some +help by running: + +$ ./utils/test-pkg -h + +18.25.4. How to add a package from GitHub + +Packages on GitHub often don’t have a download area with release +tarballs. However, it is possible to download tarballs directly from +the repository on GitHub. As GitHub is known to have changed download +mechanisms in the past, the github helper function should be used as +shown below. + +# Use a tag or a full commit ID +FOO_VERSION = 1.0 +FOO_SITE = $(call github,,,v$(FOO_VERSION)) + +Notes + + * The FOO_VERSION can either be a tag or a commit ID. + * The tarball name generated by github matches the default one from + Buildroot (e.g.: + foo-f6fb6654af62045239caed5950bc6c7971965e60.tar.gz), so it is + not necessary to specify it in the .mk file. + * When using a commit ID as version, you should use the full 40 hex + characters. + * When the tag contains a prefix such as v in v1.0, then the + VERSION variable should contain just 1.0, and the v should be + added directly in the SITE variable, as illustrated above. This + ensures that the VERSION variable value can be used to match + against release-monitoring.org [http://www.release-monitoring.org + /] results. + +If the package you wish to add does have a release section on GitHub, +the maintainer may have uploaded a release tarball, or the release +may just point to the automatically generated tarball from the git +tag. If there is a release tarball uploaded by the maintainer, we +prefer to use that since it may be slightly different (e.g. it +contains a configure script so we don’t need to do AUTORECONF). + +You can see on the release page if it’s an uploaded tarball or a git +tag: + + * If it looks like the image above then it was uploaded by the + maintainer and you should use that link (in that example: + mongrel2-v1.9.2.tar.bz2) to specify FOO_SITE, and not use the + github helper. + * On the other hand, if there’s is only the "Source code" link, + then it’s an automatically generated tarball and you should use + the github helper function. + +18.25.5. How to add a package from Gitlab + +In a similar way to the github macro described in Section 18.25.4, +“How to add a package from GitHub”, Buildroot also provides the +gitlab macro to download from Gitlab repositories. It can be used to +download auto-generated tarballs produced by Gitlab, either for +specific tags or commits: + +# Use a tag or a full commit ID +FOO_VERSION = 1.0 +FOO_SITE = $(call gitlab,,,v$(FOO_VERSION)) + +By default, it will use a .tar.gz tarball, but Gitlab also provides +.tar.bz2 tarballs, so by adding a _SOURCE variable, this +.tar.bz2 tarball can be used: + +# Use a tag or a full commit ID +FOO_VERSION = 1.0 +FOO_SITE = $(call gitlab,,,v$(FOO_VERSION)) +FOO_SOURCE = foo-$(FOO_VERSION).tar.bz2 + +If there is a specific tarball uploaded by the upstream developers in +https://gitlab.com//releases/, do not use this macro, but +rather use directly the link to the tarball. + +18.26. Conclusion + +As you can see, adding a software package to Buildroot is simply a +matter of writing a Makefile using an existing example and modifying +it according to the compilation process required by the package. + +If you package software that might be useful for other people, don’t +forget to send a patch to the Buildroot mailing list (see +Section 22.5, “Submitting patches”)! + +Chapter 19. Patching a package + +While integrating a new package or updating an existing one, it may +be necessary to patch the source of the software to get it +cross-built within Buildroot. + +Buildroot offers an infrastructure to automatically handle this +during the builds. It supports three ways of applying patch sets: +downloaded patches, patches supplied within buildroot and patches +located in a user-defined global patch directory. + +19.1. Providing patches + +19.1.1. Downloaded + +If it is necessary to apply a patch that is available for download, +then add it to the _PATCH variable. If an entry contains +://, then Buildroot will assume it is a full URL and download the +patch from this location. Otherwise, Buildroot will assume that the +patch should be downloaded from _SITE. It can be a +single patch, or a tarball containing a patch series. + +Like for all downloads, a hash should be added to the +.hash file. + +This method is typically used for packages from Debian. + +19.1.2. Within Buildroot + +Most patches are provided within Buildroot, in the package directory; +these typically aim to fix cross-compilation, libc support, or other +such issues. + +These patch files should be named -.patch. + +Notes + + * The patch files coming with Buildroot should not contain any + package version reference in their filename. + * The field in the patch file name refers to the apply + order, and shall start at 1; It is preferred to pad the number + with zeros up to 4 digits, like git-format-patch does. E.g.: + 0001-foobar-the-buz.patch + * The patch email subject prefix shall not be numbered. Patches + shall be generated with the git format-patch -N command, since + this numbering is automatically added for series. For example, + the patch subject line should look like Subject: [PATCH] foobar + the buz rather than Subject: [PATCH n/m] foobar the buz. + * Previously, it was mandatory for patches to be prefixed with the + name of the package, like --.patch, + but that is no longer the case. Existing packages will be fixed + as time passes. Do not prefix patches with the package name. + * Previously, a series file, as used by quilt, could also be added + in the package directory. In that case, the series file defines + the patch application order. This is deprecated, and will be + removed in the future. Do not use a series file. + +19.1.3. Global patch directory + +The BR2_GLOBAL_PATCH_DIR configuration file option can be used to +specify a space separated list of one or more directories containing +global package patches. See Section 9.8, “Adding project-specific +patches” for details. + +19.2. How patches are applied + + 1. Run the _PRE_PATCH_HOOKS commands if defined; + 2. Cleanup the build directory, removing any existing *.rej files; + 3. If _PATCH is defined, then patches from these + tarballs are applied; + 4. If there are some *.patch files in the package’s Buildroot + directory or in a package subdirectory named , + then: + + + If a series file exists in the package directory, then + patches are applied according to the series file; + + Otherwise, patch files matching *.patch are applied in + alphabetical order. So, to ensure they are applied in the + right order, it is highly recommended to name the patch files + like this: -.patch, where + refers to the apply order. + 5. If BR2_GLOBAL_PATCH_DIR is defined, the directories will be + enumerated in the order they are specified. The patches are + applied as described in the previous step. + 6. Run the _POST_PATCH_HOOKS commands if defined. + +If something goes wrong in the steps 3 or 4, then the build fails. + +19.3. Format and licensing of the package patches + +Patches are released under the same license as the software they +apply to (see Section 13.2, “Complying with the Buildroot license”). + +A message explaining what the patch does, and why it is needed, +should be added in the header commentary of the patch. + +You should add a Signed-off-by statement in the header of the each +patch to help with keeping track of the changes and to certify that +the patch is released under the same license as the software that is +modified. + +If the software is under version control, it is recommended to use +the upstream SCM software to generate the patch set. + +Otherwise, concatenate the header with the output of the diff -purN +package-version.orig/ package-version/ command. + +If you update an existing patch (e.g. when bumping the package +version), make sure the existing From header and Signed-off-by tags +are not removed, but do update the rest of the patch comment when +appropriate. + +At the end, the patch should look like: + +configure.ac: add C++ support test + +Signed-off-by: John Doe + +--- configure.ac.orig ++++ configure.ac +@@ -40,2 +40,12 @@ + +AC_PROG_MAKE_SET ++ ++AC_CACHE_CHECK([whether the C++ compiler works], ++ [rw_cv_prog_cxx_works], ++ [AC_LANG_PUSH([C++]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], ++ [rw_cv_prog_cxx_works=yes], ++ [rw_cv_prog_cxx_works=no]) ++ AC_LANG_POP([C++])]) ++ ++AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"]) + +19.4. Additional patch documentation + +Ideally, all patches should document an upstream patch or patch +submission, when applicable, via the Upstream trailer. + +When backporting an upstream patch that has been accepted into +mainline, it is preferred that the URL to the commit is referenced: + +Upstream: + +If a new issue is identified in Buildroot and upstream is generally +affected by the issue (it’s not a Buildroot specific issue), users +should submit the patch upstream and provide a link to that +submission when possible: + +Upstream: + +Patches that have been submitted but were denied upstream should note +that and include comments about why the patch is being used despite +the upstream status. + +Note: in any of the above scenarios, it is also sensible to add a few +words about any changes to the patch that may have been necessary. + +If a patch does not apply upstream then this should be noted with a +comment: + +Upstream: N/A + +Adding this documentation helps streamline the patch review process +during package version updates. + +Chapter 20. Download infrastructure + +TODO + +Chapter 21. Debugging Buildroot + +It is possible to instrument the steps Buildroot does when building +packages. Define the variable BR2_INSTRUMENTATION_SCRIPTS to contain +the path of one or more scripts (or other executables), in a +space-separated list, you want called before and after each step. The +scripts are called in sequence, with three parameters: + + * start or end to denote the start (resp. the end) of a step; + * the name of the step about to be started, or which just ended; + * the name of the package. + +For example : + +make BR2_INSTRUMENTATION_SCRIPTS="/path/to/my/script1 /path/to/my/script2" + +The list of steps is: + + * extract + * patch + * configure + * build + * install-host, when a host-package is installed in $(HOST_DIR) + * install-target, when a target-package is installed in $ + (TARGET_DIR) + * install-staging, when a target-package is installed in $ + (STAGING_DIR) + * install-image, when a target-package installs files in $ + (BINARIES_DIR) + +The script has access to the following variables: + + * BR2_CONFIG: the path to the Buildroot .config file + * HOST_DIR, STAGING_DIR, TARGET_DIR: see Section 18.6.2, + “generic-package reference” + * BUILD_DIR: the directory where packages are extracted and built + * BINARIES_DIR: the place where all binary files (aka images) are + stored + * BASE_DIR: the base output directory + +Chapter 22. Contributing to Buildroot + +There are many ways in which you can contribute to Buildroot: +analyzing and fixing bugs, analyzing and fixing package build +failures detected by the autobuilders, testing and reviewing patches +sent by other developers, working on the items in our TODO list and +sending your own improvements to Buildroot or its manual. The +following sections give a little more detail on each of these items. + +If you are interested in contributing to Buildroot, the first thing +you should do is to subscribe to the Buildroot mailing list. This +list is the main way of interacting with other Buildroot developers +and to send contributions to. If you aren’t subscribed yet, then +refer to Chapter 5, Community resources for the subscription link. + +If you are going to touch the code, it is highly recommended to use a +git repository of Buildroot, rather than starting from an extracted +source code tarball. Git is the easiest way to develop from and +directly send your patches to the mailing list. Refer to Chapter 3, +Getting Buildroot for more information on obtaining a Buildroot git +tree. + +22.1. Reproducing, analyzing and fixing bugs + +A first way of contributing is to have a look at the open bug reports +in the Buildroot bug tracker [https://bugs.buildroot.org/buglist.cgi? +product=buildroot]. As we strive to keep the bug count as small as +possible, all help in reproducing, analyzing and fixing reported bugs +is more than welcome. Don’t hesitate to add a comment to bug reports +reporting your findings, even if you don’t yet see the full picture. + +22.2. Analyzing and fixing autobuild failures + +The Buildroot autobuilders are a set of build machines that +continuously run Buildroot builds based on random configurations. +This is done for all architectures supported by Buildroot, with +various toolchains, and with a random selection of packages. With the +large commit activity on Buildroot, these autobuilders are a great +help in detecting problems very early after commit. + +All build results are available at http://autobuild.buildroot.org, +statistics are at http://autobuild.buildroot.org/stats.php. Every +day, an overview of all failed packages is sent to the mailing list. + +Detecting problems is great, but obviously these problems have to be +fixed as well. Your contribution is very welcome here! There are +basically two things that can be done: + + * Analyzing the problems. The daily summary mails do not contain + details about the actual failures: in order to see what’s going + on you have to open the build log and check the last output. + Having someone doing this for all packages in the mail is very + useful for other developers, as they can make a quick initial + analysis based on this output alone. + * Fixing a problem. When fixing autobuild failures, you should + follow these steps: + + 1. Check if you can reproduce the problem by building with the + same configuration. You can do this manually, or use the + br-reproduce-build [http://git.buildroot.org/buildroot-test/ + tree/utils/br-reproduce-build] script that will automatically + clone a Buildroot git repository, checkout the correct + revision, download and set the right configuration, and start + the build. + 2. Analyze the problem and create a fix. + 3. Verify that the problem is really fixed by starting from a + clean Buildroot tree and only applying your fix. + 4. Send the fix to the Buildroot mailing list (see Section 22.5, + “Submitting patches”). In case you created a patch against + the package sources, you should also send the patch upstream + so that the problem will be fixed in a later release, and the + patch in Buildroot can be removed. In the commit message of a + patch fixing an autobuild failure, add a reference to the + build result directory, as follows: + +Fixes: http://autobuild.buildroot.org/results/51000a9d4656afe9e0ea6f07b9f8ed374c2e4069 + +22.3. Reviewing and testing patches + +With the amount of patches sent to the mailing list each day, the +maintainer has a very hard job to judge which patches are ready to +apply and which ones aren’t. Contributors can greatly help here by +reviewing and testing these patches. + +In the review process, do not hesitate to respond to patch +submissions for remarks, suggestions or anything that will help +everyone to understand the patches and make them better. Please use +internet style replies in plain text emails when responding to patch +submissions. + +To indicate approval of a patch, there are three formal tags that +keep track of this approval. To add your tag to a patch, reply to it +with the approval tag below the original author’s Signed-off-by line. +These tags will be picked up automatically by patchwork (see +Section 22.3.1, “Applying Patches from Patchwork”) and will be part +of the commit log when the patch is accepted. + +Tested-by + Indicates that the patch has been tested successfully. You are + encouraged to specify what kind of testing you performed + (compile-test on architecture X and Y, runtime test on target A, + …). This additional information helps other testers and the + maintainer. +Reviewed-by + Indicates that you code-reviewed the patch and did your best in + spotting problems, but you are not sufficiently familiar with the + area touched to provide an Acked-by tag. This means that there + may be remaining problems in the patch that would be spotted by + someone with more experience in that area. Should such problems + be detected, your Reviewed-by tag remains appropriate and you + cannot be blamed. +Acked-by + Indicates that you code-reviewed the patch and you are familiar + enough with the area touched to feel that the patch can be + committed as-is (no additional changes required). In case it + later turns out that something is wrong with the patch, your + Acked-by could be considered inappropriate. The difference + between Acked-by and Reviewed-by is thus mainly that you are + prepared to take the blame on Acked patches, but not on Reviewed + ones. + +If you reviewed a patch and have comments on it, you should simply +reply to the patch stating these comments, without providing a +Reviewed-by or Acked-by tag. These tags should only be provided if +you judge the patch to be good as it is. + +It is important to note that neither Reviewed-by nor Acked-by imply +that testing has been performed. To indicate that you both reviewed +and tested the patch, provide two separate tags (Reviewed/Acked-by +and Tested-by). + +Note also that any developer can provide Tested/Reviewed/Acked-by +tags, without exception, and we encourage everyone to do this. +Buildroot does not have a defined group of core developers, it just +so happens that some developers are more active than others. The +maintainer will value tags according to the track record of their +submitter. Tags provided by a regular contributor will naturally be +trusted more than tags provided by a newcomer. As you provide tags +more regularly, your trustworthiness (in the eyes of the maintainer) +will go up, but any tag provided is valuable. + +Buildroot’s Patchwork website can be used to pull in patches for +testing purposes. Please see Section 22.3.1, “Applying Patches from +Patchwork” for more information on using Buildroot’s Patchwork +website to apply patches. + +22.3.1. Applying Patches from Patchwork + +The main use of Buildroot’s Patchwork website for a developer is for +pulling in patches into their local git repository for testing +purposes. + +When browsing patches in the patchwork management interface, an mbox +link is provided at the top of the page. Copy this link address and +run the following commands: + +$ git checkout -b +$ wget -O - | git am + +Another option for applying patches is to create a bundle. A bundle +is a set of patches that you can group together using the patchwork +interface. Once the bundle is created and the bundle is made public, +you can copy the mbox link for the bundle and apply the bundle using +the above commands. + +22.4. Work on items from the TODO list + +If you want to contribute to Buildroot but don’t know where to start, +and you don’t like any of the above topics, you can always work on +items from the Buildroot TODO list [http://elinux.org/Buildroot# +Todo_list]. Don’t hesitate to discuss an item first on the mailing +list or on IRC. Do edit the wiki to indicate when you start working +on an item, so we avoid duplicate efforts. + +22.5. Submitting patches + +Note + +Please, do not attach patches to bugs, send them to the mailing list +instead. + +If you made some changes to Buildroot and you would like to +contribute them to the Buildroot project, proceed as follows. + +22.5.1. The formatting of a patch + +We expect patches to be formatted in a specific way. This is +necessary to make it easy to review patches, to be able to apply them +easily to the git repository, to make it easy to find back in the +history how and why things have changed, and to make it possible to +use git bisect to locate the origin of a problem. + +First of all, it is essential that the patch has a good commit +message. The commit message should start with a separate line with a +brief summary of the change, prefixed by the area touched by the +patch. A few examples of good commit titles: + + * package/linuxptp: bump version to 2.0 + * configs/imx23evk: bump Linux version to 4.19 + * package/pkg-generic: postpone evaluation of dependency conditions + * boot/uboot: needs host-{flex,bison} + * support/testing: add python-ubjson tests + +The description that follows the prefix should start with a lower +case letter (i.e "bump", "needs", "postpone", "add" in the above +examples). + +Second, the body of the commit message should describe why this +change is needed, and if necessary also give details about how it was +done. When writing the commit message, think of how the reviewers +will read it, but also think about how you will read it when you look +at this change again a few years down the line. + +Third, the patch itself should do only one change, but do it +completely. Two unrelated or weakly related changes should usually be +done in two separate patches. This usually means that a patch affects +only a single package. If several changes are related, it is often +still possible to split them up in small patches and apply them in a +specific order. Small patches make it easier to review, and often +make it easier to understand afterwards why a change was done. +However, each patch must be complete. It is not allowed that the +build is broken when only the first but not the second patch is +applied. This is necessary to be able to use git bisect afterwards. + +Of course, while you’re doing your development, you’re probably going +back and forth between packages, and certainly not committing things +immediately in a way that is clean enough for submission. So most +developers rewrite the history of commits to produce a clean set of +commits that is appropriate for submission. To do this, you need to +use interactive rebasing. You can learn about it in the Pro Git book +[https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History]. +Sometimes, it is even easier to discard you history with git reset +--soft origin/master and select individual changes with git add -i or +git add -p. + +Finally, the patch should be signed off. This is done by adding +Signed-off-by: Your Real Name <> at the end of the commit message. +git commit -s does that for you, if configured properly. The +Signed-off-by tag means that you publish the patch under the +Buildroot license (i.e. GPL-2.0+, except for package patches, which +have the upstream license), and that you are allowed to do so. See +the Developer Certificate of Origin [http://developercertificate.org +/] for details. + +To give credits to who sponsored the creation of a patch or the +process of upstreaming it, you may use email subaddressing [https:// +datatracker.ietf.org/doc/html/rfc5233] for your git identity (i.e. +what is used as commit author and email From: field, as well as your +Signed-off-by tag); add suffix to the local part, separated from it +by a plus + sign. E.g.: + + * for a company which sponsored the submitted work, use the company + name as the detail (suffix) part: + + Your-Name Your-Surname + + + * for an individual who sponsored who sponsored the submitted work, + use their name and surname: + + Your-Name Your-Surname + + +When adding new packages, you should submit every package in a +separate patch. This patch should have the update to package/ +Config.in, the package Config.in file, the .mk file, the .hash file, +any init script, and all package patches. If the package has many +sub-options, these are sometimes better added as separate follow-up +patches. The summary line should be something like : new +package. The body of the commit message can be empty for simple +packages, or it can contain the description of the package (like the +Config.in help text). If anything special has to be done to build the +package, this should also be explained explicitly in the commit +message body. + +When you bump a package to a new version, you should also submit a +separate patch for each package. Don’t forget to update the .hash +file, or add it if it doesn’t exist yet. Also don’t forget to check +if the _LICENSE and _LICENSE_FILES are still valid. The summary line +should be something like : bump to version . If the new version only contains security updates compared +to the existing one, the summary should be : security +bump to version and the commit message body should show +the CVE numbers that are fixed. If some package patches can be +removed in the new version, it should be explained explicitly why +they can be removed, preferably with the upstream commit ID. Also any +other required changes should be explained explicitly, like configure +options that no longer exist or are no longer needed. + +If you are interested in getting notified of build failures and of +further changes in the packages you added or modified, please add +yourself to the DEVELOPERS file. This should be done in the same +patch creating or modifying the package. See the DEVELOPERS file for +more information. + +Buildroot provides a handy tool to check for common coding style +mistakes on files you created or modified, called check-package (see +Section 18.25.2, “How to check the coding style” for more +information). + +22.5.2. Preparing a patch series + +Starting from the changes committed in your local git view, rebase +your development branch on top of the upstream tree before generating +a patch set. To do so, run: + +$ git fetch --all --tags +$ git rebase origin/master + +Now check the coding style for the changes you committed: + +$ utils/docker-run make check-package + +Now, you are ready to generate then submit your patch set. + +To generate it, run: + +$ git format-patch -M -n -s -o outgoing origin/master + +This will generate patch files in the outgoing subdirectory, +automatically adding the Signed-off-by line. + +Once patch files are generated, you can review/edit the commit +message before submitting them, using your favorite text editor. + +Buildroot provides a handy tool to know to whom your patches should +be sent, called get-developers (see Chapter 23, DEVELOPERS file and +get-developers for more information). This tool reads your patches +and outputs the appropriate git send-email command to use: + +$ ./utils/get-developers outgoing/* + +Use the output of get-developers to send your patches: + +$ git send-email --to buildroot@buildroot.org --cc bob --cc alice outgoing/* + +Alternatively, get-developers -e can be used directly with the +--cc-cmd argument to git send-email to automatically CC the affected +developers: + +$ git send-email --to buildroot@buildroot.org \ + --cc-cmd './utils/get-developers -e' origin/master + +git can be configured to automatically do this out of the box with: + +$ git config sendemail.to buildroot@buildroot.org +$ git config sendemail.ccCmd "$(pwd)/utils/get-developers -e" + +And then just do: + +$ git send-email origin/master + +Note that git should be configured to use your mail account. To +configure git, see man git-send-email or google it. + +If you do not use git send-email, make sure posted patches are not +line-wrapped, otherwise they cannot easily be applied. In such a +case, fix your e-mail client, or better yet, learn to use git +send-email. + +22.5.3. Cover letter + +If you want to present the whole patch set in a separate mail, add +--cover-letter to the git format-patch command (see man +git-format-patch for further information). This will generate a +template for an introduction e-mail to your patch series. + +A cover letter may be useful to introduce the changes you propose in +the following cases: + + * large number of commits in the series; + * deep impact of the changes in the rest of the project; + * RFC ^[4]; + * whenever you feel it will help presenting your work, your + choices, the review process, etc. + +22.5.4. Patches for maintenance branches + +When fixing bugs on a maintenance branch, bugs should be fixed on the +master branch first. The commit log for such a patch may then contain +a post-commit note specifying what branches are affected: + +package/foo: fix stuff + +Signed-off-by: Your Real Name +--- +Backport to: 2020.02.x, 2020.05.x +(2020.08.x not affected as the version was bumped) + +Those changes will then be backported by a maintainer to the affected +branches. + +However, some bugs may apply only to a specific release, for example +because it is using an older version of a package. In that case, +patches should be based off the maintenance branch, and the patch +subject prefix must include the maintenance branch name (for example +"[PATCH 2020.02.x]"). This can be done with the git format-patch flag +--subject-prefix: + +$ git format-patch --subject-prefix "PATCH 2020.02.x" \ + -M -s -o outgoing origin/2020.02.x + +Then send the patches with git send-email, as described above. + +22.5.5. Patch revision changelog + +When improvements are requested, the new revision of each commit +should include a changelog of the modifications between each +submission. Note that when your patch series is introduced by a cover +letter, an overall changelog may be added to the cover letter in +addition to the changelog in the individual commits. The best thing +to rework a patch series is by interactive rebasing: git rebase -i +origin/master. Consult the git manual for more information. + +When added to the individual commits, this changelog is added when +editing the commit message. Below the Signed-off-by section, add --- +and your changelog. + +Although the changelog will be visible for the reviewers in the mail +thread, as well as in patchwork [https://patchwork.ozlabs.org/project +/buildroot/list/], git will automatically ignores lines below --- +when the patch will be merged. This is the intended behavior: the +changelog is not meant to be preserved forever in the git history of +the project. + +Hereafter the recommended layout: + +Patch title: short explanation, max 72 chars + +A paragraph that explains the problem, and how it manifests itself. If +the problem is complex, it is OK to add more paragraphs. All paragraphs +should be wrapped at 72 characters. + +A paragraph that explains the root cause of the problem. Again, more +than one paragraph is OK. + +Finally, one or more paragraphs that explain how the problem is solved. +Don't hesitate to explain complex solutions in detail. + +Signed-off-by: John DOE + +--- +Changes v2 -> v3: + - foo bar (suggested by Jane) + - bar buz + +Changes v1 -> v2: + - alpha bravo (suggested by John) + - charly delta + +Any patch revision should include the version number. The version +number is simply composed of the letter v followed by an integer +greater or equal to two (i.e. "PATCH v2", "PATCH v3" …). + +This can be easily handled with git format-patch by using the option +--subject-prefix: + +$ git format-patch --subject-prefix "PATCH v4" \ + -M -s -o outgoing origin/master + +Since git version 1.8.1, you can also use -v (where is the +version number): + +$ git format-patch -v4 -M -s -o outgoing origin/master + +When you provide a new version of a patch, please mark the old one as +superseded in patchwork [https://patchwork.ozlabs.org/project/ +buildroot/list/]. You need to create an account on patchwork [https:/ +/patchwork.ozlabs.org/project/buildroot/list/] to be able to modify +the status of your patches. Note that you can only change the status +of patches you submitted yourself, which means the email address you +register in patchwork [https://patchwork.ozlabs.org/project/buildroot +/list/] should match the one you use for sending patches to the +mailing list. + +You can also add the --in-reply-to option when +submitting a patch to the mailing list. The id of the mail to reply +to can be found under the "Message Id" tag on patchwork [https:// +patchwork.ozlabs.org/project/buildroot/list/]. The advantage of +in-reply-to is that patchwork will automatically mark the previous +version of the patch as superseded. + +22.6. Reporting issues/bugs or getting help + +Before reporting any issue, please check in the mailing list archive +whether someone has already reported and/or fixed a similar problem. + +However you choose to report bugs or get help, either by opening a +bug in the bug tracker or by sending a mail to the mailing list, +there are a number of details to provide in order to help people +reproduce and find a solution to the issue. + +Try to think as if you were trying to help someone else; in that +case, what would you need? + +Here is a short list of details to provide in such case: + + * host machine (OS/release) + * version of Buildroot + * target for which the build fails + * package(s) for which the build fails + * the command that fails and its output + * any information you think that may be relevant + +Additionally, you should add the .config file (or if you know how, a +defconfig; see Section 9.3, “Storing the Buildroot configuration”). + +If some of these details are too large, do not hesitate to use a +pastebin service. Note that not all available pastebin services will +preserve Unix-style line terminators when downloading raw pastes. +Following pastebin services are known to work correctly: - https:// +gist.github.com/ - http://code.bulix.org/ + +22.7. Using the runtime tests framework + +Buildroot includes a run-time testing framework built upon Python +scripting and QEMU runtime execution. The goals of the framework are +the following: + + * build a well defined Buildroot configuration + * optionally, verify some properties of the build output + * optionally, boot the build results under Qemu, and verify that a + given feature is working as expected + +The entry point to use the runtime tests framework is the support/ +testing/run-tests tool, which has a series of options documented in +the tool’s help -h description. Some common options include setting +the download folder, the output folder, keeping build output, and for +multiple test cases, you can set the JLEVEL for each. + +Here is an example walk through of running a test case. + + * For a first step, let us see what all the test case options are. + The test cases can be listed by executing support/testing/ + run-tests -l. These tests can all be run individually during test + development from the console. Both one at a time and selectively + as a group of a subset of tests. + +$ support/testing/run-tests -l +List of tests +test_run (tests.utils.test_check_package.TestCheckPackage) +test_run (tests.toolchain.test_external.TestExternalToolchainBuildrootMusl) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainCCache) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainCtngMusl) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainLinaroArm) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv4) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv5) ... ok +test_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv7) ... ok +[snip] +test_run (tests.init.test_systemd.TestInitSystemSystemdRoFull) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRoIfupdown) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRoNetworkd) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRwFull) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRwIfupdown) ... ok +test_run (tests.init.test_systemd.TestInitSystemSystemdRwNetworkd) ... ok +test_run (tests.init.test_busybox.TestInitSystemBusyboxRo) ... ok +test_run (tests.init.test_busybox.TestInitSystemBusyboxRoNet) ... ok +test_run (tests.init.test_busybox.TestInitSystemBusyboxRw) ... ok +test_run (tests.init.test_busybox.TestInitSystemBusyboxRwNet) ... ok + +Ran 157 tests in 0.021s + +OK + + * Then, to run one test case: + +$ support/testing/run-tests -d dl -o output_folder -k tests.init.test_busybox.TestInitSystemBusyboxRw +15:03:26 TestInitSystemBusyboxRw Starting +15:03:28 TestInitSystemBusyboxRw Building +15:08:18 TestInitSystemBusyboxRw Building done +15:08:27 TestInitSystemBusyboxRw Cleaning up +. +Ran 1 test in 301.140s + +OK + +The standard output indicates if the test is successful or not. By +default, the output folder for the test is deleted automatically +unless the option -k is passed to keep the output directory. + +22.7.1. Creating a test case + +Within the Buildroot repository, the testing framework is organized +at the top level in support/testing/ by folders of conf, infra and +tests. All the test cases live under the tests folder and are +organized in various folders representing the category of test. + +The best way to get familiar with how to create a test case is to +look at a few of the basic file system support/testing/tests/fs/ and +init support/testing/tests/init/ test scripts. Those tests give good +examples of a basic tests that include both checking the build +results, and doing runtime tests. There are other more advanced cases +that use things like nested br2-external folders to provide skeletons +and additional packages. + +Creating a basic test case involves: + + * Defining a test class that inherits from infra.basetest.BRTest + * Defining the config member of the test class, to the Buildroot + configuration to build for this test case. It can optionally rely + on configuration snippets provided by the runtime test + infrastructure: infra.basetest.BASIC_TOOLCHAIN_CONFIG to get a + basic architecture/toolchain configuration, and + infra.basetest.MINIMAL_CONFIG to not build any filesystem. The + advantage of using infra.basetest.BASIC_TOOLCHAIN_CONFIG is that + a matching Linux kernel image is provided, which allows to boot + the resulting image in Qemu without having to build a Linux + kernel image as part of the test case, therefore significant + decreasing the build time required for the test case. + * Implementing a def test_run(self): function to implement the + actual tests to run after the build has completed. They may be + tests that verify the build output, by running command on the + host using the run_cmd_on_host() helper function. Or they may + boot the generated system in Qemu using the Emulator object + available as self.emulator in the test case. For example + self.emulator.boot() allows to boot the system in Qemu, + self.emulator.login() allows to login, self.emulator.run() allows + to run shell commands inside Qemu. + +After creating the test script, add yourself to the DEVELOPERS file +to be the maintainer of that test case. + +22.7.2. Debugging a test case + +When a test case runs, the output_folder will contain the following: + +$ ls output_folder/ +TestInitSystemBusyboxRw/ +TestInitSystemBusyboxRw-build.log +TestInitSystemBusyboxRw-run.log + +TestInitSystemBusyboxRw/ is the Buildroot output directory, and it is +preserved only if the -k option is passed. + +TestInitSystemBusyboxRw-build.log is the log of the Buildroot build. + +TestInitSystemBusyboxRw-run.log is the log of the Qemu boot and test. +This file will only exist if the build was successful and the test +case involves booting under Qemu. + +If you want to manually run Qemu to do manual tests of the build +result, the first few lines of TestInitSystemBusyboxRw-run.log +contain the Qemu command line to use. + +You can also make modifications to the current sources inside the +output_folder (e.g. for debug purposes) and rerun the standard +Buildroot make targets (in order to regenerate the complete image +with the new modifications) and then rerun the test. + +22.7.3. Runtime tests and Gitlab CI + +All runtime tests are regularly executed by Buildroot Gitlab CI +infrastructure, see .gitlab.yml and https://gitlab.com/buildroot.org/ +buildroot/-/jobs. + +You can also use Gitlab CI to test your new test cases, or verify +that existing tests continue to work after making changes in +Buildroot. + +In order to achieve this, you need to create a fork of the Buildroot +project on Gitlab, and be able to push branches to your Buildroot +fork on Gitlab. + +The name of the branch that you push will determine if a Gitlab CI +pipeline will be triggered or not, and for which test cases. + +In the examples below, the component of the branch name is an +arbitrary string you choose. + + * To trigger all run-test test case jobs, push a branch that ends + with -runtime-tests: + + $ git push gitlab HEAD:-runtime-tests + + * To trigger one or several test case jobs, push a branch that ends + with the complete test case name + (tests.init.test_busybox.TestInitSystemBusyboxRo) or with the + name of a category of tests (tests.init.test_busybox): + + $ git push gitlab HEAD:- + +Example to run one test: + + $ git push gitlab HEAD:foo-tests.init.test_busybox.TestInitSystemBusyboxRo + +Examples to run several tests part of the same group: + + $ git push gitlab HEAD:foo-tests.init.test_busybox + $ git push gitlab HEAD:foo-tests.init + + +--------------------------------------------------------------------- + +^[4] RFC: (Request for comments) change proposal + +Chapter 23. DEVELOPERS file and get-developers + +The main Buildroot directory contains a file named DEVELOPERS that +lists the developers involved with various areas of Buildroot. Thanks +to this file, the get-developers tool allows to: + + * Calculate the list of developers to whom patches should be sent, + by parsing the patches and matching the modified files with the + relevant developers. See Section 22.5, “Submitting patches” for + details. + * Find which developers are taking care of a given architecture or + package, so that they can be notified when a build failure occurs + on this architecture or package. This is done in interaction with + Buildroot’s autobuild infrastructure. + +We ask developers adding new packages, new boards, or generally new +functionality in Buildroot, to register themselves in the DEVELOPERS +file. As an example, we expect a developer contributing a new package +to include in his patch the appropriate modification to the +DEVELOPERS file. + +The DEVELOPERS file format is documented in detail inside the file +itself. + +The get-developers tool, located in utils/ allows to use the +DEVELOPERS file for various tasks: + + * When passing one or several patches as command line argument, + get-developers will return the appropriate git send-email + command. If the -e option is passed, only the email addresses are + printed in a format suitable for git send-email --cc-cmd. + * When using the -a command line option, get-developers will + return the list of developers in charge of the given + architecture. + * When using the -p command line option, get-developers + will return the list of developers in charge of the given + package. + * When using the -c command line option, get-developers will look + at all files under version control in the Buildroot repository, + and list the ones that are not handled by any developer. The + purpose of this option is to help completing the DEVELOPERS file. + * When using the -v command line option, it validates the integrity + of the DEVELOPERS file and will note WARNINGS for items that + don’t match. + +Chapter 24. Release Engineering + +24.1. Releases + +The Buildroot project makes quarterly releases with monthly bugfix +releases. The first release of each year is a long term support +release, LTS. + + * Quarterly releases: 2020.02, 2020.05, 2020.08, and 2020.11 + * Bugfix releases: 2020.02.1, 2020.02.2, … + * LTS releases: 2020.02, 2021.02, … + +Releases are supported until the first bugfix release of the next +release, e.g., 2020.05.x is EOL when 2020.08.1 is released. + +LTS releases are supported until the first bugfix release of the next +LTS, e.g., 2020.02.x is supported until 2021.02.1 is released. + +24.2. Development + +Each release cycle consist of two months of development on the master +branch and one month stabilization before the release is made. During +this phase no new features are added to master, only bugfixes. + +The stabilization phase starts with tagging -rc1, and every week +until the release, another release candidate is tagged. + +To handle new features and version bumps during the stabilization +phase, a next branch may be created for these features. Once the +current release has been made, the next branch is merged into master +and the development cycle for the next release continues there. + +Part IV. Appendix + +Table of Contents + +25. Makedev syntax documentation +26. Makeusers syntax documentation + + 26.1. Caveat with automatic UIDs and GIDs + +27. Migrating from older Buildroot versions + + 27.1. General approach + 27.2. Migrating to 2016.11 + 27.3. Migrating to 2017.08 + +Chapter 25. Makedev syntax documentation + +The makedev syntax is used in several places in Buildroot to define +changes to be made for permissions, or which device files to create +and how to create them, in order to avoid calls to mknod. + +This syntax is derived from the makedev utility, and more complete +documentation can be found in the package/makedevs/README file. + +It takes the form of a space separated list of fields, one file per +line; the fields are: + ++--------------------------------------------------+ +|name|type|mode|uid|gid|major|minor|start|inc|count| ++--------------------------------------------------+ + +There are a few non-trivial blocks: + + * name is the path to the file you want to create/modify + * type is the type of the file, being one of: + + + f: a regular file + + d: a directory + + r: a directory recursively + + c: a character device file + + b: a block device file + + p: a named pipe + * mode are the usual permissions settings (only numerical values + are allowed) + * uid and gid are the UID and GID to set on this file; can be + either numerical values or actual names + * major and minor are here for device files, set to - for other + files + * start, inc and count are for when you want to create a batch of + files, and can be reduced to a loop, beginning at start, + incrementing its counter by inc until it reaches count + +Let’s say you want to change the permissions of a given file; using +this syntax, you will need to write: + +/usr/bin/foo f 755 0 0 - - - - - +/usr/bin/bar f 755 root root - - - - - +/data/buz f 644 buz-user buz-group - - - - - + +Alternatively, if you want to change owner/permission of a directory +recursively, you can write (to set UID to foo, GID to bar and access +rights to rwxr-x--- for the directory /usr/share/myapp and all files +and directories below it): + +/usr/share/myapp r 750 foo bar - - - - - + +On the other hand, if you want to create the device file /dev/hda and +the corresponding 15 files for the partitions, you will need for /dev +/hda: + +/dev/hda b 640 root root 3 0 0 0 - + +and then for device files corresponding to the partitions of /dev/ +hda, /dev/hdaX, X ranging from 1 to 15: + +/dev/hda b 640 root root 3 1 1 1 15 + +Extended attributes are supported if +BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES is enabled. This +is done by adding a line starting with |xattr after the line +describing the file. Right now, only capability is supported as +extended attribute. + ++------------------+ +||xattr|capability | ++------------------+ + + * |xattr is a "flag" that indicate an extended attribute + * capability is a capability to add to the previous file + +If you want to add the capability cap_sys_admin to the binary foo, +you will write : + +/usr/bin/foo f 755 root root - - - - - +|xattr cap_sys_admin+eip + +You can add several capabilities to a file by using several |xattr +lines. If you want to add the capability cap_sys_admin and +cap_net_admin to the binary foo, you will write : + +/usr/bin/foo f 755 root root - - - - - +|xattr cap_sys_admin+eip +|xattr cap_net_admin+eip + +Chapter 26. Makeusers syntax documentation + +The syntax to create users is inspired by the makedev syntax, above, +but is specific to Buildroot. + +The syntax for adding a user is a space-separated list of fields, one +user per line; the fields are: + ++---------------------------------------------------------+ +|username|uid|group|gid|password|home|shell|groups|comment| ++---------------------------------------------------------+ + +Where: + + * username is the desired user name (aka login name) for the user. + It can not be root, and must be unique. If set to -, then just a + group will be created. + * uid is the desired UID for the user. It must be unique, and not + 0. If set to -1 or -2, then a unique UID will be computed by + Buildroot, with -1 denoting a system UID from [100…999] and -2 + denoting a user UID from [1000…1999]. + * group is the desired name for the user’s main group. It can not + be root. If the group does not exist, it will be created. + * gid is the desired GID for the user’s main group. It must be + unique, and not 0. If set to -1 or -2, and the group does not + already exist, then a unique GID will be computed by Buildroot, + with -1 denoting a system GID from [100…999] and -2 denoting a + user GID from [1000…1999]. + * password is the crypt(3)-encoded password. If prefixed with !, + then login is disabled. If prefixed with =, then it is + interpreted as clear-text, and will be crypt-encoded (using MD5). + If prefixed with !=, then the password will be crypt-encoded + (using MD5) and login will be disabled. If set to *, then login + is not allowed. If set to -, then no password value will be set. + * home is the desired home directory for the user. If set to -, no + home directory will be created, and the user’s home will be /. + Explicitly setting home to / is not allowed. + * shell is the desired shell for the user. If set to -, then /bin/ + false is set as the user’s shell. + * groups is the comma-separated list of additional groups the user + should be part of. If set to -, then the user will be a member of + no additional group. Missing groups will be created with an + arbitrary gid. + * comment (aka GECOS [https://en.wikipedia.org/wiki/Gecos_field] + field) is an almost-free-form text. + +There are a few restrictions on the content of each field: + + * except for comment, all fields are mandatory. + * except for comment, fields may not contain spaces. + * no field may contain a colon (:). + +If home is not -, then the home directory, and all files below, will +belong to the user and its main group. + +Examples: + +foo -1 bar -1 !=blabla /home/foo /bin/sh alpha,bravo Foo user + +This will create this user: + + * username (aka login name) is: foo + * uid is computed by Buildroot + * main group is: bar + * main group gid is computed by Buildroot + * clear-text password is: blabla, will be crypt(3)-encoded, and + login is disabled. + * home is: /home/foo + * shell is: /bin/sh + * foo is also a member of groups: alpha and bravo + * comment is: Foo user + +test 8000 wheel -1 = - /bin/sh - Test user + +This will create this user: + + * username (aka login name) is: test + * uid is : 8000 + * main group is: wheel + * main group gid is computed by Buildroot, and will use the value + defined in the rootfs skeleton + * password is empty (aka no password). + * home is / but will not belong to test + * shell is: /bin/sh + * test is not a member of any additional groups + * comment is: Test user + +26.1. Caveat with automatic UIDs and GIDs + +When updating buildroot or when packages are added or removed to/from +the configuration, it is possible that the automatic UIDs and GIDs +are changed. This can be a problem if persistent files were created +with that user or group: after upgrade, they will suddenly have a +different owner. + +Therefore, it is advisable to perpetuate the automatic IDs. This can +be done by adding a users table with the generated IDs. It is only +needed to do this for UIDs that actually create persistent files, +e.g. database. + +Chapter 27. Migrating from older Buildroot versions + +Some versions have introduced backward incompatibilities. This +section explains those incompatibilities, and for each explains what +to do to complete the migration. + +27.1. General approach + +To migrate from an older Buildroot version, take the following steps. + + 1. For all your configurations, do a build in the old Buildroot + environment. Run make graph-size. Save graphs/file-size-stats.csv + in a different location. Run make clean to remove the rest. + 2. Review the specific migration notes below and make the required + adaptations to external packages and custom build scripts. + 3. Update Buildroot. + 4. Run make menuconfig starting from the existing .config. + 5. If anything is enabled in the Legacy menu, check its help text, + unselect it, and save the configuration. + 6. For more details, review the git commit messages for the packages + that you need. Change into the packages directory and run git log + .. — . + 7. Build in the new Buildroot environment. + 8. Fix build issues in external packages (usually due to updated + dependencies). + 9. Run make graph-size. +10. Compare the new file-size-stats.csv with the original one, to + check if no required files have disappeared and if no new big + unneeded files have appeared. +11. For configuration (and other) files in a custom overlay that + overwrite files created by Buildroot, check if there are changes + in the Buildroot-generated file that need to be propagated to + your custom file. + +27.2. Migrating to 2016.11 + +Before Buildroot 2016.11, it was possible to use only one +br2-external tree at once. With Buildroot 2016.11 came the +possibility to use more than one simultaneously (for details, see +Section 9.2, “Keeping customizations outside of Buildroot”). + +This however means that older br2-external trees are not usable +as-is. A minor change has to be made: adding a name to your +br2-external tree. + +This can be done very easily in just a few steps: + + * First, create a new file named external.desc, at the root of your + br2-external tree, with a single line defining the name of your + br2-external tree: + + $ echo 'name: NAME_OF_YOUR_TREE' >external.desc + + Note. Be careful when choosing a name: It has to be unique and be + made with only ASCII characters from the set [A-Za-z0-9_]. + + * Then, change every occurence of BR2_EXTERNAL in your br2-external + tree with the new variable: + + $ find . -type f | xargs sed -i 's/BR2_EXTERNAL/BR2_EXTERNAL_NAME_OF_YOUR_TREE_PATH/g' + +Now, your br2-external tree can be used with Buildroot 2016.11 +onward. + +Note: This change makes your br2-external tree incompatible with +Buildroot before 2016.11. + +27.3. Migrating to 2017.08 + +Before Buildroot 2017.08, host packages were installed in $(HOST_DIR) +/usr (with e.g. the autotools' --prefix=$(HOST_DIR)/usr). With +Buildroot 2017.08, they are now installed directly in $(HOST_DIR). + +Whenever a package installs an executable that is linked with a +library in $(HOST_DIR)/lib, it must have an RPATH pointing to that +directory. + +An RPATH pointing to $(HOST_DIR)/usr/lib is no longer accepted. + diff --git a/docs/website/download.html b/docs/website/download.html index 2af7db1861..46db748c82 100644 --- a/docs/website/download.html +++ b/docs/website/download.html @@ -8,105 +8,105 @@

    -

    Latest long term support release: 2023.02.1

    +

    Latest long term support release: 2023.02.4

    -

    Latest stable release: 2023.05

    +

    Latest stable release: 2023.08

    diff --git a/docs/website/news.html b/docs/website/news.html index 32e9273215..2983d385b2 100644 --- a/docs/website/news.html +++ b/docs/website/news.html @@ -9,6 +9,182 @@

    News

      +
    • +
      +
      +
      +

      2023.08 released

      +

      6 September 2023

      +
      +
      +

      The stable 2023.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details + and go to the downloads page to pick up the + 2023.08 release.

      +
      +
      +
    • + +
    • +
      +
      +
      +

      2023.02.4 released

      +

      31 August 2023

      +
      +
      +

      The 2023.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.4 release.

      +
      +
      +
    • + +
    • +
      +
      +
      +

      2023.05.2 released

      +

      31 August 2023

      +
      +
      +

      The 2023.05.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.05.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.05.2 release.

      +
      +
      +
    • + +
    • +
      +
      +
      +

      2023.08-rc3 released

      +

      29 August 2023

      +
      +
      +

      2023.08-rc3 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

      + +

      Head to the downloads page to pick up the + 2023.08-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

      +
      +
      +
    • + +
    • +
      +
      +
      +

      2023.08-rc2 released

      +

      20 August 2023

      +
      +
      +

      2023.08-rc2 has been released with more cleanups and build fixes. See the + CHANGES + file for details.

      + +

      Head to the downloads page to pick up the + 2023.08-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

      +
      +
      +
    • + +
    • +
      +
      +
      +

      2023.08-rc1 released

      +

      5 August 2023

      +
      +
      +

      We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for more details.

      +

      Go to the downloads page to pick up the + 2023.08-rc1 + release, and report any problems found to the + mailing list or + bug tracker.

      +
      +
      +
    • + +
    • +
      +
      +
      +

      2023.02.3 released

      +

      17 July 2023

      +
      +
      +

      The 2023.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.3 release.

      +
      +
      +
    • + +
    • +
      +
      +
      +

      2023.05.1 released

      +

      17 July 2023

      +
      +
      +

      The 2023.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.05.1 release.

      +
      +
      +
    • + +
    • +
      +
      +
      +

      2023.02.2 released

      +

      16 June 2023

      +
      +
      +

      The 2023.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2023.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2023.02.2 release.

      +
      +
      +
    • +
    • @@ -20,7 +196,8 @@

      The stable 2023.05 release is out - Thanks to everyone contributing and testing the release candidates. See the CHANGES - file for more details + file for more details, read the + announcement and go to the downloads page to pick up the 2023.05 release.

      diff --git a/linux/Config.in b/linux/Config.in index b4d32f6ea3..7ddcf013f8 100644 --- a/linux/Config.in +++ b/linux/Config.in @@ -28,8 +28,8 @@ choice prompt "Kernel version" config BR2_LINUX_KERNEL_LATEST_VERSION - bool "Latest version (6.3)" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3 if BR2_KERNEL_HEADERS_AS_KERNEL + bool "Latest version (6.4)" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4 if BR2_KERNEL_HEADERS_AS_KERNEL config BR2_LINUX_KERNEL_LATEST_CIP_VERSION bool "Latest CIP SLTS version (5.10.162-cip24)" @@ -128,7 +128,7 @@ endif config BR2_LINUX_KERNEL_VERSION string - default "6.3.6" if BR2_LINUX_KERNEL_LATEST_VERSION + default "6.4.16" if BR2_LINUX_KERNEL_LATEST_VERSION default "5.10.162-cip24" if BR2_LINUX_KERNEL_LATEST_CIP_VERSION default "5.10.162-cip24-rt10" if BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION default BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE \ diff --git a/linux/linux.hash b/linux/linux.hash index 18ede2d60f..283c07693f 100644 --- a/linux/linux.hash +++ b/linux/linux.hash @@ -1,13 +1,13 @@ # From https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc -sha256 7a6a1f0dfa0bf7f45f9d4a7b409315cf32267850adab4db033a17de0320a24ef linux-6.3.6.tar.xz -sha256 7c88b7a09ba2b9e47b78eba2b32b1db6a4d89636f7ddd586545f9671a2521a6c linux-6.1.32.tar.xz +sha256 9626ec84a39ecb009bf11a271dd520941159c165d4e62f82e3a77b79d20ff27d linux-6.4.16.tar.xz +sha256 f9ebfe3ddc5152d87b37e33be30e31875d137433be10a57ce29d2eae7b6e91b1 linux-6.1.57.tar.xz # From https://www.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc -sha256 1b076860779235e90519e867c1ec78c7a34d1125d8fdba787ff495c7c14f1214 linux-5.15.115.tar.xz -sha256 de8ec58929460e3a14c1b0502f4a449f24c988a7a4a03ff04a82fb2d665fe9f6 linux-5.10.182.tar.xz -sha256 9607881878fbd21e0dec4e8192b0f6352d17fd74c3ec23ffe6b0a24093efb1a4 linux-5.4.245.tar.xz +sha256 14835e629e237f136cfed484fdb533c95242429809bdcdb2a2d66dfcb7447170 linux-5.15.135.tar.xz +sha256 2b141fce994364fbbf137b01e7910d3518b8cdbdf18f1811b48470ab4ce2fa05 linux-5.10.198.tar.xz +sha256 39701815a7a1b5ea4253db18e9327a45926a944499628d032da63c1bb6ea623e linux-5.4.258.tar.xz # From https://www.kernel.org/pub/linux/kernel/v4.x/sha256sums.asc -sha256 7fb9ee20c7e52f9be6d9f501e8498a22f4b364abfde136143749a77e597fd03e linux-4.19.284.tar.xz -sha256 ac8318f1c1d387e23ccfa760ec042943372df23e3c4e2408177fb5a3f6488f76 linux-4.14.316.tar.xz +sha256 636166769dc232d18f399f40c22107c289aab8702e752301588e64ab582860ae linux-4.19.296.tar.xz +sha256 bff085d8832dd5c3d717beeebdff78a0b678f0a2307f83acf22764dabdcb0a5a linux-4.14.327.tar.xz # Locally computed sha256 fb0edc3c18e47d2b6974cb0880a0afb5c3fa08f50ee87dfdf24349405ea5f8ae linux-cip-5.10.162-cip24.tar.gz sha256 b5539243f187e3d478d76d44ae13aab83952c94b885ad889df6fa9997e16a441 linux-cip-5.10.162-cip24-rt10.tar.gz diff --git a/linux/linux.mk b/linux/linux.mk index cc36b5251d..1db5c6046d 100644 --- a/linux/linux.mk +++ b/linux/linux.mk @@ -88,7 +88,8 @@ LINUX_DEPENDENCIES += \ # only if the host does not have them. LINUX_KCONFIG_DEPENDENCIES = \ $(BR2_BISON_HOST_DEPENDENCY) \ - $(BR2_FLEX_HOST_DEPENDENCY) + $(BR2_FLEX_HOST_DEPENDENCY) \ + $(BR2_MAKE_HOST_DEPENDENCY) # Starting with 4.18, the kconfig in the kernel calls the # cross-compiler to check its capabilities. So we need the @@ -467,7 +468,7 @@ define LINUX_APPEND_DTB else \ dtbpath=dts/$${dtb}.dtb ; \ fi ; \ - cat zImage $${dtbpath} > zImage.$${dtb} || exit 1; \ + cat zImage $${dtbpath} > zImage.$$(basename $${dtb}) || exit 1; \ done) endef ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y) diff --git a/package/Config.in b/package/Config.in index 8fa94c893d..7d8dc17591 100644 --- a/package/Config.in +++ b/package/Config.in @@ -54,7 +54,6 @@ menu "Audio and video applications" source "package/speechd/Config.in" source "package/squeezelite/Config.in" source "package/tinycompress/Config.in" - source "package/tovid/Config.in" source "package/tstools/Config.in" source "package/twolame/Config.in" source "package/udpxy/Config.in" @@ -126,6 +125,7 @@ menu "Debugging, profiling and benchmark" source "package/lttng-babeltrace/Config.in" source "package/lttng-modules/Config.in" source "package/lttng-tools/Config.in" + source "package/mbpoll/Config.in" source "package/mbw/Config.in" source "package/mcelog/Config.in" source "package/memstat/Config.in" @@ -330,6 +330,7 @@ comment "Graphic applications" source "package/rrdtool/Config.in" source "package/stellarium/Config.in" source "package/sway/Config.in" + source "package/swaybg/Config.in" source "package/tesseract-ocr/Config.in" source "package/tinifier/Config.in" @@ -483,6 +484,7 @@ endmenu source "package/dbus-glib/Config.in" source "package/dbus-python/Config.in" source "package/dbus-triggerd/Config.in" + source "package/dfu-programmer/Config.in" source "package/dfu-util/Config.in" source "package/dmidecode/Config.in" source "package/dmraid/Config.in" @@ -495,6 +497,7 @@ endmenu source "package/edid-decode/Config.in" source "package/edk2-non-osi/Config.in" source "package/edk2-platforms/Config.in" + source "package/esp-hosted/Config.in" source "package/eudev/Config.in" source "package/ev3dev-linux-drivers/Config.in" source "package/evemu/Config.in" @@ -549,6 +552,7 @@ endmenu source "package/memtest86/Config.in" source "package/memtester/Config.in" source "package/memtool/Config.in" + source "package/mhz/Config.in" source "package/minicom/Config.in" source "package/msr-tools/Config.in" source "package/nanocom/Config.in" @@ -581,6 +585,7 @@ endmenu source "package/read-edid/Config.in" source "package/rng-tools/Config.in" source "package/rockchip-mali/Config.in" + source "package/rockchip-rkbin/Config.in" source "package/rpi-userland/Config.in" source "package/rs485conf/Config.in" source "package/rtc-tools/Config.in" @@ -594,6 +599,7 @@ endmenu source "package/rtl8812au-aircrack-ng/Config.in" source "package/rtl8821au/Config.in" source "package/rtl8821cu/Config.in" + source "package/rtl8822cs/Config.in" source "package/sane-backends/Config.in" source "package/sdparm/Config.in" source "package/sedutil/Config.in" @@ -716,6 +722,7 @@ menu "Lua libraries/modules" source "package/lua-csnappy/Config.in" source "package/lua-curl/Config.in" source "package/lua-datafile/Config.in" + source "package/lua-dkjson/Config.in" source "package/lua-ev/Config.in" source "package/lua-fifo/Config.in" source "package/lua-flu/Config.in" @@ -984,6 +991,7 @@ menu "External python modules" source "package/python-bidict/Config.in" source "package/python-bitstring/Config.in" source "package/python-bleak/Config.in" + source "package/python-blinker/Config.in" source "package/python-bluezero/Config.in" source "package/python-boto3/Config.in" source "package/python-botocore/Config.in" @@ -1141,6 +1149,7 @@ menu "External python modules" source "package/python-matplotlib/Config.in" source "package/python-mbstrdecoder/Config.in" source "package/python-memory-profiler/Config.in" + source "package/python-midiutil/Config.in" source "package/python-mimeparse/Config.in" source "package/python-minimalmodbus/Config.in" source "package/python-mistune/Config.in" @@ -1265,6 +1274,7 @@ menu "External python modules" source "package/python-requests-oauthlib/Config.in" source "package/python-requests-toolbelt/Config.in" source "package/python-rfc3987/Config.in" + source "package/python-rpds-py/Config.in" source "package/python-rpi-gpio/Config.in" source "package/python-rpi-ws281x/Config.in" source "package/python-rsa/Config.in" @@ -1405,7 +1415,6 @@ menu "Audio/Sound" source "package/caps/Config.in" source "package/fdk-aac/Config.in" source "package/libao/Config.in" - source "package/libasplib/Config.in" source "package/libbroadvoice/Config.in" source "package/libcdaudio/Config.in" source "package/libcddb/Config.in" @@ -1474,7 +1483,7 @@ menu "Crypto" source "package/beecrypt/Config.in" source "package/botan/Config.in" source "package/ca-certificates/Config.in" - source "package/cryptodev/Config.in" + source "package/cryptodev-linux/Config.in" source "package/cryptopp/Config.in" source "package/gcr/Config.in" source "package/gnutls/Config.in" @@ -1538,6 +1547,7 @@ if BR2_PACKAGE_POSTGRESQL source "package/postgis/Config.in" endif source "package/redis/Config.in" + source "package/redis-plus-plus/Config.in" source "package/rocksdb/Config.in" source "package/sqlcipher/Config.in" source "package/sqlite/Config.in" @@ -1599,6 +1609,7 @@ menu "Graphics" source "package/leptonica/Config.in" source "package/lesstif/Config.in" source "package/libart/Config.in" + source "package/libdecor/Config.in" source "package/libdmtx/Config.in" source "package/libdri2/Config.in" source "package/libdrm/Config.in" @@ -1680,6 +1691,7 @@ menu "Hardware handling" source "package/libatasmart/Config.in" source "package/libblockdev/Config.in" source "package/libcec/Config.in" + source "package/libdisplay-info/Config.in" source "package/libfreefare/Config.in" source "package/libftdi/Config.in" source "package/libftdi1/Config.in" @@ -1716,6 +1728,7 @@ menu "Hardware handling" source "package/mtdev/Config.in" source "package/ne10/Config.in" source "package/neardal/Config.in" + source "package/opencsd/Config.in" source "package/opensc/Config.in" source "package/owfs/Config.in" source "package/pcsc-lite/Config.in" @@ -1831,6 +1844,7 @@ menu "Multimedia" source "package/libbluray/Config.in" source "package/libcamera/Config.in" source "package/libcamera-apps/Config.in" + source "package/libde265/Config.in" source "package/libdvbcsa/Config.in" source "package/libdvbpsi/Config.in" source "package/libdvbsi/Config.in" @@ -1839,6 +1853,7 @@ menu "Multimedia" source "package/libdvdread/Config.in" source "package/libebml/Config.in" source "package/libhdhomerun/Config.in" + source "package/libheif/Config.in" source "package/libimxvpuapi/Config.in" source "package/libmatroska/Config.in" source "package/libmms/Config.in" @@ -1964,6 +1979,7 @@ menu "Networking" source "package/libyang/Config.in" source "package/lksctp-tools/Config.in" source "package/mbuffer/Config.in" + source "package/mdnsd/Config.in" source "package/mongoose/Config.in" source "package/nanomsg/Config.in" source "package/neon/Config.in" @@ -2023,9 +2039,9 @@ menu "Other" source "package/catch2/Config.in" source "package/cctz/Config.in" source "package/cereal/Config.in" - source "package/clang/Config.in" + source "package/llvm-project/clang/Config.in" source "package/cmocka/Config.in" - source "package/compiler-rt/Config.in" + source "package/llvm-project/compiler-rt/Config.in" source "package/cppcms/Config.in" source "package/cracklib/Config.in" source "package/dawgdic/Config.in" @@ -2068,7 +2084,7 @@ menu "Other" source "package/libcap/Config.in" source "package/libcap-ng/Config.in" source "package/libcgroup/Config.in" - source "package/libclc/Config.in" + source "package/llvm-project/libclc/Config.in" source "package/libcofi/Config.in" source "package/libcorrect/Config.in" source "package/libcrossguid/Config.in" @@ -2129,7 +2145,7 @@ comment "linux-pam plugins" source "package/libpam-tacplus/Config.in" endif source "package/liquid-dsp/Config.in" - source "package/llvm/Config.in" + source "package/llvm-project/llvm/Config.in" source "package/lttng-libust/Config.in" source "package/matio/Config.in" source "package/mpc/Config.in" @@ -2639,6 +2655,7 @@ menu "System tools" source "package/bubblewrap/Config.in" source "package/cgroupfs-mount/Config.in" source "package/circus/Config.in" + source "package/conmon/Config.in" source "package/containerd/Config.in" source "package/coreutils/Config.in" source "package/cpulimit/Config.in" diff --git a/package/Config.in.host b/package/Config.in.host index dcadbfdfc1..aa1f15e3ac 100644 --- a/package/Config.in.host +++ b/package/Config.in.host @@ -13,6 +13,7 @@ menu "Host utilities" source "package/checkpolicy/Config.in.host" source "package/checksec/Config.in.host" source "package/cmake/Config.in.host" + source "package/composer/Config.in.host" source "package/cramfs/Config.in.host" source "package/crudini/Config.in.host" source "package/cryptsetup/Config.in.host" @@ -40,7 +41,8 @@ menu "Host utilities" source "package/genpart/Config.in.host" source "package/gnupg/Config.in.host" source "package/go/Config.in.host" - source "package/go-bootstrap/Config.in.host" + source "package/go-bootstrap-stage1/Config.in.host" + source "package/go-bootstrap-stage2/Config.in.host" source "package/google-breakpad/Config.in.host" source "package/gptfdisk/Config.in.host" source "package/imagemagick/Config.in.host" @@ -51,7 +53,7 @@ menu "Host utilities" source "package/jsmin/Config.in.host" source "package/kmod/Config.in.host" source "package/libp11/Config.in.host" - source "package/lld/Config.in.host" + source "package/llvm-project/lld/Config.in.host" source "package/lpc3250loader/Config.in.host" source "package/lttng-babeltrace/Config.in.host" source "package/lzma-alone/Config.in.host" @@ -100,6 +102,7 @@ menu "Host utilities" source "package/squashfs/Config.in.host" source "package/sunxi-tools/Config.in.host" source "package/swig/Config.in.host" + source "package/swugenerator/Config.in.host" source "package/systemd/Config.in.host" source "package/tegrarcm/Config.in.host" source "package/ti-cgt-pru/Config.in.host" diff --git a/package/Makefile.in b/package/Makefile.in index d70aded82b..7e6ae19559 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -17,7 +17,9 @@ else PARALLEL_JOBS := $(BR2_JLEVEL) endif -MAKE1 := $(HOSTMAKE) -j1 +# Only build one job at a time, *and* to not randomise goals and +# prerequisites ordering in make 4.4+ +MAKE1 := $(HOSTMAKE) -j1 $(if $(findstring --shuffle,$(MAKEFLAGS)),--shuffle=none) override MAKE = $(HOSTMAKE) \ $(if $(findstring j,$(filter-out --%,$(MAKEFLAGS))),,-j$(PARALLEL_JOBS)) diff --git a/package/acpica/0001-build-do-not-use-Werror.patch b/package/acpica/0001-build-do-not-use-Werror.patch deleted file mode 100644 index f905e552bd..0000000000 --- a/package/acpica/0001-build-do-not-use-Werror.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 9382ae2431d2962c430e7149302c8690f5bc159c Mon Sep 17 00:00:00 2001 -From: "Yann E. MORIN" -Date: Sun, 10 Jul 2016 15:06:15 +0200 -Subject: [PATCH] build: do not use -Werror - -Warnings come and go with various compiler versions, so using -Werror is -prone to cause build failures with various compiler versions, especially -newer versions that introduce new warnings. - -Remove use of -Werror. - -[Vincent: tweak patch for 20170531 release] -[Bernd: tweak patch for 20191018 release] - -Signed-off-by: "Yann E. MORIN" -Signed-off-by: "Vicente Olivert Riera" -Signed-off-by: Bernd Kuhls ---- - generate/unix/Makefile.config | 1 - - generate/unix/iasl/Makefile | 16 ++++++++-------- - 2 files changed, 8 insertions(+), 9 deletions(-) - -diff --git a/generate/unix/Makefile.config b/generate/unix/Makefile.config -index c28e8a9b1..7064bed97 100644 ---- a/generate/unix/Makefile.config -+++ b/generate/unix/Makefile.config -@@ -204,7 +204,6 @@ CWARNINGFLAGS = \ - -Wall\ - -Wbad-function-cast\ - -Wdeclaration-after-statement\ -- -Werror\ - -Wformat=2\ - -Wmissing-declarations\ - -Wmissing-prototypes\ -diff --git a/generate/unix/iasl/Makefile b/generate/unix/iasl/Makefile -index 47ea73cab..2c756af79 100644 ---- a/generate/unix/iasl/Makefile -+++ b/generate/unix/iasl/Makefile -@@ -360,32 +360,32 @@ $(OBJDIR)/prparserparse.c $(OBJDIR)/prparser.y.h : $(ASL_COMPILER)/prparse - # - $(OBJDIR)/aslcompilerlex.o : $(OBJDIR)/aslcompilerlex.c - @echo "- " "Intermediate" $< -- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< -+ @$(CC) -c $(CFLAGS) -Wall -o$@ $< - - $(OBJDIR)/aslcompilerparse.o : $(OBJDIR)/aslcompilerparse.c - @echo "- " "Intermediate" $< -- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< -+ @$(CC) -c $(CFLAGS) -Wall -o$@ $< - - $(OBJDIR)/dtcompilerparserlex.o : $(OBJDIR)/dtcompilerparserlex.c - @echo "- " "Intermediate" $< -- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< -+ @$(CC) -c $(CFLAGS) -Wall -o$@ $< - - $(OBJDIR)/dtcompilerparserparse.o : $(OBJDIR)/dtcompilerparserparse.c - @echo "- " "Intermediate" $< -- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< -+ @$(CC) -c $(CFLAGS) -Wall -o$@ $< - - $(OBJDIR)/dtparserlex.o : $(OBJDIR)/dtparserlex.c - @echo "- " "Intermediate" $< -- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< -+ @$(CC) -c $(CFLAGS) -Wall -o$@ $< - - $(OBJDIR)/dtparserparse.o : $(OBJDIR)/dtparserparse.c - @echo "- " "Intermediate" $< -- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< -+ @$(CC) -c $(CFLAGS) -Wall -o$@ $< - - $(OBJDIR)/prparserlex.o : $(OBJDIR)/prparserlex.c - @echo "- " "Intermediate" $< -- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< -+ @$(CC) -c $(CFLAGS) -Wall -o$@ $< - - $(OBJDIR)/prparserparse.o : $(OBJDIR)/prparserparse.c - @echo "- " "Intermediate" $< -- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< -+ @$(CC) -c $(CFLAGS) -Wall -o$@ $< --- -2.20.1 - diff --git a/package/acpica/Config.in b/package/acpica/Config.in index c5ffb005f5..ec5865c357 100644 --- a/package/acpica/Config.in +++ b/package/acpica/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_ACPICA bool "acpica" + depends on BR2_USE_WCHAR depends on BR2_TOOLCHAIN_HAS_THREADS help The ACPI Component Architecture (ACPICA) project provides an @@ -9,5 +10,5 @@ config BR2_PACKAGE_ACPICA https://www.acpica.org -comment "acpica needs a toolchain w/ threads" - depends on !BR2_TOOLCHAIN_HAS_THREADS +comment "acpica needs a toolchain w/ threads, wchar" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/acpica/acpica.hash b/package/acpica/acpica.hash index 564e393cb4..dd9f8a1d22 100644 --- a/package/acpica/acpica.hash +++ b/package/acpica/acpica.hash @@ -1,3 +1,5 @@ +# From: https://www.intel.com/content/www/us/en/download/776303/acpi-component-architecture-downloads-unix-format-source-code-and-build-environment-with-an-intel-license.html +sha1 3b893fb771cf3fbd3531de3036e1a5bfc624c9d2 acpica-unix-20230628.tar.gz # locally computed hash -sha256 1ccda5c6a08a90b145777df635eb09f995b3472b3128f375009c5a6b01a04c7a acpica-unix2-20220331.tar.gz -sha256 40d8e351f8dfdf5340ec76ac28f0c201b825077d7060bb3686ca1112cb26985d source/include/acpi.h +sha256 86876a745e3d224dcfd222ed3de465b47559e85811df2db9820ef09a9dff5cce acpica-unix-20230628.tar.gz +sha256 905d6f191f3c29aa673602d9c66eb8df00f7e1b35064a081e0de81284ff17ee6 source/include/acpi.h diff --git a/package/acpica/acpica.mk b/package/acpica/acpica.mk index 9901c1ed48..81f7d8e103 100644 --- a/package/acpica/acpica.mk +++ b/package/acpica/acpica.mk @@ -4,9 +4,9 @@ # ################################################################################ -ACPICA_VERSION = 20220331 -ACPICA_SOURCE = acpica-unix2-$(ACPICA_VERSION).tar.gz -ACPICA_SITE = https://acpica.org/sites/acpica/files +ACPICA_VERSION = 20230628 +ACPICA_SOURCE = acpica-unix-$(ACPICA_VERSION).tar.gz +ACPICA_SITE = https://downloadmirror.intel.com/783534 ACPICA_LICENSE = BSD-3-Clause or GPL-2.0 ACPICA_LICENSE_FILES = source/include/acpi.h ACPICA_DEPENDENCIES = host-bison host-flex @@ -15,11 +15,13 @@ HOST_ACPICA_DEPENDENCIES = host-bison host-flex define ACPICA_BUILD_CMDS $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ HARDWARE_NAME=$(BR2_ARCH) HOST=_LINUX CC="$(TARGET_CC)" \ + NOWERROR=TRUE \ all endef define HOST_ACPICA_BUILD_CMDS $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + NOWERROR=TRUE \ all endef diff --git a/package/agentpp/0001-Snmpx-fix-const-nonconst-type-mismatch.patch b/package/agentpp/0001-Snmpx-fix-const-nonconst-type-mismatch.patch new file mode 100644 index 0000000000..07981eff3e --- /dev/null +++ b/package/agentpp/0001-Snmpx-fix-const-nonconst-type-mismatch.patch @@ -0,0 +1,51 @@ +From 7e541e6dba8d4976bbb490838a09b569f38b047d Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli +Date: Mon, 26 Jun 2023 17:45:00 +0200 +Subject: [PATCH] Snmpx: fix const/nonconst type mismatch + +Fixes build failure: + + snmp_pp_ext.cpp:1176:28: error: binding reference of type 'Snmp_pp::Pdu&' to 'const Snmp_pp::Pdu' discards qualifiers + 1176 | status = snmpmsg.load( pdu, community, version); + | ^~~ + +Fixes: + http://autobuild.buildroot.net/results/e8abd6bdc62a028955915706b03d72239786c703/ + http://autobuild.buildroot.net/results/24441fb679fbf5f913c9b6431c98aec596ead587/ + +Signed-off-by: Luca Ceresoli +Upstream: sent to katz.agentpp.com@magenta.de and support@agentpp.com +--- + include/agent_pp/snmp_pp_ext.h | 2 +- + src/snmp_pp_ext.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/agent_pp/snmp_pp_ext.h b/include/agent_pp/snmp_pp_ext.h +index 7c5a6783ee70..d8a46060db98 100644 +--- a/include/agent_pp/snmp_pp_ext.h ++++ b/include/agent_pp/snmp_pp_ext.h +@@ -807,7 +807,7 @@ public: + * SNMP_CLASS_SUCCESS on success and SNMP_CLASS_ERROR, + * SNMP_CLASS_TL_FAILED on failure. + */ +- int send (Pdux const &, NS_SNMP UdpAddress const &, NS_SNMP snmp_version, NS_SNMP OctetStr const &); ++ int send (Pdux &, NS_SNMP UdpAddress const &, NS_SNMP snmp_version, NS_SNMP OctetStr const &); + #endif + + /** +diff --git a/src/snmp_pp_ext.cpp b/src/snmp_pp_ext.cpp +index 54a29ec8ea28..b61cbf056246 100644 +--- a/src/snmp_pp_ext.cpp ++++ b/src/snmp_pp_ext.cpp +@@ -1203,7 +1203,7 @@ int Snmpx::send (Pdux &pdu, SnmpTarget* target) + + #else // _SNMPv3 is not defined + +-int Snmpx::send (Pdux const &pdu, ++int Snmpx::send (Pdux &pdu, + UdpAddress const &udp_address, + snmp_version version, + OctetStr const &community) +-- +2.34.1 + diff --git a/package/agentpp/agentpp.mk b/package/agentpp/agentpp.mk index 0ef549426e..7616d3eb0c 100644 --- a/package/agentpp/agentpp.mk +++ b/package/agentpp/agentpp.mk @@ -11,6 +11,7 @@ AGENTPP_LICENSE = Apache-2.0 AGENTPP_LICENSE_FILES = LICENSE-2_0.txt AGENTPP_INSTALL_STAGING = YES AGENTPP_DEPENDENCIES = host-pkgconf snmppp +AGENTPP_CONF_ENV = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" AGENTPP_CONF_OPTS += \ --disable-proxy \ --disable-forwarder \ diff --git a/package/alsa-lib/0002-Fix-symver-build-error-on-non-ELF-platforms.patch b/package/alsa-lib/0002-Fix-symver-build-error-on-non-ELF-platforms.patch new file mode 100644 index 0000000000..499bbb2ae4 --- /dev/null +++ b/package/alsa-lib/0002-Fix-symver-build-error-on-non-ELF-platforms.patch @@ -0,0 +1,84 @@ +From 317aafb133ed797c4cd62599565a77ecc595daea Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Thu, 29 Jun 2023 07:57:21 +0200 +Subject: [PATCH] Fix symver build error on non-ELF platforms + +The following error is observed on Microblaze [1] build: + + error: symver is only supported on ELF platforms + +due to using __attribute__((symver)) on non-ELF platform. + +[1] http://autobuild.buildroot.net/results/1e9/1e965d83d75615f35308440c5db044314a349357/build-end.log + +ac_check_attribute_symver.m4 was downloaded from +https://github.com/smuellerDD/libkcapi/blob/master/m4/ac_check_attribute_symver.m4 + +Upstream: https://github.com/alsa-project/alsa-lib/pull/334 + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 1 + + include/alsa-symbols.h | 2 +- + m4/ac_check_attribute_symver.m4 | 24 ++++++++++++++++++++++++ + 3 files changed, 26 insertions(+), 1 deletion(-) + create mode 100644 m4/ac_check_attribute_symver.m4 + +diff --git a/configure.ac b/configure.ac +index 0588eec3..71ec0b15 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -46,6 +46,7 @@ dnl Checks for typedefs, structures, and compiler characteristics. + AC_C_CONST + AC_C_INLINE + AC_HEADER_TIME ++AC_CHECK_ATTRIBUTE_SYMVER + + dnl Checks for library functions. + AC_PROG_GCC_TRADITIONAL +diff --git a/include/alsa-symbols.h b/include/alsa-symbols.h +index f8c49103..521e5956 100644 +--- a/include/alsa-symbols.h ++++ b/include/alsa-symbols.h +@@ -29,7 +29,7 @@ + #define INTERNAL_CONCAT2_2(Pre, Post) Pre##Post + #define INTERNAL(Name) INTERNAL_CONCAT2_2(__, Name) + +-#if __GNUC__ > 10 ++#if HAVE_ATTRIBUTE_SYMVER && __GNUC__ > 10 + #define symbol_version(real, name, version) \ + extern __typeof (real) real __attribute__((symver (#name "@" #version))) + #define default_symbol_version(real, name, version) \ +diff --git a/m4/ac_check_attribute_symver.m4 b/m4/ac_check_attribute_symver.m4 +new file mode 100644 +index 00000000..b484c5eb +--- /dev/null ++++ b/m4/ac_check_attribute_symver.m4 +@@ -0,0 +1,24 @@ ++dnl Check compiler support for symver function attribute ++AC_DEFUN([AC_CHECK_ATTRIBUTE_SYMVER], [ ++ saved_CFLAGS=$CFLAGS ++ CFLAGS="-O0 -Werror" ++ AC_COMPILE_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[ ++ void _test_attribute_symver(void); ++ __attribute__((__symver__("sym@VER_1.2.3"))) void _test_attribute_symver(void) {} ++ ]], ++ [[ ++ _test_attribute_symver() ++ ]] ++ )], ++ [ ++ AC_DEFINE([HAVE_ATTRIBUTE_SYMVER], 1, [Define to 1 if __attribute__((symver)) is supported]) ++ ], ++ [ ++ AC_DEFINE([HAVE_ATTRIBUTE_SYMVER], 0, [Define to 0 if __attribute__((symver)) is not supported]) ++ ] ++ ) ++ CFLAGS=$saved_CFLAGS ++]) ++ +-- +2.39.2 + diff --git a/package/alsa-lib/alsa-lib.hash b/package/alsa-lib/alsa-lib.hash index 898cbcd60d..f6735cd540 100644 --- a/package/alsa-lib/alsa-lib.hash +++ b/package/alsa-lib/alsa-lib.hash @@ -1,4 +1,4 @@ # Locally calculated -sha256 1ab01b74e33425ca99c2e36c0844fd6888273193bd898240fe8f93accbcbf347 alsa-lib-1.2.8.tar.bz2 +sha256 dc9c643fdc4ccfd0572cc685858dd41e08afb583f30460b317e4188275f615b2 alsa-lib-1.2.9.tar.bz2 sha256 32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b COPYING sha256 bfe16cf823bcff261fc6a062c07ee96660e3c39678f42f39a788a68dbc234ced aserver/COPYING diff --git a/package/alsa-lib/alsa-lib.mk b/package/alsa-lib/alsa-lib.mk index a0a9617514..70f4c969d5 100644 --- a/package/alsa-lib/alsa-lib.mk +++ b/package/alsa-lib/alsa-lib.mk @@ -4,7 +4,7 @@ # ################################################################################ -ALSA_LIB_VERSION = 1.2.8 +ALSA_LIB_VERSION = 1.2.9 ALSA_LIB_SOURCE = alsa-lib-$(ALSA_LIB_VERSION).tar.bz2 ALSA_LIB_SITE = https://www.alsa-project.org/files/pub/lib ALSA_LIB_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (aserver) diff --git a/package/alsa-plugins/alsa-plugins.mk b/package/alsa-plugins/alsa-plugins.mk index 5728ebfe37..d23a81c5ee 100644 --- a/package/alsa-plugins/alsa-plugins.mk +++ b/package/alsa-plugins/alsa-plugins.mk @@ -20,6 +20,10 @@ ALSA_PLUGINS_CONF_OPTS = \ --disable-maemo-resource-manager \ --with-speex=no +ifeq ($(BR2_PACKAGE_ALSA_UTILS),y) +ALSA_PLUGINS_DEPENDENCIES += alsa-utils +endif + ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y) ALSA_PLUGINS_CONF_OPTS += --enable-samplerate ALSA_PLUGINS_DEPENDENCIES += libsamplerate diff --git a/package/alsa-utils/alsa-utils.hash b/package/alsa-utils/alsa-utils.hash index 66c04d261f..44cd928e45 100644 --- a/package/alsa-utils/alsa-utils.hash +++ b/package/alsa-utils/alsa-utils.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 e140fa604c351f36bd72167c8860c69d81b964ae6ab53992d6434dde38e9333c alsa-utils-1.2.8.tar.bz2 +sha256 e7623d4525595f92e11ce25ee9a97f2040a14c6e4dcd027aa96e06cbce7817bd alsa-utils-1.2.9.tar.bz2 sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/alsa-utils/alsa-utils.mk b/package/alsa-utils/alsa-utils.mk index 8c43f58b76..20fe65afe6 100644 --- a/package/alsa-utils/alsa-utils.mk +++ b/package/alsa-utils/alsa-utils.mk @@ -4,7 +4,7 @@ # ################################################################################ -ALSA_UTILS_VERSION = 1.2.8 +ALSA_UTILS_VERSION = 1.2.9 ALSA_UTILS_SOURCE = alsa-utils-$(ALSA_UTILS_VERSION).tar.bz2 ALSA_UTILS_SITE = https://www.alsa-project.org/files/pub/utils ALSA_UTILS_LICENSE = GPL-2.0 diff --git a/package/assimp/Config.in b/package/assimp/Config.in index 5ffb50cd79..4bddb3598d 100644 --- a/package/assimp/Config.in +++ b/package/assimp/Config.in @@ -2,7 +2,7 @@ config BR2_PACKAGE_ASSIMP bool "assimp" depends on BR2_INSTALL_LIBSTDCPP depends on BR2_USE_WCHAR - depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 select BR2_PACKAGE_ZLIB select BR2_PACKAGE_ZLIB_FORCE_LIBZLIB help @@ -14,8 +14,6 @@ config BR2_PACKAGE_ASSIMP http://www.assimp.org -comment "assimp needs a toolchain w/ C++, wchar" - depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR - -comment "assimp needs exception_ptr" - depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 +comment "assimp needs a toolchain w/ C++, wchar, gcc >= 7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/asterisk/asterisk.hash b/package/asterisk/asterisk.hash index 98ee3bdc71..41e1da2962 100644 --- a/package/asterisk/asterisk.hash +++ b/package/asterisk/asterisk.hash @@ -1,5 +1,5 @@ # Locally computed -sha256 9b93006a87be9c29492299118200e4f66c8369851c66a50fdef5b15dfc4eb2c2 asterisk-16.29.1.tar.gz +sha256 ef1ddc07dc02bb0c5f5ba58a5e42e42bcb63e55ac94199be8e3b5d3910f43736 asterisk-16.30.1.tar.gz # sha1 from: http://downloads.asterisk.org/pub/telephony/sounds/releases # sha256 locally computed diff --git a/package/asterisk/asterisk.mk b/package/asterisk/asterisk.mk index 22ac0334fd..4f1a80ba8b 100644 --- a/package/asterisk/asterisk.mk +++ b/package/asterisk/asterisk.mk @@ -4,7 +4,7 @@ # ################################################################################ -ASTERISK_VERSION = 16.29.1 +ASTERISK_VERSION = 16.30.1 # Use the github mirror: it's an official mirror maintained by Digium, and # provides tarballs, which the main Asterisk git tree (behind Gerrit) does not. ASTERISK_SITE = $(call github,asterisk,asterisk,$(ASTERISK_VERSION)) diff --git a/package/at-spi2-atk/Config.in b/package/at-spi2-atk/Config.in deleted file mode 100644 index 9a7cfde0af..0000000000 --- a/package/at-spi2-atk/Config.in +++ /dev/null @@ -1,22 +0,0 @@ -config BR2_PACKAGE_AT_SPI2_ATK - bool "at-spi2-atk" - depends on BR2_PACKAGE_XORG7 # at-spi2-core - depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 - depends on BR2_USE_MMU # glib2 - depends on BR2_USE_WCHAR # glib2 - select BR2_PACKAGE_ATK - select BR2_PACKAGE_AT_SPI2_CORE - select BR2_PACKAGE_LIBGLIB2 - help - The At-Spi2 Atk package contains a library that bridges - ATK to At-Spi2 D-Bus service. - - https://www.freedesktop.org/wiki/Accessibility/AT-SPI2/ - -comment "at-spi2-atk needs a toolchain w/ wchar, threads" - depends on BR2_USE_MMU - depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS - -comment "at-spi2-atk depends on X.org" - depends on BR2_USE_MMU - depends on !BR2_PACKAGE_XORG7 diff --git a/package/at-spi2-atk/at-spi2-atk.hash b/package/at-spi2-atk/at-spi2-atk.hash deleted file mode 100644 index 9c564c32af..0000000000 --- a/package/at-spi2-atk/at-spi2-atk.hash +++ /dev/null @@ -1,5 +0,0 @@ -# From http://ftp.acc.umu.se/pub/gnome/sources/at-spi2-atk/2.34/at-spi2-atk-2.34.2.sha256sum -sha256 901323cee0eef05c01ec4dee06c701aeeca81a314a7d60216fa363005e27f4f0 at-spi2-atk-2.34.2.tar.xz - -# locally calculated -sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/at-spi2-atk/at-spi2-atk.mk b/package/at-spi2-atk/at-spi2-atk.mk deleted file mode 100644 index 232b577230..0000000000 --- a/package/at-spi2-atk/at-spi2-atk.mk +++ /dev/null @@ -1,19 +0,0 @@ -################################################################################ -# -# at-spi2-atk -# -################################################################################ - -AT_SPI2_ATK_VERSION_MAJOR = 2.34 -AT_SPI2_ATK_VERSION = $(AT_SPI2_ATK_VERSION_MAJOR).2 -AT_SPI2_ATK_SOURCE = at-spi2-atk-$(AT_SPI2_ATK_VERSION).tar.xz -AT_SPI2_ATK_SITE = \ - http://ftp.gnome.org/pub/gnome/sources/at-spi2-atk/$(AT_SPI2_ATK_VERSION_MAJOR) -AT_SPI2_ATK_LICENSE = LGPL-2.1+ -AT_SPI2_ATK_LICENSE_FILES = COPYING -AT_SPI2_ATK_CPE_ID_VENDOR = gnome -AT_SPI2_ATK_INSTALL_STAGING = YES -AT_SPI2_ATK_DEPENDENCIES = atk at-spi2-core libglib2 host-pkgconf -AT_SPI2_ATK_CONF_OPTS = -Dtests=false - -$(eval $(meson-package)) diff --git a/package/aubio/aubio.mk b/package/aubio/aubio.mk index 64174a113d..bfc627fa91 100644 --- a/package/aubio/aubio.mk +++ b/package/aubio/aubio.mk @@ -9,6 +9,7 @@ AUBIO_SITE = https://aubio.org/pub AUBIO_SOURCE = aubio-$(AUBIO_VERSION).tar.bz2 AUBIO_LICENSE = GPL-3.0+ AUBIO_LICENSE_FILES = COPYING +AUBIO_CPE_ID_VENDOR = aubio AUBIO_INSTALL_STAGING = YES AUBIO_DEPENDENCIES = host-pkgconf diff --git a/package/audit/0001-Define-__attribute_malloc__-when-needed.patch b/package/audit/0001-Define-__attribute_malloc__-when-needed.patch new file mode 100644 index 0000000000..3dd5359bfc --- /dev/null +++ b/package/audit/0001-Define-__attribute_malloc__-when-needed.patch @@ -0,0 +1,35 @@ +From cf93d8579d5cec0b1ba585bd661776f03c2743ba Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Tue, 27 Jun 2023 20:19:13 +0200 +Subject: [PATCH] Define __attribute_malloc__ when needed + +attribute_malloc is not available on musl + +auparse.h: In function 'auparse_init': +auparse.h:54:2: error: expected declaration specifiers before '__attribute_malloc__' + 54 | __attribute_malloc__ __attr_dealloc (auparse_destroy, 1); + +Upstream: https://github.com/linux-audit/audit-userspace/pull/311 + +Signed-off-by: Bernd Kuhls +--- + auparse/auparse.h | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/auparse/auparse.h b/auparse/auparse.h +index 95cf256d..5cb7402e 100644 +--- a/auparse/auparse.h ++++ b/auparse/auparse.h +@@ -32,6 +32,9 @@ + # define __attr_dealloc(dealloc, argno) + # define __attr_dealloc_free + #endif ++#ifndef __attribute_malloc__ ++# define __attribute_malloc__ ++#endif + + #ifdef __cplusplus + extern "C" { +-- +2.39.2 + diff --git a/package/audit/audit.hash b/package/audit/audit.hash index 87c00ec241..310b0a0f6a 100644 --- a/package/audit/audit.hash +++ b/package/audit/audit.hash @@ -1,4 +1,4 @@ #Locally computed -sha256 b5cf3cdabb2786c08b1de3599a3b1a547e55f7a9f9c1eb2078f5b44cf44e8378 audit-3.1.tar.gz +sha256 46e46b37623cce09e6ee134e78d668afc34f4e1c870c853ef12e4193078cfe87 audit-3.1.1.tar.gz sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING sha256 f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa COPYING.LIB diff --git a/package/audit/audit.mk b/package/audit/audit.mk index 252f5865b5..e77e06bd6b 100644 --- a/package/audit/audit.mk +++ b/package/audit/audit.mk @@ -4,7 +4,7 @@ # ################################################################################ -AUDIT_VERSION = 3.1 +AUDIT_VERSION = 3.1.1 AUDIT_SITE = http://people.redhat.com/sgrubb/audit AUDIT_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) AUDIT_LICENSE_FILES = COPYING COPYING.LIB diff --git a/package/autoconf-archive/autoconf-archive.hash b/package/autoconf-archive/autoconf-archive.hash index ff7710dc2b..c4658e6f91 100644 --- a/package/autoconf-archive/autoconf-archive.hash +++ b/package/autoconf-archive/autoconf-archive.hash @@ -1,4 +1,6 @@ +# From https://lists.gnu.org/archive/html/autoconf-archive-announce/2023-02/msg00000.html +sha1 e26d15db0f1ec60e9ea8ff024cf3ee895fa2eabd autoconf-archive-2023.02.20.tar.xz # Computed locally -sha256 e07454f00d8cae7907bed42d0747798927809947684d94c37207a4d63a32f423 autoconf-archive-2022.09.03.tar.xz +sha256 71d4048479ae28f1f5794619c3d72df9c01df49b1c628ef85fde37596dc31a33 autoconf-archive-2023.02.20.tar.xz sha256 e6037104443f9a7829b2aa7c5370d0789a7bda3ca65a0b904cdc0c2e285d9195 COPYING sha256 23ed0b84fa023bfa33433b498192cd08a3bfb1f4864a8ed791a84f3eb48b2dd2 COPYING.EXCEPTION diff --git a/package/autoconf-archive/autoconf-archive.mk b/package/autoconf-archive/autoconf-archive.mk index 0ffdf61ddf..07ac7e9743 100644 --- a/package/autoconf-archive/autoconf-archive.mk +++ b/package/autoconf-archive/autoconf-archive.mk @@ -4,7 +4,7 @@ # ################################################################################ -AUTOCONF_ARCHIVE_VERSION = 2022.09.03 +AUTOCONF_ARCHIVE_VERSION = 2023.02.20 AUTOCONF_ARCHIVE_SOURCE = autoconf-archive-$(AUTOCONF_ARCHIVE_VERSION).tar.xz AUTOCONF_ARCHIVE_SITE = $(BR2_GNU_MIRROR)/autoconf-archive AUTOCONF_ARCHIVE_LICENSE = GPL-3.0+ with exception diff --git a/package/azure-iot-sdk-c/azure-iot-sdk-c.hash b/package/azure-iot-sdk-c/azure-iot-sdk-c.hash index 187b90a35a..b960c0e571 100644 --- a/package/azure-iot-sdk-c/azure-iot-sdk-c.hash +++ b/package/azure-iot-sdk-c/azure-iot-sdk-c.hash @@ -1,5 +1,5 @@ # Locally computed: -sha256 7c23506e5acd6f400982f6f7a053d494c83b8a709c449bb9ded07aff9cfada78 azure-iot-sdk-c-LTS_07_2022_Ref01-br1.tar.gz +sha256 7b52b9886a3aff20a55a0d5bc5e140c212f85fd06af18c31291c15d363743a77 azure-iot-sdk-c-LTS_01_2023_Ref02-br1.tar.gz # Hash for license files: sha256 be2e9913fad9ff33607287c728f392579e2a6cc83e51b203ef6274c41db02ee7 LICENSE diff --git a/package/azure-iot-sdk-c/azure-iot-sdk-c.mk b/package/azure-iot-sdk-c/azure-iot-sdk-c.mk index 42fdd56b48..123b4cc930 100644 --- a/package/azure-iot-sdk-c/azure-iot-sdk-c.mk +++ b/package/azure-iot-sdk-c/azure-iot-sdk-c.mk @@ -4,7 +4,7 @@ # ################################################################################ -AZURE_IOT_SDK_C_VERSION = LTS_07_2022_Ref01 +AZURE_IOT_SDK_C_VERSION = LTS_01_2023_Ref02 AZURE_IOT_SDK_C_SITE = https://github.com/Azure/azure-iot-sdk-c AZURE_IOT_SDK_C_SITE_METHOD = git AZURE_IOT_SDK_C_GIT_SUBMODULES = YES diff --git a/package/batman-adv/batman-adv.hash b/package/batman-adv/batman-adv.hash index 14a92c231a..b95dfa34dd 100644 --- a/package/batman-adv/batman-adv.hash +++ b/package/batman-adv/batman-adv.hash @@ -1,7 +1,8 @@ -# From https://downloads.open-mesh.org/batman/releases/batman-adv-2022.2/batman-adv-2022.2.tar.gz.sha1 -sha1 e1829e10fc37ea674a20cb9ba1d6c1483042fbfa batman-adv-2022.2.tar.gz +# From https://downloads.open-mesh.org/batman/stable/sources/batman-adv/batman-adv-2023.1.tar.gz.sha1 +sha1 e3d6e8d4db772156d7ad021b9a166832633a2ea5 batman-adv-2023.1.tar.gz +# locally computed +sha256 f46a7286660a5ec3506a1be7ef60b471c51ac70550597d598040479ab7b936b8 batman-adv-2022.3.tar.gz # Hash for license files -sha256 218ffb534fead1c9b5b0d90ec1b2fba688209cdf00e861bece1cbf469fe69953 batman-adv-2022.3.tar.gz sha256 cecbf53d1148e13256ac29f8b900655b7fc8dc12d59939a95bc2323ea1747025 LICENSES/preferred/GPL-2.0 sha256 323c587d0ccf10e376f8bf9a7f31fb4ca6078105194b42e0b1e0ee2bc9bde71f LICENSES/preferred/MIT diff --git a/package/batman-adv/batman-adv.mk b/package/batman-adv/batman-adv.mk index 75b8292ee1..5b50572d11 100644 --- a/package/batman-adv/batman-adv.mk +++ b/package/batman-adv/batman-adv.mk @@ -4,7 +4,7 @@ # ################################################################################ -BATMAN_ADV_VERSION = 2022.3 +BATMAN_ADV_VERSION = 2023.1 BATMAN_ADV_SITE = https://downloads.open-mesh.org/batman/stable/sources/batman-adv BATMAN_ADV_LICENSE = GPL-2.0, MIT (batman_adv.h) BATMAN_ADV_LICENSE_FILES = LICENSES/preferred/GPL-2.0 LICENSES/preferred/MIT diff --git a/package/berkeleydb/Config.in b/package/berkeleydb/Config.in index f32d13ab17..f8fbb5cc09 100644 --- a/package/berkeleydb/Config.in +++ b/package/berkeleydb/Config.in @@ -13,6 +13,11 @@ config BR2_PACKAGE_BERKELEYDB_COMPAT185 help Build and install DB 1.85 compatibility API. +config BR2_PACKAGE_BERKELEYDB_DBM + bool "historic dbm interface" + help + Enable the historic dbm interface. + config BR2_PACKAGE_BERKELEYDB_TOOLS bool "install tools" help diff --git a/package/berkeleydb/berkeleydb.mk b/package/berkeleydb/berkeleydb.mk index 36b1894f34..1c121370db 100644 --- a/package/berkeleydb/berkeleydb.mk +++ b/package/berkeleydb/berkeleydb.mk @@ -39,6 +39,7 @@ define BERKELEYDB_CONFIGURE_CMDS --disable-java \ --disable-tcl \ $(if $(BR2_PACKAGE_BERKELEYDB_COMPAT185),--enable-compat185,--disable-compat185) \ + $(if $(BR2_PACKAGE_BERKELEYDB_DBM),--enable-dbm,--disable-dbm) \ $(SHARED_STATIC_LIBS_OPTS) \ --with-pic \ --enable-o_direct \ diff --git a/package/bind/Config.in b/package/bind/Config.in index 63ccd57db7..512e948ca2 100644 --- a/package/bind/Config.in +++ b/package/bind/Config.in @@ -4,6 +4,7 @@ config BR2_PACKAGE_BIND depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv depends on !BR2_STATIC_LIBS # libuv + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libuv select BR2_PACKAGE_LIBUV select BR2_PACKAGE_OPENSSL help @@ -43,7 +44,8 @@ config BR2_PACKAGE_BIND_TOOLS endif -comment "bind needs a toolchain w/ NPTL, dynamic library" +comment "bind needs a toolchain w/ NPTL, dynamic library, gcc >= 4.9" depends on BR2_USE_MMU depends on BR2_TOOLCHAIN_HAS_SYNC_4 - depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/bind/bind.hash b/package/bind/bind.hash index 32804b5ce0..d500b61128 100644 --- a/package/bind/bind.hash +++ b/package/bind/bind.hash @@ -1,4 +1,4 @@ -# Verified from https://ftp.isc.org/isc/bind9/9.16.38/bind-9.16.38.tar.xz.asc +# Verified from https://ftp.isc.org/isc/bind9/9.16.44/bind-9.16.44.tar.xz.asc # with key AADBBA5074F1402F7B69D56BC5B4EE931A9F9DFD -sha256 8df44c9d9a84a28ab8b49d55f3c33b624b90ef8f6a8b9ee6a4c33cc17c14c50f bind-9.16.38.tar.xz +sha256 cfaa953c36d5ca42d9584fcf9653d07c85527b59687e7c4d4cb8071272db6754 bind-9.16.44.tar.xz sha256 13491a682dc0f5ee2273cebd3949e2be62f9470fe659419a03a308d4f444773b COPYRIGHT diff --git a/package/bind/bind.mk b/package/bind/bind.mk index 70987a9823..03ffcbec42 100644 --- a/package/bind/bind.mk +++ b/package/bind/bind.mk @@ -4,7 +4,7 @@ # ################################################################################ -BIND_VERSION = 9.16.38 +BIND_VERSION = 9.16.44 BIND_SOURCE= bind-$(BIND_VERSION).tar.xz BIND_SITE = https://ftp.isc.org/isc/bind9/$(BIND_VERSION) # bind does not support parallel builds. @@ -14,8 +14,6 @@ BIND_LICENSE = MPL-2.0 BIND_LICENSE_FILES = COPYRIGHT BIND_CPE_ID_VENDOR = isc BIND_SELINUX_MODULES = bind -# Only applies to RHEL6.x with DNSSEC validation on -BIND_IGNORE_CVES = CVE-2017-3139 # Library CVE and not used by bind but used by ISC DHCP BIND_IGNORE_CVES += CVE-2019-6470 BIND_TARGET_SERVER_SBIN = arpaname ddns-confgen dnssec-checkds dnssec-coverage @@ -28,7 +26,6 @@ BIND_TARGET_SERVER_SBIN += dnssec-keyfromlabel dnssec-signzone tsig-keygen BIND_TARGET_TOOLS_BIN = dig host nslookup nsupdate BIND_CONF_ENV = \ BUILD_CC="$(TARGET_CC)" \ - BUILD_CFLAGS="$(TARGET_CFLAGS)" \ LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` BIND_CONF_OPTS = \ --without-cmocka \ @@ -39,6 +36,14 @@ BIND_CONF_OPTS = \ BIND_DEPENDENCIES = host-pkgconf libuv openssl +BIND_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101737),y) +BIND_CFLAGS += -O0 +endif + +BIND_CONF_OPTS += CFLAGS="$(BIND_CFLAGS)" + ifeq ($(BR2_PACKAGE_ZLIB),y) BIND_CONF_OPTS += --with-zlib BIND_DEPENDENCIES += zlib diff --git a/package/binutils/2.37/0003-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch b/package/binutils/2.37/0003-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch deleted file mode 100644 index bfd531b818..0000000000 --- a/package/binutils/2.37/0003-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch +++ /dev/null @@ -1,50 +0,0 @@ -From ef4ba1da823e8366ea4f126f50885a44ebf4dcf0 Mon Sep 17 00:00:00 2001 -From: Giulio Benetti -Date: Wed, 9 Jun 2021 17:28:27 +0200 -Subject: [PATCH] bfd/elf32-or1k: fix building with gcc version < 5 - -Gcc version >= 5 has standard C mode not set to -std=gnu11, so if we use -an old compiler(i.e. gcc 4.9) build fails on: -``` -elf32-or1k.c:2251:3: error: 'for' loop initial declarations are only allowed in -C99 or C11 mode - for (size_t i = 0; i < insn_count; i++) - ^ -``` - -So let's declare `size_t i` at the top of the function instead of inside -for loop. - -Signed-off-by: Giulio Benetti ---- - bfd/elf32-or1k.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index 4ae7f324d33..32063ab0289 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -2244,9 +2244,10 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj, - { - unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY; - unsigned output_insns[PLT_MAX_INSN_COUNT]; -+ size_t i; - - /* Copy instructions into the output buffer. */ -- for (size_t i = 0; i < insn_count; i++) -+ for (i = 0; i < insn_count; i++) - output_insns[i] = insns[i]; - - /* Honor the no-delay-slot setting. */ -@@ -2277,7 +2278,7 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj, - } - - /* Write out the output buffer. */ -- for (size_t i = 0; i < (insn_count+1); i++) -+ for (i = 0; i < (insn_count+1); i++) - bfd_put_32 (output_bfd, output_insns[i], contents + (i*4)); - } - --- -2.31.1 - diff --git a/package/binutils/2.37/0004-or1k-fix-pc-relative-relocation-against-dynamic-on-P.patch b/package/binutils/2.37/0004-or1k-fix-pc-relative-relocation-against-dynamic-on-P.patch deleted file mode 100644 index 0d18321ee1..0000000000 --- a/package/binutils/2.37/0004-or1k-fix-pc-relative-relocation-against-dynamic-on-P.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 203b80f8dbdd3ddb860114b03351a0dea28c978f Mon Sep 17 00:00:00 2001 -From: Giulio Benetti -Date: Sat, 10 Jul 2021 17:57:34 +0200 -Subject: [PATCH] or1k: fix pc-relative relocation against dynamic on PC - relative 26 bit relocation - -When building openal we were seeing the assert failure: - -/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o: -pc-relative relocation against dynamic symbol alSourcePausev -/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o: -pc-relative relocation against dynamic symbol alSourceStopv -/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o: -pc-relative relocation against dynamic symbol alSourceRewindv -/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o: -pc-relative relocation against dynamic symbol alSourcePlayv -collect2: error: ld returned 1 exit status - -This happens because in R_OR1K_INSN_REL_26 case we can't reference local -symbol as previously done but we need to make sure that calls to actual -symbol always call the version of current object. - -bfd/Changelog: - - * elf32-or1k.c (or1k_elf_relocate_section): use a separate entry - in switch case R_OR1K_INSN_REL_26 where we need to check for - !SYMBOL_CALLS_LOCAL() instead of !SYMBOL_REFERENCES_LOCAL(). - -Signed-off-by: Giulio Benetti ---- - bfd/elf32-or1k.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index 32063ab0289..67252394173 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -1543,6 +1543,18 @@ or1k_elf_relocate_section (bfd *output_bfd, - break; - - case R_OR1K_INSN_REL_26: -+ /* For a non-shared link, these will reference plt or call the -+ version of actual object. */ -+ if (bfd_link_pic (info) && !SYMBOL_CALLS_LOCAL (info, h)) -+ { -+ _bfd_error_handler -+ (_("%pB: pc-relative relocation against dynamic symbol %s"), -+ input_bfd, name); -+ ret_val = false; -+ bfd_set_error (bfd_error_bad_value); -+ } -+ break; -+ - case R_OR1K_PCREL_PG21: - case R_OR1K_LO13: - case R_OR1K_SLO13: --- -2.31.1 - diff --git a/package/binutils/2.37/0005-or1k-Avoid-R_OR1K_GOT16-signed-overflow-by-using-spe.patch b/package/binutils/2.37/0005-or1k-Avoid-R_OR1K_GOT16-signed-overflow-by-using-spe.patch deleted file mode 100644 index 8609db95b7..0000000000 --- a/package/binutils/2.37/0005-or1k-Avoid-R_OR1K_GOT16-signed-overflow-by-using-spe.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 362a20108782b87cd780a989c0dbd014fc2def8b Mon Sep 17 00:00:00 2001 -From: Stafford Horne -Date: Sun, 2 Jan 2022 09:03:28 +0900 -Subject: [PATCH] or1k: Avoid R_OR1K_GOT16 signed overflow by using special - howto - -Previously when fixing PR 21464 we masked out upper bits of the -relocation value in order to avoid overflow complaints when acceptable. -It turns out this does not work when the relocation value ends up being -signed. - -To fix this this patch introduces a special howto with -complain_on_overflow set to complain_overflow_dont. This is used in -place of the normal R_OR1K_GOT16 howto when we detect R_OR1K_GOT_AHI16 -relocations. - -bfd/ChangeLog: - - PR 28735 - * elf32-or1k.c (or1k_elf_got16_no_overflow_howto): Define. - (or1k_elf_relocate_section): Use new howto instead of trying to - mask out relocation bits. - -Signed-off-by: Giulio Benetti ---- - bfd/elf32-or1k.c | 24 ++++++++++++++++++++---- - 1 file changed, 20 insertions(+), 4 deletions(-) - -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index 4ae7f324d33..7fd88d72442 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -828,6 +828,23 @@ static reloc_howto_type or1k_elf_howto_table[] = - false), /* pcrel_offset */ - }; - -+/* A copy of the R_OR1K_GOT16 used in the presense of R_OR1K_GOT_AHI16 -+ relocations when we know we can ignore overflows. */ -+static reloc_howto_type or1k_elf_got16_no_overflow_howto = -+ HOWTO (R_OR1K_GOT16, /* type */ -+ 0, /* rightshift */ -+ 2, /* size (0 = byte, 1 = short, 2 = long) */ -+ 16, /* bitsize */ -+ false, /* pc_relative */ -+ 0, /* bitpos */ -+ complain_overflow_dont, /* complain_on_overflow */ -+ bfd_elf_generic_reloc, /* special_function */ -+ "R_OR1K_GOT16", /* name */ -+ false, /* partial_inplace */ -+ 0, /* src_mask */ -+ 0xffff, /* dst_mask */ -+ false); /* pcrel_offset */ -+ - /* Map BFD reloc types to Or1k ELF reloc types. */ - - struct or1k_reloc_map -@@ -1506,12 +1523,11 @@ or1k_elf_relocate_section (bfd *output_bfd, - if (r_type == R_OR1K_GOT_AHI16) - saw_gotha = true; - -- /* If we have a R_OR1K_GOT16 followed by a R_OR1K_GOT_AHI16 -+ /* If we have a R_OR1K_GOT16 following a R_OR1K_GOT_AHI16 - relocation we assume the code is doing the right thing to avoid -- overflows. Here we mask the lower 16-bit of the relocation to -- avoid overflow validation failures. */ -+ overflows. */ - if (r_type == R_OR1K_GOT16 && saw_gotha) -- relocation &= 0xffff; -+ howto = &or1k_elf_got16_no_overflow_howto; - - /* Addend should be zero. */ - if (rel->r_addend != 0) --- -2.25.1 - diff --git a/package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch b/package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch deleted file mode 100644 index 46697cc5c8..0000000000 --- a/package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch +++ /dev/null @@ -1,236 +0,0 @@ -From 1c611b40e6bfc8029bff7696814330b5bc0ee5c0 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Mon, 26 Jul 2021 05:59:55 -0700 -Subject: [PATCH] bfd: Close the file descriptor if there is no archive fd - -Close the file descriptor if there is no archive plugin file descriptor -to avoid running out of file descriptors on thin archives with many -archive members. - -bfd/ - - PR ld/28138 - * plugin.c (bfd_plugin_close_file_descriptor): Close the file - descriptor there is no archive plugin file descriptor. - -ld/ - - PR ld/28138 - * testsuite/ld-plugin/lto.exp: Run tmpdir/pr28138 only for - native build. - - PR ld/28138 - * testsuite/ld-plugin/lto.exp: Run ld/28138 tests. - * testsuite/ld-plugin/pr28138.c: New file. - * testsuite/ld-plugin/pr28138-1.c: Likewise. - * testsuite/ld-plugin/pr28138-2.c: Likewise. - * testsuite/ld-plugin/pr28138-3.c: Likewise. - * testsuite/ld-plugin/pr28138-4.c: Likewise. - * testsuite/ld-plugin/pr28138-5.c: Likewise. - * testsuite/ld-plugin/pr28138-6.c: Likewise. - * testsuite/ld-plugin/pr28138-7.c: Likewise. - -(cherry picked from commit 5a98fb7513b559e20dfebdbaa2a471afda3b4742) -(cherry picked from commit 7dc37e1e1209c80e0bab784df6b6bac335e836f2) - -[Upstream: - https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1c611b40e6bfc8029bff7696814330b5bc0ee5c0] -Signed-off-by: Peter Seiderer ---- - bfd/plugin.c | 8 +++++++ - ld/testsuite/ld-plugin/lto.exp | 34 ++++++++++++++++++++++++++++++ - ld/testsuite/ld-plugin/pr28138-1.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-2.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-3.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-4.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-5.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-6.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-7.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138.c | 20 ++++++++++++++++++ - 10 files changed, 104 insertions(+) - create mode 100644 ld/testsuite/ld-plugin/pr28138-1.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-2.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-3.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-4.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-5.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-6.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-7.c - create mode 100644 ld/testsuite/ld-plugin/pr28138.c - -diff --git a/bfd/plugin.c b/bfd/plugin.c -index 6cfa2b66470..3bab8febe88 100644 ---- a/bfd/plugin.c -+++ b/bfd/plugin.c -@@ -291,6 +291,14 @@ bfd_plugin_close_file_descriptor (bfd *abfd, int fd) - && !bfd_is_thin_archive (abfd->my_archive)) - abfd = abfd->my_archive; - -+ /* Close the file descriptor if there is no archive plugin file -+ descriptor. */ -+ if (abfd->archive_plugin_fd == -1) -+ { -+ close (fd); -+ return; -+ } -+ - abfd->archive_plugin_fd_open_count--; - /* Dup the archive plugin file descriptor for later use, which - will be closed by _bfd_archive_close_and_cleanup. */ -diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp -index def69e43ab3..999d911ce6a 100644 ---- a/ld/testsuite/ld-plugin/lto.exp -+++ b/ld/testsuite/ld-plugin/lto.exp -@@ -687,6 +687,40 @@ if { [is_elf_format] && [check_lto_shared_available] } { - } - } - -+run_cc_link_tests [list \ -+ [list \ -+ "Build pr28138.a" \ -+ "-T" "" \ -+ {pr28138-1.c pr28138-2.c pr28138-3.c pr28138-4.c pr28138-5.c \ -+ pr28138-6.c pr28138-7.c} {} "pr28138.a" \ -+ ] \ -+ [list \ -+ "Build pr28138.o" \ -+ "" "" \ -+ {pr28138.c} {} \ -+ ] \ -+] -+ -+set exec_output [run_host_cmd "sh" \ -+ "-c \"ulimit -n 20; \ -+ $CC -Btmpdir/ld -o tmpdir/pr28138 \ -+ tmpdir/pr28138.o tmpdir/pr28138.a\""] -+set exec_output [prune_warnings $exec_output] -+if [string match "" $exec_output] then { -+ if { [isnative] } { -+ set exec_output [run_host_cmd "tmpdir/pr28138" ""] -+ if [string match "PASS" $exec_output] then { -+ pass "PR ld/28138" -+ } else { -+ fail "PR ld/28138" -+ } -+ } else { -+ pass "PR ld/28138" -+ } -+} else { -+ fail "PR ld/28138" -+} -+ - set testname "Build liblto-11.a" - remote_file host delete "tmpdir/liblto-11.a" - set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"] -diff --git a/ld/testsuite/ld-plugin/pr28138-1.c b/ld/testsuite/ld-plugin/pr28138-1.c -new file mode 100644 -index 00000000000..51d119e1642 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-1.c -@@ -0,0 +1,6 @@ -+extern int a0(void); -+int -+a1(void) -+{ -+ return 1 + a0(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-2.c b/ld/testsuite/ld-plugin/pr28138-2.c -new file mode 100644 -index 00000000000..1120cd797e9 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-2.c -@@ -0,0 +1,6 @@ -+extern int a1(void); -+int -+a2(void) -+{ -+ return 1 + a1(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-3.c b/ld/testsuite/ld-plugin/pr28138-3.c -new file mode 100644 -index 00000000000..ec464947ee6 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-3.c -@@ -0,0 +1,6 @@ -+extern int a2(void); -+int -+a3(void) -+{ -+ return 1 + a2(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-4.c b/ld/testsuite/ld-plugin/pr28138-4.c -new file mode 100644 -index 00000000000..475701b2c5c ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-4.c -@@ -0,0 +1,6 @@ -+extern int a3(void); -+int -+a4(void) -+{ -+ return 1 + a3(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-5.c b/ld/testsuite/ld-plugin/pr28138-5.c -new file mode 100644 -index 00000000000..e24f86c363e ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-5.c -@@ -0,0 +1,6 @@ -+extern int a4(void); -+int -+a5(void) -+{ -+ return 1 + a4(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-6.c b/ld/testsuite/ld-plugin/pr28138-6.c -new file mode 100644 -index 00000000000..b5b938bdb21 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-6.c -@@ -0,0 +1,6 @@ -+extern int a5(void); -+int -+a6(void) -+{ -+ return 1 + a5(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-7.c b/ld/testsuite/ld-plugin/pr28138-7.c -new file mode 100644 -index 00000000000..4ef75bf0f0c ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-7.c -@@ -0,0 +1,6 @@ -+extern int a6(void); -+int -+a7(void) -+{ -+ return 1 + a6(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138.c b/ld/testsuite/ld-plugin/pr28138.c -new file mode 100644 -index 00000000000..68252c9f382 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138.c -@@ -0,0 +1,20 @@ -+#include -+ -+extern int a7(void); -+ -+int -+a0(void) -+{ -+ return 0; -+} -+ -+int -+main() -+{ -+ if (a7() == 7) -+ { -+ printf ("PASS\n"); -+ return 0; -+ } -+ return 1; -+} --- -2.34.1 - diff --git a/package/binutils/2.37/0007-i386-Allow-GOT32-relocations-against-ABS-symbols.patch b/package/binutils/2.37/0007-i386-Allow-GOT32-relocations-against-ABS-symbols.patch deleted file mode 100644 index 3e29282261..0000000000 --- a/package/binutils/2.37/0007-i386-Allow-GOT32-relocations-against-ABS-symbols.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 30a954525f4e53a9cd50a1a8a6f201c7cf6595c7 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Mon, 7 Feb 2022 15:22:19 -0800 -Subject: [PATCH] i386: Allow GOT32 relocations against ABS symbols - -GOT32 relocations are allowed since absolute value + addend is stored in -the GOT slot. - -Tested on glibc 2.35 build with GCC 11.2 and -Os. - -bfd/ - - PR ld/28870 - * elfxx-x86.c (_bfd_elf_x86_valid_reloc_p): Also allow GOT32 - relocations. - - -Signed-off-by: Waldemar Brodkorb - -diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c -index 7ac2411fc80..d00dc45677b 100644 ---- a/bfd/elfxx-x86.c -+++ b/bfd/elfxx-x86.c -@@ -1942,9 +1942,9 @@ _bfd_elf_x86_valid_reloc_p (asection *input_section, - irel = *rel; - - /* Only allow relocations against absolute symbol, which can be -- resolved as absolute value + addend. GOTPCREL relocations -- are allowed since absolute value + addend is stored in the -- GOT slot. */ -+ resolved as absolute value + addend. GOTPCREL and GOT32 -+ relocations are allowed since absolute value + addend is -+ stored in the GOT slot. */ - if (bed->target_id == X86_64_ELF_DATA) - { - r_type &= ~R_X86_64_converted_reloc_bit; -@@ -1965,7 +1965,9 @@ _bfd_elf_x86_valid_reloc_p (asection *input_section, - else - valid_p = (r_type == R_386_32 - || r_type == R_386_16 -- || r_type == R_386_8); -+ || r_type == R_386_8 -+ || r_type == R_386_GOT32 -+ || r_type == R_386_GOT32X); - - if (valid_p) - *no_dynreloc_p = true; diff --git a/package/binutils/2.38/0003-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch b/package/binutils/2.38/0003-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch deleted file mode 100644 index bfd531b818..0000000000 --- a/package/binutils/2.38/0003-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch +++ /dev/null @@ -1,50 +0,0 @@ -From ef4ba1da823e8366ea4f126f50885a44ebf4dcf0 Mon Sep 17 00:00:00 2001 -From: Giulio Benetti -Date: Wed, 9 Jun 2021 17:28:27 +0200 -Subject: [PATCH] bfd/elf32-or1k: fix building with gcc version < 5 - -Gcc version >= 5 has standard C mode not set to -std=gnu11, so if we use -an old compiler(i.e. gcc 4.9) build fails on: -``` -elf32-or1k.c:2251:3: error: 'for' loop initial declarations are only allowed in -C99 or C11 mode - for (size_t i = 0; i < insn_count; i++) - ^ -``` - -So let's declare `size_t i` at the top of the function instead of inside -for loop. - -Signed-off-by: Giulio Benetti ---- - bfd/elf32-or1k.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index 4ae7f324d33..32063ab0289 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -2244,9 +2244,10 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj, - { - unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY; - unsigned output_insns[PLT_MAX_INSN_COUNT]; -+ size_t i; - - /* Copy instructions into the output buffer. */ -- for (size_t i = 0; i < insn_count; i++) -+ for (i = 0; i < insn_count; i++) - output_insns[i] = insns[i]; - - /* Honor the no-delay-slot setting. */ -@@ -2277,7 +2278,7 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj, - } - - /* Write out the output buffer. */ -- for (size_t i = 0; i < (insn_count+1); i++) -+ for (i = 0; i < (insn_count+1); i++) - bfd_put_32 (output_bfd, output_insns[i], contents + (i*4)); - } - --- -2.31.1 - diff --git a/package/binutils/2.38/0004-or1k-Avoid-R_OR1K_GOT16-signed-overflow-by-using-spe.patch b/package/binutils/2.38/0004-or1k-Avoid-R_OR1K_GOT16-signed-overflow-by-using-spe.patch deleted file mode 100644 index 8609db95b7..0000000000 --- a/package/binutils/2.38/0004-or1k-Avoid-R_OR1K_GOT16-signed-overflow-by-using-spe.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 362a20108782b87cd780a989c0dbd014fc2def8b Mon Sep 17 00:00:00 2001 -From: Stafford Horne -Date: Sun, 2 Jan 2022 09:03:28 +0900 -Subject: [PATCH] or1k: Avoid R_OR1K_GOT16 signed overflow by using special - howto - -Previously when fixing PR 21464 we masked out upper bits of the -relocation value in order to avoid overflow complaints when acceptable. -It turns out this does not work when the relocation value ends up being -signed. - -To fix this this patch introduces a special howto with -complain_on_overflow set to complain_overflow_dont. This is used in -place of the normal R_OR1K_GOT16 howto when we detect R_OR1K_GOT_AHI16 -relocations. - -bfd/ChangeLog: - - PR 28735 - * elf32-or1k.c (or1k_elf_got16_no_overflow_howto): Define. - (or1k_elf_relocate_section): Use new howto instead of trying to - mask out relocation bits. - -Signed-off-by: Giulio Benetti ---- - bfd/elf32-or1k.c | 24 ++++++++++++++++++++---- - 1 file changed, 20 insertions(+), 4 deletions(-) - -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index 4ae7f324d33..7fd88d72442 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -828,6 +828,23 @@ static reloc_howto_type or1k_elf_howto_table[] = - false), /* pcrel_offset */ - }; - -+/* A copy of the R_OR1K_GOT16 used in the presense of R_OR1K_GOT_AHI16 -+ relocations when we know we can ignore overflows. */ -+static reloc_howto_type or1k_elf_got16_no_overflow_howto = -+ HOWTO (R_OR1K_GOT16, /* type */ -+ 0, /* rightshift */ -+ 2, /* size (0 = byte, 1 = short, 2 = long) */ -+ 16, /* bitsize */ -+ false, /* pc_relative */ -+ 0, /* bitpos */ -+ complain_overflow_dont, /* complain_on_overflow */ -+ bfd_elf_generic_reloc, /* special_function */ -+ "R_OR1K_GOT16", /* name */ -+ false, /* partial_inplace */ -+ 0, /* src_mask */ -+ 0xffff, /* dst_mask */ -+ false); /* pcrel_offset */ -+ - /* Map BFD reloc types to Or1k ELF reloc types. */ - - struct or1k_reloc_map -@@ -1506,12 +1523,11 @@ or1k_elf_relocate_section (bfd *output_bfd, - if (r_type == R_OR1K_GOT_AHI16) - saw_gotha = true; - -- /* If we have a R_OR1K_GOT16 followed by a R_OR1K_GOT_AHI16 -+ /* If we have a R_OR1K_GOT16 following a R_OR1K_GOT_AHI16 - relocation we assume the code is doing the right thing to avoid -- overflows. Here we mask the lower 16-bit of the relocation to -- avoid overflow validation failures. */ -+ overflows. */ - if (r_type == R_OR1K_GOT16 && saw_gotha) -- relocation &= 0xffff; -+ howto = &or1k_elf_got16_no_overflow_howto; - - /* Addend should be zero. */ - if (rel->r_addend != 0) --- -2.25.1 - diff --git a/package/binutils/2.38/0005-binutils-2.38-vs.-ppc32-linux-kernel.patch b/package/binutils/2.38/0005-binutils-2.38-vs.-ppc32-linux-kernel.patch deleted file mode 100644 index c62652c95f..0000000000 --- a/package/binutils/2.38/0005-binutils-2.38-vs.-ppc32-linux-kernel.patch +++ /dev/null @@ -1,55 +0,0 @@ -From ed9b2e40ebffec835d63473367da8dd8f80d7d5b Mon Sep 17 00:00:00 2001 -From: Alan Modra -Date: Mon, 21 Feb 2022 10:58:57 +1030 -Subject: [PATCH] binutils 2.38 vs. ppc32 linux kernel - -Commit b25f942e18d6 made .machine more strict. Weaken it again. - - * config/tc-ppc.c (ppc_machine): Treat an early .machine specially, - keeping sticky options to work around gcc bugs. - -(cherry picked from commit cebc89b9328eab994f6b0314c263f94e7949a553) -Signed-off-by: Waldemar Brodkorb ---- - gas/config/tc-ppc.c | 25 ++++++++++++++++++++++++- - 1 file changed, 24 insertions(+), 1 deletion(-) - -diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c -index 054f9c72161..89bc7d3f9b9 100644 ---- a/gas/config/tc-ppc.c -+++ b/gas/config/tc-ppc.c -@@ -5965,7 +5965,30 @@ ppc_machine (int ignore ATTRIBUTE_UNUSED) - options do not count as a new machine, instead they add - to currently selected opcodes. */ - ppc_cpu_t machine_sticky = 0; -- new_cpu = ppc_parse_cpu (ppc_cpu, &machine_sticky, cpu_string); -+ /* Unfortunately, some versions of gcc emit a .machine -+ directive very near the start of the compiler's assembly -+ output file. This is bad because it overrides user -Wa -+ cpu selection. Worse, there are versions of gcc that -+ emit the *wrong* cpu, not even respecting the -mcpu given -+ to gcc. See gcc pr101393. And to compound the problem, -+ as of 20220222 gcc doesn't pass the correct cpu option to -+ gas on the command line. See gcc pr59828. Hack around -+ this by keeping sticky options for an early .machine. */ -+ asection *sec; -+ for (sec = stdoutput->sections; sec != NULL; sec = sec->next) -+ { -+ segment_info_type *info = seg_info (sec); -+ /* Are the frags for this section perturbed from their -+ initial state? Even .align will count here. */ -+ if (info != NULL -+ && (info->frchainP->frch_root != info->frchainP->frch_last -+ || info->frchainP->frch_root->fr_type != rs_fill -+ || info->frchainP->frch_root->fr_fix != 0)) -+ break; -+ } -+ new_cpu = ppc_parse_cpu (ppc_cpu, -+ sec == NULL ? &sticky : &machine_sticky, -+ cpu_string); - if (new_cpu != 0) - ppc_cpu = new_cpu; - else --- -2.30.2 - diff --git a/package/binutils/2.37/0001-sh-conf.patch b/package/binutils/2.40/0001-sh-conf.patch similarity index 82% rename from package/binutils/2.37/0001-sh-conf.patch rename to package/binutils/2.40/0001-sh-conf.patch index fcc597e4d9..ffa23a88a7 100644 --- a/package/binutils/2.37/0001-sh-conf.patch +++ b/package/binutils/2.40/0001-sh-conf.patch @@ -1,4 +1,4 @@ -From 33f3c1f804efc2e4f97849081589efb70cda31e5 Mon Sep 17 00:00:00 2001 +From 87551ade276aa0db86c4567b3ac219c4f979b538 Mon Sep 17 00:00:00 2001 From: Romain Naour Date: Fri, 25 Dec 2015 11:38:13 +0100 Subject: [PATCH] sh-conf @@ -8,6 +8,8 @@ fix that up too.. now we're able to actually build a real toolchain for sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more inept targets than that one, really. Go look, I promise). +Upstream: N/A [Buildroot specific] + [Romain: rebase on top of 2.32] Signed-off-by: Romain Naour [Thomas: rebase on top of 2.29, in which sh64 support was removed.] @@ -18,10 +20,10 @@ Signed-off-by: Thomas Petazzoni 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure b/configure -index 3dd206525a7..6881ce632f5 100755 +index 417fc5a970c..fa8ba331796 100755 --- a/configure +++ b/configure -@@ -3892,7 +3892,7 @@ case "${target}" in +@@ -4067,7 +4067,7 @@ case "${target}" in nvptx*-*-*) noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" ;; @@ -31,10 +33,10 @@ index 3dd206525a7..6881ce632f5 100755 sh*-*-elf) ;; diff --git a/configure.ac b/configure.ac -index 797a624621e..1f9256bbf18 100644 +index 3a1eb0357e5..d700c14ddf5 100644 --- a/configure.ac +++ b/configure.ac -@@ -1175,7 +1175,7 @@ case "${target}" in +@@ -1300,7 +1300,7 @@ case "${target}" in nvptx*-*-*) noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" ;; @@ -44,5 +46,5 @@ index 797a624621e..1f9256bbf18 100644 sh*-*-elf) ;; -- -2.31.1 +2.40.1 diff --git a/package/binutils/2.37/0002-poison-system-directories.patch b/package/binutils/2.40/0002-poison-system-directories.patch similarity index 87% rename from package/binutils/2.37/0002-poison-system-directories.patch rename to package/binutils/2.40/0002-poison-system-directories.patch index 1a5fe46575..4b927b630e 100644 --- a/package/binutils/2.37/0002-poison-system-directories.patch +++ b/package/binutils/2.40/0002-poison-system-directories.patch @@ -1,4 +1,4 @@ -From 4d8705ddb55897e8a74b617ab95736d520d9e1ea Mon Sep 17 00:00:00 2001 +From a6d90a842e349545ceb27f022317618dd99378ce Mon Sep 17 00:00:00 2001 From: Romain Naour Date: Fri, 25 Dec 2015 11:45:38 +0100 Subject: [PATCH] poison-system-directories @@ -6,6 +6,8 @@ Subject: [PATCH] poison-system-directories Patch adapted to binutils 2.23.2 and extended to use BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. +[Waldemar: rebase on top of 2.39] +Signed-off-by: Waldemar Brodkorb [Romain: rebase on top of 2.33.1] Signed-off-by: Romain Naour [Gustavo: adapt to binutils 2.25] @@ -13,6 +15,7 @@ Signed-off-by: Thomas Petazzoni Signed-off-by: Gustavo Zacarias Upstream-Status: Inappropriate [distribution: codesourcery] +Upstream: N/A [Buildroot specific] Patch originally created by Mark Hatle, forward-ported to binutils 2.21 by Scott Garman. @@ -78,10 +81,10 @@ Signed-off-by: Scott Garman 9 files changed, 89 insertions(+) diff --git a/ld/config.in b/ld/config.in -index 26d55a00d47..ffad464783c 100644 +index ad0dc6a106c..d21edaddce7 100644 --- a/ld/config.in +++ b/ld/config.in -@@ -43,6 +43,9 @@ +@@ -58,6 +58,9 @@ language is requested. */ #undef ENABLE_NLS @@ -92,10 +95,10 @@ index 26d55a00d47..ffad464783c 100644 #undef EXTRA_SHLIB_EXTENSION diff --git a/ld/configure b/ld/configure -index c197aaef3cb..882263aa43f 100755 +index 43b44be1dc6..28f054ea3f8 100755 --- a/ld/configure +++ b/ld/configure -@@ -829,6 +829,7 @@ with_lib_path +@@ -839,6 +839,7 @@ with_lib_path enable_targets enable_64_bit_bfd with_sysroot @@ -103,7 +106,7 @@ index c197aaef3cb..882263aa43f 100755 enable_gold enable_got enable_compressed_debug_sections -@@ -1498,6 +1499,8 @@ Optional Features: +@@ -1521,6 +1522,8 @@ Optional Features: --enable-checking enable run-time checks --enable-targets alternative target configurations --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) @@ -112,7 +115,7 @@ index c197aaef3cb..882263aa43f 100755 --enable-gold[=ARG] build gold [ARG={default,yes,no}] --enable-got= GOT handling scheme (target, single, negative, multigot) -@@ -15236,7 +15239,18 @@ else +@@ -15504,7 +15507,18 @@ else fi @@ -132,10 +135,10 @@ index c197aaef3cb..882263aa43f 100755 # Check whether --enable-got was given. if test "${enable_got+set}" = set; then : diff --git a/ld/configure.ac b/ld/configure.ac -index 8ea97c43cd4..0f246db67d8 100644 +index 77edac3258c..a74dac63038 100644 --- a/ld/configure.ac +++ b/ld/configure.ac -@@ -106,6 +106,16 @@ AC_SUBST(use_sysroot) +@@ -103,6 +103,16 @@ AC_SUBST(use_sysroot) AC_SUBST(TARGET_SYSTEM_ROOT) AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) @@ -153,10 +156,10 @@ index 8ea97c43cd4..0f246db67d8 100644 dnl "install_as_default" is set to false if gold is the default linker. dnl "installed_linker" is the installed BFD linker name. diff --git a/ld/ld.h b/ld/ld.h -index 35fafebfaed..74e66405de6 100644 +index 05649ff61b8..1818c227473 100644 --- a/ld/ld.h +++ b/ld/ld.h -@@ -162,6 +162,14 @@ typedef struct +@@ -163,6 +163,14 @@ typedef struct in the linker script. */ bool force_group_allocation; @@ -172,14 +175,13 @@ index 35fafebfaed..74e66405de6 100644 enum endian_enum endian; diff --git a/ld/ld.texi b/ld/ld.texi -index dd8f571d4e4..3ab210b41b9 100644 +index db3a9f09b45..9dacc934f80 100644 --- a/ld/ld.texi +++ b/ld/ld.texi -@@ -2863,6 +2863,18 @@ string identifying the original linked file does not change. - +@@ -2949,6 +2949,18 @@ string identifying the original linked file does not change. Passing @code{none} for @var{style} disables the setting from any @code{--build-id} options earlier on the command line. -+ + +@kindex --no-poison-system-directories +@item --no-poison-system-directories +Do not warn for @option{-L} options using system directories such as @@ -191,11 +193,12 @@ index dd8f571d4e4..3ab210b41b9 100644 +@item --error-poison-system-directories +Give an error instead of a warning for @option{-L} options using +system directories when cross linking. - @end table - - @c man end ++ + @kindex --package-metadata=@var{JSON} + @item --package-metadata=@var{JSON} + Request the creation of a @code{.note.package} ELF note section. The diff --git a/ld/ldfile.c b/ld/ldfile.c -index 9d0af06f1f6..7cdd3b1c1b1 100644 +index b8fd4e5d8e0..1f1d8e23bc9 100644 --- a/ld/ldfile.c +++ b/ld/ldfile.c @@ -117,6 +117,23 @@ ldfile_add_library_path (const char *name, bool cmdline) @@ -223,20 +226,20 @@ index 9d0af06f1f6..7cdd3b1c1b1 100644 /* Try to open a BFD for a lang_input_statement. */ diff --git a/ld/ldlex.h b/ld/ldlex.h -index 9e8bf5fb835..2f0fadfe0a3 100644 +index 0538f0a06a1..d1de3aec23d 100644 --- a/ld/ldlex.h +++ b/ld/ldlex.h -@@ -163,6 +163,8 @@ enum option_values +@@ -166,6 +166,8 @@ enum option_values OPTION_CTF_VARIABLES, OPTION_NO_CTF_VARIABLES, OPTION_CTF_SHARE_TYPES, + OPTION_NO_POISON_SYSTEM_DIRECTORIES, + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, - }; - - /* The initial parser states. */ + OPTION_WARN_EXECSTACK, + OPTION_NO_WARN_EXECSTACK, + OPTION_WARN_RWX_SEGMENTS, diff --git a/ld/ldmain.c b/ld/ldmain.c -index 42660eb9a3c..1aef9387f93 100644 +index 9290a189b0d..e2e3074e872 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -321,6 +321,8 @@ main (int argc, char **argv) @@ -249,10 +252,10 @@ index 42660eb9a3c..1aef9387f93 100644 /* We initialize DEMANGLING based on the environment variable COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the diff --git a/ld/lexsup.c b/ld/lexsup.c -index 00274c500d0..4f23b3a2da2 100644 +index c5960385572..da0a7829914 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c -@@ -595,6 +595,14 @@ static const struct ld_option ld_options[] = +@@ -613,6 +613,14 @@ static const struct ld_option ld_options[] = " is: share-unconflicted (default),\n" " share-duplicated"), TWO_DASHES }, @@ -267,7 +270,7 @@ index 00274c500d0..4f23b3a2da2 100644 }; #define OPTION_COUNT ARRAY_SIZE (ld_options) -@@ -607,6 +615,7 @@ parse_args (unsigned argc, char **argv) +@@ -625,6 +633,7 @@ parse_args (unsigned argc, char **argv) int ingroup = 0; char *default_dirlist = NULL; char *shortopts; @@ -275,7 +278,7 @@ index 00274c500d0..4f23b3a2da2 100644 struct option *longopts; struct option *really_longopts; int last_optind; -@@ -1643,6 +1652,14 @@ parse_args (unsigned argc, char **argv) +@@ -1692,6 +1701,14 @@ parse_args (unsigned argc, char **argv) } break; @@ -290,7 +293,7 @@ index 00274c500d0..4f23b3a2da2 100644 case OPTION_PUSH_STATE: input_flags.pushed = xmemdup (&input_flags, sizeof (input_flags), -@@ -1788,6 +1805,10 @@ parse_args (unsigned argc, char **argv) +@@ -1837,6 +1854,10 @@ parse_args (unsigned argc, char **argv) command_line.soname = NULL; } @@ -302,5 +305,5 @@ index 00274c500d0..4f23b3a2da2 100644 { einfo (_("%P: missing --end-group; added as last command line option\n")); -- -2.31.1 +2.40.1 diff --git a/package/binutils/2.38/0001-sh-conf.patch b/package/binutils/2.41/0001-sh-conf.patch similarity index 82% rename from package/binutils/2.38/0001-sh-conf.patch rename to package/binutils/2.41/0001-sh-conf.patch index fcc597e4d9..ffa23a88a7 100644 --- a/package/binutils/2.38/0001-sh-conf.patch +++ b/package/binutils/2.41/0001-sh-conf.patch @@ -1,4 +1,4 @@ -From 33f3c1f804efc2e4f97849081589efb70cda31e5 Mon Sep 17 00:00:00 2001 +From 87551ade276aa0db86c4567b3ac219c4f979b538 Mon Sep 17 00:00:00 2001 From: Romain Naour Date: Fri, 25 Dec 2015 11:38:13 +0100 Subject: [PATCH] sh-conf @@ -8,6 +8,8 @@ fix that up too.. now we're able to actually build a real toolchain for sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more inept targets than that one, really. Go look, I promise). +Upstream: N/A [Buildroot specific] + [Romain: rebase on top of 2.32] Signed-off-by: Romain Naour [Thomas: rebase on top of 2.29, in which sh64 support was removed.] @@ -18,10 +20,10 @@ Signed-off-by: Thomas Petazzoni 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure b/configure -index 3dd206525a7..6881ce632f5 100755 +index 417fc5a970c..fa8ba331796 100755 --- a/configure +++ b/configure -@@ -3892,7 +3892,7 @@ case "${target}" in +@@ -4067,7 +4067,7 @@ case "${target}" in nvptx*-*-*) noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" ;; @@ -31,10 +33,10 @@ index 3dd206525a7..6881ce632f5 100755 sh*-*-elf) ;; diff --git a/configure.ac b/configure.ac -index 797a624621e..1f9256bbf18 100644 +index 3a1eb0357e5..d700c14ddf5 100644 --- a/configure.ac +++ b/configure.ac -@@ -1175,7 +1175,7 @@ case "${target}" in +@@ -1300,7 +1300,7 @@ case "${target}" in nvptx*-*-*) noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" ;; @@ -44,5 +46,5 @@ index 797a624621e..1f9256bbf18 100644 sh*-*-elf) ;; -- -2.31.1 +2.40.1 diff --git a/package/binutils/2.38/0002-poison-system-directories.patch b/package/binutils/2.41/0002-poison-system-directories.patch similarity index 87% rename from package/binutils/2.38/0002-poison-system-directories.patch rename to package/binutils/2.41/0002-poison-system-directories.patch index 1a5fe46575..4b927b630e 100644 --- a/package/binutils/2.38/0002-poison-system-directories.patch +++ b/package/binutils/2.41/0002-poison-system-directories.patch @@ -1,4 +1,4 @@ -From 4d8705ddb55897e8a74b617ab95736d520d9e1ea Mon Sep 17 00:00:00 2001 +From a6d90a842e349545ceb27f022317618dd99378ce Mon Sep 17 00:00:00 2001 From: Romain Naour Date: Fri, 25 Dec 2015 11:45:38 +0100 Subject: [PATCH] poison-system-directories @@ -6,6 +6,8 @@ Subject: [PATCH] poison-system-directories Patch adapted to binutils 2.23.2 and extended to use BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. +[Waldemar: rebase on top of 2.39] +Signed-off-by: Waldemar Brodkorb [Romain: rebase on top of 2.33.1] Signed-off-by: Romain Naour [Gustavo: adapt to binutils 2.25] @@ -13,6 +15,7 @@ Signed-off-by: Thomas Petazzoni Signed-off-by: Gustavo Zacarias Upstream-Status: Inappropriate [distribution: codesourcery] +Upstream: N/A [Buildroot specific] Patch originally created by Mark Hatle, forward-ported to binutils 2.21 by Scott Garman. @@ -78,10 +81,10 @@ Signed-off-by: Scott Garman 9 files changed, 89 insertions(+) diff --git a/ld/config.in b/ld/config.in -index 26d55a00d47..ffad464783c 100644 +index ad0dc6a106c..d21edaddce7 100644 --- a/ld/config.in +++ b/ld/config.in -@@ -43,6 +43,9 @@ +@@ -58,6 +58,9 @@ language is requested. */ #undef ENABLE_NLS @@ -92,10 +95,10 @@ index 26d55a00d47..ffad464783c 100644 #undef EXTRA_SHLIB_EXTENSION diff --git a/ld/configure b/ld/configure -index c197aaef3cb..882263aa43f 100755 +index 43b44be1dc6..28f054ea3f8 100755 --- a/ld/configure +++ b/ld/configure -@@ -829,6 +829,7 @@ with_lib_path +@@ -839,6 +839,7 @@ with_lib_path enable_targets enable_64_bit_bfd with_sysroot @@ -103,7 +106,7 @@ index c197aaef3cb..882263aa43f 100755 enable_gold enable_got enable_compressed_debug_sections -@@ -1498,6 +1499,8 @@ Optional Features: +@@ -1521,6 +1522,8 @@ Optional Features: --enable-checking enable run-time checks --enable-targets alternative target configurations --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) @@ -112,7 +115,7 @@ index c197aaef3cb..882263aa43f 100755 --enable-gold[=ARG] build gold [ARG={default,yes,no}] --enable-got= GOT handling scheme (target, single, negative, multigot) -@@ -15236,7 +15239,18 @@ else +@@ -15504,7 +15507,18 @@ else fi @@ -132,10 +135,10 @@ index c197aaef3cb..882263aa43f 100755 # Check whether --enable-got was given. if test "${enable_got+set}" = set; then : diff --git a/ld/configure.ac b/ld/configure.ac -index 8ea97c43cd4..0f246db67d8 100644 +index 77edac3258c..a74dac63038 100644 --- a/ld/configure.ac +++ b/ld/configure.ac -@@ -106,6 +106,16 @@ AC_SUBST(use_sysroot) +@@ -103,6 +103,16 @@ AC_SUBST(use_sysroot) AC_SUBST(TARGET_SYSTEM_ROOT) AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) @@ -153,10 +156,10 @@ index 8ea97c43cd4..0f246db67d8 100644 dnl "install_as_default" is set to false if gold is the default linker. dnl "installed_linker" is the installed BFD linker name. diff --git a/ld/ld.h b/ld/ld.h -index 35fafebfaed..74e66405de6 100644 +index 05649ff61b8..1818c227473 100644 --- a/ld/ld.h +++ b/ld/ld.h -@@ -162,6 +162,14 @@ typedef struct +@@ -163,6 +163,14 @@ typedef struct in the linker script. */ bool force_group_allocation; @@ -172,14 +175,13 @@ index 35fafebfaed..74e66405de6 100644 enum endian_enum endian; diff --git a/ld/ld.texi b/ld/ld.texi -index dd8f571d4e4..3ab210b41b9 100644 +index db3a9f09b45..9dacc934f80 100644 --- a/ld/ld.texi +++ b/ld/ld.texi -@@ -2863,6 +2863,18 @@ string identifying the original linked file does not change. - +@@ -2949,6 +2949,18 @@ string identifying the original linked file does not change. Passing @code{none} for @var{style} disables the setting from any @code{--build-id} options earlier on the command line. -+ + +@kindex --no-poison-system-directories +@item --no-poison-system-directories +Do not warn for @option{-L} options using system directories such as @@ -191,11 +193,12 @@ index dd8f571d4e4..3ab210b41b9 100644 +@item --error-poison-system-directories +Give an error instead of a warning for @option{-L} options using +system directories when cross linking. - @end table - - @c man end ++ + @kindex --package-metadata=@var{JSON} + @item --package-metadata=@var{JSON} + Request the creation of a @code{.note.package} ELF note section. The diff --git a/ld/ldfile.c b/ld/ldfile.c -index 9d0af06f1f6..7cdd3b1c1b1 100644 +index b8fd4e5d8e0..1f1d8e23bc9 100644 --- a/ld/ldfile.c +++ b/ld/ldfile.c @@ -117,6 +117,23 @@ ldfile_add_library_path (const char *name, bool cmdline) @@ -223,20 +226,20 @@ index 9d0af06f1f6..7cdd3b1c1b1 100644 /* Try to open a BFD for a lang_input_statement. */ diff --git a/ld/ldlex.h b/ld/ldlex.h -index 9e8bf5fb835..2f0fadfe0a3 100644 +index 0538f0a06a1..d1de3aec23d 100644 --- a/ld/ldlex.h +++ b/ld/ldlex.h -@@ -163,6 +163,8 @@ enum option_values +@@ -166,6 +166,8 @@ enum option_values OPTION_CTF_VARIABLES, OPTION_NO_CTF_VARIABLES, OPTION_CTF_SHARE_TYPES, + OPTION_NO_POISON_SYSTEM_DIRECTORIES, + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, - }; - - /* The initial parser states. */ + OPTION_WARN_EXECSTACK, + OPTION_NO_WARN_EXECSTACK, + OPTION_WARN_RWX_SEGMENTS, diff --git a/ld/ldmain.c b/ld/ldmain.c -index 42660eb9a3c..1aef9387f93 100644 +index 9290a189b0d..e2e3074e872 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -321,6 +321,8 @@ main (int argc, char **argv) @@ -249,10 +252,10 @@ index 42660eb9a3c..1aef9387f93 100644 /* We initialize DEMANGLING based on the environment variable COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the diff --git a/ld/lexsup.c b/ld/lexsup.c -index 00274c500d0..4f23b3a2da2 100644 +index c5960385572..da0a7829914 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c -@@ -595,6 +595,14 @@ static const struct ld_option ld_options[] = +@@ -613,6 +613,14 @@ static const struct ld_option ld_options[] = " is: share-unconflicted (default),\n" " share-duplicated"), TWO_DASHES }, @@ -267,7 +270,7 @@ index 00274c500d0..4f23b3a2da2 100644 }; #define OPTION_COUNT ARRAY_SIZE (ld_options) -@@ -607,6 +615,7 @@ parse_args (unsigned argc, char **argv) +@@ -625,6 +633,7 @@ parse_args (unsigned argc, char **argv) int ingroup = 0; char *default_dirlist = NULL; char *shortopts; @@ -275,7 +278,7 @@ index 00274c500d0..4f23b3a2da2 100644 struct option *longopts; struct option *really_longopts; int last_optind; -@@ -1643,6 +1652,14 @@ parse_args (unsigned argc, char **argv) +@@ -1692,6 +1701,14 @@ parse_args (unsigned argc, char **argv) } break; @@ -290,7 +293,7 @@ index 00274c500d0..4f23b3a2da2 100644 case OPTION_PUSH_STATE: input_flags.pushed = xmemdup (&input_flags, sizeof (input_flags), -@@ -1788,6 +1805,10 @@ parse_args (unsigned argc, char **argv) +@@ -1837,6 +1854,10 @@ parse_args (unsigned argc, char **argv) command_line.soname = NULL; } @@ -302,5 +305,5 @@ index 00274c500d0..4f23b3a2da2 100644 { einfo (_("%P: missing --end-group; added as last command line option\n")); -- -2.31.1 +2.40.1 diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host index 5dd2af2f9c..bc7dc4443c 100644 --- a/package/binutils/Config.in.host +++ b/package/binutils/Config.in.host @@ -5,41 +5,43 @@ config BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI default y depends on !BR2_microblaze +config BR2_PACKAGE_BINUTILS_HAS_NO_LIBSFRAME + bool + choice prompt "Binutils Version" - default BR2_BINUTILS_VERSION_2_38_X if !BR2_arc + default BR2_BINUTILS_VERSION_2_40_X if !BR2_arc default BR2_BINUTILS_VERSION_ARC if BR2_arc help Select the version of binutils you wish to use. -config BR2_BINUTILS_VERSION_2_37_X - bool "binutils 2.37" - # AVX512FP16 instructions were not supported before binutils - # 2.38 - depends on !BR2_X86_CPU_HAS_AVX512 - -config BR2_BINUTILS_VERSION_2_38_X - bool "binutils 2.38" - config BR2_BINUTILS_VERSION_2_39_X bool "binutils 2.39" + select BR2_PACKAGE_BINUTILS_HAS_NO_LIBSFRAME + +config BR2_BINUTILS_VERSION_2_40_X + bool "binutils 2.40" + +config BR2_BINUTILS_VERSION_2_41_X + bool "binutils 2.41" config BR2_BINUTILS_VERSION_ARC bool "binutils arc (2.34.50)" depends on BR2_arc + select BR2_PACKAGE_BINUTILS_HAS_NO_LIBSFRAME endchoice config BR2_BINUTILS_VERSION string default "arc-2020.09-release" if BR2_BINUTILS_VERSION_ARC - default "2.37" if BR2_BINUTILS_VERSION_2_37_X - default "2.38" if BR2_BINUTILS_VERSION_2_38_X default "2.39" if BR2_BINUTILS_VERSION_2_39_X + default "2.40" if BR2_BINUTILS_VERSION_2_40_X + default "2.41" if BR2_BINUTILS_VERSION_2_41_X config BR2_BINUTILS_GPROFNG bool "gprofng support" - depends on BR2_BINUTILS_VERSION_2_39_X + depends on !BR2_BINUTILS_VERSION_ARC help This option enables support for gprofng, a new profiler. diff --git a/package/binutils/binutils.hash b/package/binutils/binutils.hash index 1a8574de92..564a4c3bd7 100644 --- a/package/binutils/binutils.hash +++ b/package/binutils/binutils.hash @@ -1,7 +1,7 @@ -# From ftp://gcc.gnu.org/pub/binutils/releases/sha512.sum -sha512 5c11aeef6935860a6819ed3a3c93371f052e52b4bdc5033da36037c1544d013b7f12cb8d561ec954fe7469a68f1b66f1a3cd53d5a3af7293635a90d69edd15e7 binutils-2.37.tar.xz -sha512 8bf0b0d193c9c010e0518ee2b2e5a830898af206510992483b427477ed178396cd210235e85fd7bd99a96fc6d5eedbeccbd48317a10f752b7336ada8b2bb826d binutils-2.38.tar.xz +# From https://gcc.gnu.org/pub/binutils/releases/sha512.sum sha512 68e038f339a8c21faa19a57bbc447a51c817f47c2e06d740847c6e9cc3396c025d35d5369fa8c3f8b70414757c89f0e577939ddc0d70f283182504920f53b0a3 binutils-2.39.tar.xz +sha512 a37e042523bc46494d99d5637c3f3d8f9956d9477b748b3b1f6d7dfbb8d968ed52c932e88a4e946c6f77b8f48f1e1b360ca54c3d298f17193f3b4963472f6925 binutils-2.40.tar.xz +sha512 5df45d0bd6ddabdce4f35878c041e46a92deef01e7dea5facc97fd65cc06b59abc6fba0eb454b68e571c7e14038dc823fe7f2263843e6e627b7444eaf0fe9374 binutils-2.41.tar.xz # Locally calculated (fetched from Github) sha512 76a8227a19218435319c660e4983ea17985194b7f496f163e97543e7f6fd3e9249241fdc05a16ba512fba96a1d846c1f7b080983404d821d6215f10e7f11e238 binutils-gdb-arc-2020.09-release.tar.gz diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk index 1ef7ee57d2..4bc1b69fa0 100644 --- a/package/binutils/binutils.mk +++ b/package/binutils/binutils.mk @@ -11,7 +11,7 @@ ifeq ($(BINUTILS_VERSION),) ifeq ($(BR2_arc),y) BINUTILS_VERSION = arc-2020.09-release else -BINUTILS_VERSION = 2.38 +BINUTILS_VERSION = 2.40 endif endif # BINUTILS_VERSION @@ -54,7 +54,8 @@ BINUTILS_CONF_OPTS = \ --with-system-zlib \ --disable-gprofng \ $(BINUTILS_DISABLE_GDB_CONF_OPTS) \ - $(BINUTILS_EXTRA_CONFIG_OPTIONS) + $(BINUTILS_EXTRA_CONFIG_OPTIONS) \ + --without-zstd ifeq ($(BR2_STATIC_LIBS),y) BINUTILS_CONF_OPTS += --disable-plugins @@ -90,7 +91,8 @@ HOST_BINUTILS_CONF_OPTS = \ --enable-plugins \ --enable-lto \ $(BINUTILS_DISABLE_GDB_CONF_OPTS) \ - $(BINUTILS_EXTRA_CONFIG_OPTIONS) + $(BINUTILS_EXTRA_CONFIG_OPTIONS) \ + --without-zstd ifeq ($(BR2_BINUTILS_GPROFNG),y) HOST_BINUTILS_DEPENDENCIES += host-bison @@ -103,12 +105,19 @@ endif # our TARGET_CONFIGURE_ARGS are taken into consideration for those BINUTILS_MAKE_ENV = $(TARGET_CONFIGURE_ARGS) +ifeq ($(BR2_PACKAGE_BINUTILS_HAS_NO_LIBSFRAME),) +define BINUTILS_INSTALL_STAGING_LIBSFRAME + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libsframe DESTDIR=$(STAGING_DIR) install +endef +endif + # We just want libbfd, libiberty and libopcodes, # not the full-blown binutils in staging define BINUTILS_INSTALL_STAGING_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/bfd DESTDIR=$(STAGING_DIR) install $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/opcodes DESTDIR=$(STAGING_DIR) install $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libiberty DESTDIR=$(STAGING_DIR) install + $(BINUTILS_INSTALL_STAGING_LIBSFRAME) endef # If we don't want full binutils on target diff --git a/package/bitcoin/0002-Add-missing-includes-to-fix-gcc-13-compile-error.patch b/package/bitcoin/0002-Add-missing-includes-to-fix-gcc-13-compile-error.patch new file mode 100644 index 0000000000..22c0ca2adf --- /dev/null +++ b/package/bitcoin/0002-Add-missing-includes-to-fix-gcc-13-compile-error.patch @@ -0,0 +1,48 @@ +From 339a95b7537b47e5d6b732c0633a00afd96e3ca0 Mon Sep 17 00:00:00 2001 +From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> +Date: Thu, 19 Jan 2023 19:35:43 +0100 +Subject: [PATCH] Add missing includes to fix gcc-13 compile error + +Upstream: https://github.com/bitcoin/bitcoin/commit/fadeb6b103cb441e0e91ef506ef29febabb10715 + +Signed-off-by: Bernd Kuhls +--- + src/support/lockedpool.cpp | 3 +++ + src/support/lockedpool.h | 4 ++-- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/support/lockedpool.cpp b/src/support/lockedpool.cpp +index 26de780f2..11131d551 100644 +--- a/src/support/lockedpool.cpp ++++ b/src/support/lockedpool.cpp +@@ -22,6 +22,9 @@ + #endif + + #include ++#include ++#include ++#include + #ifdef ARENA_DEBUG + #include + #include +diff --git a/src/support/lockedpool.h b/src/support/lockedpool.h +index b9e2e99d1..25b4c0f36 100644 +--- a/src/support/lockedpool.h ++++ b/src/support/lockedpool.h +@@ -5,11 +5,11 @@ + #ifndef BITCOIN_SUPPORT_LOCKEDPOOL_H + #define BITCOIN_SUPPORT_LOCKEDPOOL_H + +-#include ++#include + #include + #include +-#include + #include ++#include + #include + + /** +-- +2.39.2 + diff --git a/package/bitcoin/0003-refactor-add-most-of-src-util-to-iwyu.patch b/package/bitcoin/0003-refactor-add-most-of-src-util-to-iwyu.patch new file mode 100644 index 0000000000..095fa648dd --- /dev/null +++ b/package/bitcoin/0003-refactor-add-most-of-src-util-to-iwyu.patch @@ -0,0 +1,34 @@ +From c187efa907fd64ea2c7b7d699c5c97f9d5b79960 Mon Sep 17 00:00:00 2001 +From: fanquake +Date: Thu, 9 Jun 2022 16:26:55 +0100 +Subject: [PATCH] refactor: add most of src/util to iwyu + +These files change infrequently, and not much header shuffling is required. + +We don't add everything in src/util/ yet, because IWYU makes some +dubious suggestions, which I'm going to follow up with upstream. + +Upstream: https://github.com/bitcoin/bitcoin/commit/07f2c25d04c39a0074e1d9ee1b24b3e359c8153f + +[Bernd: backported relevant part from upstream commit to version 0.21.2 + to fix build error with gcc 13.x] +Signed-off-by: Bernd Kuhls +--- + src/util/bip32.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/util/bip32.h b/src/util/bip32.h +index 347e83db9..6ef051c48 100644 +--- a/src/util/bip32.h ++++ b/src/util/bip32.h +@@ -6,6 +6,7 @@ + #define BITCOIN_UTIL_BIP32_H + + #include ++#include + #include + #include + +-- +2.39.2 + diff --git a/package/bitcoin/0004-src-util-string-h-fix-gcc13.patch b/package/bitcoin/0004-src-util-string-h-fix-gcc13.patch new file mode 100644 index 0000000000..00a9ef2b97 --- /dev/null +++ b/package/bitcoin/0004-src-util-string-h-fix-gcc13.patch @@ -0,0 +1,23 @@ +From fa2deae2a86417d7e0d4cd33fb933b1000d20313 Mon Sep 17 00:00:00 2001 +From: MacroFake +Date: Thu, 5 May 2022 08:28:29 +0200 +Subject: [PATCH] Wrap boost::replace_all + +Upstream: https://github.com/bitcoin/bitcoin/commit/fa2deae2a86417d7e0d4cd33fb933b1000d20313 + +[Bernd: backported relevant part from upstream commit to version 0.21.2 + to fix build error with gcc 13.x] +Signed-off-by: Bernd Kuhls +--- +diff --git a/src/util/string.h b/src/util/string.h +index 2e91347b27a10..df20e34ae9aaa 100644 +--- a/src/util/string.h ++++ b/src/util/string.h +@@ -9,6 +9,7 @@ + + #include + #include ++#include + #include + #include + #include diff --git a/package/bitwise/bitwise.hash b/package/bitwise/bitwise.hash index c8daa0aa64..9da1a4c0c5 100644 --- a/package/bitwise/bitwise.hash +++ b/package/bitwise/bitwise.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 f524f794188a10defc4df673d8cf0b3739f93e58e93aff0cdb8a99fbdcca2ffb bitwise-v0.43.tar.gz +sha256 806271fa5bf31de0600315e8720004a8f529954480e991ca84a9868dc1cae97e bitwise-v0.50.tar.gz sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/bitwise/bitwise.mk b/package/bitwise/bitwise.mk index 33d8f6776b..5bce92fcf7 100644 --- a/package/bitwise/bitwise.mk +++ b/package/bitwise/bitwise.mk @@ -4,7 +4,7 @@ # ################################################################################ -BITWISE_VERSION = 0.43 +BITWISE_VERSION = 0.50 BITWISE_SITE = https://github.com/mellowcandle/bitwise/releases/download/v$(BITWISE_VERSION) BITWISE_SOURCE = bitwise-v$(BITWISE_VERSION).tar.gz BITWISE_DEPENDENCIES = ncurses readline diff --git a/package/bluez-alsa/Config.in b/package/bluez-alsa/Config.in index 73ae3d5333..d70172646f 100644 --- a/package/bluez-alsa/Config.in +++ b/package/bluez-alsa/Config.in @@ -13,6 +13,9 @@ config BR2_PACKAGE_BLUEZ_ALSA select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO select BR2_PACKAGE_LIBGLIB2 select BR2_PACKAGE_SBC + # samplerate ALSA plugin is needed for proper sample rate + # conversion with Bluetooth devices + select BR2_PACKAGE_LIBSAMPLERATE if BR2_PACKAGE_ALSA_PLUGINS help Bluetooth Audio ALSA Backend. diff --git a/package/bluez-alsa/bluez-alsa.hash b/package/bluez-alsa/bluez-alsa.hash index ad7fe62708..5513865603 100644 --- a/package/bluez-alsa/bluez-alsa.hash +++ b/package/bluez-alsa/bluez-alsa.hash @@ -1,3 +1,3 @@ # Locally calculated: -sha256 ce5e060e61669d61d44f5f9bad34a7b88378376e9d49d31482406a68127a6b29 bluez-alsa-4.0.0.tar.gz -sha256 aaebd0cca73b0f361cb7f1bffa40418b2485fc10bfae7a47c193679c7e26d2e3 LICENSE +sha256 b69a3e6dd69315194403ee930ac1553aed3fb9a3988e502ae5c24a8bfef70f9f bluez-alsa-4.1.1.tar.gz +sha256 956564dcf06ba65cd7a5eb6cdfd695e2ab0f09ea9684e4eaf079f5d533bd206d LICENSE diff --git a/package/bluez-alsa/bluez-alsa.mk b/package/bluez-alsa/bluez-alsa.mk index 83dfce6177..38682c2755 100644 --- a/package/bluez-alsa/bluez-alsa.mk +++ b/package/bluez-alsa/bluez-alsa.mk @@ -4,7 +4,7 @@ # ################################################################################ -BLUEZ_ALSA_VERSION = 4.0.0 +BLUEZ_ALSA_VERSION = 4.1.1 BLUEZ_ALSA_SITE = $(call github,Arkq,bluez-alsa,v$(BLUEZ_ALSA_VERSION)) BLUEZ_ALSA_LICENSE = MIT BLUEZ_ALSA_LICENSE_FILES = LICENSE @@ -20,6 +20,10 @@ BLUEZ_ALSA_CONF_OPTS = \ --with-alsaplugindir=/usr/lib/alsa-lib \ --with-alsaconfdir=/etc/alsa/conf.d +ifeq ($(BR2_PACKAGE_ALSA_PLUGINS),y) +BLUEZ_ALSA_DEPENDENCIES += alsa-plugins +endif + ifeq ($(BR2_PACKAGE_FDK_AAC),y) BLUEZ_ALSA_DEPENDENCIES += fdk-aac BLUEZ_ALSA_CONF_OPTS += --enable-aac diff --git a/package/bluez5_utils-headers/bluez5_utils-headers.mk b/package/bluez5_utils-headers/bluez5_utils-headers.mk index 8ca3764935..0790dd7e0e 100644 --- a/package/bluez5_utils-headers/bluez5_utils-headers.mk +++ b/package/bluez5_utils-headers/bluez5_utils-headers.mk @@ -5,7 +5,7 @@ ################################################################################ # Keep the version and patches in sync with bluez5_utils -BLUEZ5_UTILS_HEADERS_VERSION = 5.66 +BLUEZ5_UTILS_HEADERS_VERSION = 5.68 BLUEZ5_UTILS_HEADERS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz BLUEZ5_UTILS_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth BLUEZ5_UTILS_HEADERS_DL_SUBDIR = bluez5_utils diff --git a/package/bluez5_utils/0001-configure-Check-ell-path.patch b/package/bluez5_utils/0001-configure-Check-ell-path.patch new file mode 100644 index 0000000000..3e5f7c6516 --- /dev/null +++ b/package/bluez5_utils/0001-configure-Check-ell-path.patch @@ -0,0 +1,35 @@ +From 124187ef9abed60a7c40f751153e9c4516cd1f91 Mon Sep 17 00:00:00 2001 +From: Rudi Heitbaum +Date: Sat, 1 Jul 2023 01:31:20 +0000 +Subject: [PATCH] configure: Check ell path + +Use of AC_CHECK_FILE prevents cross compilation. +Instead use test to support cross compiling. + +Signed-off-by: Rudi Heitbaum + +Upstream: https://github.com/bluez/bluez/pull/546 + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index eff297960..bc7edfcd3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -298,9 +298,10 @@ if (test "${enable_external_ell}" = "yes"); then + AC_SUBST(ELL_LIBS) + fi + if (test "${enable_external_ell}" != "yes"); then +- AC_CHECK_FILE(${srcdir}/ell/ell.h, dummy=yes, +- AC_CHECK_FILE(${srcdir}/../ell/ell/ell.h, dummy=yes, +- AC_MSG_ERROR(ELL source is required or use --enable-external-ell))) ++ if (test ! -f ${srcdir}/ell/ell.h) && ++ (test ! -f ${srcdir}/../ell/ell/ell.h); then ++ AC_MSG_ERROR(ELL source is required or use --enable-external-ell) ++ fi + fi + AM_CONDITIONAL(EXTERNAL_ELL, test "${enable_external_ell}" = "yes" || + (test "${enable_btpclient}" != "yes" && diff --git a/package/bluez5_utils/0001-musl-max-input.patch b/package/bluez5_utils/0001-musl-max-input.patch deleted file mode 100644 index 8612bac07f..0000000000 --- a/package/bluez5_utils/0001-musl-max-input.patch +++ /dev/null @@ -1,37 +0,0 @@ -From ca6546fe521360fcf905bc115b893f322e706cb2 Mon Sep 17 00:00:00 2001 -From: Sam James -Date: Tue, 31 Jan 2023 05:52:58 +0000 -Subject: shared: define MAX_INPUT for musl - -musl systems don't have MAX_INPUT. Just define it to _POSIX_MAX_INPUT -which musl does have if it's not already defined. - -Note that on glibc, the values match anyway (as of glibc-2.36), and -indeed POSIX_MAX_INPUT has the same value on musl too. - -Bug: https://bugs.gentoo.org/888467 -Upstream: https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=ca6546fe521360fcf905bc115b893f322e706cb2 -Signed-off-by: Florian Fainelli ---- - src/shared/util.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/shared/util.c b/src/shared/util.c -index 2f0ae0e86..b466fb001 100644 ---- a/src/shared/util.c -+++ b/src/shared/util.c -@@ -28,6 +28,11 @@ - #include - #endif - -+/* define MAX_INPUT for musl */ -+#ifndef MAX_INPUT -+#define MAX_INPUT _POSIX_MAX_INPUT -+#endif -+ - #include "src/shared/util.h" - - void *util_malloc(size_t size) --- -cgit - diff --git a/package/bluez5_utils/bluez5_utils.hash b/package/bluez5_utils/bluez5_utils.hash index 9467647592..45952e60f1 100644 --- a/package/bluez5_utils/bluez5_utils.hash +++ b/package/bluez5_utils/bluez5_utils.hash @@ -1,5 +1,5 @@ # From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc: -sha256 39fea64b590c9492984a0c27a89fc203e1cdc74866086efb8f4698677ab2b574 bluez-5.66.tar.xz +sha256 fc505e6445cb579a55cacee6821fe70d633921522043d322b696de0a175ff933 bluez-5.68.tar.xz # Locally computed sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/package/bluez5_utils/bluez5_utils.mk b/package/bluez5_utils/bluez5_utils.mk index 37a2e79a7a..82800c0430 100644 --- a/package/bluez5_utils/bluez5_utils.mk +++ b/package/bluez5_utils/bluez5_utils.mk @@ -5,10 +5,12 @@ ################################################################################ # Keep the version and patches in sync with bluez5_utils-headers -BLUEZ5_UTILS_VERSION = 5.66 +BLUEZ5_UTILS_VERSION = 5.68 BLUEZ5_UTILS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz BLUEZ5_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth BLUEZ5_UTILS_INSTALL_STAGING = YES +# 0001-configure-Check-ell-path.patch +BLUEZ5_UTILS_AUTORECONF = YES BLUEZ5_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+ BLUEZ5_UTILS_LICENSE_FILES = COPYING COPYING.LIB BLUEZ5_UTILS_CPE_ID_VENDOR = bluez diff --git a/package/bootgen/0001-Fix-build-on-machines-with-modern-flex.patch b/package/bootgen/0001-Fix-build-on-machines-with-modern-flex.patch deleted file mode 100644 index ea82f5e70c..0000000000 --- a/package/bootgen/0001-Fix-build-on-machines-with-modern-flex.patch +++ /dev/null @@ -1,133 +0,0 @@ -From 7251dce3dc974c7372e7024ade3e8a455266cfd2 Mon Sep 17 00:00:00 2001 -From: Peter Korsgaard -Date: Fri, 18 Mar 2022 09:02:31 +0100 -Subject: [PATCH] Fix build on machines with modern flex - -Bootgen embeds an old version of flex, but uses the system include syntax -(#include <>) to reference it, causing conflicts on systems with the -development headers for a modern flex version installed, leading to build -issues like: - -../bisonflex/bif.yy.cpp: In member function 'virtual int BIF::FlexScanner::yylex()': -../bisonflex/bif.yy.cpp:1608:18: error: no match for 'operator=' (operand types are 'std::istream' {aka 'std::basic_istream'} and 'std::istream*' {aka 'std::basic_istream*'}) - -Fix it by using normal local #include statements by: - -sed -i 's//"FlexLexer.h"/g' * - -Signed-off-by: Peter Korsgaard -[Submitted upstream: https://github.com/Xilinx/bootgen/pull/20] ---- - FlexLexer.h | 6 +++--- - bif.yy.cpp | 2 +- - bifscanner.h | 2 +- - cmdoptions.yy.cpp | 2 +- - cmdoptionsscanner.h | 2 +- - reginit.yy.cpp | 2 +- - reginitscanner.h | 2 +- - 7 files changed, 9 insertions(+), 9 deletions(-) - -diff --git a/FlexLexer.h b/FlexLexer.h -index b115b5d..1c0386f 100755 ---- a/FlexLexer.h -+++ b/FlexLexer.h -@@ -33,15 +33,15 @@ - // - // If you want to create multiple lexer classes, you use the -P flag - // to rename each yyFlexLexer to some other xxFlexLexer. You then --// include in your other sources once per lexer class: -+// include "FlexLexer.h" in your other sources once per lexer class: - // - // #undef yyFlexLexer - // #define yyFlexLexer xxFlexLexer --// #include -+// #include "FlexLexer.h" - // - // #undef yyFlexLexer - // #define yyFlexLexer zzFlexLexer --// #include -+// #include "FlexLexer.h" - // ... - - #ifndef __FLEX_LEXER_H -diff --git a/bif.yy.cpp b/bif.yy.cpp -index 7dd0841..9e09267 100644 ---- a/bif.yy.cpp -+++ b/bif.yy.cpp -@@ -379,7 +379,7 @@ typedef unsigned char YY_CHAR; - - #define yytext_ptr yytext - --#include -+#include "FlexLexer.h" - - int yyFlexLexer::yywrap() { return 1; } - int yyFlexLexer::yylex() -diff --git a/bifscanner.h b/bifscanner.h -index a6ec9e4..ded78da 100755 ---- a/bifscanner.h -+++ b/bifscanner.h -@@ -28,7 +28,7 @@ - #if ! defined(yyFlexLexerOnce) - #undef yyFlexLexer - #define yyFlexLexer bifFlexLexer --#include -+#include "FlexLexer.h" - #endif - - // Override the interface for yylex since we namespaced it -diff --git a/cmdoptions.yy.cpp b/cmdoptions.yy.cpp -index 6ee80de..1acfcce 100644 ---- a/cmdoptions.yy.cpp -+++ b/cmdoptions.yy.cpp -@@ -379,7 +379,7 @@ typedef unsigned char YY_CHAR; - - #define yytext_ptr yytext - --#include -+#include "FlexLexer.h" - - int yyFlexLexer::yywrap() { return 1; } - int yyFlexLexer::yylex() -diff --git a/cmdoptionsscanner.h b/cmdoptionsscanner.h -index a48af09..e02c1f1 100755 ---- a/cmdoptionsscanner.h -+++ b/cmdoptionsscanner.h -@@ -29,7 +29,7 @@ - - #undef yyFlexLexer - #define yyFlexLexer reginitFlexLexer --#include -+#include "FlexLexer.h" - #endif - - // Override the interface for yylex since we namespaced it -diff --git a/reginit.yy.cpp b/reginit.yy.cpp -index 8422867..ff088f9 100644 ---- a/reginit.yy.cpp -+++ b/reginit.yy.cpp -@@ -379,7 +379,7 @@ typedef unsigned char YY_CHAR; - - #define yytext_ptr yytext - --#include -+#include "FlexLexer.h" - - int yyFlexLexer::yywrap() { return 1; } - int yyFlexLexer::yylex() -diff --git a/reginitscanner.h b/reginitscanner.h -index 4e78af9..23177be 100755 ---- a/reginitscanner.h -+++ b/reginitscanner.h -@@ -29,7 +29,7 @@ - - #undef yyFlexLexer - #define yyFlexLexer reginitFlexLexer --#include -+#include "FlexLexer.h" - #endif - - // Override the interface for yylex since we namespaced it --- -2.30.2 - diff --git a/package/bootgen/0001-Refix-builds-on-machines-with-modern-flex-versions.patch b/package/bootgen/0001-Refix-builds-on-machines-with-modern-flex-versions.patch new file mode 100644 index 0000000000..b13dd2b03b --- /dev/null +++ b/package/bootgen/0001-Refix-builds-on-machines-with-modern-flex-versions.patch @@ -0,0 +1,69 @@ +From 29a4e487527d109f517fc47a7c284b7732b27a10 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Mon, 12 Jun 2023 21:04:25 +0200 +Subject: [PATCH] Refix builds on machines with modern flex versions + +Bootgen embeds an old version of flex, but uses the system include syntax +(#include <>) to reference it, causing conflicts on systems with the +development headers for a modern flex version installed, leading to build +issues like: + +../bisonflex/cmdoptions.yy.cpp: In member function 'virtual int CO::FlexScanner::yylex()': +../bisonflex/cmdoptions.yy.cpp:1362:18: error: no match for 'operator=' (operand types are 'std::istream' {aka 'std::basic_istream'} and 'std::istream*' {aka 'std::basic_istream*'}) + +http://autobuild.buildroot.net/results/293/2936d9b054269b7055e66ab5a7f7c1f7f4926d48/build-end.log + +Fix it by using normal local #include statements by: + +sed -i 's//"FlexLexer.h"/g' * + +Notice: This was already fixed on master with: +https://github.com/Xilinx/bootgen/pull/20 + +Notice: The patch was not applied, instead a different patch with the same +content was applied to master: +https://github.com/Xilinx/bootgen/commit/af4f7083ea92931a07e47995eb2bc2a348c577ed + +This patch was not applied to the xlnx_rel_v2023.1 branch, instead most +of the content was included in: +https://github.com/Xilinx/bootgen/commit/bfba91b2c84160dc203ff09f0e930d82ed06a83a + +But the cmdoptions.yy.cpp and reginit.yy.cpp hunks were accidently dropped: +https://github.com/Xilinx/bootgen/commit/bfba91b2c84160dc203ff09f0e930d82ed06a83a#diff-e0287adb420dbecc112acdf7d4a1efba8ea6cbf06401e4e8679b8ffd22a091d8 + +Upstream: https://github.com/Xilinx/bootgen/pull/24 +Signed-off-by: Peter Korsgaard +--- + cmdoptions.yy.cpp | 2 +- + reginit.yy.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/cmdoptions.yy.cpp b/cmdoptions.yy.cpp +index 38fed35..4e940ab 100644 +--- a/cmdoptions.yy.cpp ++++ b/cmdoptions.yy.cpp +@@ -379,7 +379,7 @@ typedef unsigned char YY_CHAR; + + #define yytext_ptr yytext + +-#include ++#include "FlexLexer.h" + + int yyFlexLexer::yywrap() { return 1; } + int yyFlexLexer::yylex() +diff --git a/reginit.yy.cpp b/reginit.yy.cpp +index d830734..dede473 100644 +--- a/reginit.yy.cpp ++++ b/reginit.yy.cpp +@@ -379,7 +379,7 @@ typedef unsigned char YY_CHAR; + + #define yytext_ptr yytext + +-#include ++#include "FlexLexer.h" + + int yyFlexLexer::yywrap() { return 1; } + int yyFlexLexer::yylex() +-- +2.30.2 + diff --git a/package/bootgen/bootgen.hash b/package/bootgen/bootgen.hash index 5d77c164f3..937509c859 100644 --- a/package/bootgen/bootgen.hash +++ b/package/bootgen/bootgen.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 7e07c75aa3e3965c8e33faefde037877f78130451cebc2056b096db9c66acbb3 bootgen-xilinx_v2022.2.tar.gz +sha256 2fda35fac28f5753cfdd9c6d5c07fd2b018d55984681af79415a67ba5372ea8e bootgen-xilinx_v2023.1.tar.gz sha256 4da5f5eff0592e5d275f1871faf9e9a4fc0f6346027bfb777fa59d0aa6a59aa3 LICENSE diff --git a/package/bootgen/bootgen.mk b/package/bootgen/bootgen.mk index 88bc73b604..d83980d925 100644 --- a/package/bootgen/bootgen.mk +++ b/package/bootgen/bootgen.mk @@ -4,7 +4,7 @@ # ################################################################################ -BOOTGEN_VERSION = xilinx_v2022.2 +BOOTGEN_VERSION = xilinx_v2023.1 BOOTGEN_SITE = $(call github,Xilinx,bootgen,$(BOOTGEN_VERSION)) HOST_BOOTGEN_DEPENDENCIES = host-openssl host-pkgconf BOOTGEN_LICENSE = Apache-2.0 diff --git a/package/bpftool/Config.in b/package/bpftool/Config.in index 461be9e5b4..d131ec566e 100644 --- a/package/bpftool/Config.in +++ b/package/bpftool/Config.in @@ -2,6 +2,7 @@ config BR2_PACKAGE_BPFTOOL_ARCH_SUPPORTS bool # see libbpf/src/bpf.c default y if BR2_arc + default y if BR2_arm || BR2_armeb default y if BR2_aarch64 || BR2_aarch64_be default y if BR2_i386 || BR2_x86_64 default y if BR2_sparc || BR2_sparc64 diff --git a/package/busybox/busybox.config b/package/busybox/busybox.config index f0a5d9725a..f1e39916f3 100644 --- a/package/busybox/busybox.config +++ b/package/busybox/busybox.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Busybox version: 1.36.0 -# Wed Jul 5 02:45:15 2023 +# Busybox version: 1.36.1 +# Tue Nov 7 11:04:05 2023 # CONFIG_HAVE_DOT_CONFIG=y @@ -802,7 +802,7 @@ CONFIG_FEATURE_HDPARM_GET_IDENTITY=y # CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set # CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set # CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set -CONFIG_HEXEDIT=y +# CONFIG_HEXEDIT is not set CONFIG_I2CGET=y CONFIG_I2CSET=y CONFIG_I2CDUMP=y @@ -976,10 +976,10 @@ CONFIG_TELNET=y CONFIG_FEATURE_TELNET_TTYPE=y CONFIG_FEATURE_TELNET_AUTOLOGIN=y CONFIG_FEATURE_TELNET_WIDTH=y -CONFIG_TELNETD=y -CONFIG_FEATURE_TELNETD_STANDALONE=y -CONFIG_FEATURE_TELNETD_PORT_DEFAULT=23 -CONFIG_FEATURE_TELNETD_INETD_WAIT=y +# CONFIG_TELNETD is not set +# CONFIG_FEATURE_TELNETD_STANDALONE is not set +CONFIG_FEATURE_TELNETD_PORT_DEFAULT=0 +# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set CONFIG_TFTP=y # CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set CONFIG_FEATURE_TFTP_HPA_COMPAT=y diff --git a/package/busybox/busybox.hash b/package/busybox/busybox.hash index 6d1c36906d..6eba365ecc 100644 --- a/package/busybox/busybox.hash +++ b/package/busybox/busybox.hash @@ -1,5 +1,5 @@ -# From https://busybox.net/downloads/busybox-1.35.0.tar.bz2.sha256 -sha256 542750c8af7cb2630e201780b4f99f3dcceeb06f505b479ec68241c1e6af61a5 busybox-1.36.0.tar.bz2 +# From https://busybox.net/downloads/busybox-1.36.1.tar.bz2.sha256 +sha256 b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314 busybox-1.36.1.tar.bz2 # Locally computed sha256 bbfc9843646d483c334664f651c208b9839626891d8f17604db2146962f43548 LICENSE sha256 b5a136ed67798e51fe2e0ca0b2a21cb01b904ff0c9f7d563a6292e276607e58f archival/libarchive/bz/LICENSE diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk index fd4f3c17c5..eb5e7ad922 100644 --- a/package/busybox/busybox.mk +++ b/package/busybox/busybox.mk @@ -4,7 +4,7 @@ # ################################################################################ -BUSYBOX_VERSION = 1.36.0 +BUSYBOX_VERSION = 1.36.1 BUSYBOX_SITE = https://www.busybox.net/downloads BUSYBOX_SOURCE = busybox-$(BUSYBOX_VERSION).tar.bz2 BUSYBOX_LICENSE = GPL-2.0, bzip2-1.0.4 diff --git a/package/bwm-ng/bwm-ng.mk b/package/bwm-ng/bwm-ng.mk index de09eafae5..bf3ed74afc 100644 --- a/package/bwm-ng/bwm-ng.mk +++ b/package/bwm-ng/bwm-ng.mk @@ -9,6 +9,7 @@ BWM_NG_SITE = $(call github,vgropp,bwm-ng,v$(BWM_NG_VERSION)) BWM_NG_CONF_OPTS = --with-procnetdev --with-diskstats BWM_NG_LICENSE = GPL-2.0+ BWM_NG_LICENSE_FILES = COPYING +BWM_NG_CPE_ID_VENDOR = bwm-ng_project BWM_NG_AUTORECONF = YES ifeq ($(BR2_PACKAGE_NCURSES),y) diff --git a/package/c-ares/c-ares.hash b/package/c-ares/c-ares.hash index edf891674b..3e1573f2cf 100644 --- a/package/c-ares/c-ares.hash +++ b/package/c-ares/c-ares.hash @@ -1,5 +1,5 @@ # Locally calculated after checking pgp signature -sha256 bfceba37e23fd531293829002cac0401ef49a6dc55923f7f92236585b7ad1dd3 c-ares-1.19.0.tar.gz +sha256 321700399b72ed0e037d0074c629e7741f6b2ec2dda92956abe3e9671d3e268e c-ares-1.19.1.tar.gz # Hash for license file sha256 db4eb63fe09daebdf57d3f79b091bb5ee5070c0d761040e83264e648d307af4c LICENSE.md diff --git a/package/c-ares/c-ares.mk b/package/c-ares/c-ares.mk index 4332fc6919..46b8acd673 100644 --- a/package/c-ares/c-ares.mk +++ b/package/c-ares/c-ares.mk @@ -4,7 +4,7 @@ # ################################################################################ -C_ARES_VERSION = 1.19.0 +C_ARES_VERSION = 1.19.1 C_ARES_SITE = http://c-ares.haxx.se/download C_ARES_INSTALL_STAGING = YES C_ARES_CONF_OPTS = --with-random=/dev/urandom diff --git a/package/cairo/cairo.mk b/package/cairo/cairo.mk index e8a704c7da..7bc8f92deb 100644 --- a/package/cairo/cairo.mk +++ b/package/cairo/cairo.mk @@ -26,7 +26,7 @@ ifeq ($(BR2_m68k_cf),y) CAIRO_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mxgot" endif -ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),) CAIRO_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -DCAIRO_NO_MUTEX=1" endif diff --git a/package/canfestival/Config.in b/package/canfestival/Config.in deleted file mode 100644 index 8300e26582..0000000000 --- a/package/canfestival/Config.in +++ /dev/null @@ -1,90 +0,0 @@ -config BR2_PACKAGE_CANFESTIVAL_ARCH_SUPPORTS - bool - default y if BR2_i386 || BR2_x86_64 || BR2_powerpc || BR2_arm - -comment "canfestival needs a glibc or uClibc toolchain w/ threads and dynamic library" - depends on BR2_PACKAGE_CANFESTIVAL_ARCH_SUPPORTS - depends on BR2_TOOLCHAIN_USES_MUSL || \ - !BR2_TOOLCHAIN_HAS_THREADS || \ - BR2_STATIC_LIBS - -config BR2_PACKAGE_CANFESTIVAL - bool "canfestival" - depends on BR2_PACKAGE_CANFESTIVAL_ARCH_SUPPORTS - depends on !BR2_TOOLCHAIN_USES_MUSL # sigval_t - depends on BR2_TOOLCHAIN_HAS_THREADS - depends on !BR2_STATIC_LIBS - help - CanFestival is an OpenSource CANOpen framework, licensed under - LGPLv2.1 and GPLv2 for some drivers (virtual_kernel, lincan - and copcican_comedi). - - http://www.canfestival.org - -if BR2_PACKAGE_CANFESTIVAL - -choice - prompt "driver" - default BR2_PACKAGE_CANFESTIVAL_SOCKET - -# - The AnaGate CAN(duo) [1], PeakSystem CAN [2] and CO-PCICAN [3] -# drivers are not available (not packaged in Buildroot), so their -# support are disabled. -# - The virtual_kernel driver is disabled because it uses very old -# kernel APIs, that have been renamed, or marked as deprecated or -# removed for a long while. The question has been raised on the -# canfestival mailing list [4]. -# -# [1] http://www.anagate.de/en/index.html -# [2] http://www.peak-system.com/linux/ -# [3] http://www.cosateq.com/ -# [4] http://sourceforge.net/p/canfestival/mailman/message/32519648/ - -config BR2_PACKAGE_CANFESTIVAL_VIRTUAL - bool "virtual" - help - Unix pipe based virtual CAN driver. - -config BR2_PACKAGE_CANFESTIVAL_SOCKET - bool "socket" - help - SocketCAN (the standard mainline CAN bus interface). - - http://developer.berlios.de/projects/socketcan/ - -config BR2_PACKAGE_CANFESTIVAL_LINCAN - bool "lincan" - help - Lincan driver. - - http://www.ocera.org/download/components/WP7/lincan-0.3.3.html - -config BR2_PACKAGE_CANFESTIVAL_CAN4LINUX - bool "can4linux" - help - Can4linux driver. - - http://www.port.de/engl/canprod/hw_can4linux.html - -endchoice - -config BR2_PACKAGE_CANFESTIVAL_DRIVER - string - default "virtual" if BR2_PACKAGE_CANFESTIVAL_VIRTUAL - default "socket" if BR2_PACKAGE_CANFESTIVAL_SOCKET - default "lincan" if BR2_PACKAGE_CANFESTIVAL_LINCAN - default "can4linux" if BR2_PACKAGE_CANFESTIVAL_CAN4LINUX - -config BR2_PACKAGE_CANFESTIVAL_ADDITIONAL_OPTIONS - string "additional configure options" - help - Additional options can be passed directly to the configure - script (e.g.: --MAX_CAN_BUS_ID=..., - --SDO_MAX_LENGTH_TRANSFER=..., --SDO_BLOCK_SIZE=...). - -config BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES - bool "install examples" - help - Install binary application examples. - -endif diff --git a/package/canfestival/canfestival.hash b/package/canfestival/canfestival.hash deleted file mode 100644 index dc32bd9a2e..0000000000 --- a/package/canfestival/canfestival.hash +++ /dev/null @@ -1,3 +0,0 @@ -# License files, locally calculated -sha256 b5c45f160093a6c2fb7bd0078f50c62f4b4089b6206b0e90b0f122b40a2fe110 COPYING -sha256 d4594b82f4d50840df6a7e9d14132a8c0a3cc05d0ac46d15310a264a1f75447e LICENCE diff --git a/package/canfestival/canfestival.mk b/package/canfestival/canfestival.mk deleted file mode 100644 index 760f14aecd..0000000000 --- a/package/canfestival/canfestival.mk +++ /dev/null @@ -1,59 +0,0 @@ -################################################################################ -# -# canfestival -# -################################################################################ - -CANFESTIVAL_VERSION = 7740ac6fdedc23e1ed6908d3d7db54833c88572b -CANFESTIVAL_SITE = http://dev.automforge.net/CanFestival-3 -CANFESTIVAL_SITE_METHOD = hg -CANFESTIVAL_LICENSE = LGPL-2.1+ -CANFESTIVAL_LICENSE_FILES = COPYING LICENCE -CANFESTIVAL_INSTALL_STAGING = YES -CANFESTIVAL_INSTALLED-y = src drivers -CANFESTIVAL_INSTALLED-$(BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES) += examples - -# Canfestival provides and used some python modules and scripts only compliant -# with python2. -CANFESTIVAL_DEPENDENCIES = host-python - -# canfestival uses its own hand-written build-system. Though there is -# a configure script, it does not use the autotools, so, we use the -# generic-package infrastructure. -define CANFESTIVAL_CONFIGURE_CMDS - cd $(@D) && \ - $(TARGET_CONFIGURE_OPTS) ./configure \ - --target=unix \ - --arch=$(BR2_ARCH) \ - --timers=unix \ - --binutils=$(TARGET_CROSS) \ - --cc="$(TARGET_CC)" \ - --cxx="$(TARGET_CC)" \ - --ld="$(TARGET_CC)" \ - --prefix=/usr \ - --can=$(BR2_PACKAGE_CANFESTIVAL_DRIVER) \ - $(call qstrip,$(BR2_PACKAGE_CANFESTIVAL_ADDITIONAL_OPTIONS)) -endef - -define CANFESTIVAL_BUILD_CMDS - $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) all \ - PYTHON=$(HOST_DIR)/bin/python2 -endef - -define CANFESTIVAL_INSTALL_TARGET_CMDS - for d in $(CANFESTIVAL_INSTALLED-y) ; do \ - $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D)/$$d install \ - PYTHON=$(HOST_DIR)/bin/python2 \ - DESTDIR=$(TARGET_DIR) || exit 1 ; \ - done -endef - -define CANFESTIVAL_INSTALL_STAGING_CMDS - for d in $(CANFESTIVAL_INSTALLED-y) ; do \ - $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D)/$$d install \ - PYTHON=$(HOST_DIR)/bin/python2 \ - DESTDIR=$(STAGING_DIR) || exit 1 ; \ - done -endef - -$(eval $(generic-package)) diff --git a/package/capnproto/capnproto.hash b/package/capnproto/capnproto.hash index 0faf69d069..aa722a4242 100644 --- a/package/capnproto/capnproto.hash +++ b/package/capnproto/capnproto.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 e07446f56043c983e009038e69d18ff86a2924909f0b518ccf47eccf5ac03919 capnproto-0.10.3.tar.gz +sha256 c6f25940688c87ddb24e0c4e475c3213d9b044aad2ba305439cc8c224f559da6 capnproto-0.10.4.tar.gz sha256 9564998c8d7f270a61a8b89869a8d17a9d5e3783b64027788b5e339ec8479e10 LICENSE diff --git a/package/capnproto/capnproto.mk b/package/capnproto/capnproto.mk index 84acf5fc65..7424a1420f 100644 --- a/package/capnproto/capnproto.mk +++ b/package/capnproto/capnproto.mk @@ -4,7 +4,7 @@ # ################################################################################ -CAPNPROTO_VERSION = 0.10.3 +CAPNPROTO_VERSION = 0.10.4 CAPNPROTO_SITE = $(call github,capnproto,capnproto,v$(CAPNPROTO_VERSION)) CAPNPROTO_LICENSE = MIT CAPNPROTO_LICENSE_FILES = LICENSE diff --git a/package/ccache/0001-fix-Work-around-GCC-12.3-bug-109241.patch b/package/ccache/0001-fix-Work-around-GCC-12.3-bug-109241.patch new file mode 100644 index 0000000000..42872597cd --- /dev/null +++ b/package/ccache/0001-fix-Work-around-GCC-12.3-bug-109241.patch @@ -0,0 +1,29 @@ +From 689168c292f1ed26c5f4a3070aeb649dad7facb5 Mon Sep 17 00:00:00 2001 +From: Joel Rosdahl +Date: Tue, 1 Aug 2023 12:30:12 +0200 +Subject: [PATCH] fix: Work around GCC 12.3 bug 109241 + +See also #1289. + +Upstream: https://github.com/ccache/ccache/commit/689168c292f1ed26c5f4a3070aeb649dad7facb5 + +Signed-off-by: Bernd Kuhls +--- + src/storage/local/LocalStorage.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/storage/local/LocalStorage.cpp b/src/storage/local/LocalStorage.cpp +index 3e5abe5074..d0a904e553 100644 +--- a/src/storage/local/LocalStorage.cpp ++++ b/src/storage/local/LocalStorage.cpp +@@ -854,7 +854,9 @@ LocalStorage::recompress(const std::optional level, + auto l2_content_lock = get_level_2_content_lock(l1_index, l2_index); + l2_content_lock.make_long_lived(lock_manager); + if (!l2_content_lock.acquire()) { +- LOG("Failed to acquire content lock for {}/{}", l1_index, l2_index); ++ // LOG_RAW+fmt::format instead of LOG due to GCC 12.3 bug #109241 ++ LOG_RAW(fmt::format( ++ "Failed to acquire content lock for {}/{}", l1_index, l2_index)); + return; + } + diff --git a/package/ccache/ccache.hash b/package/ccache/ccache.hash index 9b11f026ec..736122e0ab 100644 --- a/package/ccache/ccache.hash +++ b/package/ccache/ccache.hash @@ -1,4 +1,4 @@ # sha256 computed locally -sha256 df0c64d15d3efaf0b4f6837dd6b1467e40eeaaa807db25ce79c3a08a46a84e36 ccache-4.7.4.tar.xz +sha256 3d3fb3f888a5b16c4fa7ee5214cca76348afd6130e8443de5f6f2424f2076a49 ccache-4.8.2.tar.xz sha256 80b5112739a423dfac7bed1ca8a1df3cccda3d794425441997d4462b83db4dd5 GPL-3.0.txt -sha256 56cf64f68b7b8150300acd79899941615523ea5c56c120e92f5b175b7cc78e3c LICENSE.adoc +sha256 55ce274f2b898dad70d3695ab13f82656fd455bd8fb6d1c85d6f7c453bef0b2e LICENSE.adoc diff --git a/package/ccache/ccache.mk b/package/ccache/ccache.mk index 6b7d57b40c..ac4bc4aba5 100644 --- a/package/ccache/ccache.mk +++ b/package/ccache/ccache.mk @@ -4,7 +4,7 @@ # ################################################################################ -CCACHE_VERSION = 4.7.4 +CCACHE_VERSION = 4.8.2 CCACHE_SITE = https://github.com/ccache/ccache/releases/download/v$(CCACHE_VERSION) CCACHE_SOURCE = ccache-$(CCACHE_VERSION).tar.xz CCACHE_LICENSE = GPL-3.0+, others diff --git a/package/check/check.hash b/package/check/check.hash index 543e78f317..a8cec60d16 100644 --- a/package/check/check.hash +++ b/package/check/check.hash @@ -1,4 +1,4 @@ # Locally computed -sha256 a8de4e0bacfb4d76dd1c618ded263523b53b85d92a146d8835eb1a52932fa20a check-0.15.2.tar.gz +sha256 20e7360f5774844c09fde696e5bf71d061e9f53b3d763d886d3318d8893fdda4 check-11970a7e112dfe243a2e68773f014687df2900e8.tar.gz # License files, locally calculated sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LESSER diff --git a/package/check/check.mk b/package/check/check.mk index ccffd08ee3..95fe5c9d57 100644 --- a/package/check/check.mk +++ b/package/check/check.mk @@ -4,18 +4,14 @@ # ################################################################################ -CHECK_VERSION = 0.15.2 -CHECK_SITE = https://github.com/libcheck/check/releases/download/$(CHECK_VERSION) +# This is the same as tag 0.15.2, but we can't use it, as to avoid conflict +# with the released tarball that was incomplete +CHECK_VERSION = 11970a7e112dfe243a2e68773f014687df2900e8 +CHECK_SITE = $(call github,libcheck,check,$(CHECK_VERSION)) CHECK_INSTALL_STAGING = YES CHECK_DEPENDENCIES = host-pkgconf CHECK_LICENSE = LGPL-2.1+ CHECK_LICENSE_FILES = COPYING.LESSER -CHECK_CONF_OPTS = --disable-build-docs +CHECK_CONF_OPTS = -DBUILD_TESTING=OFF -DINSTALL_CHECKMK=OFF -# Having checkmk in the target makes no sense -define CHECK_REMOVE_CHECKMK - rm -f $(TARGET_DIR)/usr/bin/checkmk -endef -CHECK_POST_INSTALL_TARGET_HOOKS += CHECK_REMOVE_CHECKMK - -$(eval $(autotools-package)) +$(eval $(cmake-package)) diff --git a/package/chocolate-doom/chocolate-doom.mk b/package/chocolate-doom/chocolate-doom.mk index 8318c123bd..581b2c51c2 100644 --- a/package/chocolate-doom/chocolate-doom.mk +++ b/package/chocolate-doom/chocolate-doom.mk @@ -8,6 +8,8 @@ CHOCOLATE_DOOM_VERSION = 3.0.1 CHOCOLATE_DOOM_SITE = http://www.chocolate-doom.org/downloads/$(CHOCOLATE_DOOM_VERSION) CHOCOLATE_DOOM_LICENSE = GPL-2.0+ CHOCOLATE_DOOM_LICENSE_FILES = COPYING +CHOCOLATE_DOOM_CPE_ID_VENDOR = chocolate-doom +CHOCOLATE_DOOM_CPE_ID_PRODUCT = chocolate_doom CHOCOLATE_DOOM_DEPENDENCIES = host-pkgconf sdl2 sdl2_mixer sdl2_net # Avoid installing desktop entries, icons, etc. diff --git a/package/clamav/clamav.hash b/package/clamav/clamav.hash index ad9d1c9264..c140a2df07 100644 --- a/package/clamav/clamav.hash +++ b/package/clamav/clamav.hash @@ -1,5 +1,5 @@ # Locally calculated -sha256 0872dc1b82ff4cd7e8e4323faf5ee41a1f66ae80865d05429085b946355d86ee clamav-1.0.1.tar.gz +sha256 8779458dc31fdee1232eb8986f092d25568b39f5d337c0cbcd9c1abb5dc2886b clamav-1.0.3.tar.gz sha256 0c4fd2fa9733fc9122503797648710851e4ee6d9e4969dd33fcbd8c63cd2f584 COPYING.txt sha256 d72a145c90918184a05ef65a04c9e6f7466faa59bc1b82c8f6a8ddc7ddcb9bed COPYING/COPYING.bzip2 sha256 dfb818a0d41411c6fb1c193c68b73018ceadd1994bda41ad541cbff292894bc6 COPYING/COPYING.file diff --git a/package/clamav/clamav.mk b/package/clamav/clamav.mk index 68a1799bfc..e1e0fa8c63 100644 --- a/package/clamav/clamav.mk +++ b/package/clamav/clamav.mk @@ -4,7 +4,7 @@ # ################################################################################ -CLAMAV_VERSION = 1.0.1 +CLAMAV_VERSION = 1.0.3 CLAMAV_SITE = https://www.clamav.net/downloads/production CLAMAV_LICENSE = GPL-2.0 CLAMAV_LICENSE_FILES = \ diff --git a/package/cmake/0001-rename-cmake-rootfile.patch b/package/cmake/0001-rename-cmake-rootfile.patch index a8cd3ee820..7e6e0a8cf7 100644 --- a/package/cmake/0001-rename-cmake-rootfile.patch +++ b/package/cmake/0001-rename-cmake-rootfile.patch @@ -12,10 +12,12 @@ This buildroot-specific patch makes sure ctest looks also for [Vincent: tweak patch for 3.6.3] [James: tweak patch for 3.15.4] +[Bernd: tweak patch for 3.27.0] Signed-off-by: Davide Viti Signed-off-by: Vicente Olivert Riera Signed-off-by: James Hilliard +Signed-off-by: Bernd Kuhls --- Source/cmake.cxx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) @@ -24,8 +26,8 @@ diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 3772f09985..c317e4af38 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx -@@ -1009,7 +1009,12 @@ int cmake::AddCMakePaths() - "Path to cpack program executable.", cmStateEnums::INTERNAL); +@@ -1891,7 +1891,12 @@ int cmake::AddCMakePaths() + cmStateEnums::INTERNAL); #endif if (!cmSystemTools::FileExists( - (cmSystemTools::GetCMakeRoot() + "/Modules/CMake.cmake"))) { diff --git a/package/cmake/Config.in b/package/cmake/Config.in index 4ef5612b57..00692fe78a 100644 --- a/package/cmake/Config.in +++ b/package/cmake/Config.in @@ -14,7 +14,7 @@ config BR2_PACKAGE_CMAKE config BR2_PACKAGE_CMAKE_CTEST bool "ctest" depends on BR2_PACKAGE_CMAKE_ARCH_SUPPORTS - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # from jsoncpp + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # jsoncpp, libuv depends on BR2_USE_WCHAR # libarchive depends on BR2_INSTALL_LIBSTDCPP depends on !BR2_STATIC_LIBS @@ -40,10 +40,10 @@ config BR2_PACKAGE_CMAKE_CTEST http://www.cmake.org/ -comment "ctest needs a toolchain w/ C++, wchar, dynamic library, gcc >= 4.7, NPTL" +comment "ctest needs a toolchain w/ C++, wchar, dynamic library, gcc >= 4.9, NPTL" depends on BR2_PACKAGE_CMAKE_ARCH_SUPPORTS depends on BR2_USE_MMU depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ - BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/package/cmake/Config.in.host b/package/cmake/Config.in.host index 5de076537b..0935e9a564 100644 --- a/package/cmake/Config.in.host +++ b/package/cmake/Config.in.host @@ -27,10 +27,35 @@ config BR2_HOST_CMAKE_AT_LEAST_3_22 bool select BR2_HOST_CMAKE_AT_LEAST_3_21 +config BR2_HOST_CMAKE_AT_LEAST_3_23 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_22 + +config BR2_HOST_CMAKE_AT_LEAST_3_24 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_23 + +config BR2_HOST_CMAKE_AT_LEAST_3_25 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_24 + +config BR2_HOST_CMAKE_AT_LEAST_3_26 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_25 + +config BR2_HOST_CMAKE_AT_LEAST_3_27 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_26 + # This order guarantees that the highest version is set, as kconfig # stops affecting a value on the first matching default. config BR2_HOST_CMAKE_AT_LEAST string + default "3.27" if BR2_HOST_CMAKE_AT_LEAST_3_27 + default "3.26" if BR2_HOST_CMAKE_AT_LEAST_3_26 + default "3.25" if BR2_HOST_CMAKE_AT_LEAST_3_25 + default "3.24" if BR2_HOST_CMAKE_AT_LEAST_3_24 + default "3.23" if BR2_HOST_CMAKE_AT_LEAST_3_23 default "3.22" if BR2_HOST_CMAKE_AT_LEAST_3_22 default "3.21" if BR2_HOST_CMAKE_AT_LEAST_3_21 default "3.20" if BR2_HOST_CMAKE_AT_LEAST_3_20 diff --git a/package/cmake/cmake.hash b/package/cmake/cmake.hash index 43b5efb0f0..e5a047e7d3 100644 --- a/package/cmake/cmake.hash +++ b/package/cmake/cmake.hash @@ -1,5 +1,5 @@ -# From https://cmake.org/files/v3.22/cmake-3.22.3-SHA-256.txt -sha256 9f8469166f94553b6978a16ee29227ec49a2eb5ceb608275dec40d8ae0d1b5a0 cmake-3.22.3.tar.gz +# From https://cmake.org/files/v3.27/cmake-3.27.1-SHA-256.txt +sha256 b1a6b0135fa11b94476e90f5b32c4c8fad480bf91cf22d0ded98ce22c5132004 cmake-3.27.1.tar.gz # Locally calculated -sha256 f1a4326266aada65b307dac05161a9d02d3dba4fb08b50cb26e3c24cc8a86e97 Copyright.txt +sha256 4a01ccf2dc580ba570d02bc015bbe0ec92f1f318717aae9540ba841ba7946756 Copyright.txt diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk index b99877696a..1e29e25471 100644 --- a/package/cmake/cmake.mk +++ b/package/cmake/cmake.mk @@ -5,8 +5,8 @@ ################################################################################ # When updating the version, please also update BR2_HOST_CMAKE_AT_LEAST_X_Y -CMAKE_VERSION_MAJOR = 3.22 -CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).3 +CMAKE_VERSION_MAJOR = 3.27 +CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).1 CMAKE_SITE = https://cmake.org/files/v$(CMAKE_VERSION_MAJOR) CMAKE_LICENSE = BSD-3-Clause CMAKE_LICENSE_FILES = Copyright.txt @@ -33,6 +33,7 @@ CMAKE_CONF_OPTS = \ -DKWSYS_CHAR_IS_SIGNED=TRUE \ -DCMAKE_USE_SYSTEM_LIBRARIES=1 \ -DCTEST_USE_XMLRPC=OFF \ + -DCMake_ENABLE_DEBUGGER=0 \ -DBUILD_CursesDialog=OFF # Get rid of -I* options from $(HOST_CPPFLAGS) to prevent that a diff --git a/package/cmocka/cmocka.mk b/package/cmocka/cmocka.mk index eafb4898e1..297f95f465 100644 --- a/package/cmocka/cmocka.mk +++ b/package/cmocka/cmocka.mk @@ -21,4 +21,9 @@ ifeq ($(BR2_SHARED_STATIC_LIBS),y) CMOCKA_CONF_OPTS += -DWITH_STATIC_LIB=ON endif +# gcc for ARM Thumb1 doesn't implement -fstack-clash-protection +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +CMOCKA_CONF_OPTS += -DWITH_STACK_CLASH_PROTECTION=OFF +endif + $(eval $(cmake-package)) diff --git a/package/composer/Config.in.host b/package/composer/Config.in.host new file mode 100644 index 0000000000..ced73ceae9 --- /dev/null +++ b/package/composer/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_COMPOSER + bool "host composer" + help + Composer is a tool for dependency management in PHP. It + allows you to declare the libraries your project depends on + and it will manage (install/update) them for you. + + https://getcomposer.org/ diff --git a/package/composer/composer.hash b/package/composer/composer.hash new file mode 100644 index 0000000000..123d6de1be --- /dev/null +++ b/package/composer/composer.hash @@ -0,0 +1,4 @@ +# Hash from https://getcomposer.org/download/ +sha256 f07934fad44f9048c0dc875a506cca31cc2794d6aebfc1867f3b1fbf48dce2c5 composer-2.5.8.phar +# Locally calculated +sha256 c8cce4b6b9729f264ffdf9296d505d63432497feeed1f586d1902b942197e024 LICENSE diff --git a/package/composer/composer.mk b/package/composer/composer.mk new file mode 100644 index 0000000000..9bfabc28af --- /dev/null +++ b/package/composer/composer.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# composer +# +################################################################################ + +COMPOSER_VERSION = 2.5.8 +COMPOSER_SOURCE = composer-$(COMPOSER_VERSION).phar +# Here, we pass a dummy URL parameter in order to control the name the file +# will have once downloaded. +# Otherwise, the names will clash ifever we update the version. +BASE_SITE = https://getcomposer.org/download/$(COMPOSER_VERSION)/composer.phar +COMPOSER_SITE = $(BASE_SITE)?n=f/$(COMPOSER_SOURCE) +COMPOSER_LICENSE = MIT +COMPOSER_LICENSE_FILES = LICENSE +COMPOSER_CPE_ID_VENDOR = getcomposer + +HOST_COMPOSER_DEPENDENCIES = host-php +HOST_COMPOSER_EXTRACT_DEPENDENCIES = host-php + +define HOST_COMPOSER_EXTRACT_CMDS + cp $(HOST_COMPOSER_DL_DIR)/$(COMPOSER_SOURCE) $(@D) + cd $(@D); $(HOST_DIR)/bin/php <<< 'extractTo(".", "LICENSE");' +endef + +define HOST_COMPOSER_INSTALL_CMDS + mv $(@D)/$(COMPOSER_SOURCE) $(HOST_DIR)/bin/composer + chmod +x $(HOST_DIR)/bin/composer +endef + +$(eval $(host-generic-package)) diff --git a/package/conmon/Config.in b/package/conmon/Config.in new file mode 100644 index 0000000000..9ba9c215b7 --- /dev/null +++ b/package/conmon/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_CONMON + bool "conmon" + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_USE_WCHAR # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + Conmon is an OCI container runtime monitor. + + https://github.com/containers/conmon + +comment "conmon needs a toolchain w/ threads, wchar" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/package/conmon/conmon.hash b/package/conmon/conmon.hash new file mode 100644 index 0000000000..f2e89b8a92 --- /dev/null +++ b/package/conmon/conmon.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e72c090210a03ca3b43a0fad53f15bca90bbee65105c412468009cf3a5988325 conmon-2.1.8.tar.gz +sha256 9c9d771d4004725237a31ada889fe06c85a24fd0a29e41825181ab4cde54f016 LICENSE diff --git a/package/conmon/conmon.mk b/package/conmon/conmon.mk new file mode 100644 index 0000000000..50807f8c6a --- /dev/null +++ b/package/conmon/conmon.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# conmon +# +################################################################################ + +CONMON_VERSION = 2.1.8 +CONMON_SITE = $(call github,containers,conmon,v$(CONMON_VERSION)) +CONMON_LICENSE = Apache-2.0 +CONMON_LICENSE_FILES = LICENSE + +CONMON_DEPENDENCIES = host-pkgconf libglib2 + +ifeq ($(BR2_PACKAGE_LIBSECCOMP):$(BR2_STATIC_LIBS),y:) +CONMON_DISABLE_SECCOMP = 0 +CONMON_DEPENDENCIES += libseccomp +else +CONMON_DISABLE_SECCOMP = 1 +endif + +define CONMON_CONFIGURE_CMDS + printf '#!/bin/bash\necho "$(CONMON_DISABLE_SECCOMP)"\n' > \ + $(@D)/hack/seccomp-notify.sh + chmod +x $(@D)/hack/seccomp-notify.sh +endef + +define CONMON_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) bin/conmon +endef + +define CONMON_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/bin/conmon $(TARGET_DIR)/usr/bin/conmon +endef + +$(eval $(generic-package)) diff --git a/package/connman/0001-gweb-Fix-OOB-write-in-received_data.patch b/package/connman/0001-gweb-Fix-OOB-write-in-received_data.patch deleted file mode 100644 index d1a9d8f8fe..0000000000 --- a/package/connman/0001-gweb-Fix-OOB-write-in-received_data.patch +++ /dev/null @@ -1,36 +0,0 @@ -From d1a5ede5d255bde8ef707f8441b997563b9312bd Mon Sep 17 00:00:00 2001 -From: Nathan Crandall -Date: Tue, 12 Jul 2022 08:56:34 +0200 -Subject: gweb: Fix OOB write in received_data() - -There is a mismatch of handling binary vs. C-string data with memchr -and strlen, resulting in pos, count, and bytes_read to become out of -sync and result in a heap overflow. Instead, do not treat the buffer -as an ASCII C-string. We calculate the count based on the return value -of memchr, instead of strlen. - -Fixes: CVE-2022-32292 - -[Retrieved from: -https://git.kernel.org/pub/scm/network/connman/connman.git/commit/?id=d1a5ede5d255bde8ef707f8441b997563b9312bd] -Signed-off-by: Fabrice Fontaine ---- - gweb/gweb.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gweb/gweb.c b/gweb/gweb.c -index 12fcb1d8..13c6c5f2 100644 ---- a/gweb/gweb.c -+++ b/gweb/gweb.c -@@ -918,7 +918,7 @@ static gboolean received_data(GIOChannel *channel, GIOCondition cond, - } - - *pos = '\0'; -- count = strlen((char *) ptr); -+ count = pos - ptr; - if (count > 0 && ptr[count - 1] == '\r') { - ptr[--count] = '\0'; - bytes_read--; --- -cgit - diff --git a/package/connman/0002-wispr-Add-reference-counter-to-portal-context.patch b/package/connman/0002-wispr-Add-reference-counter-to-portal-context.patch deleted file mode 100644 index c2cebdfdcc..0000000000 --- a/package/connman/0002-wispr-Add-reference-counter-to-portal-context.patch +++ /dev/null @@ -1,142 +0,0 @@ -From 72343929836de80727a27d6744c869dff045757c Mon Sep 17 00:00:00 2001 -From: Daniel Wagner -Date: Tue, 5 Jul 2022 08:32:12 +0200 -Subject: wispr: Add reference counter to portal context - -Track the connman_wispr_portal_context live time via a -refcounter. This only adds the infrastructure to do proper reference -counting. - -Fixes: CVE-2022-32293 - -[Retrieved from: -https://git.kernel.org/pub/scm/network/connman/connman.git/commit/?id=72343929836de80727a27d6744c869dff045757c] -Signed-off-by: Fabrice Fontaine ---- - src/wispr.c | 52 ++++++++++++++++++++++++++++++++++++++++++---------- - 1 file changed, 42 insertions(+), 10 deletions(-) - -diff --git a/src/wispr.c b/src/wispr.c -index a07896ca..bde7e63b 100644 ---- a/src/wispr.c -+++ b/src/wispr.c -@@ -56,6 +56,7 @@ struct wispr_route { - }; - - struct connman_wispr_portal_context { -+ int refcount; - struct connman_service *service; - enum connman_ipconfig_type type; - struct connman_wispr_portal *wispr_portal; -@@ -97,6 +98,11 @@ static char *online_check_ipv4_url = NULL; - static char *online_check_ipv6_url = NULL; - static bool enable_online_to_ready_transition = false; - -+#define wispr_portal_context_ref(wp_context) \ -+ wispr_portal_context_ref_debug(wp_context, __FILE__, __LINE__, __func__) -+#define wispr_portal_context_unref(wp_context) \ -+ wispr_portal_context_unref_debug(wp_context, __FILE__, __LINE__, __func__) -+ - static void connman_wispr_message_init(struct connman_wispr_message *msg) - { - DBG(""); -@@ -162,9 +168,6 @@ static void free_connman_wispr_portal_context( - { - DBG("context %p", wp_context); - -- if (!wp_context) -- return; -- - if (wp_context->wispr_portal) { - if (wp_context->wispr_portal->ipv4_context == wp_context) - wp_context->wispr_portal->ipv4_context = NULL; -@@ -201,9 +204,38 @@ static void free_connman_wispr_portal_context( - g_free(wp_context); - } - -+static struct connman_wispr_portal_context * -+wispr_portal_context_ref_debug(struct connman_wispr_portal_context *wp_context, -+ const char *file, int line, const char *caller) -+{ -+ DBG("%p ref %d by %s:%d:%s()", wp_context, -+ wp_context->refcount + 1, file, line, caller); -+ -+ __sync_fetch_and_add(&wp_context->refcount, 1); -+ -+ return wp_context; -+} -+ -+static void wispr_portal_context_unref_debug( -+ struct connman_wispr_portal_context *wp_context, -+ const char *file, int line, const char *caller) -+{ -+ if (!wp_context) -+ return; -+ -+ DBG("%p ref %d by %s:%d:%s()", wp_context, -+ wp_context->refcount - 1, file, line, caller); -+ -+ if (__sync_fetch_and_sub(&wp_context->refcount, 1) != 1) -+ return; -+ -+ free_connman_wispr_portal_context(wp_context); -+} -+ - static struct connman_wispr_portal_context *create_wispr_portal_context(void) - { -- return g_try_new0(struct connman_wispr_portal_context, 1); -+ return wispr_portal_context_ref( -+ g_new0(struct connman_wispr_portal_context, 1)); - } - - static void free_connman_wispr_portal(gpointer data) -@@ -215,8 +247,8 @@ static void free_connman_wispr_portal(gpointer data) - if (!wispr_portal) - return; - -- free_connman_wispr_portal_context(wispr_portal->ipv4_context); -- free_connman_wispr_portal_context(wispr_portal->ipv6_context); -+ wispr_portal_context_unref(wispr_portal->ipv4_context); -+ wispr_portal_context_unref(wispr_portal->ipv6_context); - - g_free(wispr_portal); - } -@@ -452,7 +484,7 @@ static void portal_manage_status(GWebResult *result, - connman_info("Client-Timezone: %s", str); - - if (!enable_online_to_ready_transition) -- free_connman_wispr_portal_context(wp_context); -+ wispr_portal_context_unref(wp_context); - - __connman_service_ipconfig_indicate_state(service, - CONNMAN_SERVICE_STATE_ONLINE, type); -@@ -616,7 +648,7 @@ static void wispr_portal_request_wispr_login(struct connman_service *service, - return; - } - -- free_connman_wispr_portal_context(wp_context); -+ wispr_portal_context_unref(wp_context); - return; - } - -@@ -952,7 +984,7 @@ static int wispr_portal_detect(struct connman_wispr_portal_context *wp_context) - - if (wp_context->token == 0) { - err = -EINVAL; -- free_connman_wispr_portal_context(wp_context); -+ wispr_portal_context_unref(wp_context); - } - } else if (wp_context->timeout == 0) { - wp_context->timeout = g_idle_add(no_proxy_callback, wp_context); -@@ -1001,7 +1033,7 @@ int __connman_wispr_start(struct connman_service *service, - - /* If there is already an existing context, we wipe it */ - if (wp_context) -- free_connman_wispr_portal_context(wp_context); -+ wispr_portal_context_unref(wp_context); - - wp_context = create_wispr_portal_context(); - if (!wp_context) --- -cgit - diff --git a/package/connman/0003-wispr-Update-portal-context-references.patch b/package/connman/0003-wispr-Update-portal-context-references.patch deleted file mode 100644 index 61c4e21f94..0000000000 --- a/package/connman/0003-wispr-Update-portal-context-references.patch +++ /dev/null @@ -1,175 +0,0 @@ -From 416bfaff988882c553c672e5bfc2d4f648d29e8a Mon Sep 17 00:00:00 2001 -From: Daniel Wagner -Date: Tue, 5 Jul 2022 09:11:09 +0200 -Subject: wispr: Update portal context references - -Maintain proper portal context references to avoid UAF. - -Fixes: CVE-2022-32293 - -[Retrieved from: -https://git.kernel.org/pub/scm/network/connman/connman.git/commit/?id=416bfaff988882c553c672e5bfc2d4f648d29e8a] -Signed-off-by: Fabrice Fontaine ---- - src/wispr.c | 34 ++++++++++++++++++++++------------ - 1 file changed, 22 insertions(+), 12 deletions(-) - -diff --git a/src/wispr.c b/src/wispr.c -index bde7e63b..84bed33f 100644 ---- a/src/wispr.c -+++ b/src/wispr.c -@@ -105,8 +105,6 @@ static bool enable_online_to_ready_transition = false; - - static void connman_wispr_message_init(struct connman_wispr_message *msg) - { -- DBG(""); -- - msg->has_error = false; - msg->current_element = NULL; - -@@ -166,8 +164,6 @@ static void free_wispr_routes(struct connman_wispr_portal_context *wp_context) - static void free_connman_wispr_portal_context( - struct connman_wispr_portal_context *wp_context) - { -- DBG("context %p", wp_context); -- - if (wp_context->wispr_portal) { - if (wp_context->wispr_portal->ipv4_context == wp_context) - wp_context->wispr_portal->ipv4_context = NULL; -@@ -483,9 +479,6 @@ static void portal_manage_status(GWebResult *result, - &str)) - connman_info("Client-Timezone: %s", str); - -- if (!enable_online_to_ready_transition) -- wispr_portal_context_unref(wp_context); -- - __connman_service_ipconfig_indicate_state(service, - CONNMAN_SERVICE_STATE_ONLINE, type); - -@@ -546,14 +539,17 @@ static void wispr_portal_request_portal( - { - DBG(""); - -+ wispr_portal_context_ref(wp_context); - wp_context->request_id = g_web_request_get(wp_context->web, - wp_context->status_url, - wispr_portal_web_result, - wispr_route_request, - wp_context); - -- if (wp_context->request_id == 0) -+ if (wp_context->request_id == 0) { - wispr_portal_error(wp_context); -+ wispr_portal_context_unref(wp_context); -+ } - } - - static bool wispr_input(const guint8 **data, gsize *length, -@@ -618,13 +614,15 @@ static void wispr_portal_browser_reply_cb(struct connman_service *service, - return; - - if (!authentication_done) { -- wispr_portal_error(wp_context); - free_wispr_routes(wp_context); -+ wispr_portal_error(wp_context); -+ wispr_portal_context_unref(wp_context); - return; - } - - /* Restarting the test */ - __connman_service_wispr_start(service, wp_context->type); -+ wispr_portal_context_unref(wp_context); - } - - static void wispr_portal_request_wispr_login(struct connman_service *service, -@@ -700,11 +698,13 @@ static bool wispr_manage_message(GWebResult *result, - - wp_context->wispr_result = CONNMAN_WISPR_RESULT_LOGIN; - -+ wispr_portal_context_ref(wp_context); - if (__connman_agent_request_login_input(wp_context->service, - wispr_portal_request_wispr_login, -- wp_context) != -EINPROGRESS) -+ wp_context) != -EINPROGRESS) { - wispr_portal_error(wp_context); -- else -+ wispr_portal_context_unref(wp_context); -+ } else - return true; - - break; -@@ -753,6 +753,7 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - if (length > 0) { - g_web_parser_feed_data(wp_context->wispr_parser, - chunk, length); -+ wispr_portal_context_unref(wp_context); - return true; - } - -@@ -770,6 +771,7 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - - switch (status) { - case 000: -+ wispr_portal_context_ref(wp_context); - __connman_agent_request_browser(wp_context->service, - wispr_portal_browser_reply_cb, - wp_context->status_url, wp_context); -@@ -781,11 +783,14 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - if (g_web_result_get_header(result, "X-ConnMan-Status", - &str)) { - portal_manage_status(result, wp_context); -+ wispr_portal_context_unref(wp_context); - return false; -- } else -+ } else { -+ wispr_portal_context_ref(wp_context); - __connman_agent_request_browser(wp_context->service, - wispr_portal_browser_reply_cb, - wp_context->redirect_url, wp_context); -+ } - - break; - case 300: -@@ -798,6 +803,7 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - !g_web_result_get_header(result, "Location", - &redirect)) { - -+ wispr_portal_context_ref(wp_context); - __connman_agent_request_browser(wp_context->service, - wispr_portal_browser_reply_cb, - wp_context->status_url, wp_context); -@@ -808,6 +814,7 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - - wp_context->redirect_url = g_strdup(redirect); - -+ wispr_portal_context_ref(wp_context); - wp_context->request_id = g_web_request_get(wp_context->web, - redirect, wispr_portal_web_result, - wispr_route_request, wp_context); -@@ -820,6 +827,7 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - - break; - case 505: -+ wispr_portal_context_ref(wp_context); - __connman_agent_request_browser(wp_context->service, - wispr_portal_browser_reply_cb, - wp_context->status_url, wp_context); -@@ -832,6 +840,7 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - wp_context->request_id = 0; - done: - wp_context->wispr_msg.message_type = -1; -+ wispr_portal_context_unref(wp_context); - return false; - } - -@@ -890,6 +899,7 @@ static void proxy_callback(const char *proxy, void *user_data) - xml_wispr_parser_callback, wp_context); - - wispr_portal_request_portal(wp_context); -+ wispr_portal_context_unref(wp_context); - } - - static gboolean no_proxy_callback(gpointer user_data) --- -cgit - diff --git a/package/connman/connman.hash b/package/connman/connman.hash index 6fc5edf29a..ea87f1ea17 100644 --- a/package/connman/connman.hash +++ b/package/connman/connman.hash @@ -1,4 +1,4 @@ # From https://www.kernel.org/pub/linux/network/connman/sha256sums.asc -sha256 79fb40f4fdd5530c45aa8e592fb16ba23d3674f3a98cf10b89a6576f198de589 connman-1.41.tar.xz +sha256 a3e6bae46fc081ef2e9dae3caa4f7649de892c3de622c20283ac0ca81423c2aa connman-1.42.tar.xz # Locally computed sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING diff --git a/package/connman/connman.mk b/package/connman/connman.mk index fbd7318e4e..142a6583ad 100644 --- a/package/connman/connman.mk +++ b/package/connman/connman.mk @@ -4,7 +4,7 @@ # ################################################################################ -CONNMAN_VERSION = 1.41 +CONNMAN_VERSION = 1.42 CONNMAN_SOURCE = connman-$(CONNMAN_VERSION).tar.xz CONNMAN_SITE = $(BR2_KERNEL_MIRROR)/linux/network/connman CONNMAN_DEPENDENCIES = libglib2 dbus @@ -13,13 +13,6 @@ CONNMAN_LICENSE = GPL-2.0 CONNMAN_LICENSE_FILES = COPYING CONNMAN_CPE_ID_VENDOR = intel -# 0001-gweb-Fix-OOB-write-in-received_data.patch -CONNMAN_IGNORE_CVES += CVE-2022-32292 - -# 0002-wispr-Add-reference-counter-to-portal-context.patch -# 0003-wispr-Update-portal-context-references.patch -CONNMAN_IGNORE_CVES += CVE-2022-32293 - CONNMAN_CONF_OPTS = --with-dbusconfdir=/etc ifeq ($(BR2_INIT_SYSTEMD),y) diff --git a/package/containerd/containerd.hash b/package/containerd/containerd.hash index 345a7b16ff..8404675e30 100644 --- a/package/containerd/containerd.hash +++ b/package/containerd/containerd.hash @@ -1,3 +1,3 @@ # Computed locally -sha256 9452e95455d03a00d78ae0587595d0c18555bae7912068269efa25a724efe713 containerd-1.6.21.tar.gz +sha256 b109aceacc814d7a637ed94ba5ade829cd2642841d03e06971ef124fa3b86899 containerd-1.6.22.tar.gz sha256 4bbe3b885e8cd1907ab4cf9a41e862e74e24b5422297a4f2fe524e6a30ada2b4 LICENSE diff --git a/package/containerd/containerd.mk b/package/containerd/containerd.mk index 83489a3abf..c4a6d854c3 100644 --- a/package/containerd/containerd.mk +++ b/package/containerd/containerd.mk @@ -4,7 +4,7 @@ # ################################################################################ -CONTAINERD_VERSION = 1.6.21 +CONTAINERD_VERSION = 1.6.22 CONTAINERD_SITE = $(call github,containerd,containerd,v$(CONTAINERD_VERSION)) CONTAINERD_LICENSE = Apache-2.0 CONTAINERD_LICENSE_FILES = LICENSE diff --git a/package/cpio/cpio.mk b/package/cpio/cpio.mk index 19224000bb..911d16822b 100644 --- a/package/cpio/cpio.mk +++ b/package/cpio/cpio.mk @@ -12,10 +12,6 @@ CPIO_LICENSE = GPL-3.0+ CPIO_LICENSE_FILES = COPYING CPIO_CPE_ID_VENDOR = gnu -# 0002-Rewrite-dynamic-string-support.patch -# 0003-Fix-previous-commit.patch -CPIO_IGNORE_CVES += CVE-2021-38185 - # cpio uses argp.h which is not provided by uclibc or musl by default. # Use the argp-standalone package to provide this. ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) diff --git a/package/crucible/crucible.hash b/package/crucible/crucible.hash index d0a2a63fab..256513da6b 100644 --- a/package/crucible/crucible.hash +++ b/package/crucible/crucible.hash @@ -1,2 +1,2 @@ -sha256 1229c7d1587a97e9f3d456392e06c7be288bacf6ffb68c940d497bf55edab20b crucible-2022.05.25.tar.gz +sha256 bfeaa9b1c8bb95f02d33bd915892e748eb8939fd8b901e1d31d2efa7f7aefcb3 crucible-2023.04.12.tar.gz sha256 d88514630470aec9fa7abdc990a1e0a8751a752321bffa868188c49009d64d59 LICENSE diff --git a/package/crucible/crucible.mk b/package/crucible/crucible.mk index fdad709dde..dad89b2149 100644 --- a/package/crucible/crucible.mk +++ b/package/crucible/crucible.mk @@ -4,7 +4,7 @@ # ################################################################################ -CRUCIBLE_VERSION = 2022.05.25 +CRUCIBLE_VERSION = 2023.04.12 CRUCIBLE_SITE = $(call github,usbarmory,crucible,v$(CRUCIBLE_VERSION)) CRUCIBLE_LICENSE = GPL-3.0 CRUCIBLE_LICENSE_FILES = LICENSE diff --git a/package/crudini/crudini.mk b/package/crudini/crudini.mk index c376c5f777..48e0ebde8f 100644 --- a/package/crudini/crudini.mk +++ b/package/crudini/crudini.mk @@ -9,6 +9,9 @@ CRUDINI_SITE = $(call github,pixelb,crudini,$(CRUDINI_VERSION)) CRUDINI_SETUP_TYPE = setuptools CRUDINI_LICENSE = GPL-2.0 CRUDINI_LICENSE_FILES = COPYING +# This is a runtime dependency, but we don't have the concept of +# runtime dependencies for host packages. +HOST_CRUDINI_DEPENDENCIES = host-python-iniparse $(eval $(python-package)) $(eval $(host-python-package)) diff --git a/package/cryptodev-linux/Config.in b/package/cryptodev-linux/Config.in new file mode 100644 index 0000000000..89964ab058 --- /dev/null +++ b/package/cryptodev-linux/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_CRYPTODEV_LINUX + bool "cryptodev-linux" + depends on !BR2_microblaze + depends on BR2_LINUX_KERNEL + help + Cryptodev-linux is a device that allows access to Linux kernel + cryptographic drivers; thus allowing userspace applications + to take advantage of hardware accelerators. + + http://cryptodev-linux.org/index.html + +comment "cryptodev-linux needs a Linux kernel to be built" + depends on !BR2_microblaze + depends on !BR2_LINUX_KERNEL diff --git a/package/cryptodev-linux/cryptodev-linux.hash b/package/cryptodev-linux/cryptodev-linux.hash index d649e8934a..300aa3bcd4 100644 --- a/package/cryptodev-linux/cryptodev-linux.hash +++ b/package/cryptodev-linux/cryptodev-linux.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 f51c2254749233b1b1d7ec9445158bd709f124f88e1c650fe2faac83c3a81938 cryptodev-linux-1.12.tar.gz +sha256 33b7915c46eb39a37110e88c681423c0dd0df25d784b6e1475ac3196367f0db5 cryptodev-linux-1.13.tar.gz sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/cryptodev-linux/cryptodev-linux.mk b/package/cryptodev-linux/cryptodev-linux.mk index d0c3bc5218..580ea89520 100644 --- a/package/cryptodev-linux/cryptodev-linux.mk +++ b/package/cryptodev-linux/cryptodev-linux.mk @@ -4,15 +4,13 @@ # ################################################################################ -CRYPTODEV_LINUX_VERSION = 1.12 +CRYPTODEV_LINUX_VERSION = 1.13 CRYPTODEV_LINUX_SITE = $(call github,cryptodev-linux,cryptodev-linux,cryptodev-linux-$(CRYPTODEV_LINUX_VERSION)) CRYPTODEV_LINUX_INSTALL_STAGING = YES CRYPTODEV_LINUX_LICENSE = GPL-2.0+ CRYPTODEV_LINUX_LICENSE_FILES = COPYING CRYPTODEV_LINUX_CPE_ID_VENDOR = cryptodev-linux -CRYPTODEV_LINUX_PROVIDES = cryptodev - define CRYPTODEV_LINUX_MODULE_GEN_VERSION_H $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) version.h endef diff --git a/package/cryptodev/Config.in b/package/cryptodev/Config.in deleted file mode 100644 index d1e64498a8..0000000000 --- a/package/cryptodev/Config.in +++ /dev/null @@ -1,50 +0,0 @@ -comment "cryptodev needs a Linux kernel to be built" - depends on !BR2_LINUX_KERNEL - -config BR2_PACKAGE_CRYPTODEV - bool "cryptodev" - depends on BR2_LINUX_KERNEL - help - Select the desired cryptodev implementation. - -if BR2_PACKAGE_CRYPTODEV - -choice - prompt "cryptodev variant" - default BR2_PACKAGE_CRYPTODEV_LINUX if !BR2_microblaze - help - Select the cryptodev implementation. - -config BR2_PACKAGE_CRYPTODEV_LINUX - bool "cryptodev-linux" - depends on !BR2_microblaze - select BR2_PACKAGE_HAS_CRYPTODEV - help - Cryptodev-linux is a device that allows access to Linux kernel - cryptographic drivers; thus allowing userspace applications - to take advantage of hardware accelerators. - - http://cryptodev-linux.org/index.html - -config BR2_PACKAGE_OCF_LINUX - bool "ocf-linux" - select BR2_PACKAGE_HAS_CRYPTODEV - help - OCF-Linux is a Linux port of the OpenBSD/FreeBSD Cryptographic - Framework (OCF). This port aims to bring full asynchronous - HW/SW crypto acceleration to the Linux kernel and applications - running under Linux. - - http://ocf-linux.sourceforge.net/ - -endchoice - -config BR2_PACKAGE_HAS_CRYPTODEV - bool - -config BR2_PACKAGE_PROVIDES_CRYPTODEV - string - default "cryptodev-linux" if BR2_PACKAGE_CRYPTODEV_LINUX - default "ocf-linux" if BR2_PACKAGE_OCF_LINUX - -endif diff --git a/package/cryptodev/cryptodev.mk b/package/cryptodev/cryptodev.mk deleted file mode 100644 index 969d1bd17a..0000000000 --- a/package/cryptodev/cryptodev.mk +++ /dev/null @@ -1,7 +0,0 @@ -################################################################################ -# -# cryptodev -# -################################################################################ - -$(eval $(virtual-package)) diff --git a/package/cups/0005-raster-interpret.c-Fix-CVE-2023-4504.patch b/package/cups/0005-raster-interpret.c-Fix-CVE-2023-4504.patch new file mode 100644 index 0000000000..d1dff4e1fa --- /dev/null +++ b/package/cups/0005-raster-interpret.c-Fix-CVE-2023-4504.patch @@ -0,0 +1,45 @@ +From 2431caddb7e6a87f04ac90b5c6366ad268b6ff31 Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal +Date: Wed, 20 Sep 2023 14:45:17 +0200 +Subject: [PATCH] raster-interpret.c: Fix CVE-2023-4504 + +We didn't check for end of buffer if it looks there is an escaped +character - check for NULL terminator there and if found, return NULL +as return value and in `ptr`, because a lone backslash is not +a valid PostScript character. + +Upstream: https://github.com/OpenPrinting/cups/commit/2431caddb7e6a87f04ac90b5c6366ad268b6ff31 +[Peter: drop CHANGES hunk] +Signed-off-by: Peter Korsgaard +--- + cups/raster-interpret.c | 14 +++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +diff --git a/cups/raster-interpret.c b/cups/raster-interpret.c +index 6fcf731b5..b8655c8c6 100644 +--- a/cups/raster-interpret.c ++++ b/cups/raster-interpret.c +@@ -1116,7 +1116,19 @@ scan_ps(_cups_ps_stack_t *st, /* I - Stack */ + + cur ++; + +- if (*cur == 'b') ++ /* ++ * Return NULL if we reached NULL terminator, a lone backslash ++ * is not a valid character in PostScript. ++ */ ++ ++ if (!*cur) ++ { ++ *ptr = NULL; ++ ++ return (NULL); ++ } ++ ++ if (*cur == 'b') + *valptr++ = '\b'; + else if (*cur == 'f') + *valptr++ = '\f'; +-- +2.30.2 + diff --git a/package/cups/cups.hash b/package/cups/cups.hash index ba220e903e..501d8c12a6 100644 --- a/package/cups/cups.hash +++ b/package/cups/cups.hash @@ -1,4 +1,4 @@ # Locally calculated: -sha256 f03ccb40b087d1e30940a40e0141dcbba263f39974c20eb9f2521066c9c6c908 cups-2.4.2-source.tar.gz +sha256 58e970cf1955e1cc87d0847c32526d9c2ccee335e5f0e3882b283138ba0e7262 cups-2.4.6-source.tar.gz sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE -sha256 7a7bd639e3a8457ae40b0dcfb74ea3cc6a8132b06c726142e993625d33eb6de5 NOTICE +sha256 5320b6e3c252423e4153eb2dd63e57e3b630afb21139f44e43b02d85fe33e279 NOTICE diff --git a/package/cups/cups.mk b/package/cups/cups.mk index fed2aa809f..4bc5eeedee 100644 --- a/package/cups/cups.mk +++ b/package/cups/cups.mk @@ -4,7 +4,7 @@ # ################################################################################ -CUPS_VERSION = 2.4.2 +CUPS_VERSION = 2.4.6 CUPS_SOURCE = cups-$(CUPS_VERSION)-source.tar.gz CUPS_SITE = https://github.com/OpenPrinting/cups/releases/download/v$(CUPS_VERSION) CUPS_LICENSE = Apache-2.0 with GPL-2.0/LGPL-2.0 exception @@ -13,6 +13,9 @@ CUPS_CPE_ID_VENDOR = openprinting CUPS_SELINUX_MODULES = cups CUPS_INSTALL_STAGING = YES +# 0005-raster-interpret.c-Fix-CVE-2023-4504.patch +CUPS_IGNORE_CVES += CVE-2023-4504 + # Using autoconf, not autoheader, so we cannot use AUTORECONF = YES. define CUPS_RUN_AUTOCONF cd $(@D); $(AUTOCONF) -f diff --git a/package/dahdi-linux/0005-Fix-build-on-Linux-6.3.patch b/package/dahdi-linux/0005-Fix-build-on-Linux-6.3.patch new file mode 100644 index 0000000000..f2ac4d2dc3 --- /dev/null +++ b/package/dahdi-linux/0005-Fix-build-on-Linux-6.3.patch @@ -0,0 +1,116 @@ +From c4969d756eac041758856b99a1084158c06beb7e Mon Sep 17 00:00:00 2001 +From: Brahmajit Das +Date: Thu, 22 Jun 2023 15:52:18 +0000 +Subject: [PATCH] drivers/dahdi: fix build with clang-16 + +clang-16 enables -Werror=incompatible-pointer-types (along with buch of +other warnings) by default, thus resulting in errors such as: + +/var/tmp/portage/net-misc/dahdi-3.2.0/work/dahdi-linux-3.2.0/drivers/dahdi/dahdi-sysfs.c:272:20: error: incompatible function + pointer types initializing 'int (*)(const struct device *, struct kobj_uevent_env *)' with an expression of type + 'int (struct device *, struct kobj_uevent_env *)' [-Wincompatible-function-pointer-types] + .uevent = span_uevent, + ^~~~~~~~~~~ +/var/tmp/portage/net-misc/dahdi-3.2.0/work/dahdi-linux-3.2.0/drivers/dahdi/dahdi-sysfs.c:709:20: error: incompatible function + pointer types initializing 'int (*)(const struct device *, struct kobj_uevent_env *)' with an expression of type + 'int (struct device *, struct kobj_uevent_env *)' [-Wincompatible-function-pointer-types] + .uevent = device_uevent, + ^~~~~~~~~~~~~ +2 errors generated. + +This is due the change in bus_type strcut made in upstream commit +https://github.com/torvalds/linux/commit/2a81ada32f0e584fc0c943e0d3a8c9f4fae411d6. +Where they make uevent take a const *, as the strcut should not be +modifying the device that is passed into it. + +This patch modifes some of the fucntions parameter types, making dahdi +possible to be built with clang-16. + +Bug: https://bugs.gentoo.org/906179 +Signed-off-by: Brahmajit Das + +Upstream: https://github.com/asterisk/dahdi-linux/pull/21 + +[Bernd: updated patch for compatibility with kernel < 6.3] +Signed-off-by: Bernd Kuhls +--- + drivers/dahdi/dahdi-sysfs.c | 12 ++++++++++-- + drivers/dahdi/wctc4xxp/base.c | 2 +- + drivers/dahdi/xpp/xbus-sysfs.c | 4 ++++ + 3 files changed, 15 insertions(+), 3 deletions(-) + +diff --git a/drivers/dahdi/dahdi-sysfs.c b/drivers/dahdi/dahdi-sysfs.c +index ca29ddba..38236929 100644 +--- a/drivers/dahdi/dahdi-sysfs.c ++++ b/drivers/dahdi/dahdi-sysfs.c +@@ -47,7 +47,7 @@ static int span_match(struct device *dev, struct device_driver *driver) + return 1; + } + +-static inline struct dahdi_span *dev_to_span(struct device *dev) ++static inline struct dahdi_span *dev_to_span(const struct device *dev) + { + return dev_get_drvdata(dev); + } +@@ -68,7 +68,11 @@ static inline struct dahdi_span *dev_to_span(struct device *dev) + return err; \ + } while (0) + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 3, 0) + static int span_uevent(struct device *dev, struct kobj_uevent_env *kenv) ++#else ++static int span_uevent(const struct device *dev, struct kobj_uevent_env *kenv) ++#endif + { + struct dahdi_span *span; + +@@ -415,7 +419,7 @@ static struct { + unsigned int clean_chardev:1; + } should_cleanup; + +-static inline struct dahdi_device *to_ddev(struct device *dev) ++static inline struct dahdi_device *to_ddev(const struct device *dev) + { + return container_of(dev, struct dahdi_device, dev); + } +@@ -438,7 +442,11 @@ static inline struct dahdi_device *to_ddev(struct device *dev) + return err; \ + } while (0) + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 3, 0) + static int device_uevent(struct device *dev, struct kobj_uevent_env *kenv) ++#else ++static int device_uevent(const struct device *dev, struct kobj_uevent_env *kenv) ++#endif + { + struct dahdi_device *ddev; + +diff --git a/drivers/dahdi/wctc4xxp/base.c b/drivers/dahdi/wctc4xxp/base.c +index ec6fc436..db70ea7e 100644 +--- a/drivers/dahdi/wctc4xxp/base.c ++++ b/drivers/dahdi/wctc4xxp/base.c +@@ -643,7 +643,7 @@ wctc4xxp_net_register(struct wcdte *wc) + return -ENOMEM; + priv = netdev_priv(netdev); + priv->wc = wc; +- memcpy(netdev->dev_addr, our_mac, sizeof(our_mac)); ++ memcpy((void *)netdev->dev_addr, our_mac, sizeof(our_mac)); + + # ifdef HAVE_NET_DEVICE_OPS + netdev->netdev_ops = &wctc4xxp_netdev_ops; +diff --git a/drivers/dahdi/xpp/xbus-sysfs.c b/drivers/dahdi/xpp/xbus-sysfs.c +index d8c11dc3..11b3ed3e 100644 +--- a/drivers/dahdi/xpp/xbus-sysfs.c ++++ b/drivers/dahdi/xpp/xbus-sysfs.c +@@ -418,7 +418,11 @@ static int astribank_match(struct device *dev, struct device_driver *driver) + return err; \ + } while (0) + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 3, 0) + static int astribank_uevent(struct device *dev, struct kobj_uevent_env *kenv) ++#else ++static int astribank_uevent(const struct device *dev, struct kobj_uevent_env *kenv) ++#endif + { + xbus_t *xbus; + extern char *initdir; diff --git a/package/dahdi-linux/0006-Fix-build-on-Linux-6.4.patch b/package/dahdi-linux/0006-Fix-build-on-Linux-6.4.patch new file mode 100644 index 0000000000..992cb4d513 --- /dev/null +++ b/package/dahdi-linux/0006-Fix-build-on-Linux-6.4.patch @@ -0,0 +1,69 @@ +From b393e59d7eb2951e2fb279fca1c4756ea165aeee Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 9 Jul 2023 17:14:31 +0200 +Subject: [PATCH] Fix build on Linux 6.4 + +Needed after upstream changes in kernel 6.4: +https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/diff/include/linux/device/class.h?id=1aaba11da9aa +https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=48380368dec14859723b9e3fbd43e042638d9a76 + +Upstream: https://github.com/asterisk/dahdi-linux/pull/22 + +Signed-off-by: Bernd Kuhls +--- + drivers/dahdi/dahdi-sysfs-chan.c | 4 ++++ + drivers/dahdi/voicebus/voicebus.c | 4 ++++ + drivers/dahdi/wctdm24xxp/base.c | 4 ++++ + 3 files changed, 12 insertions(+) + +diff --git a/drivers/dahdi/dahdi-sysfs-chan.c b/drivers/dahdi/dahdi-sysfs-chan.c +index a91e6ed..b18b5f9 100644 +--- a/drivers/dahdi/dahdi-sysfs-chan.c ++++ b/drivers/dahdi/dahdi-sysfs-chan.c +@@ -482,7 +482,11 @@ int __init dahdi_sysfs_chan_init(const struct file_operations *fops) + } + should_cleanup.channel_driver = 1; + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0) + dahdi_class = class_create(THIS_MODULE, "dahdi"); ++#else ++ dahdi_class = class_create("dahdi"); ++#endif + if (IS_ERR(dahdi_class)) { + res = PTR_ERR(dahdi_class); + dahdi_err("%s: class_create(dahi_chan) failed. Error: %d\n", +diff --git a/drivers/dahdi/voicebus/voicebus.c b/drivers/dahdi/voicebus/voicebus.c +index 8a1f7a6..d141aaf 100644 +--- a/drivers/dahdi/voicebus/voicebus.c ++++ b/drivers/dahdi/voicebus/voicebus.c +@@ -1135,7 +1135,11 @@ static void vb_stop_txrx_processors(struct voicebus *vb) + */ + void voicebus_stop(struct voicebus *vb) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0) + static DEFINE_SEMAPHORE(stop); ++#else ++ static DEFINE_SEMAPHORE(stop, 1); ++#endif + + down(&stop); + +diff --git a/drivers/dahdi/wctdm24xxp/base.c b/drivers/dahdi/wctdm24xxp/base.c +index a28e249..4392b45 100644 +--- a/drivers/dahdi/wctdm24xxp/base.c ++++ b/drivers/dahdi/wctdm24xxp/base.c +@@ -224,7 +224,11 @@ mod_hooksig(struct wctdm *wc, struct wctdm_module *mod, enum dahdi_rxsig rxsig) + } + + struct wctdm *ifaces[WC_MAX_IFACES]; ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0) + DEFINE_SEMAPHORE(ifacelock); ++#else ++DEFINE_SEMAPHORE(ifacelock, 1); ++#endif + + static void wctdm_release(struct wctdm *wc); + +-- +2.39.2 + diff --git a/package/dav1d/dav1d.hash b/package/dav1d/dav1d.hash index 1af699dbe3..68757060bf 100644 --- a/package/dav1d/dav1d.hash +++ b/package/dav1d/dav1d.hash @@ -1,4 +1,4 @@ -# From https://download.videolan.org/pub/videolan/dav1d/1.2.0/dav1d-1.2.0.tar.xz.sha256 -sha256 231bed8bc1bb28a41d88da6b4c2c118de84b92e5f1d67caffa1b7f81aaea8c6e dav1d-1.2.0.tar.xz +# From https://download.videolan.org/pub/videolan/dav1d/1.2.1/dav1d-1.2.1.tar.xz.sha256 +sha256 4e33eb61ec54c768a16da0cf8fa0928b4c4593f5f804a3c887d4a21c318340b2 dav1d-1.2.1.tar.xz # Locally computed sha256 b327887de263238deaa80c34cdd2ff3e0ba1d35db585ce14a37ce3e74ee389e9 COPYING diff --git a/package/dav1d/dav1d.mk b/package/dav1d/dav1d.mk index f8d4464cd4..e90f53dc1a 100644 --- a/package/dav1d/dav1d.mk +++ b/package/dav1d/dav1d.mk @@ -4,11 +4,12 @@ # ################################################################################ -DAV1D_VERSION = 1.2.0 +DAV1D_VERSION = 1.2.1 DAV1D_SOURCE = dav1d-$(DAV1D_VERSION).tar.xz DAV1D_SITE = https://download.videolan.org/pub/videolan/dav1d/$(DAV1D_VERSION) DAV1D_LICENSE = BSD-2-Clause DAV1D_LICENSE_FILES = COPYING +DAV1D_CPE_ID_VENDOR = videolan DAV1D_INSTALL_STAGING = YES DAV1D_CONF_OPTS = \ -Denable_tests=false \ diff --git a/package/dbus-broker/session.conf b/package/dbus-broker/session.conf index e4758fa218..8e9488b1db 100644 --- a/package/dbus-broker/session.conf +++ b/package/dbus-broker/session.conf @@ -12,6 +12,18 @@ the behavior of child processes. --> + unix:tmpdir=/tmp + + + EXTERNAL + @@ -23,6 +35,9 @@ + + /etc/dbus-1/session.conf + session.d diff --git a/package/dbus-broker/system.conf b/package/dbus-broker/system.conf index 4b17fbd90e..272f92361e 100644 --- a/package/dbus-broker/system.conf +++ b/package/dbus-broker/system.conf @@ -14,18 +14,33 @@ system - - - dbus + + + + + /usr/libexec/dbus-daemon-launch-helper + + + /run/messagebus.pid + + + EXTERNAL + + + unix:path=/run/dbus/system_bus_socket + @@ -54,6 +69,8 @@ send_interface="org.freedesktop.DBus.Introspectable"/> + + + /etc/dbus-1/system.conf

    wZW-7G}>EudS4h`$YVyAbhrgYFR` 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 diff --git a/board/shredos/genimage.cfg b/board/shredos/genimage.cfg index f2074f5b6a..5430c0339c 100644 --- a/board/shredos/genimage.cfg +++ b/board/shredos/genimage.cfg @@ -10,7 +10,7 @@ image boot.vfat { file autorun.inf { image = 'autorun.inf' } } - size = 230000000 + size = 240000000 } image shredos.img { diff --git a/board/shredos/kernel-4.14-defconfig.config b/board/shredos/kernel-4.14-defconfig.config deleted file mode 100644 index eda6e52682..0000000000 --- a/board/shredos/kernel-4.14-defconfig.config +++ /dev/null @@ -1,4430 +0,0 @@ -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BSD_PROCESS_ACCT_V3=y -CONFIG_TASK_XACCT=y -CONFIG_TASK_IO_ACCOUNTING=y -CONFIG_LOG_BUF_SHIFT=18 -CONFIG_NUMA_BALANCING=y -CONFIG_MEMCG=y -CONFIG_MEMCG_SWAP=y -# CONFIG_MEMCG_SWAP_ENABLED is not set -CONFIG_BLK_CGROUP=y -CONFIG_CFS_BANDWIDTH=y -CONFIG_CGROUP_PIDS=y -CONFIG_CGROUP_FREEZER=y -CONFIG_CGROUP_HUGETLB=y -CONFIG_CPUSETS=y -CONFIG_CGROUP_DEVICE=y -CONFIG_CGROUP_CPUACCT=y -CONFIG_CGROUP_PERF=y -CONFIG_CHECKPOINT_RESTORE=y -CONFIG_NAMESPACES=y -CONFIG_USER_NS=y -CONFIG_SCHED_AUTOGROUP=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_EXPERT=y -CONFIG_SYSCTL_SYSCALL=y -CONFIG_KALLSYMS_ALL=y -CONFIG_BPF_SYSCALL=y -CONFIG_USERFAULTFD=y -# CONFIG_COMPAT_BRK is not set -CONFIG_PROFILING=y -CONFIG_OPROFILE=n -CONFIG_KPROBES=y -CONFIG_JUMP_LABEL=y -CONFIG_CC_STACKPROTECTOR_REGULAR=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_MODULE_SRCVERSION_ALL=y -CONFIG_MODULE_SIG=y -CONFIG_MODULE_SIG_SHA512=y -CONFIG_BLK_DEV_THROTTLING=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_AIX_PARTITION=y -CONFIG_OSF_PARTITION=y -CONFIG_AMIGA_PARTITION=y -CONFIG_ATARI_PARTITION=y -CONFIG_MAC_PARTITION=y -CONFIG_BSD_DISKLABEL=y -CONFIG_MINIX_SUBPARTITION=y -CONFIG_SOLARIS_X86_PARTITION=y -CONFIG_UNIXWARE_DISKLABEL=y -CONFIG_LDM_PARTITION=y -CONFIG_SGI_PARTITION=y -CONFIG_ULTRIX_PARTITION=y -CONFIG_SUN_PARTITION=y -CONFIG_KARMA_PARTITION=y -CONFIG_SYSV68_PARTITION=y -CONFIG_CMDLINE_PARTITION=y -CONFIG_CFQ_GROUP_IOSCHED=y -CONFIG_DEFAULT_DEADLINE=y -CONFIG_SMP=y -CONFIG_X86_X2APIC=y -CONFIG_X86_NUMACHIP=y -CONFIG_X86_INTEL_LPSS=y -CONFIG_X86_AMD_PLATFORM_DEVICE=y -CONFIG_IOSF_MBI_DEBUG=y -CONFIG_HYPERVISOR_GUEST=y -CONFIG_PARAVIRT=y -CONFIG_PARAVIRT_SPINLOCKS=y -CONFIG_XEN=y -CONFIG_XEN_PVH=y -CONFIG_KVM_DEBUG_FS=y -CONFIG_PROCESSOR_SELECT=y -CONFIG_GART_IOMMU=y -CONFIG_CALGARY_IOMMU=y -CONFIG_NR_CPUS=256 -CONFIG_SCHED_SMT=y -CONFIG_PREEMPT_VOLUNTARY=y -CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y -CONFIG_X86_MCE_INJECT=n -CONFIG_I8K=n -CONFIG_MICROCODE_AMD=y -CONFIG_X86_MSR=n -CONFIG_X86_CPUID=n -CONFIG_NUMA=y -CONFIG_ARCH_MEMORY_PROBE=y -CONFIG_MOVABLE_NODE=y -CONFIG_MEMORY_HOTPLUG=y -CONFIG_MEMORY_HOTREMOVE=y -CONFIG_KSM=y -CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 -CONFIG_MEMORY_FAILURE=y -CONFIG_HWPOISON_INJECT=n -CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_CLEANCACHE=y -CONFIG_FRONTSWAP=y -CONFIG_CMA=y -CONFIG_MEM_SOFT_DIRTY=y -CONFIG_ZSWAP=y -CONFIG_ZBUD=y -CONFIG_ZSMALLOC=y -CONFIG_PGTABLE_MAPPING=y -CONFIG_IDLE_PAGE_TRACKING=y -CONFIG_X86_PMEM_LEGACY=y -CONFIG_X86_CHECK_BIOS_CORRUPTION=y -CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 -CONFIG_X86_INTEL_MPX=y -CONFIG_EFI=y -CONFIG_EFI_STUB=y -CONFIG_EFI_MIXED=y -CONFIG_KEXEC=y -CONFIG_KEXEC_FILE=y -CONFIG_KEXEC_VERIFY_SIG=y -CONFIG_KEXEC_BZIMAGE_VERIFY_SIG=y -CONFIG_CRASH_DUMP=y -CONFIG_KEXEC_JUMP=y -CONFIG_RANDOMIZE_BASE=y -CONFIG_PHYSICAL_ALIGN=0x1000000 -CONFIG_LIVEPATCH=y -CONFIG_HIBERNATION=y -CONFIG_PM_WAKELOCKS=y -CONFIG_PM_DEBUG=y -CONFIG_PM_ADVANCED_DEBUG=y -CONFIG_PM_TRACE_RTC=y -CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y -CONFIG_ACPI_EC_DEBUGFS=n -CONFIG_ACPI_DOCK=y -CONFIG_ACPI_IPMI=n -CONFIG_ACPI_PROCESSOR_AGGREGATOR=n -CONFIG_ACPI_PCI_SLOT=y -CONFIG_ACPI_HOTPLUG_MEMORY=y -CONFIG_ACPI_SBS=n -CONFIG_ACPI_BGRT=y -CONFIG_ACPI_NFIT=n -CONFIG_ACPI_APEI=y -CONFIG_ACPI_APEI_GHES=y -CONFIG_ACPI_APEI_PCIEAER=y -CONFIG_ACPI_APEI_MEMORY_FAILURE=y -CONFIG_ACPI_APEI_EINJ=n -CONFIG_ACPI_EXTLOG=n -CONFIG_SFI=y -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_STAT_DETAILS=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_X86_INTEL_PSTATE=y -CONFIG_X86_PCC_CPUFREQ=y -CONFIG_X86_ACPI_CPUFREQ=y -CONFIG_X86_POWERNOW_K8=y -CONFIG_X86_AMD_FREQ_SENSITIVITY=n -CONFIG_X86_SPEEDSTEP_CENTRINO=y -CONFIG_X86_P4_CLOCKMOD=n -CONFIG_CPU_IDLE_GOV_LADDER=y -CONFIG_INTEL_IDLE=y -CONFIG_I7300_IDLE=n -CONFIG_PCI_MMCONFIG=y -CONFIG_PCIEPORTBUS=y -CONFIG_HOTPLUG_PCI_PCIE=y -CONFIG_PCIEASPM_DEBUG=y -CONFIG_PCI_REALLOC_ENABLE_AUTO=y -CONFIG_PCI_STUB=n -CONFIG_XEN_PCIDEV_FRONTEND=n -CONFIG_HOTPLUG_PCI=y -CONFIG_HOTPLUG_PCI_ACPI=y -CONFIG_HOTPLUG_PCI_ACPI_IBM=n -CONFIG_HOTPLUG_PCI_CPCI=y -CONFIG_HOTPLUG_PCI_CPCI_ZT5550=n -CONFIG_HOTPLUG_PCI_CPCI_GENERIC=n -CONFIG_HOTPLUG_PCI_SHPC=n -CONFIG_PCCARD=n -CONFIG_YENTA=n -CONFIG_PD6729=n -CONFIG_I82092=n -CONFIG_RAPIDIO=y -CONFIG_RAPIDIO_TSI721=n -CONFIG_RAPIDIO_DMA_ENGINE=y -CONFIG_RAPIDIO_ENUM_BASIC=n -CONFIG_RAPIDIO_TSI57X=n -CONFIG_RAPIDIO_CPS_XX=n -CONFIG_RAPIDIO_TSI568=n -CONFIG_RAPIDIO_CPS_GEN2=n -CONFIG_BINFMT_MISC=n -CONFIG_IA32_EMULATION=y -CONFIG_X86_X32=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_PACKET_DIAG=n -CONFIG_UNIX=y -CONFIG_UNIX_DIAG=n -CONFIG_XFRM_USER=n -CONFIG_XFRM_STATISTICS=y -CONFIG_NET_KEY=n -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_FIB_TRIE_STATS=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_NET_IPIP=n -CONFIG_NET_IPGRE_DEMUX=n -CONFIG_NET_IPGRE=n -CONFIG_NET_IPGRE_BROADCAST=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_NET_IPVTI=n -CONFIG_NET_FOU_IP_TUNNELS=y -CONFIG_INET_AH=n -CONFIG_INET_ESP=n -CONFIG_INET_IPCOMP=n -CONFIG_INET_XFRM_MODE_TRANSPORT=n -CONFIG_INET_XFRM_MODE_TUNNEL=n -CONFIG_INET_XFRM_MODE_BEET=n -CONFIG_INET_DIAG=n -CONFIG_INET_UDP_DIAG=n -CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_HSTCP=n -CONFIG_TCP_CONG_HYBLA=n -CONFIG_TCP_CONG_SCALABLE=n -CONFIG_TCP_CONG_LP=n -CONFIG_TCP_CONG_VENO=n -CONFIG_TCP_CONG_YEAH=n -CONFIG_TCP_CONG_ILLINOIS=n -CONFIG_TCP_CONG_DCTCP=n -CONFIG_TCP_CONG_CDG=n -CONFIG_TCP_MD5SIG=y -CONFIG_IPV6_ROUTER_PREF=y -CONFIG_IPV6_ROUTE_INFO=y -CONFIG_INET6_AH=n -CONFIG_INET6_ESP=n -CONFIG_INET6_IPCOMP=n -CONFIG_IPV6_MIP6=n -CONFIG_IPV6_ILA=n -CONFIG_INET6_XFRM_MODE_TRANSPORT=n -CONFIG_INET6_XFRM_MODE_TUNNEL=n -CONFIG_INET6_XFRM_MODE_BEET=n -CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=n -CONFIG_IPV6_VTI=n -CONFIG_IPV6_SIT=n -CONFIG_IPV6_SIT_6RD=y -CONFIG_IPV6_GRE=n -CONFIG_IPV6_MULTIPLE_TABLES=y -CONFIG_IPV6_SUBTREES=y -CONFIG_IPV6_MROUTE=y -CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y -CONFIG_IPV6_PIMSM_V2=y -CONFIG_NETFILTER=y -CONFIG_NF_CONNTRACK=n -CONFIG_NF_CONNTRACK_SECMARK=y -CONFIG_NF_CONNTRACK_ZONES=y -# CONFIG_NF_CONNTRACK_PROCFS is not set -CONFIG_NF_CONNTRACK_EVENTS=y -CONFIG_NF_CONNTRACK_TIMEOUT=y -CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CT_PROTO_UDPLITE=n -CONFIG_NF_CONNTRACK_AMANDA=n -CONFIG_NF_CONNTRACK_FTP=n -CONFIG_NF_CONNTRACK_H323=n -CONFIG_NF_CONNTRACK_IRC=n -CONFIG_NF_CONNTRACK_NETBIOS_NS=n -CONFIG_NF_CONNTRACK_SNMP=n -CONFIG_NF_CONNTRACK_PPTP=n -CONFIG_NF_CONNTRACK_SANE=n -CONFIG_NF_CONNTRACK_SIP=n -CONFIG_NF_CONNTRACK_TFTP=n -CONFIG_NF_CT_NETLINK=n -CONFIG_NF_CT_NETLINK_TIMEOUT=n -CONFIG_NF_CT_NETLINK_HELPER=n -CONFIG_NETFILTER_NETLINK_GLUE_CT=y -CONFIG_NF_TABLES=n -CONFIG_NF_TABLES_INET=n -CONFIG_NF_TABLES_NETDEV=n -CONFIG_NFT_EXTHDR=n -CONFIG_NFT_META=n -CONFIG_NFT_CT=n -CONFIG_NFT_COUNTER=n -CONFIG_NFT_LOG=n -CONFIG_NFT_LIMIT=n -CONFIG_NFT_MASQ=n -CONFIG_NFT_REDIR=n -CONFIG_NFT_NAT=n -CONFIG_NFT_QUEUE=n -CONFIG_NFT_REJECT=n -CONFIG_NFT_COMPAT=n -CONFIG_NFT_HASH=n -CONFIG_NETFILTER_XT_SET=n -CONFIG_NETFILTER_XT_TARGET_AUDIT=n -CONFIG_NETFILTER_XT_TARGET_CHECKSUM=n -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=n -CONFIG_NETFILTER_XT_TARGET_CONNMARK=n -CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=n -CONFIG_NETFILTER_XT_TARGET_CT=n -CONFIG_NETFILTER_XT_TARGET_DSCP=n -CONFIG_NETFILTER_XT_TARGET_HMARK=n -CONFIG_NETFILTER_XT_TARGET_IDLETIMER=n -CONFIG_NETFILTER_XT_TARGET_LED=n -CONFIG_NETFILTER_XT_TARGET_LOG=n -CONFIG_NETFILTER_XT_TARGET_MARK=n -CONFIG_NETFILTER_XT_TARGET_NFLOG=n -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=n -CONFIG_NETFILTER_XT_TARGET_TEE=n -CONFIG_NETFILTER_XT_TARGET_TPROXY=n -CONFIG_NETFILTER_XT_TARGET_TRACE=n -CONFIG_NETFILTER_XT_TARGET_SECMARK=n -CONFIG_NETFILTER_XT_TARGET_TCPMSS=n -CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=n -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=n -CONFIG_NETFILTER_XT_MATCH_BPF=n -CONFIG_NETFILTER_XT_MATCH_CGROUP=n -CONFIG_NETFILTER_XT_MATCH_CLUSTER=n -CONFIG_NETFILTER_XT_MATCH_COMMENT=n -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=n -CONFIG_NETFILTER_XT_MATCH_CONNLABEL=n -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=n -CONFIG_NETFILTER_XT_MATCH_CONNMARK=n -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=n -CONFIG_NETFILTER_XT_MATCH_CPU=n -CONFIG_NETFILTER_XT_MATCH_DEVGROUP=n -CONFIG_NETFILTER_XT_MATCH_DSCP=n -CONFIG_NETFILTER_XT_MATCH_ESP=n -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=n -CONFIG_NETFILTER_XT_MATCH_HELPER=n -CONFIG_NETFILTER_XT_MATCH_IPCOMP=n -CONFIG_NETFILTER_XT_MATCH_IPRANGE=n -CONFIG_NETFILTER_XT_MATCH_IPVS=n -CONFIG_NETFILTER_XT_MATCH_LENGTH=n -CONFIG_NETFILTER_XT_MATCH_LIMIT=n -CONFIG_NETFILTER_XT_MATCH_MAC=n -CONFIG_NETFILTER_XT_MATCH_MARK=n -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=n -CONFIG_NETFILTER_XT_MATCH_NFACCT=n -CONFIG_NETFILTER_XT_MATCH_OSF=n -CONFIG_NETFILTER_XT_MATCH_OWNER=n -CONFIG_NETFILTER_XT_MATCH_POLICY=n -CONFIG_NETFILTER_XT_MATCH_PHYSDEV=n -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=n -CONFIG_NETFILTER_XT_MATCH_QUOTA=n -CONFIG_NETFILTER_XT_MATCH_RATEEST=n -CONFIG_NETFILTER_XT_MATCH_REALM=n -CONFIG_NETFILTER_XT_MATCH_RECENT=n -CONFIG_NETFILTER_XT_MATCH_SOCKET=n -CONFIG_NETFILTER_XT_MATCH_STATE=n -CONFIG_NETFILTER_XT_MATCH_STATISTIC=n -CONFIG_NETFILTER_XT_MATCH_STRING=n -CONFIG_NETFILTER_XT_MATCH_TCPMSS=n -CONFIG_NETFILTER_XT_MATCH_TIME=n -CONFIG_NETFILTER_XT_MATCH_U32=n -CONFIG_IP_SET=n -CONFIG_IP_SET_BITMAP_IP=n -CONFIG_IP_SET_BITMAP_IPMAC=n -CONFIG_IP_SET_BITMAP_PORT=n -CONFIG_IP_SET_HASH_IP=n -CONFIG_IP_SET_HASH_IPMARK=n -CONFIG_IP_SET_HASH_IPPORT=n -CONFIG_IP_SET_HASH_IPPORTIP=n -CONFIG_IP_SET_HASH_IPPORTNET=n -CONFIG_IP_SET_HASH_MAC=n -CONFIG_IP_SET_HASH_NETPORTNET=n -CONFIG_IP_SET_HASH_NET=n -CONFIG_IP_SET_HASH_NETNET=n -CONFIG_IP_SET_HASH_NETPORT=n -CONFIG_IP_SET_HASH_NETIFACE=n -CONFIG_IP_SET_LIST_SET=n -CONFIG_IP_VS=n -CONFIG_IP_VS_IPV6=y -CONFIG_IP_VS_PROTO_TCP=y -CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_ESP=y -CONFIG_IP_VS_PROTO_AH=y -CONFIG_IP_VS_PROTO_SCTP=y -CONFIG_IP_VS_RR=n -CONFIG_IP_VS_WRR=n -CONFIG_IP_VS_LC=n -CONFIG_IP_VS_WLC=n -CONFIG_IP_VS_FO=n -CONFIG_IP_VS_OVF=n -CONFIG_IP_VS_LBLC=n -CONFIG_IP_VS_LBLCR=n -CONFIG_IP_VS_DH=n -CONFIG_IP_VS_SH=n -CONFIG_IP_VS_SED=n -CONFIG_IP_VS_NQ=n -CONFIG_IP_VS_FTP=n -CONFIG_IP_VS_PE_SIP=n -CONFIG_NF_CONNTRACK_IPV4=n -CONFIG_NFT_CHAIN_ROUTE_IPV4=n -CONFIG_NFT_DUP_IPV4=n -CONFIG_NF_TABLES_ARP=n -CONFIG_NF_LOG_ARP=n -CONFIG_NFT_CHAIN_NAT_IPV4=n -CONFIG_NFT_MASQ_IPV4=n -CONFIG_NFT_REDIR_IPV4=n -CONFIG_IP_NF_IPTABLES=y -CONFIG_IP_NF_MATCH_AH=n -CONFIG_IP_NF_MATCH_ECN=n -CONFIG_IP_NF_MATCH_RPFILTER=n -CONFIG_IP_NF_MATCH_TTL=n -CONFIG_IP_NF_FILTER=y -CONFIG_IP_NF_TARGET_REJECT=n -CONFIG_IP_NF_TARGET_SYNPROXY=n -CONFIG_IP_NF_NAT=n -CONFIG_IP_NF_TARGET_MASQUERADE=n -CONFIG_IP_NF_TARGET_NETMAP=n -CONFIG_IP_NF_TARGET_REDIRECT=n -CONFIG_IP_NF_MANGLE=n -CONFIG_IP_NF_TARGET_CLUSTERIP=n -CONFIG_IP_NF_TARGET_ECN=n -CONFIG_IP_NF_TARGET_TTL=n -CONFIG_IP_NF_RAW=n -CONFIG_IP_NF_SECURITY=n -CONFIG_IP_NF_ARPTABLES=n -CONFIG_IP_NF_ARPFILTER=n -CONFIG_IP_NF_ARP_MANGLE=n -CONFIG_NF_CONNTRACK_IPV6=n -CONFIG_NFT_CHAIN_ROUTE_IPV6=n -CONFIG_NFT_DUP_IPV6=n -CONFIG_NFT_CHAIN_NAT_IPV6=n -CONFIG_NFT_MASQ_IPV6=n -CONFIG_NFT_REDIR_IPV6=n -CONFIG_IP6_NF_MATCH_AH=n -CONFIG_IP6_NF_MATCH_EUI64=n -CONFIG_IP6_NF_MATCH_FRAG=n -CONFIG_IP6_NF_MATCH_OPTS=n -CONFIG_IP6_NF_MATCH_HL=n -CONFIG_IP6_NF_MATCH_IPV6HEADER=n -CONFIG_IP6_NF_MATCH_MH=n -CONFIG_IP6_NF_MATCH_RPFILTER=n -CONFIG_IP6_NF_MATCH_RT=n -CONFIG_IP6_NF_TARGET_HL=n -CONFIG_IP6_NF_FILTER=n -CONFIG_IP6_NF_TARGET_REJECT=n -CONFIG_IP6_NF_TARGET_SYNPROXY=n -CONFIG_IP6_NF_MANGLE=n -CONFIG_IP6_NF_RAW=n -CONFIG_IP6_NF_SECURITY=n -CONFIG_IP6_NF_NAT=n -CONFIG_IP6_NF_TARGET_MASQUERADE=n -CONFIG_IP6_NF_TARGET_NPT=n -CONFIG_DECNET_NF_GRABULATOR=n -CONFIG_NF_TABLES_BRIDGE=n -CONFIG_NFT_BRIDGE_META=n -CONFIG_NFT_BRIDGE_REJECT=n -CONFIG_NF_LOG_BRIDGE=n -CONFIG_BRIDGE_NF_EBTABLES=n -CONFIG_BRIDGE_EBT_BROUTE=n -CONFIG_BRIDGE_EBT_T_FILTER=n -CONFIG_BRIDGE_EBT_T_NAT=n -CONFIG_BRIDGE_EBT_802_3=n -CONFIG_BRIDGE_EBT_AMONG=n -CONFIG_BRIDGE_EBT_ARP=n -CONFIG_BRIDGE_EBT_IP=n -CONFIG_BRIDGE_EBT_IP6=n -CONFIG_BRIDGE_EBT_LIMIT=n -CONFIG_BRIDGE_EBT_MARK=n -CONFIG_BRIDGE_EBT_PKTTYPE=n -CONFIG_BRIDGE_EBT_STP=n -CONFIG_BRIDGE_EBT_VLAN=n -CONFIG_BRIDGE_EBT_ARPREPLY=n -CONFIG_BRIDGE_EBT_DNAT=n -CONFIG_BRIDGE_EBT_MARK_T=n -CONFIG_BRIDGE_EBT_REDIRECT=n -CONFIG_BRIDGE_EBT_SNAT=n -CONFIG_BRIDGE_EBT_LOG=n -CONFIG_BRIDGE_EBT_NFLOG=n -CONFIG_IP_DCCP=n -# CONFIG_IP_DCCP_CCID3 is not set -CONFIG_NET_DCCPPROBE=n -CONFIG_NET_SCTPPROBE=n -CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y -CONFIG_SCTP_COOKIE_HMAC_MD5=y -CONFIG_RDS=n -CONFIG_RDS_RDMA=n -CONFIG_RDS_TCP=n -CONFIG_TIPC=n -CONFIG_TIPC_MEDIA_IB=y -CONFIG_ATM=n -CONFIG_ATM_CLIP=n -CONFIG_ATM_LANE=n -CONFIG_ATM_MPOA=n -CONFIG_ATM_BR2684=n -CONFIG_L2TP=n -CONFIG_L2TP_DEBUGFS=n -CONFIG_L2TP_V3=y -CONFIG_L2TP_IP=n -CONFIG_L2TP_ETH=n -CONFIG_BRIDGE=n -CONFIG_BRIDGE_VLAN_FILTERING=y -CONFIG_VLAN_8021Q=n -CONFIG_VLAN_8021Q_GVRP=y -CONFIG_VLAN_8021Q_MVRP=y -CONFIG_DECNET=n -CONFIG_LLC2=n -CONFIG_IPX=n -CONFIG_ATALK=n -CONFIG_DEV_APPLETALK=n -CONFIG_IPDDP=n -CONFIG_IPDDP_ENCAP=y -CONFIG_X25=n -CONFIG_LAPB=n -CONFIG_PHONET=n -CONFIG_6LOWPAN=n -CONFIG_IEEE802154=n -CONFIG_IEEE802154_NL802154_EXPERIMENTAL=y -CONFIG_IEEE802154_6LOWPAN=n -CONFIG_MAC802154=n -CONFIG_NET_SCHED=y -CONFIG_NET_SCH_CBQ=n -CONFIG_NET_SCH_HTB=n -CONFIG_NET_SCH_HFSC=n -CONFIG_NET_SCH_ATM=n -CONFIG_NET_SCH_PRIO=n -CONFIG_NET_SCH_MULTIQ=n -CONFIG_NET_SCH_RED=n -CONFIG_NET_SCH_SFB=n -CONFIG_NET_SCH_SFQ=n -CONFIG_NET_SCH_TEQL=n -CONFIG_NET_SCH_TBF=n -CONFIG_NET_SCH_GRED=n -CONFIG_NET_SCH_DSMARK=n -CONFIG_NET_SCH_NETEM=n -CONFIG_NET_SCH_DRR=n -CONFIG_NET_SCH_MQPRIO=n -CONFIG_NET_SCH_CHOKE=n -CONFIG_NET_SCH_QFQ=n -CONFIG_NET_SCH_CODEL=n -CONFIG_NET_SCH_FQ_CODEL=n -CONFIG_NET_SCH_FQ=n -CONFIG_NET_SCH_HHF=n -CONFIG_NET_SCH_PIE=n -CONFIG_NET_SCH_INGRESS=n -CONFIG_NET_SCH_PLUG=n -CONFIG_NET_CLS_BASIC=n -CONFIG_NET_CLS_TCINDEX=n -CONFIG_NET_CLS_ROUTE4=n -CONFIG_NET_CLS_FW=n -CONFIG_NET_CLS_U32=n -CONFIG_CLS_U32_MARK=y -CONFIG_NET_CLS_RSVP=n -CONFIG_NET_CLS_RSVP6=n -CONFIG_NET_CLS_FLOW=n -CONFIG_NET_CLS_CGROUP=n -CONFIG_NET_CLS_BPF=n -CONFIG_NET_CLS_FLOWER=n -CONFIG_NET_EMATCH=y -CONFIG_NET_EMATCH_CMP=n -CONFIG_NET_EMATCH_NBYTE=n -CONFIG_NET_EMATCH_U32=n -CONFIG_NET_EMATCH_META=n -CONFIG_NET_EMATCH_TEXT=n -CONFIG_NET_EMATCH_CANID=n -CONFIG_NET_EMATCH_IPSET=n -CONFIG_NET_CLS_ACT=y -CONFIG_NET_ACT_POLICE=n -CONFIG_NET_ACT_GACT=n -CONFIG_GACT_PROB=y -CONFIG_NET_ACT_MIRRED=n -CONFIG_NET_ACT_IPT=n -CONFIG_NET_ACT_NAT=n -CONFIG_NET_ACT_PEDIT=n -CONFIG_NET_ACT_SIMP=n -CONFIG_NET_ACT_SKBEDIT=n -CONFIG_NET_ACT_CSUM=n -CONFIG_NET_ACT_VLAN=n -CONFIG_NET_ACT_BPF=n -CONFIG_NET_ACT_CONNMARK=n -CONFIG_DCB=y -CONFIG_DNS_RESOLVER=y -CONFIG_BATMAN_ADV=n -CONFIG_BATMAN_ADV_DAT=y -CONFIG_BATMAN_ADV_NC=y -CONFIG_BATMAN_ADV_MCAST=y -CONFIG_OPENVSWITCH=n -CONFIG_VSOCKETS=n -CONFIG_VMWARE_VMCI_VSOCKETS=n -CONFIG_NETLINK_DIAG=n -CONFIG_MPLS_ROUTING=n -CONFIG_MPLS_IPTUNNEL=n -CONFIG_HSR=n -CONFIG_NET_L3_MASTER_DEV=y -CONFIG_CGROUP_NET_PRIO=y -CONFIG_BPF_JIT=y -CONFIG_NET_PKTGEN=n -CONFIG_NET_TCPPROBE=n -CONFIG_HAMRADIO=y -CONFIG_AX25=n -CONFIG_NETROM=n -CONFIG_ROSE=n -CONFIG_MKISS=n -CONFIG_6PACK=n -CONFIG_BPQETHER=n -CONFIG_BAYCOM_SER_FDX=n -CONFIG_BAYCOM_SER_HDX=n -CONFIG_BAYCOM_PAR=n -CONFIG_YAM=n -CONFIG_CAN=n -CONFIG_CAN_VCAN=n -CONFIG_CAN_SLCAN=n -CONFIG_CAN_LEDS=y -CONFIG_CAN_JANZ_ICAN3=n -CONFIG_CAN_C_CAN=n -CONFIG_CAN_C_CAN_PLATFORM=n -CONFIG_CAN_C_CAN_PCI=n -CONFIG_CAN_CC770=n -CONFIG_CAN_CC770_ISA=n -CONFIG_CAN_CC770_PLATFORM=n -CONFIG_CAN_M_CAN=n -CONFIG_CAN_SJA1000=n -CONFIG_CAN_SJA1000_ISA=n -CONFIG_CAN_SJA1000_PLATFORM=n -CONFIG_CAN_EMS_PCMCIA=n -CONFIG_CAN_EMS_PCI=n -CONFIG_CAN_PEAK_PCMCIA=n -CONFIG_CAN_PEAK_PCI=n -CONFIG_CAN_KVASER_PCI=n -CONFIG_CAN_PLX_PCI=n -CONFIG_CAN_SOFTING=n -CONFIG_CAN_SOFTING_CS=n -CONFIG_CAN_MCP251X=n -CONFIG_CAN_EMS_USB=n -CONFIG_CAN_ESD_USB2=n -CONFIG_CAN_GS_USB=n -CONFIG_CAN_KVASER_USB=n -CONFIG_CAN_PEAK_USB=n -CONFIG_CAN_8DEV_USB=n -CONFIG_IRDA=n -CONFIG_IRLAN=n -CONFIG_IRNET=n -CONFIG_IRCOMM=n -CONFIG_IRDA_ULTRA=y -CONFIG_IRDA_CACHE_LAST_LSAP=y -CONFIG_IRDA_FAST_RR=y -CONFIG_IRTTY_SIR=n -CONFIG_DONGLE=y -CONFIG_ESI_DONGLE=n -CONFIG_ACTISYS_DONGLE=n -CONFIG_TEKRAM_DONGLE=n -CONFIG_TOIM3232_DONGLE=n -CONFIG_LITELINK_DONGLE=n -CONFIG_MA600_DONGLE=n -CONFIG_GIRBIL_DONGLE=n -CONFIG_MCP2120_DONGLE=n -CONFIG_OLD_BELKIN_DONGLE=n -CONFIG_ACT200L_DONGLE=n -CONFIG_KINGSUN_DONGLE=n -CONFIG_KSDAZZLE_DONGLE=n -CONFIG_KS959_DONGLE=n -CONFIG_USB_IRDA=n -CONFIG_SIGMATEL_FIR=n -CONFIG_NSC_FIR=n -CONFIG_WINBOND_FIR=n -CONFIG_SMC_IRCC_FIR=n -CONFIG_ALI_FIR=n -CONFIG_VLSI_FIR=n -CONFIG_VIA_FIR=n -CONFIG_MCS_FIR=n -CONFIG_BT=n -CONFIG_BT_RFCOMM=n -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=n -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_CMTP=n -CONFIG_BT_HIDP=n -CONFIG_BT_6LOWPAN=n -CONFIG_BT_HCIBTUSB=n -CONFIG_BT_HCIBTSDIO=n -CONFIG_BT_HCIUART=n -CONFIG_BT_HCIUART_BCSP=y -CONFIG_BT_HCIUART_ATH3K=y -CONFIG_BT_HCIUART_LL=y -CONFIG_BT_HCIUART_3WIRE=y -CONFIG_BT_HCIUART_INTEL=y -CONFIG_BT_HCIUART_BCM=y -CONFIG_BT_HCIUART_QCA=y -CONFIG_BT_HCIBCM203X=n -CONFIG_BT_HCIBPA10X=n -CONFIG_BT_HCIBFUSB=n -CONFIG_BT_HCIDTL1=n -CONFIG_BT_HCIBT3C=n -CONFIG_BT_HCIBLUECARD=n -CONFIG_BT_HCIBTUART=n -CONFIG_BT_HCIVHCI=n -CONFIG_BT_MRVL=n -CONFIG_BT_MRVL_SDIO=n -CONFIG_BT_ATH3K=n -CONFIG_BT_WILINK=n -CONFIG_RXKAD=y -CONFIG_CFG80211=n -CONFIG_CFG80211_DEBUGFS=y -CONFIG_MAC80211=n -CONFIG_MAC80211_RC_MINSTREL_VHT=y -CONFIG_MAC80211_MESH=y -CONFIG_MAC80211_MESSAGE_TRACING=y -CONFIG_WIMAX=n -CONFIG_RFKILL=y -CONFIG_RFKILL_INPUT=y -CONFIG_RFKILL_REGULATOR=n -CONFIG_RFKILL_GPIO=n -CONFIG_NET_9P=n -CONFIG_NET_9P_VIRTIO=n -CONFIG_NET_9P_RDMA=n -CONFIG_CAIF=n -CONFIG_CAIF_USB=n -CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y -CONFIG_NFC=n -CONFIG_NFC_DIGITAL=n -CONFIG_NFC_NCI=n -CONFIG_NFC_NCI_SPI=n -CONFIG_NFC_NCI_UART=n -CONFIG_NFC_HCI=n -CONFIG_NFC_SHDLC=y -CONFIG_NFC_WILINK=n -CONFIG_NFC_TRF7970A=n -CONFIG_NFC_MEI_PHY=n -CONFIG_NFC_SIM=n -CONFIG_NFC_PORT100=n -CONFIG_NFC_FDP=n -CONFIG_NFC_FDP_I2C=n -CONFIG_NFC_PN544_I2C=n -CONFIG_NFC_PN544_MEI=n -CONFIG_NFC_MICROREAD_I2C=n -CONFIG_NFC_MICROREAD_MEI=n -CONFIG_NFC_MRVL_USB=n -CONFIG_NFC_MRVL_UART=n -CONFIG_NFC_MRVL_I2C=n -CONFIG_NFC_MRVL_SPI=n -CONFIG_NFC_ST21NFCA_I2C=n -CONFIG_NFC_ST_NCI_I2C=n -CONFIG_NFC_ST_NCI_SPI=n -CONFIG_NFC_NXP_NCI=n -CONFIG_NFC_NXP_NCI_I2C=n -CONFIG_NFC_S3FWRN5_I2C=n -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -# CONFIG_STANDALONE is not set -CONFIG_CONNECTOR=y -CONFIG_MTD=n -CONFIG_MTD_REDBOOT_PARTS=n -CONFIG_MTD_CMDLINE_PARTS=n -CONFIG_MTD_AR7_PARTS=n -CONFIG_MTD_BLOCK=n -CONFIG_MTD_BLOCK_RO=n -CONFIG_FTL=n -CONFIG_NFTL=n -CONFIG_NFTL_RW=y -CONFIG_INFTL=n -CONFIG_RFD_FTL=n -CONFIG_SSFDC=n -CONFIG_SM_FTL=n -CONFIG_MTD_OOPS=n -CONFIG_MTD_SWAP=n -CONFIG_MTD_CFI=n -CONFIG_MTD_JEDECPROBE=n -CONFIG_MTD_CFI_INTELEXT=n -CONFIG_MTD_CFI_AMDSTD=n -CONFIG_MTD_CFI_STAA=n -CONFIG_MTD_ROM=n -CONFIG_MTD_ABSENT=n -CONFIG_MTD_COMPLEX_MAPPINGS=y -CONFIG_MTD_PHYSMAP=n -CONFIG_MTD_SBC_GXX=n -CONFIG_MTD_AMD76XROM=n -CONFIG_MTD_ICHXROM=n -CONFIG_MTD_ESB2ROM=n -CONFIG_MTD_CK804XROM=n -CONFIG_MTD_SCB2_FLASH=n -CONFIG_MTD_NETtel=n -CONFIG_MTD_L440GX=n -CONFIG_MTD_PCI=n -CONFIG_MTD_PCMCIA=n -CONFIG_MTD_GPIO_ADDR=n -CONFIG_MTD_INTEL_VR_NOR=n -CONFIG_MTD_PLATRAM=n -CONFIG_MTD_LATCH_ADDR=n -CONFIG_MTD_PMC551=n -CONFIG_MTD_DATAFLASH=n -CONFIG_MTD_DATAFLASH_OTP=y -CONFIG_MTD_M25P80=n -CONFIG_MTD_SST25L=n -CONFIG_MTD_SLRAM=n -CONFIG_MTD_PHRAM=n -CONFIG_MTD_MTDRAM=n -CONFIG_MTD_BLOCK2MTD=n -CONFIG_MTD_DOCG3=n -CONFIG_MTD_NAND=n -CONFIG_MTD_NAND_ECC_BCH=y -CONFIG_MTD_NAND_DENALI_PCI=n -CONFIG_MTD_NAND_GPIO=n -CONFIG_MTD_NAND_RICOH=n -CONFIG_MTD_NAND_DISKONCHIP=n -CONFIG_MTD_NAND_DOCG4=n -CONFIG_MTD_NAND_CAFE=n -CONFIG_MTD_NAND_NANDSIM=n -CONFIG_MTD_NAND_PLATFORM=n -CONFIG_MTD_NAND_HISI504=n -CONFIG_MTD_ONENAND=n -CONFIG_MTD_ONENAND_VERIFY_WRITE=y -CONFIG_MTD_ONENAND_GENERIC=n -CONFIG_MTD_ONENAND_2X_PROGRAM=y -CONFIG_MTD_LPDDR=n -CONFIG_MTD_SPI_NOR=n -CONFIG_MTD_UBI=n -CONFIG_MTD_UBI_FASTMAP=y -CONFIG_MTD_UBI_GLUEBI=n -CONFIG_MTD_UBI_BLOCK=y -CONFIG_PARPORT=n -CONFIG_PARPORT_PC=n -CONFIG_PARPORT_SERIAL=n -CONFIG_PARPORT_PC_FIFO=y -CONFIG_PARPORT_PC_PCMCIA=n -CONFIG_PARPORT_AX88796=n -CONFIG_PARPORT_1284=y -# CONFIG_PNP_DEBUG_MESSAGES is not set -CONFIG_BLK_DEV_NULL_BLK=n -CONFIG_BLK_DEV_FD=n -CONFIG_PARIDE=n -CONFIG_PARIDE_PD=n -CONFIG_PARIDE_PCD=n -CONFIG_PARIDE_PF=n -CONFIG_PARIDE_PT=n -CONFIG_PARIDE_PG=n -CONFIG_PARIDE_ATEN=n -CONFIG_PARIDE_BPCK=n -CONFIG_PARIDE_COMM=n -CONFIG_PARIDE_DSTR=n -CONFIG_PARIDE_FIT2=n -CONFIG_PARIDE_FIT3=n -CONFIG_PARIDE_EPAT=n -CONFIG_PARIDE_EPATC8=y -CONFIG_PARIDE_EPIA=n -CONFIG_PARIDE_FRIQ=n -CONFIG_PARIDE_FRPW=n -CONFIG_PARIDE_KBIC=n -CONFIG_PARIDE_KTTI=n -CONFIG_PARIDE_ON20=n -CONFIG_PARIDE_ON26=n -CONFIG_BLK_DEV_PCIESSD_MTIP32XX=n -CONFIG_ZRAM=n -CONFIG_BLK_CPQ_CISS_DA=n -CONFIG_CISS_SCSI_TAPE=y -CONFIG_BLK_DEV_DAC960=n -CONFIG_BLK_DEV_UMEM=n -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_CRYPTOLOOP=n -CONFIG_BLK_DEV_DRBD=n -CONFIG_BLK_DEV_NBD=n -CONFIG_BLK_DEV_SKD=n -CONFIG_BLK_DEV_OSD=n -CONFIG_BLK_DEV_SX8=n -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=65536 -CONFIG_BLK_DEV_RAM_DAX=y -CONFIG_CDROM_PKTCDVD=n -CONFIG_ATA_OVER_ETH=n -CONFIG_XEN_BLKDEV_BACKEND=n -CONFIG_VIRTIO_BLK=y -CONFIG_BLK_DEV_RBD=n -CONFIG_BLK_DEV_RSXX=n -CONFIG_BLK_DEV_NVME=n -CONFIG_BLK_DEV_NVME_SCSI=y -CONFIG_AD525X_DPOT=n -CONFIG_AD525X_DPOT_I2C=n -CONFIG_AD525X_DPOT_SPI=n -CONFIG_DUMMY_IRQ=n -CONFIG_IBM_ASM=n -CONFIG_PHANTOM=n -CONFIG_SGI_IOC4=n -CONFIG_ICS932S401=n -CONFIG_ENCLOSURE_SERVICES=n -CONFIG_HP_ILO=n -CONFIG_APDS9802ALS=n -CONFIG_ISL29003=n -CONFIG_ISL29020=n -CONFIG_SENSORS_TSL2550=n -CONFIG_SENSORS_BH1770=n -CONFIG_SENSORS_APDS990X=n -CONFIG_HMC6352=n -CONFIG_DS1682=n -CONFIG_TI_DAC7512=n -CONFIG_VMWARE_BALLOON=n -CONFIG_USB_SWITCH_FSA9480=n -CONFIG_LATTICE_ECP3_CONFIG=n -CONFIG_SRAM=y -CONFIG_PANEL=n -CONFIG_C2PORT=n -CONFIG_C2PORT_DURAMAR_2150=n -CONFIG_EEPROM_AT24=n -CONFIG_EEPROM_AT25=n -CONFIG_EEPROM_LEGACY=n -CONFIG_EEPROM_MAX6875=n -CONFIG_EEPROM_93XX46=n -CONFIG_TI_ST=n -CONFIG_SENSORS_LIS3_I2C=n -CONFIG_INTEL_MEI_ME=n -CONFIG_INTEL_MEI_TXE=n -CONFIG_VMWARE_VMCI=n -CONFIG_INTEL_MIC_BUS=n -CONFIG_SCIF_BUS=n -CONFIG_SCIF=n -CONFIG_MIC_COSM=n -CONFIG_GENWQE=n -CONFIG_ECHO=n -CONFIG_BLK_DEV_SD=y -CONFIG_CHR_DEV_ST=n -CONFIG_CHR_DEV_OSST=n -CONFIG_BLK_DEV_SR=y -CONFIG_CHR_DEV_SG=y -CONFIG_CHR_DEV_SCH=n -CONFIG_SCSI_ENCLOSURE=n -CONFIG_SCSI_CONSTANTS=y -CONFIG_SCSI_LOGGING=y -CONFIG_SCSI_SCAN_ASYNC=y -CONFIG_SCSI_FC_ATTRS=n -CONFIG_SCSI_SAS_ATA=y -CONFIG_ISCSI_TCP=n -CONFIG_SCSI_CXGB3_ISCSI=n -CONFIG_SCSI_CXGB4_ISCSI=n -CONFIG_SCSI_BNX2_ISCSI=n -CONFIG_SCSI_BNX2X_FCOE=n -CONFIG_BE2ISCSI=n -CONFIG_BLK_DEV_3W_XXXX_RAID=n -CONFIG_SCSI_HPSA=n -CONFIG_SCSI_3W_9XXX=n -CONFIG_SCSI_3W_SAS=n -CONFIG_SCSI_ACARD=n -CONFIG_SCSI_AACRAID=n -CONFIG_SCSI_AIC7XXX=n -CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 -# CONFIG_AIC7XXX_DEBUG_ENABLE is not set -CONFIG_SCSI_AIC79XX=n -# CONFIG_AIC79XX_DEBUG_ENABLE is not set -CONFIG_SCSI_AIC94XX=n -# CONFIG_AIC94XX_DEBUG is not set -CONFIG_SCSI_MVSAS=n -# CONFIG_SCSI_MVSAS_DEBUG is not set -CONFIG_SCSI_MVUMI=n -CONFIG_SCSI_DPT_I2O=n -CONFIG_SCSI_ADVANSYS=n -CONFIG_SCSI_ARCMSR=n -CONFIG_SCSI_ESAS2R=n -CONFIG_MEGARAID_NEWGEN=y -CONFIG_MEGARAID_MM=n -CONFIG_MEGARAID_MAILBOX=n -CONFIG_MEGARAID_LEGACY=n -CONFIG_MEGARAID_SAS=n -CONFIG_SCSI_MPT2SAS=n -CONFIG_SCSI_UFSHCD=n -CONFIG_SCSI_UFSHCD_PCI=n -CONFIG_SCSI_UFSHCD_PLATFORM=n -CONFIG_SCSI_HPTIOP=n -CONFIG_SCSI_BUSLOGIC=n -CONFIG_SCSI_FLASHPOINT=y -CONFIG_VMWARE_PVSCSI=n -CONFIG_XEN_SCSI_FRONTEND=n -CONFIG_LIBFC=n -CONFIG_LIBFCOE=n -CONFIG_FCOE=n -CONFIG_FCOE_FNIC=n -CONFIG_SCSI_SNIC=n -CONFIG_SCSI_DMX3191D=n -CONFIG_SCSI_EATA=n -CONFIG_SCSI_EATA_TAGGED_QUEUE=y -CONFIG_SCSI_EATA_LINKED_COMMANDS=y -CONFIG_SCSI_FUTURE_DOMAIN=n -CONFIG_SCSI_GDTH=n -CONFIG_SCSI_ISCI=n -CONFIG_SCSI_IPS=n -CONFIG_SCSI_INITIO=n -CONFIG_SCSI_INIA100=n -CONFIG_SCSI_PPA=n -CONFIG_SCSI_IMM=n -CONFIG_SCSI_STEX=n -CONFIG_SCSI_SYM53C8XX_2=n -CONFIG_SCSI_IPR=n -CONFIG_SCSI_QLOGIC_1280=n -CONFIG_SCSI_QLA_FC=n -CONFIG_TCM_QLA2XXX=n -CONFIG_SCSI_QLA_ISCSI=n -CONFIG_SCSI_LPFC=n -CONFIG_SCSI_DC395x=n -CONFIG_SCSI_AM53C974=n -CONFIG_SCSI_WD719X=n -CONFIG_SCSI_DEBUG=n -CONFIG_SCSI_PMCRAID=n -CONFIG_SCSI_PM8001=n -CONFIG_SCSI_BFA_FC=n -CONFIG_SCSI_VIRTIO=n -CONFIG_SCSI_CHELSIO_FCOE=n -CONFIG_SCSI_LOWLEVEL_PCMCIA=y -CONFIG_PCMCIA_AHA152X=n -CONFIG_PCMCIA_FDOMAIN=n -CONFIG_PCMCIA_QLOGIC=n -CONFIG_PCMCIA_SYM53C500=n -CONFIG_SCSI_DH=y -CONFIG_SCSI_DH_RDAC=n -CONFIG_SCSI_DH_HP_SW=n -CONFIG_SCSI_DH_EMC=n -CONFIG_SCSI_DH_ALUA=n -CONFIG_SCSI_OSD_INITIATOR=n -CONFIG_SCSI_OSD_ULD=n -CONFIG_ATA=y -CONFIG_SATA_ZPODD=y -CONFIG_SATA_AHCI=y -CONFIG_SATA_AHCI_PLATFORM=y -CONFIG_SATA_INIC162X=y -CONFIG_SATA_ACARD_AHCI=y -CONFIG_SATA_SIL24=y -CONFIG_PDC_ADMA=y -CONFIG_SATA_QSTOR=y -CONFIG_SATA_SX4=y -CONFIG_ATA_PIIX=y -CONFIG_SATA_DWC=y -CONFIG_SATA_MV=y -CONFIG_SATA_NV=y -CONFIG_SATA_PROMISE=y -CONFIG_SATA_SIL=y -CONFIG_SATA_SIS=y -CONFIG_SATA_SVW=y -CONFIG_SATA_ULI=y -CONFIG_SATA_VIA=y -CONFIG_SATA_VITESSE=y -CONFIG_PATA_ALI=y -CONFIG_PATA_AMD=y -CONFIG_PATA_ARTOP=y -CONFIG_PATA_ATIIXP=y -CONFIG_PATA_ATP867X=y -CONFIG_PATA_CMD64X=y -CONFIG_PATA_CYPRESS=y -CONFIG_PATA_EFAR=y -CONFIG_PATA_HPT366=y -CONFIG_PATA_HPT37X=y -CONFIG_PATA_HPT3X2N=y -CONFIG_PATA_HPT3X3=y -CONFIG_PATA_HPT3X3_DMA=y -CONFIG_PATA_IT8213=y -CONFIG_PATA_IT821X=y -CONFIG_PATA_JMICRON=y -CONFIG_PATA_MARVELL=y -CONFIG_PATA_NETCELL=y -CONFIG_PATA_NINJA32=y -CONFIG_PATA_NS87415=y -CONFIG_PATA_OLDPIIX=y -CONFIG_PATA_OPTIDMA=y -CONFIG_PATA_PDC2027X=y -CONFIG_PATA_PDC_OLD=y -CONFIG_PATA_RADISYS=y -CONFIG_PATA_RDC=y -CONFIG_PATA_SCH=y -CONFIG_PATA_SERVERWORKS=y -CONFIG_PATA_SIL680=y -CONFIG_PATA_TOSHIBA=y -CONFIG_PATA_TRIFLEX=y -CONFIG_PATA_VIA=y -CONFIG_PATA_WINBOND=y -CONFIG_PATA_CMD640_PCI=y -CONFIG_PATA_MPIIX=y -CONFIG_PATA_NS87410=y -CONFIG_PATA_OPTI=y -CONFIG_PATA_PLATFORM=y -CONFIG_PATA_RZ1000=y -CONFIG_PATA_ACPI=y -CONFIG_ATA_GENERIC=y -CONFIG_PATA_LEGACY=y -CONFIG_MD=y -CONFIG_BLK_DEV_MD=y -CONFIG_MD_LINEAR=n -CONFIG_MD_RAID0=n -CONFIG_MD_MULTIPATH=n -CONFIG_MD_FAULTY=n -CONFIG_MD_CLUSTER=n -CONFIG_BCACHE=n -CONFIG_BLK_DEV_DM=y -CONFIG_DM_CRYPT=n -CONFIG_DM_SNAPSHOT=n -CONFIG_DM_THIN_PROVISIONING=n -CONFIG_DM_CACHE=n -CONFIG_DM_ERA=n -CONFIG_DM_MIRROR=n -CONFIG_DM_LOG_USERSPACE=n -CONFIG_DM_RAID=n -CONFIG_DM_ZERO=n -CONFIG_DM_MULTIPATH=n -CONFIG_DM_MULTIPATH_QL=n -CONFIG_DM_MULTIPATH_ST=n -CONFIG_DM_DELAY=n -CONFIG_DM_UEVENT=y -CONFIG_DM_FLAKEY=n -CONFIG_DM_VERITY=n -CONFIG_DM_SWITCH=n -CONFIG_DM_LOG_WRITES=n -CONFIG_TARGET_CORE=n -CONFIG_TCM_IBLOCK=n -CONFIG_TCM_FILEIO=n -CONFIG_TCM_PSCSI=n -CONFIG_TCM_USER2=n -CONFIG_LOOPBACK_TARGET=n -CONFIG_TCM_FC=n -CONFIG_ISCSI_TARGET=n -CONFIG_SBP_TARGET=n -CONFIG_FUSION=y -CONFIG_FUSION_SPI=n -CONFIG_FUSION_FC=n -CONFIG_FUSION_SAS=n -CONFIG_FUSION_CTL=n -CONFIG_FUSION_LAN=n -CONFIG_FUSION_LOGGING=y -CONFIG_FIREWIRE=n -CONFIG_FIREWIRE_OHCI=n -CONFIG_FIREWIRE_SBP2=n -CONFIG_FIREWIRE_NET=n -CONFIG_FIREWIRE_NOSY=n -CONFIG_MACINTOSH_DRIVERS=y -CONFIG_MAC_EMUMOUSEBTN=n -CONFIG_BONDING=n -CONFIG_DUMMY=n -CONFIG_EQUALIZER=n -CONFIG_NET_FC=y -CONFIG_IFB=n -CONFIG_NET_TEAM=n -CONFIG_NET_TEAM_MODE_BROADCAST=n -CONFIG_NET_TEAM_MODE_ROUNDROBIN=n -CONFIG_NET_TEAM_MODE_RANDOM=n -CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=n -CONFIG_NET_TEAM_MODE_LOADBALANCE=n -CONFIG_MACVLAN=n -CONFIG_MACVTAP=n -CONFIG_IPVLAN=n -CONFIG_VXLAN=n -CONFIG_GENEVE=n -CONFIG_NETCONSOLE=n -CONFIG_NETCONSOLE_DYNAMIC=y -CONFIG_NTB_NETDEV=n -CONFIG_RIONET=n -CONFIG_TUN=y -CONFIG_VETH=n -CONFIG_VIRTIO_NET=y -CONFIG_NLMON=n -CONFIG_NET_VRF=n -CONFIG_ARCNET=n -CONFIG_ARCNET_1201=n -CONFIG_ARCNET_1051=n -CONFIG_ARCNET_RAW=n -CONFIG_ARCNET_CAP=n -CONFIG_ARCNET_COM90xx=n -CONFIG_ARCNET_COM90xxIO=n -CONFIG_ARCNET_RIM_I=n -CONFIG_ARCNET_COM20020=n -CONFIG_ARCNET_COM20020_PCI=n -CONFIG_ARCNET_COM20020_CS=n -CONFIG_ATM_DUMMY=n -CONFIG_ATM_TCP=n -CONFIG_ATM_LANAI=n -CONFIG_ATM_ENI=n -CONFIG_ATM_FIRESTREAM=n -CONFIG_ATM_ZATM=n -CONFIG_ATM_NICSTAR=n -CONFIG_ATM_IDT77252=n -CONFIG_ATM_AMBASSADOR=n -CONFIG_ATM_HORIZON=n -CONFIG_ATM_IA=n -CONFIG_ATM_FORE200E=n -CONFIG_ATM_HE=n -CONFIG_ATM_HE_USE_SUNI=y -CONFIG_ATM_SOLOS=n -CONFIG_CAIF_TTY=n -CONFIG_CAIF_SPI_SLAVE=n -CONFIG_CAIF_HSI=n -CONFIG_CAIF_VIRTIO=n -CONFIG_PCMCIA_3C574=n -CONFIG_PCMCIA_3C589=n -CONFIG_VORTEX=n -CONFIG_TYPHOON=n -CONFIG_ADAPTEC_STARFIRE=n -CONFIG_ET131X=n -CONFIG_ACENIC=n -CONFIG_ALTERA_TSE=n -CONFIG_AMD8111_ETH=n -CONFIG_PCNET32=n -CONFIG_PCMCIA_NMCLAN=n -CONFIG_ATL2=n -CONFIG_ATL1=n -CONFIG_ATL1E=n -CONFIG_ATL1C=n -CONFIG_ALX=n -CONFIG_NET_VENDOR_AURORA=y -CONFIG_AURORA_NB8800=n -CONFIG_MACB=n -CONFIG_B44=n -CONFIG_BCMGENET=n -CONFIG_TIGON3=n -CONFIG_BNX2X=n -CONFIG_BNXT=n -CONFIG_BNA=n -CONFIG_THUNDER_NIC_PF=n -CONFIG_THUNDER_NIC_VF=n -CONFIG_LIQUIDIO=n -CONFIG_CHELSIO_T1=n -CONFIG_CHELSIO_T1_1G=y -CONFIG_CHELSIO_T4_DCB=y -CONFIG_CHELSIO_T4_FCOE=y -CONFIG_CHELSIO_T4VF=n -CONFIG_CX_ECAT=n -CONFIG_DNET=n -CONFIG_NET_TULIP=y -CONFIG_DE2104X=n -CONFIG_TULIP=n -CONFIG_DE4X5=n -CONFIG_WINBOND_840=n -CONFIG_DM9102=n -CONFIG_ULI526X=n -CONFIG_PCMCIA_XIRCOM=n -CONFIG_DL2K=n -CONFIG_SUNDANCE=n -CONFIG_S2IO=n -CONFIG_VXGE=n -CONFIG_PCMCIA_FMVJ18X=n -CONFIG_HP100=n -CONFIG_E100=n -CONFIG_E1000=n -CONFIG_E1000E=n -CONFIG_IGB=n -CONFIG_IGBVF=n -CONFIG_IXGB=n -CONFIG_IXGBE=n -CONFIG_IXGBE_DCB=y -CONFIG_IXGBEVF=n -CONFIG_I40E=n -CONFIG_I40E_DCB=y -CONFIG_I40E_FCOE=y -CONFIG_I40EVF=n -CONFIG_FM10K=n -CONFIG_JME=n -CONFIG_MVMDIO=n -CONFIG_SKGE=n -CONFIG_SKGE_GENESIS=y -CONFIG_SKY2=n -CONFIG_MLX4_EN=n -CONFIG_MLX5_CORE=n -CONFIG_MLX5_CORE_EN=y -CONFIG_MLXSW_CORE=n -CONFIG_KS8842=n -CONFIG_KS8851=n -CONFIG_KS8851_MLL=n -CONFIG_KSZ884X_PCI=n -CONFIG_ENC28J60=n -CONFIG_ENCX24J600=n -CONFIG_MYRI10GE=n -CONFIG_FEALNX=n -CONFIG_NATSEMI=n -CONFIG_NS83820=n -CONFIG_PCMCIA_AXNET=n -CONFIG_NE2K_PCI=n -CONFIG_PCMCIA_PCNET=n -CONFIG_FORCEDETH=n -CONFIG_ETHOC=n -CONFIG_HAMACHI=n -CONFIG_YELLOWFIN=n -CONFIG_QLA3XXX=n -CONFIG_QLCNIC=n -CONFIG_QLGE=n -CONFIG_NETXEN_NIC=n -CONFIG_QED=n -CONFIG_QEDE=n -CONFIG_ATP=n -CONFIG_8139CP=n -CONFIG_8139TOO=n -CONFIG_8139TOO_8129=y -CONFIG_R8169=n -CONFIG_R6040=n -CONFIG_SXGBE_ETH=n -CONFIG_SC92031=n -CONFIG_SIS900=n -CONFIG_SIS190=n -CONFIG_SFC=n -CONFIG_PCMCIA_SMC91C92=n -CONFIG_EPIC100=n -CONFIG_SMSC911X=n -CONFIG_SMSC9420=n -CONFIG_STMMAC_ETH=n -CONFIG_HAPPYMEAL=n -CONFIG_SUNGEM=n -CONFIG_CASSINI=n -CONFIG_NIU=n -CONFIG_TEHUTI=n -CONFIG_TI_CPSW_ALE=n -CONFIG_TLAN=n -CONFIG_VIA_RHINE=n -CONFIG_VIA_RHINE_MMIO=y -CONFIG_VIA_VELOCITY=n -CONFIG_WIZNET_W5100=n -CONFIG_WIZNET_W5300=n -CONFIG_PCMCIA_XIRC2PS=n -CONFIG_FDDI=y -CONFIG_DEFXX=n -CONFIG_SKFP=n -CONFIG_HIPPI=y -CONFIG_ROADRUNNER=n -CONFIG_NET_SB1000=n -CONFIG_PHYLIB=y -CONFIG_MDIO_BCM_UNIMAC=n -CONFIG_MDIO_BITBANG=n -CONFIG_MDIO_GPIO=n -CONFIG_MDIO_OCTEON=n -CONFIG_AMD_PHY=n -CONFIG_AQUANTIA_PHY=n -CONFIG_AT803X_PHY=n -CONFIG_BCM87XX_PHY=n -CONFIG_BROADCOM_PHY=n -CONFIG_CICADA_PHY=n -CONFIG_DAVICOM_PHY=n -CONFIG_DP83848_PHY=n -CONFIG_DP83867_PHY=n -CONFIG_FIXED_PHY=y -CONFIG_ICPLUS_PHY=n -CONFIG_LSI_ET1011C_PHY=n -CONFIG_LXT_PHY=n -CONFIG_MARVELL_PHY=n -CONFIG_MICREL_PHY=n -CONFIG_NATIONAL_PHY=n -CONFIG_QSEMI_PHY=n -CONFIG_REALTEK_PHY=n -CONFIG_STE10XP=n -CONFIG_TERANETICS_PHY=n -CONFIG_VITESSE_PHY=n -CONFIG_MICREL_KS8995MA=n -CONFIG_PLIP=n -CONFIG_PPP=y -CONFIG_PPP_BSDCOMP=n -CONFIG_PPP_DEFLATE=n -CONFIG_PPP_FILTER=y -CONFIG_PPP_MPPE=n -CONFIG_PPP_MULTILINK=y -CONFIG_PPPOATM=n -CONFIG_PPPOE=n -CONFIG_PPTP=n -CONFIG_PPPOL2TP=n -CONFIG_PPP_ASYNC=n -CONFIG_PPP_SYNC_TTY=n -CONFIG_SLIP=n -CONFIG_SLIP_COMPRESSED=y -CONFIG_SLIP_SMART=y -CONFIG_SLIP_MODE_SLIP6=y -CONFIG_USB_NET_DRIVERS=n -CONFIG_USB_CATC=n -CONFIG_USB_KAWETH=n -CONFIG_USB_PEGASUS=n -CONFIG_USB_RTL8150=n -CONFIG_USB_RTL8152=n -CONFIG_USB_LAN78XX=n -CONFIG_USB_NET_CDC_EEM=n -CONFIG_USB_NET_HUAWEI_CDC_NCM=n -CONFIG_USB_NET_CDC_MBIM=n -CONFIG_USB_NET_DM9601=n -CONFIG_USB_NET_SR9700=n -CONFIG_USB_NET_SR9800=n -CONFIG_USB_NET_SMSC75XX=n -CONFIG_USB_NET_SMSC95XX=n -CONFIG_USB_NET_GL620A=n -CONFIG_USB_NET_PLUSB=n -CONFIG_USB_NET_MCS7830=n -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_KC2190=y -CONFIG_USB_NET_CX82310_ETH=n -CONFIG_USB_NET_KALMIA=n -CONFIG_USB_NET_QMI_WWAN=n -CONFIG_USB_HSO=n -CONFIG_USB_NET_INT51X1=n -CONFIG_USB_CDC_PHONET=n -CONFIG_USB_IPHETH=n -CONFIG_USB_SIERRA_NET=n -CONFIG_USB_VL600=n -CONFIG_USB_NET_CH9200=n -CONFIG_ADM8211=n -CONFIG_ATH5K=n -CONFIG_ATH9K=n -CONFIG_ATH9K_AHB=y -CONFIG_ATH9K_DEBUGFS=y -CONFIG_ATH9K_STATION_STATISTICS=y -CONFIG_ATH9K_WOW=y -CONFIG_ATH9K_CHANNEL_CONTEXT=y -CONFIG_ATH9K_HTC=n -CONFIG_ATH9K_HTC_DEBUGFS=y -CONFIG_ATH9K_HWRNG=y -CONFIG_CARL9170=n -CONFIG_CARL9170_HWRNG=y -CONFIG_ATH6KL=n -CONFIG_ATH6KL_SDIO=n -CONFIG_ATH6KL_USB=n -CONFIG_AR5523=n -CONFIG_WIL6210=n -CONFIG_ATH10K=n -CONFIG_ATH10K_PCI=n -CONFIG_ATH10K_DEBUGFS=y -CONFIG_ATH10K_TRACING=y -CONFIG_WCN36XX=n -CONFIG_ATMEL=n -CONFIG_PCI_ATMEL=n -CONFIG_PCMCIA_ATMEL=n -CONFIG_AT76C50X_USB=n -CONFIG_B43=n -CONFIG_B43_SDIO=y -CONFIG_B43LEGACY=n -CONFIG_BRCMSMAC=n -CONFIG_BRCMFMAC=n -CONFIG_BRCMFMAC_USB=y -CONFIG_BRCMFMAC_PCIE=y -CONFIG_BRCM_TRACING=y -CONFIG_AIRO=n -CONFIG_AIRO_CS=n -CONFIG_IPW2100=n -CONFIG_IPW2100_MONITOR=y -CONFIG_IPW2200=n -CONFIG_IPW2200_MONITOR=y -CONFIG_IPW2200_PROMISCUOUS=y -CONFIG_IPW2200_QOS=y -CONFIG_IWL4965=n -CONFIG_IWL3945=n -CONFIG_IWLEGACY_DEBUGFS=y -CONFIG_IWLWIFI=n -CONFIG_IWLDVM=n -CONFIG_IWLMVM=n -CONFIG_IWLWIFI_DEBUGFS=y -CONFIG_HOSTAP=n -CONFIG_HOSTAP_FIRMWARE=y -CONFIG_HOSTAP_FIRMWARE_NVRAM=y -CONFIG_HOSTAP_PLX=n -CONFIG_HOSTAP_PCI=n -CONFIG_HOSTAP_CS=n -CONFIG_HERMES=n -CONFIG_HERMES_PRISM=y -CONFIG_PLX_HERMES=n -CONFIG_TMD_HERMES=n -CONFIG_NORTEL_HERMES=n -CONFIG_PCI_HERMES=n -CONFIG_PCMCIA_HERMES=n -CONFIG_PCMCIA_SPECTRUM=n -CONFIG_ORINOCO_USB=n -CONFIG_P54_COMMON=n -CONFIG_P54_USB=n -CONFIG_P54_PCI=n -CONFIG_P54_SPI=n -CONFIG_LIBERTAS=n -CONFIG_LIBERTAS_USB=n -CONFIG_LIBERTAS_CS=n -CONFIG_LIBERTAS_SDIO=n -CONFIG_LIBERTAS_SPI=n -CONFIG_LIBERTAS_MESH=y -CONFIG_LIBERTAS_THINFIRM=n -CONFIG_LIBERTAS_THINFIRM_USB=n -CONFIG_MWIFIEX=n -CONFIG_MWIFIEX_SDIO=n -CONFIG_MWIFIEX_PCIE=n -CONFIG_MWIFIEX_USB=n -CONFIG_MWL8K=n -CONFIG_MT7601U=n -CONFIG_RT2X00=n -CONFIG_RT2400PCI=n -CONFIG_RT2500PCI=n -CONFIG_RT61PCI=n -CONFIG_RT2800PCI=n -CONFIG_RT2500USB=n -CONFIG_RT73USB=n -CONFIG_RT2800USB=n -CONFIG_RT2800USB_RT3573=y -CONFIG_RT2800USB_RT53XX=y -CONFIG_RT2800USB_RT55XX=y -CONFIG_RT2800USB_UNKNOWN=y -CONFIG_RTL8180=n -CONFIG_RTL8187=n -CONFIG_RTL8192CE=n -CONFIG_RTL8192SE=n -CONFIG_RTL8192DE=n -CONFIG_RTL8723AE=n -CONFIG_RTL8723BE=n -CONFIG_RTL8188EE=n -CONFIG_RTL8192EE=n -CONFIG_RTL8821AE=n -CONFIG_RTL8192CU=n -CONFIG_RTL8XXXU=n -CONFIG_RTL8XXXU_UNTESTED=y -CONFIG_RSI_91X=n -CONFIG_CW1200=n -CONFIG_CW1200_WLAN_SDIO=n -CONFIG_CW1200_WLAN_SPI=n -CONFIG_WL1251=n -CONFIG_WL1251_SPI=n -CONFIG_WL1251_SDIO=n -CONFIG_WL12XX=n -CONFIG_WL18XX=n -CONFIG_WLCORE_SDIO=n -CONFIG_USB_ZD1201=n -CONFIG_ZD1211RW=n -CONFIG_ZD1211RW_DEBUG=y -CONFIG_PCMCIA_RAYCS=n -CONFIG_PCMCIA_WL3501=n -CONFIG_MAC80211_HWSIM=n -CONFIG_USB_NET_RNDIS_WLAN=n -CONFIG_WIMAX_I2400M_USB=n -CONFIG_WAN=y -CONFIG_LANMEDIA=n -CONFIG_HDLC=n -CONFIG_HDLC_RAW=n -CONFIG_HDLC_RAW_ETH=n -CONFIG_HDLC_CISCO=n -CONFIG_HDLC_FR=n -CONFIG_HDLC_PPP=n -CONFIG_HDLC_X25=n -CONFIG_PCI200SYN=n -CONFIG_WANXL=n -CONFIG_PC300TOO=n -CONFIG_FARSYNC=n -CONFIG_DSCC4=n -CONFIG_DSCC4_PCISYNC=y -CONFIG_DSCC4_PCI_RST=y -CONFIG_DLCI=n -CONFIG_LAPBETHER=n -CONFIG_X25_ASY=n -CONFIG_SBNI=n -CONFIG_IEEE802154_FAKELB=n -CONFIG_IEEE802154_AT86RF230=n -CONFIG_IEEE802154_AT86RF230_DEBUGFS=y -CONFIG_IEEE802154_MRF24J40=n -CONFIG_IEEE802154_CC2520=n -CONFIG_IEEE802154_ATUSB=n -CONFIG_XEN_NETDEV_BACKEND=n -CONFIG_VMXNET3=n -CONFIG_FUJITSU_ES=n -CONFIG_HYPERV_NET=n -CONFIG_ISDN=y -CONFIG_ISDN_PPP=y -CONFIG_ISDN_PPP_VJ=y -CONFIG_ISDN_MPP=y -CONFIG_IPPP_FILTER=y -CONFIG_ISDN_PPP_BSDCOMP=n -CONFIG_ISDN_AUDIO=y -CONFIG_ISDN_TTY_FAX=y -CONFIG_ISDN_X25=y -CONFIG_ISDN_DIVERSION=n -CONFIG_ISDN_DRV_HISAX=n -CONFIG_HISAX_EURO=y -CONFIG_DE_AOC=y -CONFIG_HISAX_1TR6=y -CONFIG_HISAX_NI1=y -CONFIG_HISAX_16_3=y -CONFIG_HISAX_TELESPCI=y -CONFIG_HISAX_S0BOX=y -CONFIG_HISAX_FRITZPCI=y -CONFIG_HISAX_AVM_A1_PCMCIA=y -CONFIG_HISAX_ELSA=y -CONFIG_HISAX_DIEHLDIVA=y -CONFIG_HISAX_SEDLBAUER=y -CONFIG_HISAX_NETJET=y -CONFIG_HISAX_NETJET_U=y -CONFIG_HISAX_NICCY=y -CONFIG_HISAX_BKM_A4T=y -CONFIG_HISAX_SCT_QUADRO=y -CONFIG_HISAX_GAZEL=y -CONFIG_HISAX_HFC_PCI=y -CONFIG_HISAX_W6692=y -CONFIG_HISAX_HFC_SX=y -CONFIG_HISAX_ENTERNOW_PCI=y -CONFIG_HISAX_SEDLBAUER_CS=n -CONFIG_HISAX_ELSA_CS=n -CONFIG_HISAX_AVM_A1_CS=n -CONFIG_HISAX_TELES_CS=n -CONFIG_HISAX_ST5481=n -CONFIG_HISAX_HFCUSB=n -CONFIG_HISAX_HFC4S8S=n -CONFIG_HISAX_FRITZ_PCIPNP=n -CONFIG_ISDN_CAPI=n -CONFIG_ISDN_CAPI_CAPI20=n -CONFIG_ISDN_CAPI_MIDDLEWARE=y -CONFIG_ISDN_CAPI_CAPIDRV=n -CONFIG_CAPI_AVM=y -CONFIG_ISDN_DRV_AVMB1_B1PCI=n -CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y -CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=n -CONFIG_ISDN_DRV_AVMB1_AVM_CS=n -CONFIG_ISDN_DRV_AVMB1_T1PCI=n -CONFIG_ISDN_DRV_AVMB1_C4=n -CONFIG_CAPI_EICON=y -CONFIG_ISDN_DIVAS=n -CONFIG_ISDN_DIVAS_BRIPCI=y -CONFIG_ISDN_DIVAS_PRIPCI=y -CONFIG_ISDN_DIVAS_DIVACAPI=n -CONFIG_ISDN_DIVAS_USERIDI=n -CONFIG_ISDN_DIVAS_MAINT=n -CONFIG_ISDN_DRV_GIGASET=n -# CONFIG_GIGASET_CAPI is not set -CONFIG_GIGASET_BASE=n -CONFIG_GIGASET_M105=n -CONFIG_GIGASET_M101=n -CONFIG_HYSDN=n -CONFIG_HYSDN_CAPI=y -CONFIG_MISDN=n -CONFIG_MISDN_DSP=n -CONFIG_MISDN_L1OIP=n -CONFIG_MISDN_HFCPCI=n -CONFIG_MISDN_HFCMULTI=n -CONFIG_MISDN_HFCUSB=n -CONFIG_MISDN_AVMFRITZ=n -CONFIG_MISDN_SPEEDFAX=n -CONFIG_MISDN_INFINEON=n -CONFIG_MISDN_W6692=n -CONFIG_MISDN_NETJET=n -CONFIG_NVM=y -CONFIG_NVM_GENNVM=n -CONFIG_NVM_RRPC=n -CONFIG_INPUT_LEDS=n -CONFIG_INPUT_JOYDEV=n -CONFIG_INPUT_EVDEV=y -CONFIG_KEYBOARD_ADP5520=n -CONFIG_KEYBOARD_ADP5588=n -CONFIG_KEYBOARD_ADP5589=n -CONFIG_KEYBOARD_QT1070=n -CONFIG_KEYBOARD_QT2160=n -CONFIG_KEYBOARD_LKKBD=n -CONFIG_KEYBOARD_GPIO=n -CONFIG_KEYBOARD_GPIO_POLLED=n -CONFIG_KEYBOARD_TCA6416=n -CONFIG_KEYBOARD_TCA8418=n -CONFIG_KEYBOARD_MATRIX=n -CONFIG_KEYBOARD_LM8323=n -CONFIG_KEYBOARD_LM8333=n -CONFIG_KEYBOARD_MAX7359=n -CONFIG_KEYBOARD_MCS=n -CONFIG_KEYBOARD_MPR121=n -CONFIG_KEYBOARD_NEWTON=n -CONFIG_KEYBOARD_OPENCORES=n -CONFIG_KEYBOARD_SAMSUNG=n -CONFIG_KEYBOARD_STOWAWAY=n -CONFIG_KEYBOARD_SUNKBD=n -CONFIG_KEYBOARD_TWL4030=n -CONFIG_KEYBOARD_XTKBD=n -CONFIG_KEYBOARD_CROS_EC=n -CONFIG_MOUSE_PS2=n -CONFIG_MOUSE_PS2_ELANTECH=y -CONFIG_MOUSE_PS2_SENTELIC=y -CONFIG_MOUSE_PS2_TOUCHKIT=y -CONFIG_MOUSE_PS2_VMMOUSE=y -CONFIG_MOUSE_SERIAL=n -CONFIG_MOUSE_APPLETOUCH=n -CONFIG_MOUSE_BCM5974=n -CONFIG_MOUSE_CYAPA=n -CONFIG_MOUSE_ELAN_I2C=n -CONFIG_MOUSE_ELAN_I2C_SMBUS=y -CONFIG_MOUSE_VSXXXAA=n -CONFIG_MOUSE_GPIO=n -CONFIG_MOUSE_SYNAPTICS_I2C=n -CONFIG_MOUSE_SYNAPTICS_USB=n -CONFIG_INPUT_JOYSTICK=y -CONFIG_JOYSTICK_ANALOG=n -CONFIG_JOYSTICK_A3D=n -CONFIG_JOYSTICK_ADI=n -CONFIG_JOYSTICK_COBRA=n -CONFIG_JOYSTICK_GF2K=n -CONFIG_JOYSTICK_GRIP=n -CONFIG_JOYSTICK_GRIP_MP=n -CONFIG_JOYSTICK_GUILLEMOT=n -CONFIG_JOYSTICK_INTERACT=n -CONFIG_JOYSTICK_SIDEWINDER=n -CONFIG_JOYSTICK_TMDC=n -CONFIG_JOYSTICK_IFORCE=n -CONFIG_JOYSTICK_IFORCE_USB=y -CONFIG_JOYSTICK_IFORCE_232=y -CONFIG_JOYSTICK_WARRIOR=n -CONFIG_JOYSTICK_MAGELLAN=n -CONFIG_JOYSTICK_SPACEORB=n -CONFIG_JOYSTICK_SPACEBALL=n -CONFIG_JOYSTICK_STINGER=n -CONFIG_JOYSTICK_TWIDJOY=n -CONFIG_JOYSTICK_ZHENHUA=n -CONFIG_JOYSTICK_DB9=n -CONFIG_JOYSTICK_GAMECON=n -CONFIG_JOYSTICK_TURBOGRAFX=n -CONFIG_JOYSTICK_AS5011=n -CONFIG_JOYSTICK_JOYDUMP=n -CONFIG_JOYSTICK_XPAD=n -CONFIG_JOYSTICK_XPAD_FF=y -CONFIG_JOYSTICK_XPAD_LEDS=y -CONFIG_JOYSTICK_WALKERA0701=n -CONFIG_INPUT_TABLET=y -CONFIG_TABLET_USB_ACECAD=n -CONFIG_TABLET_USB_AIPTEK=n -CONFIG_TABLET_USB_GTCO=n -CONFIG_TABLET_USB_HANWANG=n -CONFIG_TABLET_USB_KBTAB=n -CONFIG_TABLET_SERIAL_WACOM4=n -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_88PM860X=n -CONFIG_TOUCHSCREEN_ADS7846=n -CONFIG_TOUCHSCREEN_AD7877=n -CONFIG_TOUCHSCREEN_AD7879=n -CONFIG_TOUCHSCREEN_AD7879_I2C=n -CONFIG_TOUCHSCREEN_AD7879_SPI=n -CONFIG_TOUCHSCREEN_ATMEL_MXT=n -CONFIG_TOUCHSCREEN_AUO_PIXCIR=n -CONFIG_TOUCHSCREEN_BU21013=n -CONFIG_TOUCHSCREEN_CY8CTMG110=n -CONFIG_TOUCHSCREEN_CYTTSP_CORE=n -CONFIG_TOUCHSCREEN_CYTTSP_I2C=n -CONFIG_TOUCHSCREEN_CYTTSP_SPI=n -CONFIG_TOUCHSCREEN_CYTTSP4_CORE=n -CONFIG_TOUCHSCREEN_CYTTSP4_I2C=n -CONFIG_TOUCHSCREEN_CYTTSP4_SPI=n -CONFIG_TOUCHSCREEN_DA9034=n -CONFIG_TOUCHSCREEN_DA9052=n -CONFIG_TOUCHSCREEN_DYNAPRO=n -CONFIG_TOUCHSCREEN_HAMPSHIRE=n -CONFIG_TOUCHSCREEN_EETI=n -CONFIG_TOUCHSCREEN_FUJITSU=n -CONFIG_TOUCHSCREEN_GOODIX=n -CONFIG_TOUCHSCREEN_ILI210X=n -CONFIG_TOUCHSCREEN_GUNZE=n -CONFIG_TOUCHSCREEN_ELAN=n -CONFIG_TOUCHSCREEN_ELO=n -CONFIG_TOUCHSCREEN_WACOM_W8001=n -CONFIG_TOUCHSCREEN_WACOM_I2C=n -CONFIG_TOUCHSCREEN_MAX11801=n -CONFIG_TOUCHSCREEN_MCS5000=n -CONFIG_TOUCHSCREEN_MMS114=n -CONFIG_TOUCHSCREEN_MTOUCH=n -CONFIG_TOUCHSCREEN_INEXIO=n -CONFIG_TOUCHSCREEN_MK712=n -CONFIG_TOUCHSCREEN_PENMOUNT=n -CONFIG_TOUCHSCREEN_EDT_FT5X06=n -CONFIG_TOUCHSCREEN_TOUCHRIGHT=n -CONFIG_TOUCHSCREEN_TOUCHWIN=n -CONFIG_TOUCHSCREEN_TI_AM335X_TSC=n -CONFIG_TOUCHSCREEN_UCB1400=n -CONFIG_TOUCHSCREEN_PIXCIR=n -CONFIG_TOUCHSCREEN_WDT87XX_I2C=n -CONFIG_TOUCHSCREEN_WM831X=n -CONFIG_TOUCHSCREEN_WM97XX=n -CONFIG_TOUCHSCREEN_USB_COMPOSITE=n -CONFIG_TOUCHSCREEN_MC13783=n -CONFIG_TOUCHSCREEN_TOUCHIT213=n -CONFIG_TOUCHSCREEN_TSC_SERIO=n -CONFIG_TOUCHSCREEN_TSC2004=n -CONFIG_TOUCHSCREEN_TSC2005=n -CONFIG_TOUCHSCREEN_TSC2007=n -CONFIG_TOUCHSCREEN_PCAP=n -CONFIG_TOUCHSCREEN_ST1232=n -CONFIG_TOUCHSCREEN_SUR40=n -CONFIG_TOUCHSCREEN_SX8654=n -CONFIG_TOUCHSCREEN_TPS6507X=n -CONFIG_TOUCHSCREEN_ZFORCE=n -CONFIG_TOUCHSCREEN_ROHM_BU21023=n -CONFIG_INPUT_MISC=y -CONFIG_INPUT_88PM860X_ONKEY=n -CONFIG_INPUT_88PM80X_ONKEY=n -CONFIG_INPUT_AD714X=n -CONFIG_INPUT_ARIZONA_HAPTICS=n -CONFIG_INPUT_BMA150=n -CONFIG_INPUT_E3X0_BUTTON=n -CONFIG_INPUT_PCSPKR=n -CONFIG_INPUT_MAX77693_HAPTIC=n -CONFIG_INPUT_MAX8925_ONKEY=n -CONFIG_INPUT_MAX8997_HAPTIC=n -CONFIG_INPUT_MC13783_PWRBUTTON=n -CONFIG_INPUT_MMA8450=n -CONFIG_INPUT_MPU3050=n -CONFIG_INPUT_APANEL=n -CONFIG_INPUT_GP2A=n -CONFIG_INPUT_GPIO_BEEPER=n -CONFIG_INPUT_GPIO_TILT_POLLED=n -CONFIG_INPUT_ATLAS_BTNS=n -CONFIG_INPUT_ATI_REMOTE2=n -CONFIG_INPUT_KEYSPAN_REMOTE=n -CONFIG_INPUT_KXTJ9=n -CONFIG_INPUT_POWERMATE=n -CONFIG_INPUT_YEALINK=n -CONFIG_INPUT_CM109=n -CONFIG_INPUT_REGULATOR_HAPTIC=n -CONFIG_INPUT_RETU_PWRBUTTON=n -CONFIG_INPUT_TPS65218_PWRBUTTON=n -CONFIG_INPUT_TWL4030_PWRBUTTON=n -CONFIG_INPUT_TWL4030_VIBRA=n -CONFIG_INPUT_TWL6040_VIBRA=n -CONFIG_INPUT_UINPUT=y -CONFIG_INPUT_PALMAS_PWRBUTTON=n -CONFIG_INPUT_PCF50633_PMU=n -CONFIG_INPUT_PCF8574=n -CONFIG_INPUT_PWM_BEEPER=n -CONFIG_INPUT_GPIO_ROTARY_ENCODER=n -CONFIG_INPUT_DA9052_ONKEY=n -CONFIG_INPUT_DA9055_ONKEY=n -CONFIG_INPUT_DA9063_ONKEY=n -CONFIG_INPUT_WM831X_ON=n -CONFIG_INPUT_PCAP=n -CONFIG_INPUT_ADXL34X=n -CONFIG_INPUT_IMS_PCU=n -CONFIG_INPUT_CMA3000=n -CONFIG_INPUT_CMA3000_I2C=n -CONFIG_INPUT_XEN_KBDDEV_FRONTEND=n -CONFIG_INPUT_IDEAPAD_SLIDEBAR=n -CONFIG_INPUT_SOC_BUTTON_ARRAY=n -CONFIG_INPUT_DRV260X_HAPTICS=n -CONFIG_INPUT_DRV2665_HAPTICS=n -CONFIG_INPUT_DRV2667_HAPTICS=n -CONFIG_SERIO_SERPORT=n -CONFIG_SERIO_CT82C710=n -CONFIG_SERIO_PARKBD=n -CONFIG_SERIO_PCIPS2=n -CONFIG_SERIO_RAW=n -CONFIG_SERIO_ALTERA_PS2=n -CONFIG_SERIO_PS2MULT=n -CONFIG_SERIO_ARC_PS2=n -CONFIG_USERIO=n -CONFIG_GAMEPORT_NS558=n -CONFIG_GAMEPORT_L4=n -CONFIG_GAMEPORT_EMU10K1=n -CONFIG_GAMEPORT_FM801=n -CONFIG_LEGACY_PTY_COUNT=0 -CONFIG_SERIAL_NONSTANDARD=y -CONFIG_ROCKETPORT=n -CONFIG_CYCLADES=n -CONFIG_MOXA_INTELLIO=n -CONFIG_MOXA_SMARTIO=n -CONFIG_SYNCLINK=n -CONFIG_SYNCLINKMP=n -CONFIG_SYNCLINK_GT=n -CONFIG_NOZOMI=n -CONFIG_ISI=n -CONFIG_N_HDLC=n -CONFIG_N_GSM=n -CONFIG_TRACE_ROUTER=n -CONFIG_TRACE_SINK=n -# CONFIG_DEVKMEM is not set -CONFIG_SERIAL_8250=y -# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set -CONFIG_SERIAL_8250_FINTEK=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_CS=n -CONFIG_SERIAL_8250_NR_UARTS=48 -CONFIG_SERIAL_8250_RUNTIME_UARTS=32 -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_MANY_PORTS=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SERIAL_8250_RSA=y -CONFIG_SERIAL_8250_DW=n -CONFIG_SERIAL_8250_RT288X=y -CONFIG_SERIAL_8250_MID=n -CONFIG_SERIAL_KGDB_NMI=y -CONFIG_SERIAL_MAX3100=n -CONFIG_SERIAL_MAX310X=y -CONFIG_SERIAL_UARTLITE=n -CONFIG_SERIAL_JSM=n -CONFIG_SERIAL_SCCNXP=y -CONFIG_SERIAL_SCCNXP_CONSOLE=y -CONFIG_SERIAL_SC16IS7XX=n -CONFIG_SERIAL_SC16IS7XX_SPI=y -CONFIG_SERIAL_ALTERA_JTAGUART=n -CONFIG_SERIAL_ALTERA_UART=n -CONFIG_SERIAL_ARC=n -CONFIG_SERIAL_RP2=n -CONFIG_SERIAL_FSL_LPUART=n -CONFIG_SERIAL_MEN_Z135=n -CONFIG_TTY_PRINTK=y -CONFIG_PRINTER=n -CONFIG_PPDEV=n -CONFIG_VIRTIO_CONSOLE=y -CONFIG_IPMI_HANDLER=n -CONFIG_IPMI_DEVICE_INTERFACE=n -CONFIG_IPMI_SSIF=n -CONFIG_IPMI_WATCHDOG=n -CONFIG_IPMI_POWEROFF=n -CONFIG_HW_RANDOM=y -CONFIG_HW_RANDOM_TIMERIOMEM=n -CONFIG_HW_RANDOM_INTEL=n -CONFIG_HW_RANDOM_AMD=n -CONFIG_HW_RANDOM_VIA=n -CONFIG_HW_RANDOM_VIRTIO=n -CONFIG_HW_RANDOM_TPM=n -CONFIG_R3964=n -CONFIG_APPLICOM=n -CONFIG_SYNCLINK_CS=n -CONFIG_CARDMAN_4000=n -CONFIG_CARDMAN_4040=n -CONFIG_IPWIRELESS=n -CONFIG_MWAVE=n -CONFIG_RAW_DRIVER=n -CONFIG_HPET=y -CONFIG_HANGCHECK_TIMER=n -CONFIG_TCG_TIS_I2C_ATMEL=n -CONFIG_TCG_TIS_I2C_INFINEON=n -CONFIG_TCG_TIS_I2C_NUVOTON=n -CONFIG_TCG_NSC=n -CONFIG_TCG_ATMEL=n -CONFIG_TCG_INFINEON=n -CONFIG_TCG_XEN=n -CONFIG_TCG_CRB=n -CONFIG_TCG_TIS_ST33ZP24_I2C=n -CONFIG_TCG_TIS_ST33ZP24_SPI=n -CONFIG_TELCLOCK=n -CONFIG_XILLYBUS=n -CONFIG_XILLYBUS_PCIE=n -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_MUX_GPIO=n -CONFIG_I2C_MUX_PCA9541=n -CONFIG_I2C_MUX_PCA954x=n -CONFIG_I2C_MUX_PINCTRL=n -CONFIG_I2C_MUX_REG=n -CONFIG_I2C_ALI1535=n -CONFIG_I2C_ALI1563=n -CONFIG_I2C_ALI15X3=n -CONFIG_I2C_AMD756=n -CONFIG_I2C_AMD756_S4882=n -CONFIG_I2C_AMD8111=n -CONFIG_I2C_I801=n -CONFIG_I2C_ISCH=n -CONFIG_I2C_ISMT=n -CONFIG_I2C_PIIX4=n -CONFIG_I2C_NFORCE2=n -CONFIG_I2C_NFORCE2_S4985=n -CONFIG_I2C_SIS5595=n -CONFIG_I2C_SIS630=n -CONFIG_I2C_SIS96X=n -CONFIG_I2C_VIA=n -CONFIG_I2C_VIAPRO=n -CONFIG_I2C_SCMI=n -CONFIG_I2C_CBUS_GPIO=n -CONFIG_I2C_DESIGNWARE_PLATFORM=n -CONFIG_I2C_DESIGNWARE_PCI=n -CONFIG_I2C_DESIGNWARE_BAYTRAIL=y -CONFIG_I2C_EMEV2=n -CONFIG_I2C_GPIO=n -CONFIG_I2C_KEMPLD=n -CONFIG_I2C_OCORES=n -CONFIG_I2C_PCA_PLATFORM=n -CONFIG_I2C_SIMTEC=n -CONFIG_I2C_XILINX=n -CONFIG_I2C_DIOLAN_U2C=n -CONFIG_I2C_DLN2=n -CONFIG_I2C_PARPORT=n -CONFIG_I2C_PARPORT_LIGHT=n -CONFIG_I2C_ROBOTFUZZ_OSIF=n -CONFIG_I2C_TAOS_EVM=n -CONFIG_I2C_TINY_USB=n -CONFIG_I2C_VIPERBOARD=n -CONFIG_I2C_CROS_EC_TUNNEL=n -CONFIG_I2C_STUB=n -CONFIG_SPI=y -CONFIG_SPI_ALTERA=n -CONFIG_SPI_BUTTERFLY=n -CONFIG_SPI_CADENCE=n -CONFIG_SPI_DESIGNWARE=n -CONFIG_SPI_DW_PCI=n -CONFIG_SPI_DW_MID_DMA=y -CONFIG_SPI_DW_MMIO=n -CONFIG_SPI_DLN2=n -CONFIG_SPI_GPIO=n -CONFIG_SPI_LM70_LLP=n -CONFIG_SPI_OC_TINY=n -CONFIG_SPI_PXA2XX=n -CONFIG_SPI_SC18IS602=n -CONFIG_SPI_XCOMM=n -CONFIG_SPI_ZYNQMP_GQSPI=n -CONFIG_SPI_SPIDEV=n -CONFIG_SPI_TLE62X0=n -CONFIG_SPMI=n -CONFIG_HSI=n -CONFIG_HSI_CHAR=n -CONFIG_PPS_CLIENT_LDISC=n -CONFIG_PPS_CLIENT_PARPORT=n -CONFIG_PPS_CLIENT_GPIO=n -CONFIG_PINCTRL_AMD=y -CONFIG_PINCTRL_BAYTRAIL=y -CONFIG_PINCTRL_CHERRYVIEW=n -CONFIG_PINCTRL_BROXTON=n -CONFIG_PINCTRL_SUNRISEPOINT=n -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_AMDPT=n -CONFIG_GPIO_DWAPB=n -CONFIG_GPIO_GENERIC_PLATFORM=n -CONFIG_GPIO_ICH=n -CONFIG_GPIO_LYNXPOINT=y -CONFIG_GPIO_VX855=n -CONFIG_GPIO_ZX=y -CONFIG_GPIO_F7188X=n -CONFIG_GPIO_IT87=n -CONFIG_GPIO_SCH=n -CONFIG_GPIO_SCH311X=n -CONFIG_GPIO_ADP5588=n -CONFIG_GPIO_MAX7300=n -CONFIG_GPIO_MAX732X=n -CONFIG_GPIO_PCA953X=n -CONFIG_GPIO_PCF857X=n -CONFIG_GPIO_SX150X=y -CONFIG_GPIO_ADP5520=n -CONFIG_GPIO_ARIZONA=n -CONFIG_GPIO_CRYSTAL_COVE=n -CONFIG_GPIO_DA9052=n -CONFIG_GPIO_DA9055=n -CONFIG_GPIO_DLN2=n -CONFIG_GPIO_JANZ_TTL=n -CONFIG_GPIO_KEMPLD=n -CONFIG_GPIO_LP3943=n -CONFIG_GPIO_PALMAS=y -CONFIG_GPIO_RC5T583=y -CONFIG_GPIO_TPS6586X=y -CONFIG_GPIO_TPS65910=y -CONFIG_GPIO_TPS65912=n -CONFIG_GPIO_TWL4030=n -CONFIG_GPIO_TWL6040=n -CONFIG_GPIO_UCB1400=n -CONFIG_GPIO_WM831X=n -CONFIG_GPIO_WM8350=n -CONFIG_GPIO_WM8994=n -CONFIG_GPIO_AMD8111=n -CONFIG_GPIO_ML_IOH=n -CONFIG_GPIO_RDC321X=n -CONFIG_GPIO_MAX7301=n -CONFIG_GPIO_MC33880=n -CONFIG_GPIO_VIPERBOARD=n -CONFIG_W1_MASTER_MATROX=n -CONFIG_W1_MASTER_DS2490=n -CONFIG_W1_MASTER_DS2482=n -CONFIG_W1_MASTER_DS1WM=n -CONFIG_W1_MASTER_GPIO=n -CONFIG_W1_SLAVE_THERM=n -CONFIG_W1_SLAVE_SMEM=n -CONFIG_W1_SLAVE_DS2408=n -CONFIG_W1_SLAVE_DS2413=n -CONFIG_W1_SLAVE_DS2406=n -CONFIG_W1_SLAVE_DS2423=n -CONFIG_W1_SLAVE_DS2431=n -CONFIG_W1_SLAVE_DS2433=n -CONFIG_W1_SLAVE_DS2760=n -CONFIG_W1_SLAVE_DS28E04=n -CONFIG_W1_SLAVE_BQ27000=n -CONFIG_POWER_AVS=y -CONFIG_POWER_RESET=y -CONFIG_POWER_RESET_RESTART=y -CONFIG_PDA_POWER=n -CONFIG_GENERIC_ADC_BATTERY=n -CONFIG_MAX8925_POWER=n -CONFIG_WM831X_BACKUP=n -CONFIG_WM831X_POWER=n -CONFIG_WM8350_POWER=n -CONFIG_TEST_POWER=n -CONFIG_BATTERY_88PM860X=n -CONFIG_BATTERY_DS2760=n -CONFIG_BATTERY_DS2780=n -CONFIG_BATTERY_DS2781=n -CONFIG_BATTERY_DS2782=n -CONFIG_BATTERY_SBS=n -CONFIG_BATTERY_BQ27XXX=n -CONFIG_BATTERY_DA9030=n -CONFIG_BATTERY_DA9052=n -CONFIG_CHARGER_DA9150=n -CONFIG_BATTERY_DA9150=n -CONFIG_BATTERY_MAX17040=n -CONFIG_BATTERY_MAX17042=n -CONFIG_BATTERY_TWL4030_MADC=n -CONFIG_CHARGER_88PM860X=n -CONFIG_CHARGER_PCF50633=n -CONFIG_BATTERY_RX51=n -CONFIG_CHARGER_ISP1704=n -CONFIG_CHARGER_MAX8903=n -CONFIG_CHARGER_TWL4030=n -CONFIG_CHARGER_LP8727=n -CONFIG_CHARGER_LP8788=n -CONFIG_CHARGER_GPIO=n -CONFIG_CHARGER_MANAGER=y -CONFIG_CHARGER_MAX14577=n -CONFIG_CHARGER_MAX77693=n -CONFIG_CHARGER_MAX8997=n -CONFIG_CHARGER_MAX8998=n -CONFIG_CHARGER_BQ2415X=n -CONFIG_CHARGER_BQ24190=n -CONFIG_CHARGER_BQ24257=n -CONFIG_CHARGER_BQ24735=n -CONFIG_CHARGER_BQ25890=n -CONFIG_CHARGER_SMB347=n -CONFIG_CHARGER_TPS65090=n -CONFIG_CHARGER_TPS65217=n -CONFIG_BATTERY_GAUGE_LTC2941=n -CONFIG_BATTERY_RT5033=n -CONFIG_CHARGER_RT9455=n -CONFIG_SENSORS_ABITUGURU=n -CONFIG_SENSORS_ABITUGURU3=n -CONFIG_SENSORS_AD7314=n -CONFIG_SENSORS_AD7414=n -CONFIG_SENSORS_AD7418=n -CONFIG_SENSORS_ADM1021=n -CONFIG_SENSORS_ADM1025=n -CONFIG_SENSORS_ADM1026=n -CONFIG_SENSORS_ADM1029=n -CONFIG_SENSORS_ADM1031=n -CONFIG_SENSORS_ADM9240=n -CONFIG_SENSORS_ADT7310=n -CONFIG_SENSORS_ADT7410=n -CONFIG_SENSORS_ADT7411=n -CONFIG_SENSORS_ADT7462=n -CONFIG_SENSORS_ADT7470=n -CONFIG_SENSORS_ADT7475=n -CONFIG_SENSORS_ASC7621=n -CONFIG_SENSORS_K8TEMP=n -CONFIG_SENSORS_K10TEMP=n -CONFIG_SENSORS_FAM15H_POWER=n -CONFIG_SENSORS_APPLESMC=n -CONFIG_SENSORS_ASB100=n -CONFIG_SENSORS_ATXP1=n -CONFIG_SENSORS_DS620=n -CONFIG_SENSORS_DS1621=n -CONFIG_SENSORS_DA9052_ADC=n -CONFIG_SENSORS_DA9055=n -CONFIG_SENSORS_I5K_AMB=n -CONFIG_SENSORS_F71805F=n -CONFIG_SENSORS_F71882FG=n -CONFIG_SENSORS_F75375S=n -CONFIG_SENSORS_MC13783_ADC=n -CONFIG_SENSORS_FSCHMD=n -CONFIG_SENSORS_GL518SM=n -CONFIG_SENSORS_GL520SM=n -CONFIG_SENSORS_G760A=n -CONFIG_SENSORS_G762=n -CONFIG_SENSORS_GPIO_FAN=n -CONFIG_SENSORS_HIH6130=n -CONFIG_SENSORS_IBMAEM=n -CONFIG_SENSORS_IBMPEX=n -CONFIG_SENSORS_IIO_HWMON=n -CONFIG_SENSORS_I5500=n -CONFIG_SENSORS_CORETEMP=n -CONFIG_SENSORS_IT87=n -CONFIG_SENSORS_JC42=n -CONFIG_SENSORS_POWR1220=n -CONFIG_SENSORS_LINEAGE=n -CONFIG_SENSORS_LTC2945=n -CONFIG_SENSORS_LTC4151=n -CONFIG_SENSORS_LTC4215=n -CONFIG_SENSORS_LTC4222=n -CONFIG_SENSORS_LTC4245=n -CONFIG_SENSORS_LTC4260=n -CONFIG_SENSORS_LTC4261=n -CONFIG_SENSORS_MAX1111=n -CONFIG_SENSORS_MAX16065=n -CONFIG_SENSORS_MAX1619=n -CONFIG_SENSORS_MAX1668=n -CONFIG_SENSORS_MAX197=n -CONFIG_SENSORS_MAX6639=n -CONFIG_SENSORS_MAX6642=n -CONFIG_SENSORS_MAX6650=n -CONFIG_SENSORS_MAX6697=n -CONFIG_SENSORS_MAX31790=n -CONFIG_SENSORS_MCP3021=n -CONFIG_SENSORS_MENF21BMC_HWMON=n -CONFIG_SENSORS_ADCXX=n -CONFIG_SENSORS_LM63=n -CONFIG_SENSORS_LM70=n -CONFIG_SENSORS_LM73=n -CONFIG_SENSORS_LM75=n -CONFIG_SENSORS_LM77=n -CONFIG_SENSORS_LM78=n -CONFIG_SENSORS_LM80=n -CONFIG_SENSORS_LM83=n -CONFIG_SENSORS_LM85=n -CONFIG_SENSORS_LM87=n -CONFIG_SENSORS_LM90=n -CONFIG_SENSORS_LM92=n -CONFIG_SENSORS_LM93=n -CONFIG_SENSORS_LM95234=n -CONFIG_SENSORS_LM95241=n -CONFIG_SENSORS_LM95245=n -CONFIG_SENSORS_PC87360=n -CONFIG_SENSORS_PC87427=n -CONFIG_SENSORS_NTC_THERMISTOR=n -CONFIG_SENSORS_NCT6683=n -CONFIG_SENSORS_NCT6775=n -CONFIG_SENSORS_NCT7802=n -CONFIG_SENSORS_NCT7904=n -CONFIG_SENSORS_PCF8591=n -CONFIG_PMBUS=n -CONFIG_SENSORS_ADM1275=n -CONFIG_SENSORS_LM25066=n -CONFIG_SENSORS_LTC2978=n -CONFIG_SENSORS_LTC2978_REGULATOR=y -CONFIG_SENSORS_MAX16064=n -CONFIG_SENSORS_MAX20751=n -CONFIG_SENSORS_MAX34440=n -CONFIG_SENSORS_MAX8688=n -CONFIG_SENSORS_TPS40422=n -CONFIG_SENSORS_UCD9000=n -CONFIG_SENSORS_UCD9200=n -CONFIG_SENSORS_ZL6100=n -CONFIG_SENSORS_SHT15=n -CONFIG_SENSORS_SHT21=n -CONFIG_SENSORS_SHTC1=n -CONFIG_SENSORS_SIS5595=n -CONFIG_SENSORS_DME1737=n -CONFIG_SENSORS_EMC1403=n -CONFIG_SENSORS_EMC2103=n -CONFIG_SENSORS_EMC6W201=n -CONFIG_SENSORS_SMSC47M1=n -CONFIG_SENSORS_SMSC47M192=n -CONFIG_SENSORS_SMSC47B397=n -CONFIG_SENSORS_SCH5627=n -CONFIG_SENSORS_SCH5636=n -CONFIG_SENSORS_SMM665=n -CONFIG_SENSORS_ADC128D818=n -CONFIG_SENSORS_ADS1015=n -CONFIG_SENSORS_ADS7828=n -CONFIG_SENSORS_ADS7871=n -CONFIG_SENSORS_AMC6821=n -CONFIG_SENSORS_INA209=n -CONFIG_SENSORS_INA2XX=n -CONFIG_SENSORS_TC74=n -CONFIG_SENSORS_THMC50=n -CONFIG_SENSORS_TMP102=n -CONFIG_SENSORS_TMP103=n -CONFIG_SENSORS_TMP401=n -CONFIG_SENSORS_TMP421=n -CONFIG_SENSORS_TWL4030_MADC=n -CONFIG_SENSORS_VIA_CPUTEMP=n -CONFIG_SENSORS_VIA686A=n -CONFIG_SENSORS_VT1211=n -CONFIG_SENSORS_VT8231=n -CONFIG_SENSORS_W83781D=n -CONFIG_SENSORS_W83791D=n -CONFIG_SENSORS_W83792D=n -CONFIG_SENSORS_W83793=n -CONFIG_SENSORS_W83795=n -CONFIG_SENSORS_W83L785TS=n -CONFIG_SENSORS_W83L786NG=n -CONFIG_SENSORS_W83627HF=n -CONFIG_SENSORS_W83627EHF=n -CONFIG_SENSORS_WM831X=n -CONFIG_SENSORS_WM8350=n -CONFIG_SENSORS_ACPI_POWER=n -CONFIG_SENSORS_ATK0110=n -CONFIG_THERMAL_GOV_FAIR_SHARE=y -CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y -CONFIG_THERMAL_EMULATION=y -CONFIG_INTEL_POWERCLAMP=n -CONFIG_INTEL_SOC_DTS_THERMAL=n -CONFIG_INT340X_THERMAL=n -CONFIG_INTEL_PCH_THERMAL=n -CONFIG_WATCHDOG=y -CONFIG_SOFT_WATCHDOG=n -CONFIG_DA9052_WATCHDOG=n -CONFIG_DA9055_WATCHDOG=n -CONFIG_DA9063_WATCHDOG=n -CONFIG_DA9062_WATCHDOG=n -CONFIG_MENF21BMC_WATCHDOG=n -CONFIG_WM831X_WATCHDOG=n -CONFIG_WM8350_WATCHDOG=n -CONFIG_XILINX_WATCHDOG=n -CONFIG_CADENCE_WATCHDOG=n -CONFIG_DW_WATCHDOG=n -CONFIG_TWL4030_WATCHDOG=n -CONFIG_MAX63XX_WATCHDOG=n -CONFIG_RETU_WATCHDOG=n -CONFIG_ACQUIRE_WDT=n -CONFIG_ADVANTECH_WDT=n -CONFIG_ALIM1535_WDT=n -CONFIG_ALIM7101_WDT=n -CONFIG_F71808E_WDT=n -CONFIG_SP5100_TCO=n -CONFIG_SBC_FITPC2_WATCHDOG=n -CONFIG_EUROTECH_WDT=n -CONFIG_IB700_WDT=n -CONFIG_IBMASR=n -CONFIG_WAFER_WDT=n -CONFIG_I6300ESB_WDT=n -CONFIG_IE6XX_WDT=n -CONFIG_ITCO_WDT=n -CONFIG_ITCO_VENDOR_SUPPORT=y -CONFIG_IT8712F_WDT=n -CONFIG_IT87_WDT=n -CONFIG_HP_WATCHDOG=n -CONFIG_KEMPLD_WDT=n -CONFIG_SC1200_WDT=n -CONFIG_PC87413_WDT=n -CONFIG_NV_TCO=n -CONFIG_60XX_WDT=n -CONFIG_CPU5_WDT=n -CONFIG_SMSC_SCH311X_WDT=n -CONFIG_SMSC37B787_WDT=n -CONFIG_VIA_WDT=n -CONFIG_W83627HF_WDT=n -CONFIG_W83877F_WDT=n -CONFIG_W83977F_WDT=n -CONFIG_MACHZ_WDT=n -CONFIG_SBC_EPX_C3_WATCHDOG=n -CONFIG_MEN_A21_WDT=n -CONFIG_XEN_WDT=n -CONFIG_PCIPCWATCHDOG=n -CONFIG_WDTPCI=n -CONFIG_USBPCWATCHDOG=n -CONFIG_SSB_DRIVER_GPIO=y -CONFIG_BCMA_HOST_SOC=y -CONFIG_BCMA_DRIVER_GMAC_CMN=y -CONFIG_BCMA_DRIVER_GPIO=y -CONFIG_MFD_AS3711=y -CONFIG_PMIC_ADP5520=y -CONFIG_MFD_AAT2870_CORE=y -CONFIG_MFD_BCM590XX=n -CONFIG_MFD_CROS_EC=n -CONFIG_MFD_CROS_EC_I2C=n -CONFIG_MFD_CROS_EC_SPI=n -CONFIG_PMIC_DA903X=y -CONFIG_MFD_DA9052_SPI=y -CONFIG_MFD_DA9052_I2C=y -CONFIG_MFD_DA9055=y -CONFIG_MFD_DA9062=n -CONFIG_MFD_DA9063=y -CONFIG_MFD_DA9150=n -CONFIG_MFD_DLN2=n -CONFIG_MFD_MC13XXX_SPI=n -CONFIG_MFD_MC13XXX_I2C=n -CONFIG_HTC_PASIC3=n -CONFIG_HTC_I2CPLD=y -CONFIG_MFD_INTEL_QUARK_I2C_GPIO=n -CONFIG_INTEL_SOC_PMIC=y -CONFIG_MFD_INTEL_LPSS_ACPI=n -CONFIG_MFD_INTEL_LPSS_PCI=n -CONFIG_MFD_JANZ_CMODIO=n -CONFIG_MFD_KEMPLD=n -CONFIG_MFD_88PM800=n -CONFIG_MFD_88PM805=n -CONFIG_MFD_88PM860X=y -CONFIG_MFD_MAX14577=y -CONFIG_MFD_MAX77693=y -CONFIG_MFD_MAX77843=y -CONFIG_MFD_MAX8907=n -CONFIG_MFD_MAX8925=y -CONFIG_MFD_MAX8997=y -CONFIG_MFD_MAX8998=y -CONFIG_MFD_MT6397=n -CONFIG_MFD_MENF21BMC=n -CONFIG_EZX_PCAP=y -CONFIG_MFD_VIPERBOARD=n -CONFIG_MFD_RETU=n -CONFIG_MFD_PCF50633=n -CONFIG_PCF50633_ADC=n -CONFIG_PCF50633_GPIO=n -CONFIG_UCB1400_CORE=n -CONFIG_MFD_RTSX_PCI=n -CONFIG_MFD_RT5033=n -CONFIG_MFD_RTSX_USB=n -CONFIG_MFD_RC5T583=y -CONFIG_MFD_SEC_CORE=y -CONFIG_MFD_SI476X_CORE=n -CONFIG_MFD_SM501=n -CONFIG_MFD_SM501_GPIO=y -CONFIG_MFD_SKY81452=n -CONFIG_MFD_SMSC=y -CONFIG_ABX500_CORE=y -CONFIG_AB3100_CORE=y -CONFIG_AB3100_OTP=n -CONFIG_MFD_TI_AM335X_TSCADC=n -CONFIG_MFD_LP3943=n -CONFIG_MFD_LP8788=y -CONFIG_MFD_PALMAS=y -CONFIG_TPS6105X=n -CONFIG_TPS65010=n -CONFIG_TPS6507X=n -CONFIG_MFD_TPS65090=y -CONFIG_MFD_TPS65217=y -CONFIG_MFD_TPS65218=n -CONFIG_MFD_TPS6586X=y -CONFIG_MFD_TPS65910=y -CONFIG_MFD_TPS65912_I2C=y -CONFIG_MFD_TPS65912_SPI=y -CONFIG_MFD_TPS80031=y -CONFIG_TWL4030_CORE=y -CONFIG_TWL6040_CORE=y -CONFIG_MFD_LM3533=n -CONFIG_MFD_ARIZONA_I2C=n -CONFIG_MFD_ARIZONA_SPI=n -CONFIG_MFD_WM5102=y -CONFIG_MFD_WM5110=y -CONFIG_MFD_WM8997=y -CONFIG_MFD_WM8998=y -CONFIG_MFD_WM8400=y -CONFIG_MFD_WM831X_I2C=y -CONFIG_MFD_WM831X_SPI=y -CONFIG_MFD_WM8350_I2C=y -CONFIG_MFD_WM8994=n -CONFIG_REGULATOR_VIRTUAL_CONSUMER=n -CONFIG_REGULATOR_USERSPACE_CONSUMER=n -CONFIG_REGULATOR_88PM800=n -CONFIG_REGULATOR_88PM8607=n -CONFIG_REGULATOR_ACT8865=n -CONFIG_REGULATOR_AD5398=n -CONFIG_REGULATOR_ANATOP=n -CONFIG_REGULATOR_AAT2870=n -CONFIG_REGULATOR_AB3100=n -CONFIG_REGULATOR_ARIZONA=n -CONFIG_REGULATOR_AS3711=n -CONFIG_REGULATOR_BCM590XX=n -CONFIG_REGULATOR_DA903X=n -CONFIG_REGULATOR_DA9052=n -CONFIG_REGULATOR_DA9055=n -CONFIG_REGULATOR_DA9062=n -CONFIG_REGULATOR_DA9063=n -CONFIG_REGULATOR_DA9210=n -CONFIG_REGULATOR_DA9211=n -CONFIG_REGULATOR_FAN53555=n -CONFIG_REGULATOR_GPIO=n -CONFIG_REGULATOR_ISL9305=n -CONFIG_REGULATOR_ISL6271A=n -CONFIG_REGULATOR_LP3971=n -CONFIG_REGULATOR_LP3972=n -CONFIG_REGULATOR_LP872X=n -CONFIG_REGULATOR_LP8755=n -CONFIG_REGULATOR_LP8788=n -CONFIG_REGULATOR_LTC3589=n -CONFIG_REGULATOR_MAX14577=n -CONFIG_REGULATOR_MAX1586=n -CONFIG_REGULATOR_MAX8649=n -CONFIG_REGULATOR_MAX8660=n -CONFIG_REGULATOR_MAX8907=n -CONFIG_REGULATOR_MAX8925=n -CONFIG_REGULATOR_MAX8952=n -CONFIG_REGULATOR_MAX8997=n -CONFIG_REGULATOR_MAX8998=n -CONFIG_REGULATOR_MAX77693=n -CONFIG_REGULATOR_MC13783=n -CONFIG_REGULATOR_MC13892=n -CONFIG_REGULATOR_MT6311=n -CONFIG_REGULATOR_MT6397=n -CONFIG_REGULATOR_PALMAS=n -CONFIG_REGULATOR_PCAP=n -CONFIG_REGULATOR_PCF50633=n -CONFIG_REGULATOR_PFUZE100=n -CONFIG_REGULATOR_PWM=n -CONFIG_REGULATOR_QCOM_SPMI=n -CONFIG_REGULATOR_RC5T583=n -CONFIG_REGULATOR_RT5033=n -CONFIG_REGULATOR_S2MPA01=n -CONFIG_REGULATOR_S2MPS11=n -CONFIG_REGULATOR_S5M8767=n -CONFIG_REGULATOR_SKY81452=n -CONFIG_REGULATOR_TPS51632=n -CONFIG_REGULATOR_TPS62360=n -CONFIG_REGULATOR_TPS65023=n -CONFIG_REGULATOR_TPS6507X=n -CONFIG_REGULATOR_TPS65090=n -CONFIG_REGULATOR_TPS65217=y -CONFIG_REGULATOR_TPS6524X=n -CONFIG_REGULATOR_TPS6586X=n -CONFIG_REGULATOR_TPS65910=n -CONFIG_REGULATOR_TPS65912=n -CONFIG_REGULATOR_TPS80031=n -CONFIG_REGULATOR_TWL4030=n -CONFIG_REGULATOR_WM831X=n -CONFIG_REGULATOR_WM8350=n -CONFIG_REGULATOR_WM8400=n -CONFIG_REGULATOR_WM8994=n -CONFIG_MEDIA_SUPPORT=n -CONFIG_MEDIA_CAMERA_SUPPORT=y -CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -CONFIG_MEDIA_RADIO_SUPPORT=y -CONFIG_MEDIA_SDR_SUPPORT=y -CONFIG_MEDIA_RC_SUPPORT=y -CONFIG_MEDIA_CONTROLLER=y -CONFIG_VIDEO_V4L2_SUBDEV_API=y -CONFIG_V4L2_FLASH_LED_CLASS=n -CONFIG_DVB_DYNAMIC_MINORS=y -CONFIG_LIRC=n -CONFIG_RC_DEVICES=y -CONFIG_RC_ATI_REMOTE=n -CONFIG_IR_ENE=n -CONFIG_IR_HIX5HD2=n -CONFIG_IR_IMON=n -CONFIG_IR_MCEUSB=n -CONFIG_IR_ITE_CIR=n -CONFIG_IR_FINTEK=n -CONFIG_IR_NUVOTON=n -CONFIG_IR_REDRAT3=n -CONFIG_IR_STREAMZAP=n -CONFIG_IR_WINBOND_CIR=n -CONFIG_IR_IGORPLUGUSB=n -CONFIG_IR_IGUANA=n -CONFIG_IR_TTUSBIR=n -CONFIG_RC_LOOPBACK=n -CONFIG_IR_GPIO_CIR=n -CONFIG_MEDIA_USB_SUPPORT=y -CONFIG_USB_VIDEO_CLASS=n -CONFIG_USB_M5602=n -CONFIG_USB_STV06XX=n -CONFIG_USB_GL860=n -CONFIG_USB_GSPCA_BENQ=n -CONFIG_USB_GSPCA_CONEX=n -CONFIG_USB_GSPCA_CPIA1=n -CONFIG_USB_GSPCA_DTCS033=n -CONFIG_USB_GSPCA_ETOMS=n -CONFIG_USB_GSPCA_FINEPIX=n -CONFIG_USB_GSPCA_JEILINJ=n -CONFIG_USB_GSPCA_JL2005BCD=n -CONFIG_USB_GSPCA_KINECT=n -CONFIG_USB_GSPCA_KONICA=n -CONFIG_USB_GSPCA_MARS=n -CONFIG_USB_GSPCA_MR97310A=n -CONFIG_USB_GSPCA_NW80X=n -CONFIG_USB_GSPCA_OV519=n -CONFIG_USB_GSPCA_OV534=n -CONFIG_USB_GSPCA_OV534_9=n -CONFIG_USB_GSPCA_PAC207=n -CONFIG_USB_GSPCA_PAC7302=n -CONFIG_USB_GSPCA_PAC7311=n -CONFIG_USB_GSPCA_SE401=n -CONFIG_USB_GSPCA_SN9C2028=n -CONFIG_USB_GSPCA_SN9C20X=n -CONFIG_USB_GSPCA_SONIXB=n -CONFIG_USB_GSPCA_SONIXJ=n -CONFIG_USB_GSPCA_SPCA500=n -CONFIG_USB_GSPCA_SPCA501=n -CONFIG_USB_GSPCA_SPCA505=n -CONFIG_USB_GSPCA_SPCA506=n -CONFIG_USB_GSPCA_SPCA508=n -CONFIG_USB_GSPCA_SPCA561=n -CONFIG_USB_GSPCA_SPCA1528=n -CONFIG_USB_GSPCA_SQ905=n -CONFIG_USB_GSPCA_SQ905C=n -CONFIG_USB_GSPCA_SQ930X=n -CONFIG_USB_GSPCA_STK014=n -CONFIG_USB_GSPCA_STK1135=n -CONFIG_USB_GSPCA_STV0680=n -CONFIG_USB_GSPCA_SUNPLUS=n -CONFIG_USB_GSPCA_T613=n -CONFIG_USB_GSPCA_TOPRO=n -CONFIG_USB_GSPCA_TOUPTEK=n -CONFIG_USB_GSPCA_TV8532=n -CONFIG_USB_GSPCA_VC032X=n -CONFIG_USB_GSPCA_VICAM=n -CONFIG_USB_GSPCA_XIRLINK_CIT=n -CONFIG_USB_GSPCA_ZC3XX=n -CONFIG_USB_PWC=n -CONFIG_VIDEO_CPIA2=n -CONFIG_USB_ZR364XX=n -CONFIG_USB_STKWEBCAM=n -CONFIG_USB_S2255=n -CONFIG_VIDEO_USBTV=n -CONFIG_VIDEO_PVRUSB2=n -CONFIG_VIDEO_HDPVR=n -CONFIG_VIDEO_USBVISION=n -CONFIG_VIDEO_STK1160_COMMON=n -CONFIG_VIDEO_STK1160_AC97=y -CONFIG_VIDEO_GO7007=n -CONFIG_VIDEO_GO7007_USB=n -CONFIG_VIDEO_GO7007_USB_S2250_BOARD=n -CONFIG_VIDEO_AU0828=n -CONFIG_VIDEO_AU0828_RC=y -CONFIG_VIDEO_CX231XX=n -CONFIG_VIDEO_CX231XX_ALSA=n -CONFIG_VIDEO_CX231XX_DVB=n -CONFIG_VIDEO_TM6000=n -CONFIG_VIDEO_TM6000_ALSA=n -CONFIG_VIDEO_TM6000_DVB=n -CONFIG_DVB_USB=n -CONFIG_DVB_USB_A800=n -CONFIG_DVB_USB_DIBUSB_MB=n -CONFIG_DVB_USB_DIBUSB_MC=n -CONFIG_DVB_USB_DIB0700=n -CONFIG_DVB_USB_UMT_010=n -CONFIG_DVB_USB_CXUSB=n -CONFIG_DVB_USB_M920X=n -CONFIG_DVB_USB_DIGITV=n -CONFIG_DVB_USB_VP7045=n -CONFIG_DVB_USB_VP702X=n -CONFIG_DVB_USB_GP8PSK=n -CONFIG_DVB_USB_NOVA_T_USB2=n -CONFIG_DVB_USB_TTUSB2=n -CONFIG_DVB_USB_DTT200U=n -CONFIG_DVB_USB_OPERA1=n -CONFIG_DVB_USB_AF9005=n -CONFIG_DVB_USB_AF9005_REMOTE=n -CONFIG_DVB_USB_PCTV452E=n -CONFIG_DVB_USB_DW2102=n -CONFIG_DVB_USB_CINERGY_T2=n -CONFIG_DVB_USB_DTV5100=n -CONFIG_DVB_USB_FRIIO=n -CONFIG_DVB_USB_AZ6027=n -CONFIG_DVB_USB_TECHNISAT_USB2=n -CONFIG_DVB_USB_V2=n -CONFIG_DVB_USB_AF9015=n -CONFIG_DVB_USB_AF9035=n -CONFIG_DVB_USB_ANYSEE=n -CONFIG_DVB_USB_AU6610=n -CONFIG_DVB_USB_AZ6007=n -CONFIG_DVB_USB_CE6230=n -CONFIG_DVB_USB_EC168=n -CONFIG_DVB_USB_GL861=n -CONFIG_DVB_USB_LME2510=n -CONFIG_DVB_USB_MXL111SF=n -CONFIG_DVB_USB_RTL28XXU=n -CONFIG_DVB_USB_DVBSKY=n -CONFIG_DVB_TTUSB_BUDGET=n -CONFIG_DVB_TTUSB_DEC=n -CONFIG_SMS_USB_DRV=n -CONFIG_DVB_B2C2_FLEXCOP_USB=n -CONFIG_DVB_AS102=n -CONFIG_VIDEO_EM28XX=n -CONFIG_VIDEO_EM28XX_V4L2=n -CONFIG_VIDEO_EM28XX_ALSA=n -CONFIG_VIDEO_EM28XX_DVB=n -CONFIG_USB_AIRSPY=n -CONFIG_USB_HACKRF=n -CONFIG_USB_MSI2500=n -CONFIG_MEDIA_PCI_SUPPORT=y -CONFIG_VIDEO_MEYE=n -CONFIG_VIDEO_SOLO6X10=n -CONFIG_VIDEO_TW68=n -CONFIG_VIDEO_ZORAN=n -CONFIG_VIDEO_ZORAN_DC30=n -CONFIG_VIDEO_ZORAN_ZR36060=n -CONFIG_VIDEO_ZORAN_BUZ=n -CONFIG_VIDEO_ZORAN_DC10=n -CONFIG_VIDEO_ZORAN_LML33=n -CONFIG_VIDEO_ZORAN_LML33R10=n -CONFIG_VIDEO_ZORAN_AVS6EYES=n -CONFIG_VIDEO_IVTV=n -CONFIG_VIDEO_IVTV_ALSA=n -CONFIG_VIDEO_FB_IVTV=n -CONFIG_VIDEO_HEXIUM_GEMINI=n -CONFIG_VIDEO_HEXIUM_ORION=n -CONFIG_VIDEO_MXB=n -CONFIG_VIDEO_DT3155=n -CONFIG_VIDEO_CX18=n -CONFIG_VIDEO_CX18_ALSA=n -CONFIG_VIDEO_CX23885=n -CONFIG_MEDIA_ALTERA_CI=n -CONFIG_VIDEO_CX25821=n -CONFIG_VIDEO_CX25821_ALSA=n -CONFIG_VIDEO_CX88=n -CONFIG_VIDEO_CX88_ALSA=n -CONFIG_VIDEO_CX88_BLACKBIRD=n -CONFIG_VIDEO_CX88_DVB=n -CONFIG_VIDEO_BT848=n -CONFIG_DVB_BT8XX=n -CONFIG_VIDEO_SAA7134=n -CONFIG_VIDEO_SAA7134_ALSA=n -CONFIG_VIDEO_SAA7134_DVB=n -CONFIG_VIDEO_SAA7134_GO7007=n -CONFIG_VIDEO_SAA7164=n -CONFIG_VIDEO_COBALT=n -CONFIG_DVB_AV7110=n -CONFIG_DVB_BUDGET_CORE=n -CONFIG_DVB_BUDGET=n -CONFIG_DVB_BUDGET_CI=n -CONFIG_DVB_BUDGET_AV=n -CONFIG_DVB_BUDGET_PATCH=n -CONFIG_DVB_B2C2_FLEXCOP_PCI=n -CONFIG_DVB_PLUTO2=n -CONFIG_DVB_DM1105=n -CONFIG_DVB_PT1=n -CONFIG_DVB_PT3=n -CONFIG_MANTIS_CORE=n -CONFIG_DVB_MANTIS=n -CONFIG_DVB_HOPPER=n -CONFIG_DVB_NGENE=n -CONFIG_DVB_DDBRIDGE=n -CONFIG_DVB_SMIPCIE=n -CONFIG_DVB_NETUP_UNIDVB=n -CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_VIDEO_CAFE_CCIC=n -CONFIG_VIDEO_VIA_CAMERA=n -CONFIG_SOC_CAMERA=n -CONFIG_SOC_CAMERA_PLATFORM=n -CONFIG_V4L_MEM2MEM_DRIVERS=y -CONFIG_VIDEO_MEM2MEM_DEINTERLACE=n -CONFIG_VIDEO_SH_VEU=n -CONFIG_V4L_TEST_DRIVERS=y -CONFIG_VIDEO_VIVID=n -CONFIG_VIDEO_VIM2M=n -CONFIG_DVB_PLATFORM_DRIVERS=y -CONFIG_SMS_SDIO_DRV=n -CONFIG_RADIO_SI470X=y -CONFIG_USB_SI470X=n -CONFIG_I2C_SI470X=n -CONFIG_RADIO_SI4713=n -CONFIG_USB_SI4713=n -CONFIG_PLATFORM_SI4713=n -CONFIG_RADIO_SI476X=n -CONFIG_USB_MR800=n -CONFIG_USB_DSBR=n -CONFIG_RADIO_MAXIRADIO=n -CONFIG_RADIO_SHARK=n -CONFIG_RADIO_SHARK2=n -CONFIG_USB_KEENE=n -CONFIG_USB_RAREMONO=n -CONFIG_USB_MA901=n -CONFIG_RADIO_TEA5764=n -CONFIG_RADIO_SAA7706H=n -CONFIG_RADIO_TEF6862=n -CONFIG_RADIO_WL1273=n -CONFIG_RADIO_WL128X=n -CONFIG_DVB_FIREDTV=n -CONFIG_SMS_SIANO_DEBUGFS=y -CONFIG_SOC_CAMERA_IMX074=n -CONFIG_SOC_CAMERA_MT9M001=n -CONFIG_SOC_CAMERA_MT9M111=n -CONFIG_SOC_CAMERA_MT9T031=n -CONFIG_SOC_CAMERA_MT9T112=n -CONFIG_SOC_CAMERA_MT9V022=n -CONFIG_SOC_CAMERA_OV2640=n -CONFIG_SOC_CAMERA_OV5642=n -CONFIG_SOC_CAMERA_OV6650=n -CONFIG_SOC_CAMERA_OV772X=n -CONFIG_SOC_CAMERA_OV9640=n -CONFIG_SOC_CAMERA_OV9740=n -CONFIG_SOC_CAMERA_RJ54N1=n -CONFIG_SOC_CAMERA_TW9910=n -CONFIG_AGP=y -CONFIG_AGP_AMD64=y -CONFIG_AGP_INTEL=y -CONFIG_AGP_SIS=n -CONFIG_AGP_VIA=y -CONFIG_VGA_SWITCHEROO=y -CONFIG_DRM=y -CONFIG_DRM_LOAD_EDID_FIRMWARE=y -CONFIG_DRM_I2C_NXP_TDA998X=n -CONFIG_DRM_RADEON=n -CONFIG_DRM_AMDGPU=n -CONFIG_DRM_AMDGPU_USERPTR=y -CONFIG_DRM_NOUVEAU=n -CONFIG_DRM_I915=n -CONFIG_DRM_VGEM=n -CONFIG_DRM_VMWGFX=n -CONFIG_DRM_VMWGFX_FBCON=y -CONFIG_DRM_GMA500=n -CONFIG_DRM_GMA600=y -CONFIG_DRM_GMA3600=y -CONFIG_DRM_UDL=n -CONFIG_DRM_AST=n -CONFIG_DRM_CIRRUS_QEMU=n -CONFIG_DRM_QXL=n -CONFIG_DRM_VIRTIO_GPU=n -CONFIG_HSA_AMD=n -CONFIG_FIRMWARE_EDID=y -CONFIG_FB_CIRRUS=n -CONFIG_FB_PM2=n -CONFIG_FB_PM2_FIFO_DISCONNECT=y -CONFIG_FB_CYBER2000=n -CONFIG_FB_ARC=n -CONFIG_FB_ASILIANT=y -CONFIG_FB_IMSTT=y -CONFIG_FB_VGA16=n -CONFIG_FB_UVESA=n -CONFIG_FB_VESA=y -CONFIG_FB_EFI=y -CONFIG_FB_N411=n -CONFIG_FB_HGA=n -CONFIG_FB_OPENCORES=n -CONFIG_FB_S1D13XXX=n -CONFIG_FB_NVIDIA=n -CONFIG_FB_NVIDIA_I2C=y -CONFIG_FB_RIVA=n -CONFIG_FB_RIVA_I2C=y -CONFIG_FB_I740=n -CONFIG_FB_LE80578=n -CONFIG_FB_CARILLO_RANCH=n -CONFIG_FB_INTEL=n -CONFIG_FB_MATROX=n -CONFIG_FB_MATROX_MILLENIUM=y -CONFIG_FB_MATROX_MYSTIQUE=y -CONFIG_FB_MATROX_G=y -CONFIG_FB_MATROX_I2C=n -CONFIG_FB_MATROX_MAVEN=n -CONFIG_FB_RADEON=n -CONFIG_FB_ATY128=n -CONFIG_FB_ATY=n -CONFIG_FB_ATY_CT=y -CONFIG_FB_ATY_GX=y -CONFIG_FB_S3=n -CONFIG_FB_SAVAGE=n -CONFIG_FB_SAVAGE_I2C=y -CONFIG_FB_SIS=n -CONFIG_FB_SIS_300=y -CONFIG_FB_SIS_315=y -CONFIG_FB_VIA=n -CONFIG_FB_VIA_X_COMPATIBILITY=y -CONFIG_FB_NEOMAGIC=n -CONFIG_FB_KYRO=n -CONFIG_FB_3DFX=n -# CONFIG_FB_3DFX_I2C is not set -CONFIG_FB_VOODOO1=n -CONFIG_FB_VT8623=n -CONFIG_FB_TRIDENT=n -CONFIG_FB_ARK=n -CONFIG_FB_PM3=n -CONFIG_FB_CARMINE=n -CONFIG_FB_SM501=n -CONFIG_FB_SMSCUFX=n -CONFIG_FB_UDL=n -CONFIG_FB_IBM_GXT4500=n -CONFIG_XEN_FBDEV_FRONTEND=n -CONFIG_FB_METRONOME=n -CONFIG_FB_MB862XX=n -CONFIG_FB_BROADSHEET=n -CONFIG_FB_AUO_K190X=n -CONFIG_FB_AUO_K1900=n -CONFIG_FB_AUO_K1901=n -CONFIG_FB_HYPERV=n -CONFIG_FB_SIMPLE=y -CONFIG_FB_SM712=n -CONFIG_LCD_L4F00242T03=n -CONFIG_LCD_LMS283GF05=n -CONFIG_LCD_LTV350QV=n -CONFIG_LCD_ILI922X=n -CONFIG_LCD_TDO24M=n -CONFIG_LCD_VGG2432A4=n -CONFIG_LCD_PLATFORM=n -CONFIG_LCD_S6E63M0=n -CONFIG_LCD_LD9040=n -CONFIG_LCD_AMS369FG06=n -CONFIG_LCD_LMS501KF03=n -CONFIG_LCD_HX8357=n -CONFIG_BACKLIGHT_GENERIC=n -CONFIG_BACKLIGHT_LM3533=n -CONFIG_BACKLIGHT_CARILLO_RANCH=n -CONFIG_BACKLIGHT_PWM=n -CONFIG_BACKLIGHT_DA903X=n -CONFIG_BACKLIGHT_DA9052=n -CONFIG_BACKLIGHT_MAX8925=n -CONFIG_BACKLIGHT_APPLE=n -CONFIG_BACKLIGHT_PM8941_WLED=n -CONFIG_BACKLIGHT_SAHARA=n -CONFIG_BACKLIGHT_WM831X=n -CONFIG_BACKLIGHT_ADP5520=n -CONFIG_BACKLIGHT_ADP8860=n -CONFIG_BACKLIGHT_ADP8870=n -CONFIG_BACKLIGHT_88PM860X=n -CONFIG_BACKLIGHT_PCF50633=n -CONFIG_BACKLIGHT_AAT2870=n -CONFIG_BACKLIGHT_LM3630A=n -CONFIG_BACKLIGHT_LM3639=n -CONFIG_BACKLIGHT_LP855X=n -CONFIG_BACKLIGHT_LP8788=n -CONFIG_BACKLIGHT_PANDORA=n -CONFIG_BACKLIGHT_SKY81452=n -CONFIG_BACKLIGHT_TPS65217=n -CONFIG_BACKLIGHT_AS3711=n -CONFIG_BACKLIGHT_GPIO=n -CONFIG_BACKLIGHT_LV5207LP=n -CONFIG_BACKLIGHT_BD6107=n -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -CONFIG_SOUND=n -# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set -CONFIG_SND=n -CONFIG_SND_SEQUENCER=n -CONFIG_SND_SEQ_DUMMY=n -CONFIG_SND_MIXER_OSS=n -CONFIG_SND_PCM_OSS=n -CONFIG_SND_HRTIMER=n -CONFIG_SND_DYNAMIC_MINORS=y -CONFIG_SND_PCSP=n -CONFIG_SND_DUMMY=n -CONFIG_SND_ALOOP=n -CONFIG_SND_VIRMIDI=n -CONFIG_SND_MTPAV=n -CONFIG_SND_MTS64=n -CONFIG_SND_SERIAL_U16550=n -CONFIG_SND_MPU401=n -CONFIG_SND_PORTMAN2X4=n -CONFIG_SND_AC97_POWER_SAVE=y -CONFIG_SND_AD1889=n -CONFIG_SND_ALS300=n -CONFIG_SND_ALS4000=n -CONFIG_SND_ALI5451=n -CONFIG_SND_ASIHPI=n -CONFIG_SND_ATIIXP=n -CONFIG_SND_ATIIXP_MODEM=n -CONFIG_SND_AU8810=n -CONFIG_SND_AU8820=n -CONFIG_SND_AU8830=n -CONFIG_SND_AW2=n -CONFIG_SND_AZT3328=n -CONFIG_SND_BT87X=n -CONFIG_SND_CA0106=n -CONFIG_SND_CMIPCI=n -CONFIG_SND_OXYGEN=n -CONFIG_SND_CS4281=n -CONFIG_SND_CS46XX=n -CONFIG_SND_CTXFI=n -CONFIG_SND_DARLA20=n -CONFIG_SND_GINA20=n -CONFIG_SND_LAYLA20=n -CONFIG_SND_DARLA24=n -CONFIG_SND_GINA24=n -CONFIG_SND_LAYLA24=n -CONFIG_SND_MONA=n -CONFIG_SND_MIA=n -CONFIG_SND_ECHO3G=n -CONFIG_SND_INDIGO=n -CONFIG_SND_INDIGOIO=n -CONFIG_SND_INDIGODJ=n -CONFIG_SND_INDIGOIOX=n -CONFIG_SND_INDIGODJX=n -CONFIG_SND_EMU10K1=n -CONFIG_SND_EMU10K1X=n -CONFIG_SND_ENS1370=n -CONFIG_SND_ENS1371=n -CONFIG_SND_ES1938=n -CONFIG_SND_ES1968=n -CONFIG_SND_ES1968_INPUT=y -CONFIG_SND_ES1968_RADIO=y -CONFIG_SND_FM801=n -CONFIG_SND_FM801_TEA575X_BOOL=y -CONFIG_SND_HDSP=n -CONFIG_SND_HDSPM=n -CONFIG_SND_ICE1712=n -CONFIG_SND_ICE1724=n -CONFIG_SND_INTEL8X0=n -CONFIG_SND_INTEL8X0M=n -CONFIG_SND_KORG1212=n -CONFIG_SND_LOLA=n -CONFIG_SND_LX6464ES=n -CONFIG_SND_MAESTRO3=n -CONFIG_SND_MAESTRO3_INPUT=y -CONFIG_SND_MIXART=n -CONFIG_SND_NM256=n -CONFIG_SND_PCXHR=n -CONFIG_SND_RIPTIDE=n -CONFIG_SND_RME32=n -CONFIG_SND_RME96=n -CONFIG_SND_RME9652=n -CONFIG_SND_SONICVIBES=n -CONFIG_SND_TRIDENT=n -CONFIG_SND_VIA82XX=n -CONFIG_SND_VIA82XX_MODEM=n -CONFIG_SND_VIRTUOSO=n -CONFIG_SND_VX222=n -CONFIG_SND_YMFPCI=n -CONFIG_SND_HDA_INTEL=n -CONFIG_SND_HDA_HWDEP=y -CONFIG_SND_HDA_INPUT_BEEP=y -CONFIG_SND_HDA_INPUT_BEEP_MODE=0 -CONFIG_SND_HDA_PATCH_LOADER=y -CONFIG_SND_HDA_CODEC_REALTEK=n -CONFIG_SND_HDA_CODEC_ANALOG=n -CONFIG_SND_HDA_CODEC_SIGMATEL=n -CONFIG_SND_HDA_CODEC_VIA=n -CONFIG_SND_HDA_CODEC_HDMI=n -CONFIG_SND_HDA_CODEC_CIRRUS=n -CONFIG_SND_HDA_CODEC_CONEXANT=n -CONFIG_SND_HDA_CODEC_CA0110=n -CONFIG_SND_HDA_CODEC_CA0132=n -CONFIG_SND_HDA_CODEC_CA0132_DSP=y -CONFIG_SND_HDA_CODEC_CMEDIA=n -CONFIG_SND_HDA_CODEC_SI3054=n -CONFIG_SND_USB_AUDIO=n -CONFIG_SND_USB_UA101=n -CONFIG_SND_USB_USX2Y=n -CONFIG_SND_USB_CAIAQ=n -CONFIG_SND_USB_CAIAQ_INPUT=y -CONFIG_SND_USB_US122L=n -CONFIG_SND_USB_6FIRE=n -CONFIG_SND_USB_HIFACE=n -CONFIG_SND_BCD2000=n -CONFIG_SND_USB_POD=n -CONFIG_SND_USB_PODHD=n -CONFIG_SND_USB_TONEPORT=n -CONFIG_SND_USB_VARIAX=n -CONFIG_SND_DICE=n -CONFIG_SND_OXFW=n -CONFIG_SND_ISIGHT=n -CONFIG_SND_FIREWORKS=n -CONFIG_SND_BEBOB=n -CONFIG_SND_FIREWIRE_DIGI00X=n -CONFIG_SND_FIREWIRE_TASCAM=n -CONFIG_SND_VXPOCKET=n -CONFIG_SND_PDAUDIOCF=n -CONFIG_SND_SOC=n -CONFIG_SND_ATMEL_SOC=n -CONFIG_SND_DESIGNWARE_I2S=n -CONFIG_SND_SOC_FSL_ASRC=n -CONFIG_SND_SOC_FSL_SAI=n -CONFIG_SND_SOC_FSL_SSI=n -CONFIG_SND_SOC_FSL_SPDIF=n -CONFIG_SND_SOC_FSL_ESAI=n -CONFIG_SND_SOC_IMX_AUDMUX=n -CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=n -CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=n -CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=n -CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=n -CONFIG_SND_SOC_INTEL_SKL_RT286_MACH=n -CONFIG_SND_SOC_XTFPGA_I2S=n -CONFIG_SND_SOC_AC97_CODEC=n -CONFIG_SND_SOC_ADAU1701=n -CONFIG_SND_SOC_AK4104=n -CONFIG_SND_SOC_AK4554=n -CONFIG_SND_SOC_AK4613=n -CONFIG_SND_SOC_AK4642=n -CONFIG_SND_SOC_AK5386=n -CONFIG_SND_SOC_ALC5623=n -CONFIG_SND_SOC_CS35L32=n -CONFIG_SND_SOC_CS42L51_I2C=n -CONFIG_SND_SOC_CS42L52=n -CONFIG_SND_SOC_CS42L56=n -CONFIG_SND_SOC_CS42L73=n -CONFIG_SND_SOC_CS4265=n -CONFIG_SND_SOC_CS4270=n -CONFIG_SND_SOC_CS4271_I2C=n -CONFIG_SND_SOC_CS4271_SPI=n -CONFIG_SND_SOC_CS42XX8_I2C=n -CONFIG_SND_SOC_CS4349=n -CONFIG_SND_SOC_ES8328=n -CONFIG_SND_SOC_GTM601=n -CONFIG_SND_SOC_PCM1681=n -CONFIG_SND_SOC_PCM512x_I2C=n -CONFIG_SND_SOC_PCM512x_SPI=n -CONFIG_SND_SOC_RT5631=n -CONFIG_SND_SOC_SGTL5000=n -CONFIG_SND_SOC_SIRF_AUDIO_CODEC=n -CONFIG_SND_SOC_SPDIF=n -CONFIG_SND_SOC_SSM2602_SPI=n -CONFIG_SND_SOC_SSM2602_I2C=n -CONFIG_SND_SOC_SSM4567=n -CONFIG_SND_SOC_STA32X=n -CONFIG_SND_SOC_STA350=n -CONFIG_SND_SOC_STI_SAS=n -CONFIG_SND_SOC_TAS2552=n -CONFIG_SND_SOC_TAS5086=n -CONFIG_SND_SOC_TAS571X=n -CONFIG_SND_SOC_TFA9879=n -CONFIG_SND_SOC_TLV320AIC23_I2C=n -CONFIG_SND_SOC_TLV320AIC23_SPI=n -CONFIG_SND_SOC_TLV320AIC31XX=n -CONFIG_SND_SOC_TLV320AIC3X=n -CONFIG_SND_SOC_WM8510=n -CONFIG_SND_SOC_WM8523=n -CONFIG_SND_SOC_WM8580=n -CONFIG_SND_SOC_WM8711=n -CONFIG_SND_SOC_WM8728=n -CONFIG_SND_SOC_WM8731=n -CONFIG_SND_SOC_WM8737=n -CONFIG_SND_SOC_WM8741=n -CONFIG_SND_SOC_WM8750=n -CONFIG_SND_SOC_WM8753=n -CONFIG_SND_SOC_WM8770=n -CONFIG_SND_SOC_WM8776=n -CONFIG_SND_SOC_WM8804_I2C=n -CONFIG_SND_SOC_WM8804_SPI=n -CONFIG_SND_SOC_WM8903=n -CONFIG_SND_SOC_WM8962=n -CONFIG_SND_SOC_WM8978=n -CONFIG_SND_SOC_TPA6130A2=n -CONFIG_SND_SIMPLE_CARD=n -CONFIG_HID=n -CONFIG_HID_BATTERY_STRENGTH=y -CONFIG_HIDRAW=y -CONFIG_UHID=n -CONFIG_HID_A4TECH=n -CONFIG_HID_ACRUX=n -CONFIG_HID_ACRUX_FF=y -CONFIG_HID_APPLE=n -CONFIG_HID_APPLEIR=n -CONFIG_HID_AUREAL=n -CONFIG_HID_BELKIN=n -CONFIG_HID_BETOP_FF=n -CONFIG_HID_CHERRY=n -CONFIG_HID_CHICONY=n -CONFIG_HID_CORSAIR=n -CONFIG_HID_PRODIKEYS=n -CONFIG_HID_CP2112=n -CONFIG_HID_CYPRESS=n -CONFIG_HID_DRAGONRISE=n -CONFIG_DRAGONRISE_FF=y -CONFIG_HID_EMS_FF=n -CONFIG_HID_ELECOM=n -CONFIG_HID_ELO=n -CONFIG_HID_EZKEY=n -CONFIG_HID_GEMBIRD=n -CONFIG_HID_GFRM=n -CONFIG_HID_HOLTEK=n -CONFIG_HOLTEK_FF=y -CONFIG_HID_GT683R=n -CONFIG_HID_KEYTOUCH=n -CONFIG_HID_KYE=n -CONFIG_HID_UCLOGIC=n -CONFIG_HID_WALTOP=n -CONFIG_HID_GYRATION=n -CONFIG_HID_ICADE=n -CONFIG_HID_TWINHAN=n -CONFIG_HID_KENSINGTON=n -CONFIG_HID_LCPOWER=n -CONFIG_HID_LENOVO=n -CONFIG_HID_LOGITECH=n -CONFIG_HID_LOGITECH_DJ=n -CONFIG_LOGITECH_FF=y -CONFIG_LOGIRUMBLEPAD2_FF=y -CONFIG_LOGIG940_FF=y -CONFIG_HID_MAGICMOUSE=n -CONFIG_HID_MICROSOFT=n -CONFIG_HID_MONTEREY=n -CONFIG_HID_MULTITOUCH=n -CONFIG_HID_NTRIG=n -CONFIG_HID_ORTEK=n -CONFIG_HID_PANTHERLORD=n -CONFIG_PANTHERLORD_FF=y -CONFIG_HID_PENMOUNT=n -CONFIG_HID_PETALYNX=n -CONFIG_HID_PICOLCD=n -CONFIG_HID_PICOLCD_FB=y -CONFIG_HID_PICOLCD_BACKLIGHT=y -CONFIG_HID_PICOLCD_LCD=y -CONFIG_HID_PICOLCD_LEDS=y -CONFIG_HID_PICOLCD_CIR=y -CONFIG_HID_PLANTRONICS=n -CONFIG_HID_PRIMAX=n -CONFIG_HID_ROCCAT=n -CONFIG_HID_SAITEK=n -CONFIG_HID_SAMSUNG=n -CONFIG_HID_SONY=n -CONFIG_SONY_FF=y -CONFIG_HID_SPEEDLINK=n -CONFIG_HID_STEELSERIES=n -CONFIG_HID_SUNPLUS=n -CONFIG_HID_RMI=n -CONFIG_HID_GREENASIA=n -CONFIG_GREENASIA_FF=y -CONFIG_HID_HYPERV_MOUSE=n -CONFIG_HID_SMARTJOYPLUS=n -CONFIG_SMARTJOYPLUS_FF=y -CONFIG_HID_TIVO=n -CONFIG_HID_TOPSEED=n -CONFIG_HID_THINGM=n -CONFIG_HID_THRUSTMASTER=n -CONFIG_THRUSTMASTER_FF=y -CONFIG_HID_WACOM=n -CONFIG_HID_WIIMOTE=n -CONFIG_HID_XINMO=n -CONFIG_HID_ZEROPLUS=n -CONFIG_ZEROPLUS_FF=y -CONFIG_HID_ZYDACRON=n -CONFIG_HID_SENSOR_CUSTOM_SENSOR=n -CONFIG_USB_HID=n -CONFIG_HID_PID=y -CONFIG_USB_HIDDEV=y -CONFIG_USB_KBD=n -CONFIG_USB_MOUSE=n -CONFIG_I2C_HID=n -CONFIG_USB=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_DYNAMIC_MINORS=y -CONFIG_USB_MON=n -CONFIG_USB_WUSB_CBAF=n -CONFIG_USB_C67X00_HCD=n -CONFIG_USB_XHCI_HCD=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_HCD_PLATFORM=y -CONFIG_USB_OXU210HP_HCD=n -CONFIG_USB_ISP116X_HCD=n -CONFIG_USB_ISP1362_HCD=n -CONFIG_USB_FOTG210_HCD=n -CONFIG_USB_MAX3421_HCD=n -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_OHCI_HCD_PLATFORM=y -CONFIG_USB_UHCI_HCD=y -CONFIG_USB_U132_HCD=n -CONFIG_USB_SL811_HCD=n -CONFIG_USB_SL811_HCD_ISO=y -CONFIG_USB_SL811_CS=n -CONFIG_USB_R8A66597_HCD=n -CONFIG_USB_WHCI_HCD=n -CONFIG_USB_HWA_HCD=n -CONFIG_USB_HCD_BCMA=n -CONFIG_USB_HCD_SSB=n -CONFIG_USB_PRINTER=n -CONFIG_USB_TMC=n -CONFIG_USB_STORAGE=y -CONFIG_USB_STORAGE_REALTEK=y -CONFIG_USB_STORAGE_DATAFAB=y -CONFIG_USB_STORAGE_FREECOM=y -CONFIG_USB_STORAGE_ISD200=y -CONFIG_USB_STORAGE_USBAT=y -CONFIG_USB_STORAGE_SDDR09=y -CONFIG_USB_STORAGE_SDDR55=y -CONFIG_USB_STORAGE_JUMPSHOT=y -CONFIG_USB_STORAGE_ALAUDA=y -CONFIG_USB_STORAGE_ONETOUCH=y -CONFIG_USB_STORAGE_KARMA=y -CONFIG_USB_STORAGE_CYPRESS_ATACB=y -CONFIG_USB_STORAGE_ENE_UB6250=y -CONFIG_USB_UAS=y -CONFIG_USB_MDC800=n -CONFIG_USB_MICROTEK=n -CONFIG_USBIP_CORE=n -CONFIG_USBIP_VHCI_HCD=n -CONFIG_USBIP_HOST=n -CONFIG_USB_MUSB_HDRC=n -CONFIG_MUSB_PIO_ONLY=y -CONFIG_USB_DWC3=n -CONFIG_USB_DWC3_ULPI=y -CONFIG_USB_DWC2=y -CONFIG_USB_DWC2_PCI=n -CONFIG_USB_CHIPIDEA=n -CONFIG_USB_CHIPIDEA_UDC=y -CONFIG_USB_CHIPIDEA_HOST=y -CONFIG_USB_ISP1760=n -CONFIG_USB_USS720=n -CONFIG_USB_SERIAL=n -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_SIMPLE=n -CONFIG_USB_SERIAL_AIRCABLE=n -CONFIG_USB_SERIAL_ARK3116=n -CONFIG_USB_SERIAL_BELKIN=n -CONFIG_USB_SERIAL_CH341=n -CONFIG_USB_SERIAL_WHITEHEAT=n -CONFIG_USB_SERIAL_DIGI_ACCELEPORT=n -CONFIG_USB_SERIAL_CP210X=n -CONFIG_USB_SERIAL_CYPRESS_M8=n -CONFIG_USB_SERIAL_EMPEG=n -CONFIG_USB_SERIAL_FTDI_SIO=n -CONFIG_USB_SERIAL_VISOR=n -CONFIG_USB_SERIAL_IPAQ=n -CONFIG_USB_SERIAL_IR=n -CONFIG_USB_SERIAL_EDGEPORT=n -CONFIG_USB_SERIAL_EDGEPORT_TI=n -CONFIG_USB_SERIAL_F81232=n -CONFIG_USB_SERIAL_GARMIN=n -CONFIG_USB_SERIAL_IPW=n -CONFIG_USB_SERIAL_IUU=n -CONFIG_USB_SERIAL_KEYSPAN_PDA=n -CONFIG_USB_SERIAL_KEYSPAN=n -CONFIG_USB_SERIAL_KEYSPAN_MPR=y -CONFIG_USB_SERIAL_KEYSPAN_USA28=y -CONFIG_USB_SERIAL_KEYSPAN_USA28X=y -CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y -CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y -CONFIG_USB_SERIAL_KEYSPAN_USA19=y -CONFIG_USB_SERIAL_KEYSPAN_USA18X=y -CONFIG_USB_SERIAL_KEYSPAN_USA19W=y -CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y -CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y -CONFIG_USB_SERIAL_KEYSPAN_USA49W=y -CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y -CONFIG_USB_SERIAL_KLSI=n -CONFIG_USB_SERIAL_KOBIL_SCT=n -CONFIG_USB_SERIAL_MCT_U232=n -CONFIG_USB_SERIAL_METRO=n -CONFIG_USB_SERIAL_MOS7720=n -CONFIG_USB_SERIAL_MOS7715_PARPORT=y -CONFIG_USB_SERIAL_MOS7840=n -CONFIG_USB_SERIAL_MXUPORT=n -CONFIG_USB_SERIAL_NAVMAN=n -CONFIG_USB_SERIAL_PL2303=n -CONFIG_USB_SERIAL_OTI6858=n -CONFIG_USB_SERIAL_QCAUX=n -CONFIG_USB_SERIAL_QUALCOMM=n -CONFIG_USB_SERIAL_SPCP8X5=n -CONFIG_USB_SERIAL_SAFE=n -CONFIG_USB_SERIAL_SIERRAWIRELESS=n -CONFIG_USB_SERIAL_SYMBOL=n -CONFIG_USB_SERIAL_TI=n -CONFIG_USB_SERIAL_CYBERJACK=n -CONFIG_USB_SERIAL_XIRCOM=n -CONFIG_USB_SERIAL_OPTION=n -CONFIG_USB_SERIAL_OMNINET=n -CONFIG_USB_SERIAL_OPTICON=n -CONFIG_USB_SERIAL_XSENS_MT=n -CONFIG_USB_SERIAL_WISHBONE=n -CONFIG_USB_SERIAL_SSU100=n -CONFIG_USB_SERIAL_QT2=n -CONFIG_USB_SERIAL_DEBUG=n -CONFIG_USB_EMI62=n -CONFIG_USB_EMI26=n -CONFIG_USB_ADUTUX=n -CONFIG_USB_SEVSEG=n -CONFIG_USB_RIO500=n -CONFIG_USB_LEGOTOWER=n -CONFIG_USB_LCD=n -CONFIG_USB_CYPRESS_CY7C63=n -CONFIG_USB_CYTHERM=n -CONFIG_USB_IDMOUSE=n -CONFIG_USB_FTDI_ELAN=n -CONFIG_USB_APPLEDISPLAY=n -CONFIG_USB_SISUSBVGA=n -CONFIG_USB_LD=n -CONFIG_USB_TRANCEVIBRATOR=n -CONFIG_USB_IOWARRIOR=n -CONFIG_USB_TEST=n -CONFIG_USB_EHSET_TEST_FIXTURE=n -CONFIG_USB_ISIGHTFW=n -CONFIG_USB_YUREX=n -CONFIG_USB_HSIC_USB3503=n -CONFIG_USB_LINK_LAYER_TEST=n -CONFIG_USB_CHAOSKEY=n -CONFIG_USB_ATM=n -CONFIG_USB_SPEEDTOUCH=n -CONFIG_USB_CXACRU=n -CONFIG_USB_UEAGLEATM=n -CONFIG_USB_XUSBATM=n -CONFIG_USB_GPIO_VBUS=n -CONFIG_TAHVO_USB=n -CONFIG_TAHVO_USB_HOST_BY_DEFAULT=y -CONFIG_USB_ISP1301=n -CONFIG_USB_GADGET=n -CONFIG_USB_FOTG210_UDC=n -CONFIG_USB_GR_UDC=n -CONFIG_USB_R8A66597=n -CONFIG_USB_PXA27X=n -CONFIG_USB_MV_UDC=n -CONFIG_USB_MV_U3D=n -CONFIG_USB_BDC_UDC=n -CONFIG_USB_AMD5536UDC=n -CONFIG_USB_NET2272=n -CONFIG_USB_NET2272_DMA=y -CONFIG_USB_NET2280=n -CONFIG_USB_GOKU=n -CONFIG_USB_EG20T=n -CONFIG_USB_CONFIGFS=n -CONFIG_USB_CONFIGFS_SERIAL=y -CONFIG_USB_CONFIGFS_ACM=y -CONFIG_USB_CONFIGFS_OBEX=y -CONFIG_USB_CONFIGFS_NCM=y -CONFIG_USB_CONFIGFS_ECM=y -CONFIG_USB_CONFIGFS_ECM_SUBSET=y -CONFIG_USB_CONFIGFS_RNDIS=y -CONFIG_USB_CONFIGFS_EEM=y -CONFIG_USB_CONFIGFS_PHONET=y -CONFIG_USB_CONFIGFS_MASS_STORAGE=y -CONFIG_USB_CONFIGFS_F_LB_SS=y -CONFIG_USB_CONFIGFS_F_FS=y -CONFIG_USB_CONFIGFS_F_UAC1=y -CONFIG_USB_CONFIGFS_F_UAC2=y -CONFIG_USB_CONFIGFS_F_MIDI=y -CONFIG_USB_CONFIGFS_F_HID=y -CONFIG_USB_CONFIGFS_F_UVC=y -CONFIG_USB_CONFIGFS_F_PRINTER=y -CONFIG_USB_ZERO=n -CONFIG_USB_AUDIO=n -CONFIG_GADGET_UAC1=y -CONFIG_USB_ETH=n -CONFIG_USB_ETH_EEM=y -CONFIG_USB_G_NCM=n -CONFIG_USB_GADGETFS=n -CONFIG_USB_FUNCTIONFS=n -CONFIG_USB_FUNCTIONFS_ETH=y -CONFIG_USB_FUNCTIONFS_RNDIS=y -CONFIG_USB_FUNCTIONFS_GENERIC=y -CONFIG_USB_MASS_STORAGE=n -CONFIG_USB_GADGET_TARGET=n -CONFIG_USB_G_SERIAL=n -CONFIG_USB_MIDI_GADGET=n -CONFIG_USB_G_PRINTER=n -CONFIG_USB_CDC_COMPOSITE=n -CONFIG_USB_G_NOKIA=n -CONFIG_USB_G_ACM_MS=n -CONFIG_USB_G_HID=n -CONFIG_USB_G_DBGP=n -CONFIG_USB_G_WEBCAM=n -CONFIG_USB_LED_TRIG=y -CONFIG_USB_ULPI_BUS=n -CONFIG_UWB=n -CONFIG_UWB_I1480U=n -CONFIG_MMC=y -CONFIG_MMC_BLOCK=n -CONFIG_SDIO_UART=n -CONFIG_MMC_SDHCI=n -CONFIG_MMC_SDHCI_PCI=n -CONFIG_MMC_SDHCI_ACPI=n -CONFIG_MMC_SDHCI_PLTFM=n -CONFIG_MMC_WBSD=n -CONFIG_MMC_TIFM_SD=n -CONFIG_MMC_SPI=n -CONFIG_MMC_SDRICOH_CS=n -CONFIG_MMC_CB710=n -CONFIG_MMC_VIA_SDMMC=n -CONFIG_MMC_VUB300=n -CONFIG_MMC_USHC=n -CONFIG_MMC_USDHI6ROL0=n -CONFIG_MMC_REALTEK_PCI=n -CONFIG_MMC_REALTEK_USB=n -CONFIG_MMC_TOSHIBA_PCI=n -CONFIG_MMC_MTK=n -CONFIG_MEMSTICK=n -CONFIG_MSPRO_BLOCK=n -CONFIG_MS_BLOCK=n -CONFIG_MEMSTICK_TIFM_MS=n -CONFIG_MEMSTICK_JMICRON_38X=n -CONFIG_MEMSTICK_R592=n -CONFIG_MEMSTICK_REALTEK_PCI=n -CONFIG_MEMSTICK_REALTEK_USB=n -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_CLASS_FLASH=n -CONFIG_LEDS_88PM860X=n -CONFIG_LEDS_LM3530=n -CONFIG_LEDS_LM3533=n -CONFIG_LEDS_LM3642=n -CONFIG_LEDS_PCA9532=n -CONFIG_LEDS_PCA9532_GPIO=y -CONFIG_LEDS_GPIO=n -CONFIG_LEDS_LP3944=n -CONFIG_LEDS_LP5521=n -CONFIG_LEDS_LP5523=n -CONFIG_LEDS_LP5562=n -CONFIG_LEDS_LP8501=n -CONFIG_LEDS_LP8788=n -CONFIG_LEDS_LP8860=n -CONFIG_LEDS_CLEVO_MAIL=n -CONFIG_LEDS_PCA955X=n -CONFIG_LEDS_PCA963X=n -CONFIG_LEDS_WM831X_STATUS=n -CONFIG_LEDS_WM8350=n -CONFIG_LEDS_DA903X=n -CONFIG_LEDS_DA9052=n -CONFIG_LEDS_DAC124S085=n -CONFIG_LEDS_PWM=n -CONFIG_LEDS_REGULATOR=n -CONFIG_LEDS_BD2802=n -CONFIG_LEDS_INTEL_SS4200=n -CONFIG_LEDS_LT3593=n -CONFIG_LEDS_ADP5520=n -CONFIG_LEDS_MC13783=n -CONFIG_LEDS_TCA6507=n -CONFIG_LEDS_TLC591XX=n -CONFIG_LEDS_MAX8997=n -CONFIG_LEDS_LM355x=n -CONFIG_LEDS_MENF21BMC=n -CONFIG_LEDS_BLINKM=n -CONFIG_LEDS_TRIGGER_TIMER=n -CONFIG_LEDS_TRIGGER_ONESHOT=n -CONFIG_LEDS_TRIGGER_HEARTBEAT=n -CONFIG_LEDS_TRIGGER_BACKLIGHT=n -CONFIG_LEDS_TRIGGER_CPU=y -CONFIG_LEDS_TRIGGER_GPIO=n -CONFIG_LEDS_TRIGGER_DEFAULT_ON=n -CONFIG_LEDS_TRIGGER_TRANSIENT=n -CONFIG_LEDS_TRIGGER_CAMERA=n -CONFIG_INFINIBAND=n -CONFIG_INFINIBAND_USER_MAD=n -CONFIG_INFINIBAND_MTHCA=n -# CONFIG_INFINIBAND_MTHCA_DEBUG is not set -CONFIG_INFINIBAND_CXGB3=n -CONFIG_INFINIBAND_CXGB4=n -CONFIG_MLX4_INFINIBAND=n -CONFIG_MLX5_INFINIBAND=n -CONFIG_INFINIBAND_NES=n -CONFIG_INFINIBAND_OCRDMA=n -CONFIG_INFINIBAND_USNIC=n -CONFIG_INFINIBAND_IPOIB=n -CONFIG_INFINIBAND_IPOIB_CM=y -# CONFIG_INFINIBAND_IPOIB_DEBUG is not set -CONFIG_INFINIBAND_SRP=n -CONFIG_INFINIBAND_SRPT=n -CONFIG_INFINIBAND_ISER=n -CONFIG_INFINIBAND_ISERT=n -CONFIG_EDAC=y -# CONFIG_EDAC_LEGACY_SYSFS is not set -CONFIG_EDAC_DECODE_MCE=n -CONFIG_EDAC_MM_EDAC=n -CONFIG_EDAC_AMD64=n -CONFIG_EDAC_E752X=n -CONFIG_EDAC_I82975X=n -CONFIG_EDAC_I3000=n -CONFIG_EDAC_I3200=n -CONFIG_EDAC_IE31200=n -CONFIG_EDAC_X38=n -CONFIG_EDAC_I5400=n -CONFIG_EDAC_I7CORE=n -CONFIG_EDAC_I5000=n -CONFIG_EDAC_I5100=n -CONFIG_EDAC_I7300=n -CONFIG_EDAC_SBRIDGE=n -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_88PM860X=n -CONFIG_RTC_DRV_88PM80X=n -CONFIG_RTC_DRV_ABB5ZES3=n -CONFIG_RTC_DRV_ABX80X=n -CONFIG_RTC_DRV_DS1307=n -CONFIG_RTC_DRV_DS1374=n -CONFIG_RTC_DRV_DS1374_WDT=y -CONFIG_RTC_DRV_DS1672=n -CONFIG_RTC_DRV_LP8788=n -CONFIG_RTC_DRV_MAX6900=n -CONFIG_RTC_DRV_MAX8907=n -CONFIG_RTC_DRV_MAX8925=n -CONFIG_RTC_DRV_MAX8998=n -CONFIG_RTC_DRV_MAX8997=n -CONFIG_RTC_DRV_RS5C372=n -CONFIG_RTC_DRV_ISL1208=n -CONFIG_RTC_DRV_ISL12022=n -CONFIG_RTC_DRV_X1205=n -CONFIG_RTC_DRV_PCF8523=n -CONFIG_RTC_DRV_PCF85063=n -CONFIG_RTC_DRV_PCF8563=n -CONFIG_RTC_DRV_PCF8583=n -CONFIG_RTC_DRV_M41T80=n -CONFIG_RTC_DRV_M41T80_WDT=y -CONFIG_RTC_DRV_BQ32K=n -CONFIG_RTC_DRV_TWL4030=n -CONFIG_RTC_DRV_PALMAS=n -CONFIG_RTC_DRV_TPS6586X=n -CONFIG_RTC_DRV_TPS65910=n -CONFIG_RTC_DRV_TPS80031=n -CONFIG_RTC_DRV_RC5T583=n -CONFIG_RTC_DRV_S35390A=n -CONFIG_RTC_DRV_FM3130=n -CONFIG_RTC_DRV_RX8581=n -CONFIG_RTC_DRV_RX8025=n -CONFIG_RTC_DRV_EM3027=n -CONFIG_RTC_DRV_RV8803=n -CONFIG_RTC_DRV_S5M=n -CONFIG_RTC_DRV_M41T93=n -CONFIG_RTC_DRV_M41T94=n -CONFIG_RTC_DRV_DS1305=n -CONFIG_RTC_DRV_DS1343=n -CONFIG_RTC_DRV_DS1347=n -CONFIG_RTC_DRV_DS1390=n -CONFIG_RTC_DRV_R9701=n -CONFIG_RTC_DRV_RX4581=n -CONFIG_RTC_DRV_RS5C348=n -CONFIG_RTC_DRV_MAX6902=n -CONFIG_RTC_DRV_PCF2123=n -CONFIG_RTC_DRV_MCP795=n -CONFIG_RTC_DRV_DS3232=n -CONFIG_RTC_DRV_PCF2127=n -CONFIG_RTC_DRV_RV3029C2=n -CONFIG_RTC_DRV_DS1286=n -CONFIG_RTC_DRV_DS1511=n -CONFIG_RTC_DRV_DS1553=n -CONFIG_RTC_DRV_DS1685_FAMILY=n -CONFIG_RTC_DRV_DS1742=n -CONFIG_RTC_DRV_DS2404=n -CONFIG_RTC_DRV_DA9052=n -CONFIG_RTC_DRV_DA9055=n -CONFIG_RTC_DRV_DA9063=n -CONFIG_RTC_DRV_STK17TA8=n -CONFIG_RTC_DRV_M48T86=n -CONFIG_RTC_DRV_M48T35=n -CONFIG_RTC_DRV_M48T59=n -CONFIG_RTC_DRV_MSM6242=n -CONFIG_RTC_DRV_BQ4802=n -CONFIG_RTC_DRV_RP5C01=n -CONFIG_RTC_DRV_V3020=n -CONFIG_RTC_DRV_WM831X=n -CONFIG_RTC_DRV_WM8350=n -CONFIG_RTC_DRV_PCF50633=n -CONFIG_RTC_DRV_AB3100=n -CONFIG_RTC_DRV_PCAP=n -CONFIG_RTC_DRV_MC13XXX=n -CONFIG_RTC_DRV_MT6397=n -CONFIG_RTC_DRV_HID_SENSOR_TIME=n -CONFIG_INTEL_IDMA64=n -CONFIG_INTEL_IOATDMA=n -CONFIG_INTEL_MIC_X100_DMA=n -CONFIG_DW_DMAC=n -CONFIG_ASYNC_TX_DMA=y -CONFIG_AUXDISPLAY=y -CONFIG_KS0108=n -CONFIG_CFAG12864B=n -CONFIG_UIO_CIF=n -CONFIG_UIO_PDRV_GENIRQ=n -CONFIG_UIO_DMEM_GENIRQ=n -CONFIG_UIO_AEC=n -CONFIG_UIO_SERCOS3=n -CONFIG_UIO_PCI_GENERIC=n -CONFIG_UIO_NETX=n -CONFIG_UIO_PRUSS=n -CONFIG_UIO_MF624=n -CONFIG_VFIO=n -CONFIG_VFIO_PCI=n -CONFIG_VFIO_PCI_VGA=y -CONFIG_VIRT_DRIVERS=y -CONFIG_VIRTIO_PCI=y -CONFIG_VIRTIO_BALLOON=y -CONFIG_VIRTIO_INPUT=n -CONFIG_VIRTIO_MMIO=y -CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y -CONFIG_HYPERV=n -CONFIG_HYPERV_UTILS=n -CONFIG_HYPERV_BALLOON=n -CONFIG_XEN_SELFBALLOONING=y -CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y -CONFIG_XEN_DEV_EVTCHN=n -CONFIG_XENFS=n -CONFIG_XEN_SCSI_BACKEND=n -CONFIG_XEN_ACPI_PROCESSOR=y -CONFIG_XEN_MCE_LOG=y -CONFIG_STAGING=y -CONFIG_SLICOSS=n -CONFIG_PRISM2_USB=n -CONFIG_COMEDI=n -CONFIG_COMEDI_MISC_DRIVERS=y -CONFIG_COMEDI_BOND=n -CONFIG_COMEDI_TEST=n -CONFIG_COMEDI_PARPORT=n -CONFIG_COMEDI_SERIAL2002=n -CONFIG_COMEDI_ISA_DRIVERS=y -CONFIG_COMEDI_PCL711=n -CONFIG_COMEDI_PCL724=n -CONFIG_COMEDI_PCL726=n -CONFIG_COMEDI_PCL730=n -CONFIG_COMEDI_PCL812=n -CONFIG_COMEDI_PCL816=n -CONFIG_COMEDI_PCL818=n -CONFIG_COMEDI_PCM3724=n -CONFIG_COMEDI_AMPLC_DIO200_ISA=n -CONFIG_COMEDI_AMPLC_PC236_ISA=n -CONFIG_COMEDI_AMPLC_PC263_ISA=n -CONFIG_COMEDI_RTI800=n -CONFIG_COMEDI_RTI802=n -CONFIG_COMEDI_DAC02=n -CONFIG_COMEDI_DAS16M1=n -CONFIG_COMEDI_DAS08_ISA=n -CONFIG_COMEDI_DAS16=n -CONFIG_COMEDI_DAS800=n -CONFIG_COMEDI_DAS1800=n -CONFIG_COMEDI_DAS6402=n -CONFIG_COMEDI_DT2801=n -CONFIG_COMEDI_DT2811=n -CONFIG_COMEDI_DT2814=n -CONFIG_COMEDI_DT2815=n -CONFIG_COMEDI_DT2817=n -CONFIG_COMEDI_DT282X=n -CONFIG_COMEDI_DMM32AT=n -CONFIG_COMEDI_FL512=n -CONFIG_COMEDI_AIO_AIO12_8=n -CONFIG_COMEDI_AIO_IIRO_16=n -CONFIG_COMEDI_II_PCI20KC=n -CONFIG_COMEDI_C6XDIGIO=n -CONFIG_COMEDI_MPC624=n -CONFIG_COMEDI_ADQ12B=n -CONFIG_COMEDI_NI_AT_A2150=n -CONFIG_COMEDI_NI_AT_AO=n -CONFIG_COMEDI_NI_ATMIO=n -CONFIG_COMEDI_NI_ATMIO16D=n -CONFIG_COMEDI_NI_LABPC_ISA=n -CONFIG_COMEDI_PCMAD=n -CONFIG_COMEDI_PCMDA12=n -CONFIG_COMEDI_PCMMIO=n -CONFIG_COMEDI_PCMUIO=n -CONFIG_COMEDI_MULTIQ3=n -CONFIG_COMEDI_S526=n -CONFIG_COMEDI_PCI_DRIVERS=n -CONFIG_COMEDI_8255_PCI=n -CONFIG_COMEDI_ADDI_APCI_1032=n -CONFIG_COMEDI_ADDI_APCI_1500=n -CONFIG_COMEDI_ADDI_APCI_1516=n -CONFIG_COMEDI_ADDI_APCI_1564=n -CONFIG_COMEDI_ADDI_APCI_16XX=n -CONFIG_COMEDI_ADDI_APCI_2032=n -CONFIG_COMEDI_ADDI_APCI_2200=n -CONFIG_COMEDI_ADDI_APCI_3120=n -CONFIG_COMEDI_ADDI_APCI_3501=n -CONFIG_COMEDI_ADDI_APCI_3XXX=n -CONFIG_COMEDI_ADL_PCI6208=n -CONFIG_COMEDI_ADL_PCI7X3X=n -CONFIG_COMEDI_ADL_PCI8164=n -CONFIG_COMEDI_ADL_PCI9111=n -CONFIG_COMEDI_ADL_PCI9118=n -CONFIG_COMEDI_ADV_PCI1710=n -CONFIG_COMEDI_ADV_PCI1723=n -CONFIG_COMEDI_ADV_PCI1724=n -CONFIG_COMEDI_ADV_PCI_DIO=n -CONFIG_COMEDI_AMPLC_DIO200_PCI=n -CONFIG_COMEDI_AMPLC_PC236_PCI=n -CONFIG_COMEDI_AMPLC_PC263_PCI=n -CONFIG_COMEDI_AMPLC_PCI224=n -CONFIG_COMEDI_AMPLC_PCI230=n -CONFIG_COMEDI_CONTEC_PCI_DIO=n -CONFIG_COMEDI_DAS08_PCI=n -CONFIG_COMEDI_DT3000=n -CONFIG_COMEDI_DYNA_PCI10XX=n -CONFIG_COMEDI_GSC_HPDI=n -CONFIG_COMEDI_MF6X4=n -CONFIG_COMEDI_ICP_MULTI=n -CONFIG_COMEDI_DAQBOARD2000=n -CONFIG_COMEDI_JR3_PCI=n -CONFIG_COMEDI_KE_COUNTER=n -CONFIG_COMEDI_CB_PCIDAS64=n -CONFIG_COMEDI_CB_PCIDAS=n -CONFIG_COMEDI_CB_PCIDDA=n -CONFIG_COMEDI_CB_PCIMDAS=n -CONFIG_COMEDI_CB_PCIMDDA=n -CONFIG_COMEDI_ME4000=n -CONFIG_COMEDI_ME_DAQ=n -CONFIG_COMEDI_NI_6527=n -CONFIG_COMEDI_NI_65XX=n -CONFIG_COMEDI_NI_660X=n -CONFIG_COMEDI_NI_670X=n -CONFIG_COMEDI_NI_LABPC_PCI=n -CONFIG_COMEDI_NI_PCIDIO=n -CONFIG_COMEDI_NI_PCIMIO=n -CONFIG_COMEDI_RTD520=n -CONFIG_COMEDI_S626=n -CONFIG_COMEDI_PCMCIA_DRIVERS=n -CONFIG_COMEDI_CB_DAS16_CS=n -CONFIG_COMEDI_DAS08_CS=n -CONFIG_COMEDI_NI_DAQ_700_CS=n -CONFIG_COMEDI_NI_DAQ_DIO24_CS=n -CONFIG_COMEDI_NI_LABPC_CS=n -CONFIG_COMEDI_NI_MIO_CS=n -CONFIG_COMEDI_QUATECH_DAQP_CS=n -CONFIG_COMEDI_USB_DRIVERS=n -CONFIG_COMEDI_DT9812=n -CONFIG_COMEDI_NI_USB6501=n -CONFIG_COMEDI_USBDUX=n -CONFIG_COMEDI_USBDUXFAST=n -CONFIG_COMEDI_USBDUXSIGMA=n -CONFIG_COMEDI_VMK80XX=n -CONFIG_COMEDI_8255_SA=n -CONFIG_RTL8192U=n -CONFIG_RTLLIB=n -CONFIG_RTL8192E=n -CONFIG_R8712U=n -CONFIG_R8188EU=n -CONFIG_RTS5208=n -CONFIG_VT6655=n -CONFIG_VT6656=n -CONFIG_ADIS16201=n -CONFIG_ADIS16203=n -CONFIG_ADIS16209=n -CONFIG_ADIS16240=n -CONFIG_SCA3000=n -CONFIG_AD7606=n -CONFIG_AD7606_IFACE_PARALLEL=n -CONFIG_AD7606_IFACE_SPI=n -CONFIG_AD7780=n -CONFIG_AD7816=n -CONFIG_AD7192=n -CONFIG_AD7280=n -CONFIG_ADT7316=n -CONFIG_ADT7316_I2C=n -CONFIG_AD7150=n -CONFIG_AD7152=n -CONFIG_AD7746=n -CONFIG_AD9832=n -CONFIG_AD9834=n -CONFIG_ADIS16060=n -CONFIG_AD5933=n -CONFIG_SENSORS_ISL29018=n -CONFIG_SENSORS_ISL29028=n -CONFIG_TSL2583=n -CONFIG_TSL2x7x=n -CONFIG_ADE7753=n -CONFIG_ADE7754=n -CONFIG_ADE7758=n -CONFIG_ADE7759=n -CONFIG_ADE7854=n -CONFIG_AD2S90=n -CONFIG_AD2S1200=n -CONFIG_AD2S1210=n -CONFIG_FB_SM750=n -CONFIG_FB_XGI=n -CONFIG_SPEAKUP=n -CONFIG_SPEAKUP_SYNTH_ACNTSA=n -CONFIG_SPEAKUP_SYNTH_APOLLO=n -CONFIG_SPEAKUP_SYNTH_AUDPTR=n -CONFIG_SPEAKUP_SYNTH_BNS=n -CONFIG_SPEAKUP_SYNTH_DECTLK=n -CONFIG_SPEAKUP_SYNTH_DECEXT=n -CONFIG_SPEAKUP_SYNTH_LTLK=n -CONFIG_SPEAKUP_SYNTH_SOFT=n -CONFIG_SPEAKUP_SYNTH_SPKOUT=n -CONFIG_SPEAKUP_SYNTH_TXPRT=n -CONFIG_SPEAKUP_SYNTH_DUMMY=n -CONFIG_STAGING_MEDIA=y -CONFIG_I2C_BCM2048=n -CONFIG_DVB_CXD2099=n -CONFIG_LIRC_STAGING=y -CONFIG_LIRC_BT829=n -CONFIG_LIRC_IMON=n -CONFIG_LIRC_PARALLEL=n -CONFIG_LIRC_SASEM=n -CONFIG_LIRC_SERIAL=n -CONFIG_LIRC_SIR=n -CONFIG_LIRC_ZILOG=n -CONFIG_LTE_GDM724X=n -CONFIG_FIREWIRE_SERIAL=n -CONFIG_MTD_SPINAND_MT29F=n -CONFIG_MTD_SPINAND_ONDIEECC=y -CONFIG_DGNC=n -CONFIG_GS_FPGABOOT=n -CONFIG_CRYPTO_SKEIN=y -CONFIG_UNISYSSPAR=y -CONFIG_UNISYS_VISORBUS=n -CONFIG_UNISYS_VISORNIC=n -CONFIG_UNISYS_VISORINPUT=n -CONFIG_UNISYS_VISORHBA=n -CONFIG_FB_TFT=n -CONFIG_FB_TFT_AGM1264K_FL=n -CONFIG_FB_TFT_BD663474=n -CONFIG_FB_TFT_HX8340BN=n -CONFIG_FB_TFT_HX8347D=n -CONFIG_FB_TFT_HX8353D=n -CONFIG_FB_TFT_HX8357D=n -CONFIG_FB_TFT_ILI9163=n -CONFIG_FB_TFT_ILI9320=n -CONFIG_FB_TFT_ILI9325=n -CONFIG_FB_TFT_ILI9340=n -CONFIG_FB_TFT_ILI9341=n -CONFIG_FB_TFT_ILI9481=n -CONFIG_FB_TFT_ILI9486=n -CONFIG_FB_TFT_PCD8544=n -CONFIG_FB_TFT_RA8875=n -CONFIG_FB_TFT_S6D02A1=n -CONFIG_FB_TFT_S6D1121=n -CONFIG_FB_TFT_SSD1289=n -CONFIG_FB_TFT_SSD1306=n -CONFIG_FB_TFT_SSD1331=n -CONFIG_FB_TFT_SSD1351=n -CONFIG_FB_TFT_ST7735R=n -CONFIG_FB_TFT_ST7789V=n -CONFIG_FB_TFT_TINYLCD=n -CONFIG_FB_TFT_TLS8204=n -CONFIG_FB_TFT_UC1611=n -CONFIG_FB_TFT_UC1701=n -CONFIG_FB_TFT_UPD161704=n -CONFIG_FB_TFT_WATTEROTT=n -CONFIG_FB_FLEX=n -CONFIG_FB_TFT_FBTFT_DEVICE=n -CONFIG_WILC1000_SDIO=n -CONFIG_WILC1000_SPI=n -CONFIG_MOST=n -CONFIG_AIM_CDEV=n -CONFIG_AIM_SOUND=n -CONFIG_AIM_V4L2=n -CONFIG_HDM_DIM2=n -CONFIG_HDM_I2C=n -CONFIG_HDM_USB=n -CONFIG_ACER_WMI=n -CONFIG_ACERHDF=n -CONFIG_ALIENWARE_WMI=n -CONFIG_ASUS_LAPTOP=n -CONFIG_DELL_WMI_AIO=n -CONFIG_DELL_SMO8800=n -CONFIG_DELL_RBTN=n -CONFIG_FUJITSU_LAPTOP=n -CONFIG_FUJITSU_TABLET=n -CONFIG_AMILO_RFKILL=n -CONFIG_HP_ACCEL=n -CONFIG_HP_WIRELESS=n -CONFIG_HP_WMI=n -CONFIG_MSI_LAPTOP=n -CONFIG_PANASONIC_LAPTOP=n -CONFIG_COMPAL_LAPTOP=n -CONFIG_SONY_LAPTOP=n -CONFIG_SONYPI_COMPAT=y -CONFIG_IDEAPAD_LAPTOP=n -CONFIG_THINKPAD_ACPI=n -CONFIG_THINKPAD_ACPI_DEBUGFACILITIES=y -CONFIG_SENSORS_HDAPS=n -CONFIG_INTEL_MENLOW=n -CONFIG_EEEPC_LAPTOP=n -CONFIG_ASUS_WMI=n -CONFIG_ASUS_NB_WMI=n -CONFIG_EEEPC_WMI=n -CONFIG_MSI_WMI=n -CONFIG_TOPSTAR_LAPTOP=n -CONFIG_ACPI_TOSHIBA=n -CONFIG_TOSHIBA_BT_RFKILL=n -CONFIG_TOSHIBA_HAPS=n -CONFIG_TOSHIBA_WMI=n -CONFIG_ACPI_CMPC=n -CONFIG_INTEL_HID_EVENT=n -CONFIG_INTEL_IPS=n -CONFIG_IBM_RTL=n -CONFIG_SAMSUNG_LAPTOP=n -CONFIG_INTEL_OAKTRAIL=n -CONFIG_SAMSUNG_Q10=n -CONFIG_APPLE_GMUX=n -CONFIG_INTEL_RST=n -CONFIG_INTEL_SMARTCONNECT=n -CONFIG_PVPANIC=n -CONFIG_INTEL_PMC_IPC=n -CONFIG_SURFACE_PRO3_BUTTON=n -CONFIG_INTEL_PUNIT_IPC=n -CONFIG_INTEL_TELEMETRY=n -CONFIG_CHROMEOS_LAPTOP=n -CONFIG_CHROMEOS_PSTORE=n -CONFIG_CROS_EC_CHARDEV=n -CONFIG_CROS_EC_LPC=n -CONFIG_COMMON_CLK_WM831X=n -CONFIG_COMMON_CLK_SI5351=n -CONFIG_COMMON_CLK_CDCE706=n -CONFIG_COMMON_CLK_S2MPS11=n -CONFIG_CLK_TWL6040=n -CONFIG_COMMON_CLK_PALMAS=n -CONFIG_COMMON_CLK_PWM=n -CONFIG_MAILBOX=y -CONFIG_PCC=y -CONFIG_ALTERA_MBOX=n -CONFIG_AMD_IOMMU=y -CONFIG_AMD_IOMMU_V2=n -CONFIG_INTEL_IOMMU=y -CONFIG_INTEL_IOMMU_SVM=y -# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set -CONFIG_IRQ_REMAP=y -CONFIG_STE_MODEM_RPROC=n -CONFIG_SOC_TI=y -CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y -CONFIG_DEVFREQ_GOV_PERFORMANCE=y -CONFIG_DEVFREQ_GOV_POWERSAVE=y -CONFIG_DEVFREQ_GOV_USERSPACE=y -CONFIG_PM_DEVFREQ_EVENT=y -CONFIG_EXTCON_ADC_JACK=n -CONFIG_EXTCON_ARIZONA=n -CONFIG_EXTCON_GPIO=n -CONFIG_EXTCON_MAX14577=n -CONFIG_EXTCON_MAX77693=n -CONFIG_EXTCON_MAX77843=n -CONFIG_EXTCON_MAX8997=n -CONFIG_EXTCON_PALMAS=n -CONFIG_EXTCON_RT8973A=n -CONFIG_EXTCON_SM5502=n -CONFIG_EXTCON_USB_GPIO=n -CONFIG_MEMORY=y -CONFIG_IIO_BUFFER_CB=n -CONFIG_BMA180=n -CONFIG_BMC150_ACCEL=n -CONFIG_HID_SENSOR_ACCEL_3D=n -CONFIG_IIO_ST_ACCEL_3AXIS=n -CONFIG_KXSD9=n -CONFIG_KXCJK1013=n -CONFIG_MMA8452=n -CONFIG_MMA9551=n -CONFIG_MMA9553=n -CONFIG_MXC4005=n -CONFIG_STK8312=n -CONFIG_STK8BA50=n -CONFIG_AD7266=n -CONFIG_AD7291=n -CONFIG_AD7298=n -CONFIG_AD7476=n -CONFIG_AD7791=n -CONFIG_AD7793=n -CONFIG_AD7887=n -CONFIG_AD7923=n -CONFIG_AD799X=n -CONFIG_CC10001_ADC=n -CONFIG_DA9150_GPADC=n -CONFIG_HI8435=n -CONFIG_LP8788_ADC=n -CONFIG_MAX1027=n -CONFIG_MAX1363=n -CONFIG_MCP320X=n -CONFIG_MCP3422=n -CONFIG_MEN_Z188_ADC=n -CONFIG_NAU7802=n -CONFIG_QCOM_SPMI_IADC=n -CONFIG_QCOM_SPMI_VADC=n -CONFIG_TI_ADC081C=n -CONFIG_TI_ADC128S052=n -CONFIG_TI_AM335X_ADC=n -CONFIG_TWL4030_MADC=n -CONFIG_TWL6030_GPADC=n -CONFIG_VIPERBOARD_ADC=n -CONFIG_AD8366=n -CONFIG_VZ89X=n -CONFIG_IIO_SSP_SENSORS_COMMONS=n -CONFIG_IIO_SSP_SENSORHUB=n -CONFIG_AD5064=n -CONFIG_AD5360=n -CONFIG_AD5380=n -CONFIG_AD5421=n -CONFIG_AD5446=n -CONFIG_AD5449=n -CONFIG_AD5504=n -CONFIG_AD5624R_SPI=n -CONFIG_AD5686=n -CONFIG_AD5755=n -CONFIG_AD5764=n -CONFIG_AD5791=n -CONFIG_AD7303=n -CONFIG_M62332=n -CONFIG_MAX517=n -CONFIG_MCP4725=n -CONFIG_MCP4922=n -CONFIG_AD9523=n -CONFIG_ADF4350=n -CONFIG_ADIS16080=n -CONFIG_ADIS16130=n -CONFIG_ADIS16136=n -CONFIG_ADIS16260=n -CONFIG_ADXRS450=n -CONFIG_BMG160=n -CONFIG_HID_SENSOR_GYRO_3D=n -CONFIG_IIO_ST_GYRO_3AXIS=n -CONFIG_ITG3200=n -CONFIG_DHT11=n -CONFIG_HDC100X=n -CONFIG_HTU21=n -CONFIG_SI7005=n -CONFIG_SI7020=n -CONFIG_ADIS16400=n -CONFIG_ADIS16480=n -CONFIG_KMX61=n -CONFIG_ACPI_ALS=n -CONFIG_ADJD_S311=n -CONFIG_AL3320A=n -CONFIG_APDS9300=n -CONFIG_APDS9960=n -CONFIG_BH1750=n -CONFIG_CM32181=n -CONFIG_CM3232=n -CONFIG_CM3323=n -CONFIG_CM36651=n -CONFIG_GP2AP020A00F=n -CONFIG_ISL29125=n -CONFIG_HID_SENSOR_ALS=n -CONFIG_HID_SENSOR_PROX=n -CONFIG_JSA1212=n -CONFIG_RPR0521=n -CONFIG_SENSORS_LM3533=n -CONFIG_LTR501=n -CONFIG_OPT3001=n -CONFIG_PA12203001=n -CONFIG_STK3310=n -CONFIG_TCS3414=n -CONFIG_TCS3472=n -CONFIG_SENSORS_TSL2563=n -CONFIG_TSL4531=n -CONFIG_US5182D=n -CONFIG_VCNL4000=n -CONFIG_AK09911=n -CONFIG_MAG3110=n -CONFIG_HID_SENSOR_MAGNETOMETER_3D=n -CONFIG_MMC35240=n -CONFIG_IIO_ST_MAGN_3AXIS=n -CONFIG_SENSORS_HMC5843_I2C=n -CONFIG_SENSORS_HMC5843_SPI=n -CONFIG_HID_SENSOR_INCLINOMETER_3D=n -CONFIG_HID_SENSOR_DEVICE_ROTATION=n -CONFIG_IIO_INTERRUPT_TRIGGER=n -CONFIG_IIO_SYSFS_TRIGGER=n -CONFIG_MCP4531=n -CONFIG_BMP280=n -CONFIG_HID_SENSOR_PRESS=n -CONFIG_MPL3115=n -CONFIG_MS5611=n -CONFIG_MS5611_I2C=n -CONFIG_MS5611_SPI=n -CONFIG_MS5637=n -CONFIG_IIO_ST_PRESS=n -CONFIG_T5403=n -CONFIG_AS3935=n -CONFIG_LIDAR_LITE_V2=n -CONFIG_SX9500=n -CONFIG_MLX90614=n -CONFIG_TMP006=n -CONFIG_TSYS01=n -CONFIG_TSYS02D=n -CONFIG_NTB=n -CONFIG_NTB_AMD=n -CONFIG_NTB_INTEL=n -CONFIG_NTB_PINGPONG=n -CONFIG_NTB_TOOL=n -CONFIG_NTB_TRANSPORT=n -CONFIG_VME_BUS=y -CONFIG_VME_CA91CX42=n -CONFIG_VME_TSI148=n -CONFIG_VMIVME_7805=n -CONFIG_VME_USER=n -CONFIG_VME_PIO2=n -CONFIG_PWM=y -CONFIG_PWM_CRC=y -CONFIG_PWM_LP3943=n -CONFIG_PWM_LPSS_PCI=n -CONFIG_PWM_LPSS_PLATFORM=n -CONFIG_PWM_PCA9685=n -CONFIG_PWM_TWL=n -CONFIG_PWM_TWL_LED=n -CONFIG_IPACK_BUS=n -CONFIG_BOARD_TPCI200=n -CONFIG_SERIAL_IPOCTAL=n -CONFIG_FMC=n -CONFIG_FMC_FAKEDEV=n -CONFIG_FMC_TRIVIAL=n -CONFIG_FMC_WRITE_EEPROM=n -CONFIG_FMC_CHARDEV=n -CONFIG_PHY_PXA_28NM_HSIC=n -CONFIG_PHY_PXA_28NM_USB2=n -CONFIG_BCM_KONA_USB2_PHY=n -CONFIG_PHY_SAMSUNG_USB2=n -CONFIG_PHY_TUSB1210=n -CONFIG_POWERCAP=y -CONFIG_INTEL_RAPL=n -CONFIG_MCB=n -CONFIG_MCB_PCI=n -CONFIG_THUNDERBOLT=n -CONFIG_BLK_DEV_PMEM=n -CONFIG_ND_BLK=n -CONFIG_STM=n -CONFIG_STM_DUMMY=n -CONFIG_STM_SOURCE_CONSOLE=n -CONFIG_INTEL_TH=n -CONFIG_INTEL_TH_PCI=n -CONFIG_INTEL_TH_GTH=n -CONFIG_INTEL_TH_STH=n -CONFIG_INTEL_TH_MSU=n -CONFIG_INTEL_TH_PTI=n -CONFIG_FPGA=n -CONFIG_EDD=y -CONFIG_EDD_OFF=y -CONFIG_DELL_RBU=n -CONFIG_DCDBAS=n -CONFIG_DMI_SYSFS=n -CONFIG_ISCSI_IBFT_FIND=y -CONFIG_ISCSI_IBFT=n -CONFIG_EFI_VARS=y -CONFIG_EFI_VARS_PSTORE=n -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_EXT4_ENCRYPTION=y -CONFIG_REISERFS_FS=n -CONFIG_REISERFS_FS_XATTR=y -CONFIG_REISERFS_FS_POSIX_ACL=y -CONFIG_REISERFS_FS_SECURITY=y -CONFIG_JFS_FS=n -CONFIG_JFS_POSIX_ACL=y -CONFIG_JFS_SECURITY=y -CONFIG_JFS_STATISTICS=y -CONFIG_XFS_FS=n -CONFIG_XFS_QUOTA=y -CONFIG_XFS_POSIX_ACL=y -CONFIG_XFS_RT=y -CONFIG_GFS2_FS=n -CONFIG_GFS2_FS_LOCKING_DLM=y -CONFIG_OCFS2_FS=n -CONFIG_BTRFS_FS=n -CONFIG_BTRFS_FS_POSIX_ACL=y -CONFIG_NILFS2_FS=n -CONFIG_F2FS_FS=n -CONFIG_F2FS_FS_SECURITY=y -CONFIG_F2FS_FS_ENCRYPTION=y -CONFIG_FS_DAX=y -CONFIG_FANOTIFY=y -CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y -CONFIG_QUOTA_NETLINK_INTERFACE=y -# CONFIG_PRINT_QUOTA_WARNING is not set -CONFIG_QFMT_V1=n -CONFIG_QFMT_V2=n -CONFIG_AUTOFS4_FS=n -CONFIG_FUSE_FS=y -CONFIG_CUSE=n -CONFIG_FSCACHE_STATS=y -CONFIG_CACHEFILES=n -CONFIG_ISO9660_FS=n -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_UDF_FS=n -CONFIG_MSDOS_FS=n -CONFIG_VFAT_FS=y -CONFIG_NTFS_FS=n -CONFIG_PROC_KCORE=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_HUGETLBFS=y -CONFIG_EFIVAR_FS=y -CONFIG_ADFS_FS=n -CONFIG_AFFS_FS=n -CONFIG_ECRYPT_FS=y -CONFIG_ECRYPT_FS_MESSAGING=y -CONFIG_HFS_FS=n -CONFIG_HFSPLUS_FS=n -CONFIG_HFSPLUS_FS_POSIX_ACL=y -CONFIG_BEFS_FS=n -CONFIG_BFS_FS=n -CONFIG_EFS_FS=n -CONFIG_JFFS2_FS=n -CONFIG_JFFS2_FS_XATTR=y -CONFIG_JFFS2_COMPRESSION_OPTIONS=y -CONFIG_JFFS2_LZO=y -CONFIG_JFFS2_CMODE_FAVOURLZO=y -CONFIG_UBIFS_FS=n -CONFIG_UBIFS_ATIME_SUPPORT=y -CONFIG_CRAMFS=n -CONFIG_SQUASHFS=y -CONFIG_SQUASHFS_FILE_DIRECT=y -CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y -CONFIG_SQUASHFS_XATTR=y -CONFIG_SQUASHFS_LZ4=y -CONFIG_SQUASHFS_LZO=y -CONFIG_SQUASHFS_XZ=y -CONFIG_VXFS_FS=n -CONFIG_MINIX_FS=n -CONFIG_OMFS_FS=n -CONFIG_HPFS_FS=n -CONFIG_QNX4FS_FS=n -CONFIG_QNX6FS_FS=n -CONFIG_ROMFS_FS=n -CONFIG_PSTORE_RAM=n -CONFIG_SYSV_FS=n -CONFIG_UFS_FS=n -CONFIG_EXOFS_FS=n -CONFIG_NFS_FS=n -CONFIG_NFS_V3_ACL=y -CONFIG_NFS_V4=n -CONFIG_NFS_SWAP=y -CONFIG_NFS_V4_1=y -CONFIG_NFS_V4_2=y -CONFIG_NFS_V4_1_MIGRATION=y -CONFIG_NFS_FSCACHE=y -CONFIG_NFSD=n -CONFIG_NFSD_V3_ACL=y -CONFIG_NFSD_V4=y -CONFIG_NFSD_V4_SECURITY_LABEL=y -CONFIG_SUNRPC_DEBUG=y -CONFIG_CEPH_FS=n -CONFIG_CEPH_FSCACHE=y -CONFIG_CEPH_FS_POSIX_ACL=y -CONFIG_CIFS=n -CONFIG_CIFS_STATS=y -CONFIG_CIFS_WEAK_PW_HASH=y -CONFIG_CIFS_UPCALL=y -CONFIG_CIFS_XATTR=y -CONFIG_CIFS_POSIX=y -CONFIG_CIFS_ACL=y -CONFIG_CIFS_DFS_UPCALL=y -CONFIG_CIFS_SMB2=y -CONFIG_CIFS_SMB311=y -CONFIG_CIFS_FSCACHE=y -CONFIG_NCP_FS=n -CONFIG_NCPFS_PACKET_SIGNING=y -CONFIG_NCPFS_IOCTL_LOCKING=y -CONFIG_NCPFS_STRONG=y -CONFIG_NCPFS_NFS_NS=y -CONFIG_NCPFS_OS2_NS=y -CONFIG_NCPFS_NLS=y -CONFIG_NCPFS_EXTRAS=y -CONFIG_CODA_FS=n -CONFIG_AFS_FS=n -CONFIG_AFS_FSCACHE=y -CONFIG_9P_FS=n -CONFIG_9P_FSCACHE=y -CONFIG_9P_FS_POSIX_ACL=y -CONFIG_9P_FS_SECURITY=y -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_737=n -CONFIG_NLS_CODEPAGE_775=n -CONFIG_NLS_CODEPAGE_850=n -CONFIG_NLS_CODEPAGE_852=n -CONFIG_NLS_CODEPAGE_855=n -CONFIG_NLS_CODEPAGE_857=n -CONFIG_NLS_CODEPAGE_860=n -CONFIG_NLS_CODEPAGE_861=n -CONFIG_NLS_CODEPAGE_862=n -CONFIG_NLS_CODEPAGE_863=n -CONFIG_NLS_CODEPAGE_864=n -CONFIG_NLS_CODEPAGE_865=n -CONFIG_NLS_CODEPAGE_866=n -CONFIG_NLS_CODEPAGE_869=n -CONFIG_NLS_CODEPAGE_936=n -CONFIG_NLS_CODEPAGE_950=n -CONFIG_NLS_CODEPAGE_932=n -CONFIG_NLS_CODEPAGE_949=n -CONFIG_NLS_CODEPAGE_874=n -CONFIG_NLS_ISO8859_8=n -CONFIG_NLS_CODEPAGE_1250=n -CONFIG_NLS_CODEPAGE_1251=n -CONFIG_NLS_ASCII=n -CONFIG_NLS_ISO8859_2=n -CONFIG_NLS_ISO8859_3=n -CONFIG_NLS_ISO8859_4=n -CONFIG_NLS_ISO8859_5=n -CONFIG_NLS_ISO8859_6=n -CONFIG_NLS_ISO8859_7=n -CONFIG_NLS_ISO8859_9=n -CONFIG_NLS_ISO8859_13=n -CONFIG_NLS_ISO8859_14=n -CONFIG_NLS_ISO8859_15=n -CONFIG_NLS_KOI8_R=n -CONFIG_NLS_KOI8_U=n -CONFIG_NLS_MAC_ROMAN=n -CONFIG_NLS_MAC_CELTIC=n -CONFIG_NLS_MAC_CENTEURO=n -CONFIG_NLS_MAC_CROATIAN=n -CONFIG_NLS_MAC_CYRILLIC=n -CONFIG_NLS_MAC_GAELIC=n -CONFIG_NLS_MAC_GREEK=n -CONFIG_NLS_MAC_ICELAND=n -CONFIG_NLS_MAC_INUIT=n -CONFIG_NLS_MAC_ROMANIAN=n -CONFIG_NLS_MAC_TURKISH=n -CONFIG_DLM=n -CONFIG_PRINTK_TIME=y -CONFIG_BOOT_PRINTK_DELAY=y -CONFIG_DYNAMIC_DEBUG=y -# CONFIG_ENABLE_WARN_DEPRECATED is not set -# CONFIG_ENABLE_MUST_CHECK is not set -CONFIG_FRAME_WARN=1024 -CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=n -CONFIG_LOCKUP_DETECTOR=y -CONFIG_SCHEDSTATS=y -CONFIG_SCHED_STACK_END_CHECK=y -CONFIG_TIMER_STATS=y -CONFIG_LOCK_TORTURE_TEST=n -CONFIG_RCU_CPU_STALL_TIMEOUT=60 -CONFIG_NOTIFIER_ERROR_INJECTION=n -CONFIG_CPU_NOTIFIER_ERROR_INJECT=n -CONFIG_SCHED_TRACER=y -CONFIG_FTRACE_SYSCALLS=y -CONFIG_STACK_TRACER=y -CONFIG_BLK_DEV_IO_TRACE=y -CONFIG_UPROBE_EVENT=y -CONFIG_FUNCTION_PROFILER=y -CONFIG_MMIOTRACE=y -CONFIG_RBTREE_TEST=n -CONFIG_INTERVAL_TREE_TEST=n -CONFIG_PERCPU_TEST=n -CONFIG_ASYNC_RAID6_TEST=n -CONFIG_TEST_HEXDUMP=n -CONFIG_TEST_STRING_HELPERS=n -CONFIG_TEST_KSTRTOX=n -CONFIG_TEST_PRINTF=n -CONFIG_TEST_LKM=n -CONFIG_TEST_USER_COPY=n -CONFIG_TEST_BPF=n -CONFIG_TEST_FIRMWARE=n -CONFIG_TEST_UDELAY=n -CONFIG_MEMTEST=y -CONFIG_TEST_STATIC_KEYS=n -CONFIG_KGDB=y -CONFIG_KGDB_LOW_LEVEL_TRAP=y -CONFIG_KGDB_KDB=y -CONFIG_KDB_KEYBOARD=y -CONFIG_STRICT_DEVMEM=y -# CONFIG_X86_VERBOSE_BOOTUP is not set -CONFIG_EARLY_PRINTK_DBGP=y -CONFIG_EARLY_PRINTK_EFI=y -# CONFIG_DEBUG_RODATA_TEST is not set -CONFIG_DEBUG_SET_MODULE_RONX=y -CONFIG_IO_DELAY_0XED=y -CONFIG_OPTIMIZE_INLINING=y -CONFIG_PUNIT_ATOM_DEBUG=n -CONFIG_PERSISTENT_KEYRINGS=y -CONFIG_BIG_KEYS=y -CONFIG_TRUSTED_KEYS=y -CONFIG_SECURITY=y -CONFIG_SECURITY_NETWORK_XFRM=y -CONFIG_INTEL_TXT=y -CONFIG_LSM_MMAP_MIN_ADDR=0 -CONFIG_SECURITY_SELINUX=y -CONFIG_SECURITY_SELINUX_BOOTPARAM=y -CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 -CONFIG_SECURITY_SELINUX_DISABLE=y -CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 -CONFIG_SECURITY_SMACK=y -CONFIG_SECURITY_SMACK_NETFILTER=y -CONFIG_SECURITY_TOMOYO=y -CONFIG_SECURITY_APPARMOR=y -CONFIG_SECURITY_YAMA=y -CONFIG_INTEGRITY_SIGNATURE=y -CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y -CONFIG_IMA=y -CONFIG_IMA_APPRAISE=y -CONFIG_EVM=y -CONFIG_EVM_EXTRA_SMACK_XATTRS=y -CONFIG_DEFAULT_SECURITY_APPARMOR=y -CONFIG_CRYPTO_USER=n -CONFIG_CRYPTO_PCRYPT=n -CONFIG_CRYPTO_TEST=n -CONFIG_CRYPTO_CHACHA20POLY1305=n -CONFIG_CRYPTO_KEYWRAP=n -CONFIG_CRYPTO_XCBC=n -CONFIG_CRYPTO_VMAC=n -CONFIG_CRYPTO_CRC32C_INTEL=y -CONFIG_CRYPTO_CRC32_PCLMUL=n -CONFIG_CRYPTO_CRCT10DIF_PCLMUL=n -CONFIG_CRYPTO_POLY1305_X86_64=n -CONFIG_CRYPTO_RMD128=n -CONFIG_CRYPTO_RMD160=n -CONFIG_CRYPTO_RMD256=n -CONFIG_CRYPTO_RMD320=n -CONFIG_CRYPTO_SHA1_SSSE3=n -CONFIG_CRYPTO_SHA256_SSSE3=n -CONFIG_CRYPTO_SHA512_SSSE3=n -CONFIG_CRYPTO_SHA1_MB=n -CONFIG_CRYPTO_TGR192=n -CONFIG_CRYPTO_WP512=n -CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=n -CONFIG_CRYPTO_AES_NI_INTEL=n -CONFIG_CRYPTO_ANUBIS=n -CONFIG_CRYPTO_BLOWFISH=n -CONFIG_CRYPTO_BLOWFISH_X86_64=n -CONFIG_CRYPTO_CAMELLIA=n -CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=n -CONFIG_CRYPTO_CAST5_AVX_X86_64=n -CONFIG_CRYPTO_CAST6_AVX_X86_64=n -CONFIG_CRYPTO_DES3_EDE_X86_64=n -CONFIG_CRYPTO_KHAZAD=n -CONFIG_CRYPTO_SALSA20=n -CONFIG_CRYPTO_SALSA20_X86_64=n -CONFIG_CRYPTO_CHACHA20_X86_64=n -CONFIG_CRYPTO_SEED=n -CONFIG_CRYPTO_SERPENT_SSE2_X86_64=n -CONFIG_CRYPTO_SERPENT_AVX2_X86_64=n -CONFIG_CRYPTO_TEA=n -CONFIG_CRYPTO_TWOFISH=n -CONFIG_CRYPTO_TWOFISH_AVX_X86_64=n -CONFIG_CRYPTO_842=n -CONFIG_CRYPTO_LZ4=n -CONFIG_CRYPTO_LZ4HC=n -CONFIG_CRYPTO_ANSI_CPRNG=n -CONFIG_CRYPTO_DRBG_HASH=y -CONFIG_CRYPTO_DRBG_CTR=y -CONFIG_CRYPTO_USER_API_HASH=n -CONFIG_CRYPTO_USER_API_SKCIPHER=n -CONFIG_CRYPTO_USER_API_RNG=n -CONFIG_CRYPTO_USER_API_AEAD=n -CONFIG_CRYPTO_DEV_PADLOCK=y -CONFIG_CRYPTO_DEV_PADLOCK_AES=n -CONFIG_CRYPTO_DEV_PADLOCK_SHA=n -CONFIG_CRYPTO_DEV_CCP=y -CONFIG_CRYPTO_DEV_QAT_DH895xCC=n -CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=n -CONFIG_PKCS7_TEST_KEY=n -CONFIG_SIGNED_PE_FILE_VERIFICATION=y -CONFIG_KVM=n -CONFIG_KVM_INTEL=n -CONFIG_KVM_AMD=n -CONFIG_KVM_DEVICE_ASSIGNMENT=y -CONFIG_VHOST_NET=n -CONFIG_VHOST_SCSI=n -CONFIG_CRC8=n -CONFIG_XZ_DEC_TEST=n -CONFIG_DDR=y - -CONFIG_NLS_ISO8859_1=y -CONFIG_TMPFS=y diff --git a/board/shredos/kernel-5.13-defconfig.config b/board/shredos/kernel-5.13-defconfig.config deleted file mode 100644 index 53684be2ef..0000000000 --- a/board/shredos/kernel-5.13-defconfig.config +++ /dev/null @@ -1,1230 +0,0 @@ -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_WATCH_QUEUE=y -CONFIG_AUDIT=y -CONFIG_HZ_PERIODIC=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_PREEMPT_VOLUNTARY=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BSD_PROCESS_ACCT_V3=y -CONFIG_CGROUPS=y -CONFIG_MEMCG=y -CONFIG_BLK_CGROUP=y -CONFIG_CGROUP_SCHED=y -CONFIG_CFS_BANDWIDTH=y -CONFIG_CGROUP_PIDS=y -CONFIG_CGROUP_FREEZER=y -CONFIG_CPUSETS=y -CONFIG_CGROUP_DEVICE=y -CONFIG_CGROUP_CPUACCT=y -CONFIG_CGROUP_PERF=y -CONFIG_NAMESPACES=y -CONFIG_USER_NS=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" -CONFIG_EXPERT=y -CONFIG_USERFAULTFD=y -# CONFIG_COMPAT_BRK is not set -CONFIG_PROFILING=y -CONFIG_SMP=y -CONFIG_X86_X2APIC=y -CONFIG_X86_NUMACHIP=y -CONFIG_X86_VSMP=y -CONFIG_NUMA=y -CONFIG_EFI=y -CONFIG_EFI_STUB=y -CONFIG_EFI_MIXED=y -CONFIG_PM_WAKELOCKS=y -CONFIG_CPU_IDLE_GOV_LADDER=y -CONFIG_X86_SYSFB=y -CONFIG_IA32_EMULATION=y -CONFIG_X86_X32=y -CONFIG_GOOGLE_FIRMWARE=y -# CONFIG_GCC_PLUGINS is not set -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_MODULE_SRCVERSION_ALL=y -CONFIG_MODULE_SIG=y -CONFIG_BLK_CMDLINE_PARSER=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_CMA=y -CONFIG_CMA_AREAS=7 -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_FIB_TRIE_STATS=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_MD5SIG=y -CONFIG_NETWORK_SECMARK=y -CONFIG_NETFILTER=y -CONFIG_NET_SCHED=y -CONFIG_DCB=y -CONFIG_DNS_RESOLVER=y -CONFIG_NET_L3_MASTER_DEV=y -CONFIG_CGROUP_NET_PRIO=y -CONFIG_PCI=y -CONFIG_PCIEPORTBUS=y -CONFIG_HOTPLUG_PCI_PCIE=y -CONFIG_PCIEAER=y -CONFIG_PCIEAER_INJECT=y -CONFIG_PCIE_ECRC=y -CONFIG_PCI_IOV=y -CONFIG_PCI_PRI=y -CONFIG_PCI_PASID=y -CONFIG_HOTPLUG_PCI=y -CONFIG_HOTPLUG_PCI_ACPI=y -CONFIG_HOTPLUG_PCI_ACPI_IBM=y -CONFIG_HOTPLUG_PCI_CPCI=y -CONFIG_HOTPLUG_PCI_CPCI_ZT5550=y -CONFIG_HOTPLUG_PCI_CPCI_GENERIC=y -CONFIG_HOTPLUG_PCI_SHPC=y -CONFIG_PCI_SW_SWITCHTEC=y -CONFIG_CXL_BUS=y -CONFIG_CXL_MEM=y -CONFIG_CXL_MEM_RAW_COMMANDS=y -CONFIG_PCCARD=y -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_BLK_DEV_PCIESSD_MTIP32XX=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_SX8=y -CONFIG_BLK_DEV_RSXX=y -CONFIG_BLK_DEV_NVME=y -CONFIG_NVME_MULTIPATH=y -CONFIG_NVME_HWMON=y -CONFIG_NVME_FC=y -CONFIG_IDE=y -CONFIG_IDE_TASK_IOCTL=y -CONFIG_BLK_DEV_SD=y -CONFIG_CHR_DEV_ST=y -CONFIG_BLK_DEV_SR=y -CONFIG_CHR_DEV_SG=y -CONFIG_CHR_DEV_SCH=y -CONFIG_SCSI_CONSTANTS=y -CONFIG_SCSI_LOGGING=y -CONFIG_SCSI_SCAN_ASYNC=y -CONFIG_SCSI_FC_ATTRS=y -CONFIG_SCSI_SAS_ATA=y -CONFIG_SCSI_SRP_ATTRS=y -CONFIG_ISCSI_TCP=y -CONFIG_SCSI_CXGB3_ISCSI=y -CONFIG_SCSI_CXGB4_ISCSI=y -CONFIG_SCSI_BNX2_ISCSI=y -CONFIG_BE2ISCSI=y -CONFIG_BLK_DEV_3W_XXXX_RAID=y -CONFIG_SCSI_HPSA=y -CONFIG_SCSI_3W_9XXX=y -CONFIG_SCSI_3W_SAS=y -CONFIG_SCSI_ACARD=y -CONFIG_SCSI_AACRAID=y -CONFIG_SCSI_AIC7XXX=y -CONFIG_SCSI_AIC79XX=y -CONFIG_SCSI_AIC94XX=y -CONFIG_SCSI_MVSAS=y -CONFIG_SCSI_MVSAS_TASKLET=y -CONFIG_SCSI_MVUMI=y -CONFIG_SCSI_DPT_I2O=y -CONFIG_SCSI_ADVANSYS=y -CONFIG_SCSI_ARCMSR=y -CONFIG_SCSI_ESAS2R=y -CONFIG_MEGARAID_NEWGEN=y -CONFIG_MEGARAID_MM=y -CONFIG_MEGARAID_MAILBOX=y -CONFIG_MEGARAID_LEGACY=y -CONFIG_MEGARAID_SAS=y -CONFIG_SCSI_MPT2SAS=y -CONFIG_SCSI_SMARTPQI=y -CONFIG_SCSI_UFSHCD=y -CONFIG_SCSI_UFSHCD_PCI=y -CONFIG_SCSI_UFS_DWC_TC_PCI=y -CONFIG_SCSI_UFSHCD_PLATFORM=y -CONFIG_SCSI_UFS_CDNS_PLATFORM=y -CONFIG_SCSI_UFS_DWC_TC_PLATFORM=y -CONFIG_SCSI_UFS_BSG=y -CONFIG_SCSI_HPTIOP=y -CONFIG_SCSI_BUSLOGIC=y -CONFIG_SCSI_FLASHPOINT=y -CONFIG_SCSI_MYRB=y -CONFIG_SCSI_MYRS=y -CONFIG_VMWARE_PVSCSI=y -CONFIG_SCSI_SNIC=y -CONFIG_SCSI_DMX3191D=y -CONFIG_SCSI_FDOMAIN_PCI=y -CONFIG_SCSI_ISCI=y -CONFIG_SCSI_IPS=y -CONFIG_SCSI_INITIO=y -CONFIG_SCSI_INIA100=y -CONFIG_SCSI_STEX=y -CONFIG_SCSI_SYM53C8XX_2=y -CONFIG_SCSI_IPR=y -CONFIG_SCSI_QLOGIC_1280=y -CONFIG_SCSI_QLA_ISCSI=y -CONFIG_SCSI_DC395x=y -CONFIG_SCSI_AM53C974=y -CONFIG_SCSI_WD719X=y -CONFIG_SCSI_PMCRAID=y -CONFIG_SCSI_PM8001=y -CONFIG_SCSI_BFA_FC=y -CONFIG_SCSI_CHELSIO_FCOE=y -CONFIG_SCSI_LOWLEVEL_PCMCIA=y -CONFIG_PCMCIA_AHA152X=m -CONFIG_PCMCIA_FDOMAIN=m -CONFIG_PCMCIA_QLOGIC=m -CONFIG_PCMCIA_SYM53C500=m -CONFIG_SCSI_DH=y -CONFIG_SCSI_DH_RDAC=y -CONFIG_SCSI_DH_HP_SW=y -CONFIG_SCSI_DH_EMC=y -CONFIG_SCSI_DH_ALUA=y -CONFIG_ATA=y -CONFIG_SATA_ZPODD=y -CONFIG_SATA_AHCI=y -CONFIG_SATA_AHCI_PLATFORM=y -CONFIG_SATA_ACARD_AHCI=y -CONFIG_SATA_SIL24=y -CONFIG_PDC_ADMA=y -CONFIG_SATA_QSTOR=y -CONFIG_ATA_PIIX=y -CONFIG_SATA_MV=y -CONFIG_SATA_NV=y -CONFIG_SATA_PROMISE=y -CONFIG_SATA_SIL=y -CONFIG_SATA_SIS=y -CONFIG_SATA_SVW=y -CONFIG_SATA_ULI=y -CONFIG_SATA_VIA=y -CONFIG_SATA_VITESSE=y -CONFIG_PATA_ALI=y -CONFIG_PATA_AMD=y -CONFIG_PATA_ARTOP=y -CONFIG_PATA_ATIIXP=y -CONFIG_PATA_ATP867X=y -CONFIG_PATA_CMD64X=y -CONFIG_PATA_CYPRESS=y -CONFIG_PATA_EFAR=y -CONFIG_PATA_HPT366=y -CONFIG_PATA_HPT37X=y -CONFIG_PATA_HPT3X2N=y -CONFIG_PATA_HPT3X3=y -CONFIG_PATA_HPT3X3_DMA=y -CONFIG_PATA_IT8213=y -CONFIG_PATA_IT821X=y -CONFIG_PATA_JMICRON=y -CONFIG_PATA_MARVELL=y -CONFIG_PATA_NETCELL=y -CONFIG_PATA_NINJA32=y -CONFIG_PATA_NS87415=y -CONFIG_PATA_OLDPIIX=y -CONFIG_PATA_OPTIDMA=y -CONFIG_PATA_PDC2027X=y -CONFIG_PATA_PDC_OLD=y -CONFIG_PATA_RADISYS=y -CONFIG_PATA_RDC=y -CONFIG_PATA_SCH=y -CONFIG_PATA_SERVERWORKS=y -CONFIG_PATA_SIL680=y -CONFIG_PATA_TOSHIBA=y -CONFIG_PATA_TRIFLEX=y -CONFIG_PATA_VIA=y -CONFIG_PATA_WINBOND=y -CONFIG_PATA_CMD640_PCI=y -CONFIG_PATA_MPIIX=y -CONFIG_PATA_NS87410=y -CONFIG_PATA_OPTI=y -CONFIG_PATA_PCMCIA=y -CONFIG_PATA_PLATFORM=y -CONFIG_PATA_RZ1000=y -CONFIG_PATA_ACPI=y -CONFIG_ATA_GENERIC=y -CONFIG_PATA_LEGACY=y -CONFIG_FUSION=y -CONFIG_FUSION_SPI=y -CONFIG_FUSION_FC=y -CONFIG_FUSION_SAS=y -CONFIG_FUSION_CTL=y -CONFIG_FUSION_LAN=y -CONFIG_MACINTOSH_DRIVERS=y -CONFIG_NET_FC=y -CONFIG_PCMCIA_3C574=y -CONFIG_PCMCIA_3C589=y -CONFIG_VORTEX=y -CONFIG_TYPHOON=y -CONFIG_ADAPTEC_STARFIRE=y -CONFIG_ET131X=y -CONFIG_SLICOSS=y -CONFIG_ACENIC=y -CONFIG_ALTERA_TSE=y -CONFIG_AMD8111_ETH=y -CONFIG_PCNET32=y -CONFIG_PCMCIA_NMCLAN=y -CONFIG_AMD_XGBE=y -CONFIG_AMD_XGBE_DCB=y -CONFIG_AQTION=y -CONFIG_ATL2=y -CONFIG_ATL1=y -CONFIG_ATL1E=y -CONFIG_ATL1C=y -CONFIG_ALX=y -CONFIG_B44=y -CONFIG_BCMGENET=y -CONFIG_TIGON3=y -CONFIG_BNX2X=y -CONFIG_SYSTEMPORT=y -CONFIG_BNXT=y -CONFIG_BNXT_DCB=y -CONFIG_BNA=y -CONFIG_MACB=y -CONFIG_MACB_PCI=y -CONFIG_THUNDER_NIC_PF=y -CONFIG_THUNDER_NIC_VF=y -CONFIG_LIQUIDIO=y -CONFIG_CHELSIO_T1=y -CONFIG_CHELSIO_T1_1G=y -CONFIG_CHELSIO_T4_DCB=y -CONFIG_CHELSIO_T4VF=y -CONFIG_ENIC=y -CONFIG_CX_ECAT=y -CONFIG_DNET=y -CONFIG_NET_TULIP=y -CONFIG_DE2104X=y -CONFIG_TULIP=y -CONFIG_TULIP_MWI=y -CONFIG_TULIP_MMIO=y -CONFIG_TULIP_NAPI=y -CONFIG_TULIP_NAPI_HW_MITIGATION=y -CONFIG_DE4X5=y -CONFIG_WINBOND_840=y -CONFIG_DM9102=y -CONFIG_ULI526X=y -CONFIG_PCMCIA_XIRCOM=y -CONFIG_DL2K=y -CONFIG_SUNDANCE=y -CONFIG_SUNDANCE_MMIO=y -CONFIG_BE2NET=y -CONFIG_PCMCIA_FMVJ18X=y -CONFIG_E100=y -CONFIG_E1000=y -CONFIG_E1000E=y -CONFIG_IGB=y -CONFIG_IGBVF=y -CONFIG_IXGB=y -CONFIG_IXGBE=y -CONFIG_IXGBE_DCB=y -CONFIG_I40E=y -CONFIG_I40E_DCB=y -CONFIG_IGC=y -CONFIG_JME=y -CONFIG_MVMDIO=y -CONFIG_SKGE=y -CONFIG_SKGE_GENESIS=y -CONFIG_SKY2=y -CONFIG_MLX4_EN=y -CONFIG_MLX5_CORE=y -CONFIG_MLX5_FPGA=y -CONFIG_MLX5_CORE_EN=y -CONFIG_MLX5_CORE_IPOIB=y -CONFIG_MLX5_FPGA_IPSEC=y -CONFIG_MLX5_SF=y -CONFIG_MLXSW_CORE=y -CONFIG_MLXSW_PCI=y -CONFIG_MLXSW_I2C=y -CONFIG_MLXSW_MINIMAL=y -CONFIG_KS8851=y -CONFIG_KS8851_MLL=y -CONFIG_KSZ884X_PCI=y -CONFIG_ENC28J60=y -CONFIG_ENC28J60_WRITEVERIFY=y -CONFIG_ENCX24J600=y -CONFIG_LAN743X=y -CONFIG_MYRI10GE=y -CONFIG_FEALNX=y -CONFIG_NATSEMI=y -CONFIG_NS83820=y -CONFIG_S2IO=y -CONFIG_VXGE=y -CONFIG_NI_XGE_MANAGEMENT_ENET=y -CONFIG_PCMCIA_AXNET=y -CONFIG_NE2K_PCI=y -CONFIG_PCMCIA_PCNET=y -CONFIG_FORCEDETH=y -CONFIG_ETHOC=y -CONFIG_HAMACHI=y -CONFIG_YELLOWFIN=y -CONFIG_IONIC=y -CONFIG_QLA3XXX=y -CONFIG_QLCNIC=y -CONFIG_NETXEN_NIC=y -CONFIG_QED=y -CONFIG_QEDE=y -CONFIG_QCOM_EMAC=y -CONFIG_RMNET=y -CONFIG_R6040=y -CONFIG_8139CP=y -CONFIG_8139TOO=y -CONFIG_8139TOO_TUNE_TWISTER=y -CONFIG_8139TOO_8129=y -CONFIG_8139_OLD_RX_RESET=y -CONFIG_R8169=y -CONFIG_SXGBE_ETH=y -CONFIG_SFC=y -CONFIG_SFC_FALCON=y -CONFIG_SC92031=y -CONFIG_SIS900=y -CONFIG_SIS190=y -CONFIG_PCMCIA_SMC91C92=y -CONFIG_EPIC100=y -CONFIG_SMSC911X=y -CONFIG_SMSC9420=y -CONFIG_STMMAC_ETH=y -CONFIG_STMMAC_SELFTESTS=y -CONFIG_STMMAC_PCI=y -CONFIG_HAPPYMEAL=y -CONFIG_SUNGEM=y -CONFIG_CASSINI=y -CONFIG_NIU=y -CONFIG_DWC_XLGMAC=y -CONFIG_DWC_XLGMAC_PCI=y -CONFIG_TEHUTI=y -CONFIG_TI_CPSW_PHY_SEL=y -CONFIG_TLAN=y -CONFIG_VIA_RHINE=y -CONFIG_VIA_RHINE_MMIO=y -CONFIG_VIA_VELOCITY=y -CONFIG_WIZNET_W5100=y -CONFIG_WIZNET_W5300=y -CONFIG_WIZNET_W5100_SPI=y -CONFIG_XILINX_EMACLITE=y -CONFIG_XILINX_AXI_EMAC=y -CONFIG_XILINX_LL_TEMAC=y -CONFIG_PCMCIA_XIRC2PS=y -CONFIG_FDDI=y -CONFIG_DEFXX=y -CONFIG_SKFP=y -CONFIG_HIPPI=y -CONFIG_ROADRUNNER=y -CONFIG_ROADRUNNER_LARGE_RINGS=y -CONFIG_NET_SB1000=y -CONFIG_MICREL_KS8995MA=y -CONFIG_USB_CATC=y -CONFIG_USB_KAWETH=y -CONFIG_USB_PEGASUS=y -CONFIG_USB_RTL8150=y -CONFIG_USB_RTL8152=y -CONFIG_USB_LAN78XX=y -CONFIG_USB_USBNET=y -CONFIG_USB_NET_CDC_EEM=y -CONFIG_USB_NET_HUAWEI_CDC_NCM=y -CONFIG_USB_NET_CDC_MBIM=y -CONFIG_USB_NET_DM9601=y -CONFIG_USB_NET_SR9700=y -CONFIG_USB_NET_SR9800=y -CONFIG_USB_NET_SMSC75XX=y -CONFIG_USB_NET_SMSC95XX=y -CONFIG_USB_NET_GL620A=y -CONFIG_USB_NET_PLUSB=y -CONFIG_USB_NET_MCS7830=y -CONFIG_USB_NET_RNDIS_HOST=y -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_KC2190=y -CONFIG_USB_NET_CX82310_ETH=y -CONFIG_USB_NET_KALMIA=y -CONFIG_USB_NET_QMI_WWAN=y -CONFIG_USB_NET_INT51X1=y -CONFIG_USB_IPHETH=y -CONFIG_USB_SIERRA_NET=y -CONFIG_USB_VL600=y -CONFIG_USB_NET_CH9200=y -CONFIG_USB_NET_AQC111=y -CONFIG_USB_RTL8153_ECM=y -CONFIG_VMXNET3=y -CONFIG_FUJITSU_ES=y -CONFIG_INPUT_SPARSEKMAP=y -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_EVDEV=y -CONFIG_KEYBOARD_ADP5520=y -CONFIG_KEYBOARD_ADP5588=y -CONFIG_KEYBOARD_ADP5589=y -CONFIG_KEYBOARD_QT1050=y -CONFIG_KEYBOARD_QT1070=y -CONFIG_KEYBOARD_QT2160=y -CONFIG_KEYBOARD_DLINK_DIR685=y -CONFIG_KEYBOARD_LKKBD=y -CONFIG_KEYBOARD_TCA6416=y -CONFIG_KEYBOARD_TCA8418=y -CONFIG_KEYBOARD_LM8323=y -CONFIG_KEYBOARD_LM8333=y -CONFIG_KEYBOARD_MAX7359=y -CONFIG_KEYBOARD_MCS=y -CONFIG_KEYBOARD_MPR121=y -CONFIG_KEYBOARD_NEWTON=y -CONFIG_KEYBOARD_OPENCORES=y -CONFIG_KEYBOARD_SAMSUNG=y -CONFIG_KEYBOARD_STOWAWAY=y -CONFIG_KEYBOARD_SUNKBD=y -CONFIG_KEYBOARD_IQS62X=y -CONFIG_KEYBOARD_TM2_TOUCHKEY=y -CONFIG_KEYBOARD_TWL4030=y -CONFIG_KEYBOARD_XTKBD=y -CONFIG_KEYBOARD_MTK_PMIC=y -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_INPUT_MISC=y -CONFIG_INPUT_PCSPKR=y -CONFIG_SERIO_ALTERA_PS2=y -CONFIG_SERIO_PS2MULT=y -CONFIG_SERIO_ARC_PS2=y -CONFIG_SERIAL_NONSTANDARD=y -CONFIG_HW_RANDOM=y -CONFIG_SPI=y -# CONFIG_PTP_1588_CLOCK is not set -CONFIG_GPIOLIB=y -CONFIG_GPIO_ADP5588=y -CONFIG_GPIO_ADP5588_IRQ=y -CONFIG_GPIO_MAX7300=y -CONFIG_GPIO_MAX732X=y -CONFIG_GPIO_MAX732X_IRQ=y -CONFIG_GPIO_PCA953X=y -CONFIG_GPIO_PCA953X_IRQ=y -CONFIG_GPIO_PCA9570=y -CONFIG_GPIO_PCF857X=y -CONFIG_GPIO_TPIC2810=y -CONFIG_GPIO_ADP5520=y -CONFIG_GPIO_ARIZONA=y -CONFIG_GPIO_BD9571MWV=y -CONFIG_GPIO_DA9052=y -CONFIG_GPIO_DA9055=y -CONFIG_GPIO_DLN2=y -CONFIG_GPIO_JANZ_TTL=y -CONFIG_GPIO_KEMPLD=y -CONFIG_GPIO_LP3943=y -CONFIG_GPIO_LP873X=y -CONFIG_GPIO_MADERA=y -CONFIG_GPIO_PALMAS=y -CONFIG_GPIO_RC5T583=y -CONFIG_GPIO_TPS65086=y -CONFIG_GPIO_TPS6586X=y -CONFIG_GPIO_TPS65912=y -CONFIG_GPIO_TQMX86=y -CONFIG_GPIO_TWL4030=y -CONFIG_GPIO_TWL6040=y -CONFIG_GPIO_WHISKEY_COVE=y -CONFIG_GPIO_WM831X=y -CONFIG_GPIO_WM8350=y -CONFIG_GPIO_WM8994=y -CONFIG_POWER_RESET=y -CONFIG_POWER_RESET_RESTART=y -CONFIG_SENSORS_DRIVETEMP=y -CONFIG_SENSORS_DELL_SMM=y -CONFIG_X86_PKG_TEMP_THERMAL=y -CONFIG_WATCHDOG=y -CONFIG_MFD_AS3711=y -CONFIG_PMIC_ADP5520=y -CONFIG_MFD_BCM590XX=y -CONFIG_MFD_BD9571MWV=y -CONFIG_MFD_AXP20X_I2C=y -CONFIG_MFD_MADERA=y -CONFIG_MFD_MADERA_I2C=y -CONFIG_MFD_MADERA_SPI=y -CONFIG_MFD_CS47L15=y -CONFIG_MFD_CS47L35=y -CONFIG_MFD_CS47L85=y -CONFIG_MFD_CS47L90=y -CONFIG_MFD_CS47L92=y -CONFIG_PMIC_DA903X=y -CONFIG_MFD_DA9052_SPI=y -CONFIG_MFD_DA9052_I2C=y -CONFIG_MFD_DA9055=y -CONFIG_MFD_DA9062=y -CONFIG_MFD_DA9063=y -CONFIG_MFD_DA9150=y -CONFIG_MFD_DLN2=y -CONFIG_MFD_MC13XXX_SPI=y -CONFIG_MFD_MC13XXX_I2C=y -CONFIG_MFD_MP2629=y -CONFIG_HTC_PASIC3=y -CONFIG_MFD_INTEL_QUARK_I2C_GPIO=y -CONFIG_LPC_ICH=y -CONFIG_LPC_SCH=y -CONFIG_INTEL_SOC_PMIC_BXTWC=y -CONFIG_MFD_INTEL_LPSS_ACPI=y -CONFIG_MFD_INTEL_LPSS_PCI=y -CONFIG_MFD_INTEL_PMC_BXT=y -CONFIG_MFD_INTEL_PMT=y -CONFIG_MFD_IQS62X=y -CONFIG_MFD_JANZ_CMODIO=y -CONFIG_MFD_KEMPLD=y -CONFIG_MFD_88PM800=y -CONFIG_MFD_88PM805=y -CONFIG_MFD_88PM860X=y -CONFIG_MFD_MAX14577=y -CONFIG_MFD_MAX77693=y -CONFIG_MFD_MAX77843=y -CONFIG_MFD_MAX8907=y -CONFIG_MFD_MAX8925=y -CONFIG_MFD_MAX8997=y -CONFIG_MFD_MAX8998=y -CONFIG_MFD_MT6360=y -CONFIG_MFD_MT6397=y -CONFIG_MFD_MENF21BMC=y -CONFIG_EZX_PCAP=y -CONFIG_MFD_VIPERBOARD=y -CONFIG_MFD_RETU=y -CONFIG_MFD_PCF50633=y -CONFIG_PCF50633_ADC=y -CONFIG_PCF50633_GPIO=y -CONFIG_MFD_RDC321X=y -CONFIG_MFD_RT5033=y -CONFIG_MFD_RC5T583=y -CONFIG_MFD_SEC_CORE=y -CONFIG_MFD_SI476X_CORE=y -CONFIG_MFD_SM501=y -CONFIG_MFD_SKY81452=y -CONFIG_MFD_TI_AM335X_TSCADC=y -CONFIG_MFD_LP3943=y -CONFIG_MFD_LP8788=y -CONFIG_MFD_TI_LMU=y -CONFIG_MFD_PALMAS=y -CONFIG_TPS6105X=y -CONFIG_TPS6507X=y -CONFIG_MFD_TPS65086=y -CONFIG_MFD_TPS65090=y -CONFIG_MFD_TI_LP873X=y -CONFIG_MFD_TPS6586X=y -CONFIG_MFD_TPS65912_I2C=y -CONFIG_MFD_TPS65912_SPI=y -CONFIG_MFD_TPS80031=y -CONFIG_TWL4030_CORE=y -CONFIG_MFD_TWL4030_AUDIO=y -CONFIG_TWL6040_CORE=y -CONFIG_MFD_WL1273_CORE=y -CONFIG_MFD_LM3533=y -CONFIG_MFD_TQMX86=y -CONFIG_MFD_VX855=y -CONFIG_MFD_ARIZONA_I2C=y -CONFIG_MFD_ARIZONA_SPI=y -CONFIG_MFD_CS47L24=y -CONFIG_MFD_WM5102=y -CONFIG_MFD_WM5110=y -CONFIG_MFD_WM8997=y -CONFIG_MFD_WM8998=y -CONFIG_MFD_WM8400=y -CONFIG_MFD_WM831X_I2C=y -CONFIG_MFD_WM831X_SPI=y -CONFIG_MFD_WM8350_I2C=y -CONFIG_MFD_WM8994=y -CONFIG_MFD_ATC260X_I2C=y -CONFIG_MFD_INTEL_M10_BMC=y -CONFIG_MEDIA_CEC_SUPPORT=y -CONFIG_CEC_SECO=y -CONFIG_USB_PULSE8_CEC=y -CONFIG_USB_RAINSHADOW_CEC=y -CONFIG_MEDIA_SUPPORT=y -CONFIG_MEDIA_SUPPORT_FILTER=y -CONFIG_AGP=y -CONFIG_AGP_AMD64=y -CONFIG_AGP_INTEL=y -CONFIG_AGP_SIS=y -CONFIG_AGP_VIA=y -CONFIG_VGA_SWITCHEROO=y -CONFIG_DRM=y -CONFIG_DRM_DP_AUX_CHARDEV=y -CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM=y -CONFIG_DRM_DP_CEC=y -# CONFIG_DRM_I2C_CH7006 is not set -# CONFIG_DRM_I2C_SIL164 is not set -CONFIG_DRM_I2C_NXP_TDA998X=y -CONFIG_DRM_I2C_NXP_TDA9950=y -CONFIG_DRM_RADEON=y -CONFIG_DRM_RADEON_USERPTR=y -CONFIG_DRM_AMDGPU=y -CONFIG_DRM_AMDGPU_SI=y -CONFIG_DRM_AMDGPU_CIK=y -CONFIG_DRM_AMD_DC_HDCP=y -CONFIG_DRM_AMD_DC_SI=y -CONFIG_HSA_AMD=y -CONFIG_DRM_NOUVEAU=y -CONFIG_DRM_I915=y -CONFIG_DRM_GMA500=y -CONFIG_DRM_UDL=y -CONFIG_DRM_AST=y -CONFIG_DRM_MGAG200=y -CONFIG_DRM_QXL=y -CONFIG_DRM_BOCHS=y -CONFIG_DRM_VIRTIO_GPU=y -CONFIG_DRM_ANALOGIX_ANX78XX=y -CONFIG_TINYDRM_HX8357D=y -CONFIG_TINYDRM_ILI9225=y -CONFIG_TINYDRM_ILI9341=y -CONFIG_TINYDRM_ILI9486=y -CONFIG_TINYDRM_MI0283QT=y -CONFIG_TINYDRM_REPAPER=y -CONFIG_TINYDRM_ST7586=y -CONFIG_TINYDRM_ST7735R=y -CONFIG_DRM_VBOXVIDEO=y -CONFIG_FIRMWARE_EDID=y -CONFIG_FB_CIRRUS=y -CONFIG_FB_PM2=y -CONFIG_FB_PM2_FIFO_DISCONNECT=y -CONFIG_FB_CYBER2000=y -CONFIG_FB_ARC=y -CONFIG_FB_ASILIANT=y -CONFIG_FB_IMSTT=y -CONFIG_FB_VGA16=y -CONFIG_FB_VESA=y -CONFIG_FB_EFI=y -CONFIG_FB_HGA=y -CONFIG_FB_OPENCORES=y -CONFIG_FB_S1D13XXX=y -CONFIG_FB_NVIDIA=y -CONFIG_FB_NVIDIA_I2C=y -CONFIG_FB_RIVA=y -CONFIG_FB_RIVA_I2C=y -CONFIG_FB_I740=y -CONFIG_FB_LE80578=y -CONFIG_FB_CARILLO_RANCH=y -CONFIG_FB_MATROX=y -CONFIG_FB_MATROX_MILLENIUM=y -CONFIG_FB_MATROX_MYSTIQUE=y -CONFIG_FB_MATROX_G=y -CONFIG_FB_MATROX_I2C=y -CONFIG_FB_MATROX_MAVEN=y -CONFIG_FB_RADEON=y -CONFIG_FB_ATY128=y -CONFIG_FB_ATY=y -CONFIG_FB_ATY_CT=y -CONFIG_FB_ATY_GENERIC_LCD=y -CONFIG_FB_ATY_GX=y -CONFIG_FB_S3=y -CONFIG_FB_SAVAGE=y -CONFIG_FB_SAVAGE_I2C=y -CONFIG_FB_SAVAGE_ACCEL=y -CONFIG_FB_SIS=y -CONFIG_FB_SIS_300=y -CONFIG_FB_SIS_315=y -CONFIG_FB_VIA=y -CONFIG_FB_NEOMAGIC=y -CONFIG_FB_KYRO=y -CONFIG_FB_3DFX=y -CONFIG_FB_3DFX_ACCEL=y -CONFIG_FB_VOODOO1=y -CONFIG_FB_VT8623=y -CONFIG_FB_TRIDENT=y -CONFIG_FB_ARK=y -CONFIG_FB_PM3=y -CONFIG_FB_CARMINE=y -CONFIG_FB_SM501=y -CONFIG_FB_SMSCUFX=y -CONFIG_FB_UDL=y -CONFIG_FB_IBM_GXT4500=y -CONFIG_FB_VIRTUAL=y -CONFIG_FB_METRONOME=y -CONFIG_FB_MB862XX=y -CONFIG_FB_SIMPLE=y -CONFIG_FB_SM712=y -CONFIG_LCD_CLASS_DEVICE=y -CONFIG_LCD_L4F00242T03=y -CONFIG_LCD_LMS283GF05=y -CONFIG_LCD_LTV350QV=y -CONFIG_LCD_ILI922X=y -CONFIG_LCD_TDO24M=y -CONFIG_LCD_VGG2432A4=y -CONFIG_LCD_PLATFORM=y -CONFIG_LCD_AMS369FG06=y -CONFIG_LCD_LMS501KF03=y -CONFIG_LCD_HX8357=y -CONFIG_LCD_OTM3225A=y -CONFIG_BACKLIGHT_KTD253=y -CONFIG_BACKLIGHT_LM3533=y -CONFIG_BACKLIGHT_DA903X=y -CONFIG_BACKLIGHT_DA9052=y -CONFIG_BACKLIGHT_MAX8925=y -CONFIG_BACKLIGHT_APPLE=y -CONFIG_BACKLIGHT_QCOM_WLED=y -CONFIG_BACKLIGHT_SAHARA=y -CONFIG_BACKLIGHT_WM831X=y -CONFIG_BACKLIGHT_ADP5520=y -CONFIG_BACKLIGHT_ADP8860=y -CONFIG_BACKLIGHT_ADP8870=y -CONFIG_BACKLIGHT_88PM860X=y -CONFIG_BACKLIGHT_PCF50633=y -CONFIG_BACKLIGHT_LM3639=y -CONFIG_BACKLIGHT_PANDORA=y -CONFIG_BACKLIGHT_SKY81452=y -CONFIG_BACKLIGHT_AS3711=y -CONFIG_BACKLIGHT_GPIO=y -CONFIG_BACKLIGHT_LV5207LP=y -CONFIG_BACKLIGHT_BD6107=y -CONFIG_BACKLIGHT_ARCXCNN=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y -CONFIG_LOGO=y -CONFIG_HIDRAW=y -CONFIG_UHID=y -CONFIG_HID_A4TECH=y -CONFIG_HID_ACCUTOUCH=y -CONFIG_HID_ACRUX=y -CONFIG_HID_APPLE=y -CONFIG_HID_ASUS=y -CONFIG_HID_AUREAL=y -CONFIG_HID_BELKIN=y -CONFIG_HID_CHERRY=y -CONFIG_HID_CHICONY=y -CONFIG_HID_CORSAIR=y -CONFIG_HID_COUGAR=y -CONFIG_HID_MACALLY=y -CONFIG_HID_CMEDIA=y -CONFIG_HID_CP2112=y -CONFIG_HID_CYPRESS=y -CONFIG_HID_ELAN=y -CONFIG_HID_ELECOM=y -CONFIG_HID_ELO=y -CONFIG_HID_EZKEY=y -CONFIG_HID_FT260=y -CONFIG_HID_GEMBIRD=y -CONFIG_HID_GLORIOUS=y -CONFIG_HID_HOLTEK=y -CONFIG_HID_VIVALDI=y -CONFIG_HID_GT683R=y -CONFIG_HID_KEYTOUCH=y -CONFIG_HID_KYE=y -CONFIG_HID_UCLOGIC=y -CONFIG_HID_WALTOP=y -CONFIG_HID_VIEWSONIC=y -CONFIG_HID_ITE=y -CONFIG_HID_JABRA=y -CONFIG_HID_KENSINGTON=y -CONFIG_HID_LCPOWER=y -CONFIG_HID_LED=y -CONFIG_HID_LENOVO=y -CONFIG_HID_LOGITECH=y -CONFIG_HID_LOGITECH_DJ=y -CONFIG_HID_MAGICMOUSE=y -CONFIG_HID_MALTRON=y -CONFIG_HID_REDRAGON=y -CONFIG_HID_MICROSOFT=y -CONFIG_HID_MONTEREY=y -CONFIG_HID_MULTITOUCH=y -CONFIG_HID_NTI=y -CONFIG_HID_NTRIG=y -CONFIG_HID_ORTEK=y -CONFIG_HID_PENMOUNT=y -CONFIG_HID_PICOLCD=y -CONFIG_HID_PLANTRONICS=y -CONFIG_HID_PRIMAX=y -CONFIG_HID_ROCCAT=y -CONFIG_HID_SAITEK=y -CONFIG_HID_SAMSUNG=y -CONFIG_HID_SEMITEK=y -CONFIG_HID_SONY=y -CONFIG_HID_STEAM=y -CONFIG_HID_STEELSERIES=y -CONFIG_HID_SUNPLUS=y -CONFIG_HID_RMI=y -CONFIG_HID_SENSOR_HUB=y -CONFIG_HID_SENSOR_CUSTOM_SENSOR=y -CONFIG_HID_ALPS=y -CONFIG_HID_MCP2221=y -CONFIG_HID_PID=y -CONFIG_USB_HIDDEV=y -CONFIG_I2C_HID_ACPI=y -CONFIG_INTEL_ISH_HID=y -CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER=y -CONFIG_AMD_SFH_HID=y -CONFIG_USB_LED_TRIG=y -CONFIG_USB_CONN_GPIO=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_DYNAMIC_MINORS=y -CONFIG_USB_OTG=y -CONFIG_USB_OTG_FSM=y -CONFIG_USB_LEDS_TRIGGER_USBPORT=y -CONFIG_USB_MON=y -CONFIG_USB_C67X00_HCD=y -CONFIG_USB_XHCI_HCD=y -CONFIG_USB_XHCI_PCI_RENESAS=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_FSL=y -CONFIG_USB_OXU210HP_HCD=y -CONFIG_USB_ISP116X_HCD=y -CONFIG_USB_FOTG210_HCD=y -CONFIG_USB_MAX3421_HCD=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_UHCI_HCD=y -CONFIG_USB_SL811_HCD=y -CONFIG_USB_R8A66597_HCD=y -CONFIG_USB_HCD_SSB=y -CONFIG_USB_STORAGE=y -CONFIG_USB_STORAGE_REALTEK=y -CONFIG_USB_STORAGE_DATAFAB=y -CONFIG_USB_STORAGE_FREECOM=y -CONFIG_USB_STORAGE_ISD200=y -CONFIG_USB_STORAGE_USBAT=y -CONFIG_USB_STORAGE_SDDR09=y -CONFIG_USB_STORAGE_SDDR55=y -CONFIG_USB_STORAGE_JUMPSHOT=y -CONFIG_USB_STORAGE_ALAUDA=y -CONFIG_USB_STORAGE_ONETOUCH=y -CONFIG_USB_STORAGE_KARMA=y -CONFIG_USB_STORAGE_CYPRESS_ATACB=y -CONFIG_USB_STORAGE_ENE_UB6250=y -CONFIG_USB_UAS=y -CONFIG_USB_MUSB_HDRC=y -CONFIG_USB_DWC3=y -CONFIG_USB_DWC3_ULPI=y -CONFIG_USB_DWC2=y -CONFIG_USB_DWC2_PCI=y -CONFIG_USB_CHIPIDEA=y -CONFIG_USB_CHIPIDEA_UDC=y -CONFIG_USB_CHIPIDEA_HOST=y -CONFIG_USB_ISP1760=y -CONFIG_USB_SERIAL=y -CONFIG_USB_CYPRESS_CY7C63=y -CONFIG_USB_YUREX=y -CONFIG_USB_HUB_USB251XB=y -CONFIG_USB_HSIC_USB3503=y -CONFIG_USB_HSIC_USB4604=y -CONFIG_USB_ISP1301=y -CONFIG_USB_GADGET=y -CONFIG_USB_FOTG210_UDC=y -CONFIG_USB_GR_UDC=y -CONFIG_USB_R8A66597=y -CONFIG_USB_PXA27X=y -CONFIG_USB_MV_UDC=y -CONFIG_USB_MV_U3D=y -CONFIG_USB_M66592=y -CONFIG_USB_BDC_UDC=y -CONFIG_USB_AMD5536UDC=y -CONFIG_USB_NET2272=y -CONFIG_USB_NET2272_DMA=y -CONFIG_USB_NET2280=y -CONFIG_USB_GOKU=y -CONFIG_USB_EG20T=y -CONFIG_USB_MAX3420_UDC=y -CONFIG_TYPEC=y -CONFIG_TYPEC_TCPM=y -CONFIG_TYPEC_TCPCI=y -CONFIG_TYPEC_RT1711H=y -CONFIG_TYPEC_TCPCI_MAXIM=y -CONFIG_TYPEC_FUSB302=y -CONFIG_TYPEC_UCSI=y -CONFIG_UCSI_CCG=y -CONFIG_UCSI_ACPI=y -CONFIG_TYPEC_TPS6598X=y -CONFIG_TYPEC_HD3SS3220=y -CONFIG_TYPEC_STUSB160X=y -CONFIG_TYPEC_MUX_PI3USB30532=y -CONFIG_TYPEC_DP_ALTMODE=y -CONFIG_TYPEC_NVIDIA_ALTMODE=y -CONFIG_USB_ROLES_INTEL_XHCI=y -CONFIG_MMC=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PCI=y -CONFIG_MMC_SDHCI_ACPI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_F_SDH30=y -CONFIG_MMC_WBSD=y -CONFIG_MMC_TIFM_SD=y -CONFIG_MMC_SPI=y -CONFIG_MMC_CB710=y -CONFIG_MMC_VIA_SDMMC=y -CONFIG_MMC_VUB300=y -CONFIG_MMC_USHC=y -CONFIG_MMC_USDHI6ROL0=y -CONFIG_MMC_HSQ=y -CONFIG_MMC_TOSHIBA_PCI=y -CONFIG_MMC_MTK=y -CONFIG_MMC_SDHCI_XENON=y -CONFIG_MEMSTICK=y -CONFIG_MSPRO_BLOCK=y -CONFIG_MS_BLOCK=y -CONFIG_MEMSTICK_TIFM_MS=y -CONFIG_MEMSTICK_JMICRON_38X=y -CONFIG_MEMSTICK_R592=y -CONFIG_LEDS_CLASS_FLASH=y -CONFIG_LEDS_CLASS_MULTICOLOR=y -CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y -CONFIG_LEDS_88PM860X=y -CONFIG_LEDS_APU=y -CONFIG_LEDS_AS3645A=y -CONFIG_LEDS_LM3530=y -CONFIG_LEDS_LM3532=y -CONFIG_LEDS_LM3533=y -CONFIG_LEDS_LM3642=y -CONFIG_LEDS_LM3601X=y -CONFIG_LEDS_MT6323=y -CONFIG_LEDS_PCA9532=y -CONFIG_LEDS_LP3944=y -CONFIG_LEDS_LP50XX=y -CONFIG_LEDS_LP8788=y -CONFIG_LEDS_CLEVO_MAIL=y -CONFIG_LEDS_PCA955X=y -CONFIG_LEDS_PCA963X=y -CONFIG_LEDS_WM831X_STATUS=y -CONFIG_LEDS_WM8350=y -CONFIG_LEDS_DA903X=y -CONFIG_LEDS_DA9052=y -CONFIG_LEDS_DAC124S085=y -CONFIG_LEDS_REGULATOR=y -CONFIG_LEDS_BD2802=y -CONFIG_LEDS_INTEL_SS4200=y -CONFIG_LEDS_ADP5520=y -CONFIG_LEDS_MC13783=y -CONFIG_LEDS_TCA6507=y -CONFIG_LEDS_TLC591XX=y -CONFIG_LEDS_MAX8997=y -CONFIG_LEDS_LM355x=y -CONFIG_LEDS_MENF21BMC=y -CONFIG_LEDS_BLINKM=y -CONFIG_LEDS_MLXCPLD=y -CONFIG_LEDS_MLXREG=y -CONFIG_LEDS_USER=y -CONFIG_LEDS_NIC78BX=y -CONFIG_LEDS_TI_LMU_COMMON=y -CONFIG_LEDS_LM36274=y -CONFIG_LEDS_SGM3140=y -CONFIG_LEDS_TRIGGERS=y -CONFIG_EDAC=y -CONFIG_EDAC_AMD64=y -CONFIG_EDAC_E752X=y -CONFIG_EDAC_I82975X=y -CONFIG_EDAC_I3000=y -CONFIG_EDAC_I3200=y -CONFIG_EDAC_IE31200=y -CONFIG_EDAC_X38=y -CONFIG_EDAC_I5400=y -CONFIG_EDAC_I7CORE=y -CONFIG_EDAC_I5000=y -CONFIG_EDAC_I5100=y -CONFIG_EDAC_I7300=y -CONFIG_EDAC_SBRIDGE=y -CONFIG_EDAC_SKX=y -CONFIG_EDAC_I10NM=y -CONFIG_EDAC_PND2=y -CONFIG_EDAC_IGEN6=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_ABB5ZES3=y -CONFIG_RTC_DRV_ABEOZ9=y -CONFIG_RTC_DRV_ABX80X=y -CONFIG_RTC_DRV_DS1307=y -CONFIG_RTC_DRV_DS1307_CENTURY=y -CONFIG_RTC_DRV_DS1374=y -CONFIG_RTC_DRV_DS1374_WDT=y -CONFIG_RTC_DRV_DS1672=y -CONFIG_RTC_DRV_MAX6900=y -CONFIG_RTC_DRV_RS5C372=y -CONFIG_RTC_DRV_ISL1208=y -CONFIG_RTC_DRV_ISL12022=y -CONFIG_RTC_DRV_X1205=y -CONFIG_RTC_DRV_PCF8523=y -CONFIG_RTC_DRV_PCF85063=y -CONFIG_RTC_DRV_PCF85363=y -CONFIG_RTC_DRV_PCF8563=y -CONFIG_RTC_DRV_PCF8583=y -CONFIG_RTC_DRV_M41T80=y -CONFIG_RTC_DRV_M41T80_WDT=y -CONFIG_RTC_DRV_BQ32K=y -CONFIG_RTC_DRV_S35390A=y -CONFIG_RTC_DRV_FM3130=y -CONFIG_RTC_DRV_RX8010=y -CONFIG_RTC_DRV_RX8581=y -CONFIG_RTC_DRV_RX8025=y -CONFIG_RTC_DRV_EM3027=y -CONFIG_RTC_DRV_RV3028=y -CONFIG_RTC_DRV_RV3032=y -CONFIG_RTC_DRV_RV8803=y -CONFIG_RTC_DRV_SD3078=y -CONFIG_RTC_DRV_M41T93=y -CONFIG_RTC_DRV_M41T94=y -CONFIG_RTC_DRV_DS1302=y -CONFIG_RTC_DRV_DS1305=y -CONFIG_RTC_DRV_DS1343=y -CONFIG_RTC_DRV_DS1347=y -CONFIG_RTC_DRV_DS1390=y -CONFIG_RTC_DRV_MAX6916=y -CONFIG_RTC_DRV_R9701=y -CONFIG_RTC_DRV_RX4581=y -CONFIG_RTC_DRV_RS5C348=y -CONFIG_RTC_DRV_MAX6902=y -CONFIG_RTC_DRV_PCF2123=y -CONFIG_RTC_DRV_MCP795=y -CONFIG_RTC_DRV_DS3232=y -CONFIG_RTC_DRV_PCF2127=y -CONFIG_RTC_DRV_RV3029C2=y -CONFIG_RTC_DRV_RX6110=y -CONFIG_RTC_DRV_DS1286=y -CONFIG_RTC_DRV_DS1511=y -CONFIG_RTC_DRV_DS1553=y -CONFIG_RTC_DRV_DS1685_FAMILY=y -CONFIG_RTC_DRV_DS1742=y -CONFIG_RTC_DRV_DS2404=y -CONFIG_RTC_DRV_STK17TA8=y -CONFIG_RTC_DRV_M48T86=y -CONFIG_RTC_DRV_M48T35=y -CONFIG_RTC_DRV_M48T59=y -CONFIG_RTC_DRV_MSM6242=y -CONFIG_RTC_DRV_BQ4802=y -CONFIG_RTC_DRV_RP5C01=y -CONFIG_RTC_DRV_V3020=y -CONFIG_RTC_DRV_FTRTC010=y -CONFIG_RTC_DRV_GOLDFISH=y -CONFIG_AUXDISPLAY=y -CONFIG_COMEDI=y -CONFIG_COMEDI_MISC_DRIVERS=y -CONFIG_COMEDI_BOND=y -CONFIG_COMEDI_TEST=y -CONFIG_COMEDI_PARPORT=y -CONFIG_COMEDI_ISA_DRIVERS=y -CONFIG_COMEDI_PCL711=y -CONFIG_COMEDI_PCL724=y -CONFIG_COMEDI_PCL726=y -CONFIG_COMEDI_PCL730=y -CONFIG_COMEDI_PCL812=y -CONFIG_COMEDI_PCL816=y -CONFIG_COMEDI_PCL818=y -CONFIG_COMEDI_PCM3724=y -CONFIG_COMEDI_AMPLC_DIO200_ISA=y -CONFIG_COMEDI_AMPLC_PC236_ISA=y -CONFIG_COMEDI_AMPLC_PC263_ISA=y -CONFIG_COMEDI_RTI800=y -CONFIG_COMEDI_RTI802=y -CONFIG_COMEDI_DAC02=y -CONFIG_COMEDI_DAS16M1=y -CONFIG_COMEDI_DAS08_ISA=y -CONFIG_COMEDI_DAS16=y -CONFIG_COMEDI_DAS800=y -CONFIG_COMEDI_DAS1800=y -CONFIG_COMEDI_DAS6402=y -CONFIG_COMEDI_DT2801=y -CONFIG_COMEDI_DT2811=y -CONFIG_COMEDI_DT2814=y -CONFIG_COMEDI_DT2815=y -CONFIG_COMEDI_DT2817=y -CONFIG_COMEDI_DT282X=y -CONFIG_COMEDI_DMM32AT=y -CONFIG_COMEDI_FL512=y -CONFIG_COMEDI_AIO_AIO12_8=y -CONFIG_COMEDI_AIO_IIRO_16=y -CONFIG_COMEDI_II_PCI20KC=y -CONFIG_COMEDI_C6XDIGIO=y -CONFIG_COMEDI_MPC624=y -CONFIG_COMEDI_ADQ12B=y -CONFIG_COMEDI_NI_AT_A2150=y -CONFIG_COMEDI_NI_AT_AO=y -CONFIG_COMEDI_NI_ATMIO=y -CONFIG_COMEDI_NI_ATMIO16D=y -CONFIG_COMEDI_NI_LABPC_ISA=y -CONFIG_COMEDI_PCMAD=y -CONFIG_COMEDI_PCMDA12=y -CONFIG_COMEDI_PCMMIO=y -CONFIG_COMEDI_PCMUIO=y -CONFIG_COMEDI_MULTIQ3=y -CONFIG_COMEDI_S526=y -CONFIG_COMEDI_PCI_DRIVERS=y -CONFIG_COMEDI_8255_PCI=y -CONFIG_COMEDI_ADDI_APCI_1032=y -CONFIG_COMEDI_ADDI_APCI_1500=y -CONFIG_COMEDI_ADDI_APCI_1516=y -CONFIG_COMEDI_ADDI_APCI_1564=y -CONFIG_COMEDI_ADDI_APCI_16XX=y -CONFIG_COMEDI_ADDI_APCI_2032=y -CONFIG_COMEDI_ADDI_APCI_2200=y -CONFIG_COMEDI_ADDI_APCI_3120=y -CONFIG_COMEDI_ADDI_APCI_3501=y -CONFIG_COMEDI_ADDI_APCI_3XXX=y -CONFIG_COMEDI_ADL_PCI6208=y -CONFIG_COMEDI_ADL_PCI7X3X=y -CONFIG_COMEDI_ADL_PCI8164=y -CONFIG_COMEDI_ADL_PCI9111=y -CONFIG_COMEDI_ADL_PCI9118=y -CONFIG_COMEDI_ADV_PCI1710=y -CONFIG_COMEDI_ADV_PCI1720=y -CONFIG_COMEDI_ADV_PCI1723=y -CONFIG_COMEDI_ADV_PCI1724=y -CONFIG_COMEDI_ADV_PCI1760=y -CONFIG_COMEDI_ADV_PCI_DIO=y -CONFIG_COMEDI_AMPLC_DIO200_PCI=y -CONFIG_COMEDI_AMPLC_PC236_PCI=y -CONFIG_COMEDI_AMPLC_PC263_PCI=y -CONFIG_COMEDI_AMPLC_PCI224=y -CONFIG_COMEDI_AMPLC_PCI230=y -CONFIG_COMEDI_CONTEC_PCI_DIO=y -CONFIG_COMEDI_DAS08_PCI=y -CONFIG_COMEDI_DT3000=y -CONFIG_COMEDI_DYNA_PCI10XX=y -CONFIG_COMEDI_GSC_HPDI=y -CONFIG_COMEDI_MF6X4=y -CONFIG_COMEDI_ICP_MULTI=y -CONFIG_COMEDI_DAQBOARD2000=y -CONFIG_COMEDI_JR3_PCI=y -CONFIG_COMEDI_KE_COUNTER=y -CONFIG_COMEDI_CB_PCIDAS64=y -CONFIG_COMEDI_CB_PCIDAS=y -CONFIG_COMEDI_CB_PCIDDA=y -CONFIG_COMEDI_CB_PCIMDAS=y -CONFIG_COMEDI_CB_PCIMDDA=y -CONFIG_COMEDI_ME4000=y -CONFIG_COMEDI_ME_DAQ=y -CONFIG_COMEDI_NI_6527=y -CONFIG_COMEDI_NI_65XX=y -CONFIG_COMEDI_NI_660X=y -CONFIG_COMEDI_NI_670X=y -CONFIG_COMEDI_NI_LABPC_PCI=y -CONFIG_COMEDI_NI_PCIDIO=y -CONFIG_COMEDI_NI_PCIMIO=y -CONFIG_COMEDI_RTD520=y -CONFIG_COMEDI_S626=y -CONFIG_COMEDI_USB_DRIVERS=y -CONFIG_COMEDI_DT9812=y -CONFIG_COMEDI_NI_USB6501=y -CONFIG_COMEDI_USBDUX=y -CONFIG_COMEDI_USBDUXFAST=y -CONFIG_COMEDI_USBDUXSIGMA=y -CONFIG_COMEDI_VMK80XX=y -CONFIG_COMEDI_8255_SA=y -CONFIG_STAGING=y -CONFIG_RTS5208=y -CONFIG_FB_SM750=y -CONFIG_EXT2_FS=y -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_FS_DAX=y -CONFIG_FANOTIFY=y -CONFIG_FUSE_FS=y -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_UDF_FS=y -CONFIG_VFAT_FS=y -CONFIG_EXFAT_FS=y -CONFIG_NTFS_FS=y -CONFIG_NTFS_RW=y -CONFIG_ECRYPT_FS=y -CONFIG_ECRYPT_FS_MESSAGING=y -CONFIG_SQUASHFS=y -CONFIG_SQUASHFS_XATTR=y -CONFIG_SQUASHFS_LZ4=y -CONFIG_SQUASHFS_LZO=y -CONFIG_SQUASHFS_XZ=y -CONFIG_PSTORE=y -CONFIG_PSTORE_LZO_COMPRESS=y -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_850=y -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_UTF8=y -CONFIG_UNICODE=y -CONFIG_CRC_T10DIF=y -CONFIG_DMA_CMA=y -# CONFIG_FTRACE is not set diff --git a/board/shredos/kernel-5.6-defconfig.config b/board/shredos/kernel-5.6-defconfig.config deleted file mode 100644 index 952dc3d0bf..0000000000 --- a/board/shredos/kernel-5.6-defconfig.config +++ /dev/null @@ -1,1082 +0,0 @@ -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_PREEMPT_VOLUNTARY=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BSD_PROCESS_ACCT_V3=y -CONFIG_LOG_BUF_SHIFT=18 -CONFIG_NUMA_BALANCING=y -CONFIG_MEMCG=y -CONFIG_MEMCG_SWAP=y -# CONFIG_MEMCG_SWAP_ENABLED is not set -CONFIG_BLK_CGROUP=y -CONFIG_CFS_BANDWIDTH=y -CONFIG_CGROUP_PIDS=y -CONFIG_CGROUP_FREEZER=y -CONFIG_CGROUP_HUGETLB=y -CONFIG_CPUSETS=y -CONFIG_CGROUP_DEVICE=y -CONFIG_CGROUP_CPUACCT=y -CONFIG_CGROUP_PERF=y -CONFIG_NAMESPACES=y -CONFIG_USER_NS=y -CONFIG_CHECKPOINT_RESTORE=y -CONFIG_SCHED_AUTOGROUP=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" -CONFIG_EXPERT=y -CONFIG_KALLSYMS_ALL=y -CONFIG_BPF_SYSCALL=y -CONFIG_USERFAULTFD=y -# CONFIG_COMPAT_BRK is not set -CONFIG_PROFILING=y -CONFIG_SMP=y -CONFIG_X86_X2APIC=y -CONFIG_X86_AMD_PLATFORM_DEVICE=y -CONFIG_HYPERVISOR_GUEST=y -CONFIG_PARAVIRT=y -CONFIG_PARAVIRT_SPINLOCKS=y -CONFIG_XEN=y -CONFIG_KVM_DEBUG_FS=y -CONFIG_PROCESSOR_SELECT=y -CONFIG_NR_CPUS=256 -CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y -CONFIG_MICROCODE_AMD=y -CONFIG_NUMA=y -CONFIG_ARCH_MEMORY_PROBE=y -CONFIG_X86_PMEM_LEGACY=y -CONFIG_X86_CHECK_BIOS_CORRUPTION=y -CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 -CONFIG_EFI=y -CONFIG_EFI_STUB=y -CONFIG_EFI_MIXED=y -CONFIG_KEXEC=y -CONFIG_KEXEC_FILE=y -CONFIG_CRASH_DUMP=y -CONFIG_KEXEC_JUMP=y -CONFIG_PHYSICAL_ALIGN=0x1000000 -CONFIG_LIVEPATCH=y -CONFIG_HIBERNATION=y -CONFIG_PM_WAKELOCKS=y -CONFIG_PM_DEBUG=y -CONFIG_PM_ADVANCED_DEBUG=y -CONFIG_PM_TRACE_RTC=y -CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y -CONFIG_ACPI_VIDEO=y -CONFIG_ACPI_DOCK=y -CONFIG_ACPI_HOTPLUG_MEMORY=y -CONFIG_ACPI_BGRT=y -CONFIG_ACPI_APEI=y -CONFIG_ACPI_APEI_GHES=y -CONFIG_ACPI_APEI_MEMORY_FAILURE=y -CONFIG_SFI=y -CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_X86_PCC_CPUFREQ=y -CONFIG_X86_ACPI_CPUFREQ=y -CONFIG_X86_POWERNOW_K8=y -CONFIG_X86_SPEEDSTEP_CENTRINO=y -CONFIG_CPU_IDLE_GOV_LADDER=y -CONFIG_INTEL_IDLE=y -CONFIG_IA32_EMULATION=y -CONFIG_X86_X32=y -CONFIG_EDD=y -CONFIG_EDD_OFF=y -CONFIG_EFI_VARS=y -# CONFIG_EFI_VARS_PSTORE is not set -CONFIG_KPROBES=y -CONFIG_JUMP_LABEL=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_MODULE_SRCVERSION_ALL=y -CONFIG_MODULE_SIG=y -CONFIG_MODULE_SIG_SHA512=y -CONFIG_BLK_DEV_THROTTLING=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_AIX_PARTITION=y -CONFIG_OSF_PARTITION=y -CONFIG_AMIGA_PARTITION=y -CONFIG_ATARI_PARTITION=y -CONFIG_MAC_PARTITION=y -CONFIG_BSD_DISKLABEL=y -CONFIG_MINIX_SUBPARTITION=y -CONFIG_SOLARIS_X86_PARTITION=y -CONFIG_UNIXWARE_DISKLABEL=y -CONFIG_LDM_PARTITION=y -CONFIG_SGI_PARTITION=y -CONFIG_ULTRIX_PARTITION=y -CONFIG_SUN_PARTITION=y -CONFIG_KARMA_PARTITION=y -CONFIG_SYSV68_PARTITION=y -CONFIG_CMDLINE_PARTITION=y -CONFIG_MEMORY_HOTPLUG=y -CONFIG_MEMORY_HOTREMOVE=y -CONFIG_KSM=y -CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 -CONFIG_MEMORY_FAILURE=y -CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_CLEANCACHE=y -CONFIG_FRONTSWAP=y -CONFIG_CMA=y -CONFIG_MEM_SOFT_DIRTY=y -CONFIG_ZSWAP=y -CONFIG_ZBUD=y -CONFIG_ZSMALLOC=y -CONFIG_PGTABLE_MAPPING=y -CONFIG_IDLE_PAGE_TRACKING=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_FIB_TRIE_STATS=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -# CONFIG_INET_DIAG is not set -CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_MD5SIG=y -CONFIG_IPV6_ROUTER_PREF=y -CONFIG_IPV6_ROUTE_INFO=y -# CONFIG_IPV6_SIT is not set -CONFIG_IPV6_MULTIPLE_TABLES=y -CONFIG_IPV6_SUBTREES=y -CONFIG_IPV6_MROUTE=y -CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y -CONFIG_IPV6_PIMSM_V2=y -CONFIG_NETFILTER=y -CONFIG_IP_NF_IPTABLES=y -CONFIG_IP_NF_FILTER=y -CONFIG_NET_SCHED=y -CONFIG_NET_EMATCH=y -CONFIG_NET_CLS_ACT=y -CONFIG_DCB=y -CONFIG_DNS_RESOLVER=y -CONFIG_NET_L3_MASTER_DEV=y -CONFIG_CGROUP_NET_PRIO=y -CONFIG_BPF_JIT=y -# CONFIG_NET_DROP_MONITOR is not set -CONFIG_HAMRADIO=y -CONFIG_CFG80211=y -CONFIG_MAC80211=y -CONFIG_RFKILL=y -CONFIG_RFKILL_INPUT=y -CONFIG_PCI=y -CONFIG_PCIEPORTBUS=y -CONFIG_HOTPLUG_PCI_PCIE=y -CONFIG_PCIEAER_INJECT=y -CONFIG_PCIE_ECRC=y -CONFIG_PCI_IOV=y -CONFIG_PCI_PRI=y -CONFIG_PCI_PASID=y -CONFIG_HOTPLUG_PCI=y -CONFIG_PCI_ENDPOINT=y -CONFIG_PCI_ENDPOINT_CONFIGFS=y -CONFIG_PCI_EPF_TEST=y -CONFIG_PCI_SW_SWITCHTEC=y -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -# CONFIG_STANDALONE is not set -CONFIG_CONNECTOR=y -CONFIG_BLK_DEV_PCIESSD_MTIP32XX=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_NBD=y -CONFIG_BLK_DEV_SKD=y -CONFIG_BLK_DEV_SX8=y -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=65536 -CONFIG_VIRTIO_BLK=y -CONFIG_BLK_DEV_RBD=y -CONFIG_BLK_DEV_RSXX=y -CONFIG_BLK_DEV_NVME=y -CONFIG_NVME_MULTIPATH=y -CONFIG_NVME_HWMON=y -CONFIG_NVME_FC=y -CONFIG_NVME_TCP=y -CONFIG_SRAM=y -CONFIG_BLK_DEV_SD=y -CONFIG_BLK_DEV_SR=y -CONFIG_CHR_DEV_SG=y -CONFIG_SCSI_CONSTANTS=y -CONFIG_SCSI_LOGGING=y -CONFIG_SCSI_SCAN_ASYNC=y -CONFIG_BLK_DEV_3W_XXXX_RAID=y -CONFIG_SCSI_HPSA=y -CONFIG_SCSI_3W_9XXX=y -CONFIG_SCSI_3W_SAS=y -CONFIG_SCSI_ACARD=y -CONFIG_SCSI_AACRAID=y -CONFIG_SCSI_AIC7XXX=y -CONFIG_SCSI_AIC79XX=y -CONFIG_SCSI_AIC94XX=y -CONFIG_SCSI_MVSAS=y -CONFIG_SCSI_MVUMI=y -CONFIG_SCSI_DPT_I2O=y -CONFIG_SCSI_ADVANSYS=y -CONFIG_SCSI_ARCMSR=y -CONFIG_SCSI_ESAS2R=y -CONFIG_MEGARAID_NEWGEN=y -CONFIG_MEGARAID_MM=y -CONFIG_MEGARAID_MAILBOX=y -CONFIG_MEGARAID_LEGACY=y -CONFIG_MEGARAID_SAS=y -CONFIG_SCSI_MPT2SAS=y -CONFIG_SCSI_SMARTPQI=y -CONFIG_SCSI_UFSHCD=y -CONFIG_SCSI_UFSHCD_PCI=y -CONFIG_SCSI_UFS_DWC_TC_PCI=y -CONFIG_SCSI_UFSHCD_PLATFORM=y -CONFIG_SCSI_UFS_CDNS_PLATFORM=y -CONFIG_SCSI_UFS_DWC_TC_PLATFORM=y -CONFIG_SCSI_UFS_BSG=y -CONFIG_SCSI_HPTIOP=y -CONFIG_SCSI_BUSLOGIC=y -CONFIG_SCSI_FLASHPOINT=y -CONFIG_SCSI_MYRB=y -CONFIG_SCSI_MYRS=y -CONFIG_VMWARE_PVSCSI=y -CONFIG_XEN_SCSI_FRONTEND=y -CONFIG_SCSI_DMX3191D=y -CONFIG_SCSI_FDOMAIN_PCI=y -CONFIG_SCSI_GDTH=y -CONFIG_SCSI_ISCI=y -CONFIG_SCSI_IPS=y -CONFIG_SCSI_INITIO=y -CONFIG_SCSI_INIA100=y -CONFIG_SCSI_STEX=y -CONFIG_SCSI_SYM53C8XX_2=y -CONFIG_SCSI_IPR=y -CONFIG_SCSI_QLOGIC_1280=y -CONFIG_SCSI_QLA_ISCSI=y -CONFIG_SCSI_DC395x=y -CONFIG_SCSI_AM53C974=y -CONFIG_SCSI_WD719X=y -CONFIG_SCSI_PMCRAID=y -CONFIG_SCSI_PM8001=y -CONFIG_SCSI_VIRTIO=y -CONFIG_SCSI_DH=y -CONFIG_SCSI_DH_RDAC=y -CONFIG_SCSI_DH_HP_SW=y -CONFIG_SCSI_DH_EMC=y -CONFIG_SCSI_DH_ALUA=y -CONFIG_ATA=y -CONFIG_SATA_ZPODD=y -CONFIG_SATA_AHCI=y -CONFIG_SATA_AHCI_PLATFORM=y -CONFIG_SATA_ACARD_AHCI=y -CONFIG_SATA_SIL24=y -CONFIG_PDC_ADMA=y -CONFIG_SATA_QSTOR=y -CONFIG_ATA_PIIX=y -CONFIG_SATA_MV=y -CONFIG_SATA_NV=y -CONFIG_SATA_PROMISE=y -CONFIG_SATA_SIL=y -CONFIG_SATA_SIS=y -CONFIG_SATA_SVW=y -CONFIG_SATA_ULI=y -CONFIG_SATA_VIA=y -CONFIG_SATA_VITESSE=y -CONFIG_PATA_ALI=y -CONFIG_PATA_AMD=y -CONFIG_PATA_ARTOP=y -CONFIG_PATA_ATIIXP=y -CONFIG_PATA_ATP867X=y -CONFIG_PATA_CMD64X=y -CONFIG_PATA_CYPRESS=y -CONFIG_PATA_EFAR=y -CONFIG_PATA_HPT366=y -CONFIG_PATA_HPT37X=y -CONFIG_PATA_HPT3X2N=y -CONFIG_PATA_HPT3X3=y -CONFIG_PATA_HPT3X3_DMA=y -CONFIG_PATA_IT821X=y -CONFIG_PATA_JMICRON=y -CONFIG_PATA_MARVELL=y -CONFIG_PATA_NETCELL=y -CONFIG_PATA_NINJA32=y -CONFIG_PATA_NS87415=y -CONFIG_PATA_OLDPIIX=y -CONFIG_PATA_PDC2027X=y -CONFIG_PATA_PDC_OLD=y -CONFIG_PATA_RADISYS=y -CONFIG_PATA_RDC=y -CONFIG_PATA_SCH=y -CONFIG_PATA_SERVERWORKS=y -CONFIG_PATA_SIL680=y -CONFIG_PATA_TRIFLEX=y -CONFIG_PATA_VIA=y -CONFIG_PATA_WINBOND=y -CONFIG_PATA_MPIIX=y -CONFIG_PATA_NS87410=y -CONFIG_PATA_PLATFORM=y -CONFIG_PATA_RZ1000=y -CONFIG_PATA_ACPI=y -CONFIG_ATA_GENERIC=y -CONFIG_PATA_LEGACY=y -CONFIG_MD=y -CONFIG_BLK_DEV_MD=y -CONFIG_BLK_DEV_DM=y -CONFIG_DM_UEVENT=y -CONFIG_MACINTOSH_DRIVERS=y -CONFIG_NETDEVICES=y -CONFIG_NET_FC=y -# CONFIG_VXLAN is not set -CONFIG_VORTEX=y -CONFIG_TYPHOON=y -CONFIG_ADAPTEC_STARFIRE=y -CONFIG_ET131X=y -CONFIG_SLICOSS=y -CONFIG_ACENIC=y -CONFIG_ALTERA_TSE=y -CONFIG_AMD8111_ETH=y -CONFIG_PCNET32=y -CONFIG_AMD_XGBE=y -CONFIG_AMD_XGBE_DCB=y -CONFIG_AQTION=y -CONFIG_ATL2=y -CONFIG_ATL1=y -CONFIG_ATL1E=y -CONFIG_ATL1C=y -CONFIG_ALX=y -CONFIG_AURORA_NB8800=y -CONFIG_B44=y -CONFIG_BCMGENET=y -CONFIG_CNIC=y -CONFIG_TIGON3=y -CONFIG_BNX2X=y -CONFIG_SYSTEMPORT=y -CONFIG_BNXT=y -CONFIG_BNXT_DCB=y -CONFIG_BNA=y -CONFIG_MACB=y -CONFIG_MACB_PCI=y -CONFIG_THUNDER_NIC_PF=y -CONFIG_THUNDER_NIC_VF=y -CONFIG_LIQUIDIO=y -CONFIG_CHELSIO_T1=y -CONFIG_CHELSIO_T1_1G=y -CONFIG_CHELSIO_T3=y -CONFIG_CHELSIO_T4=y -CONFIG_CHELSIO_T4_DCB=y -CONFIG_CHELSIO_T4VF=y -CONFIG_ENIC=y -CONFIG_CX_ECAT=y -CONFIG_DNET=y -CONFIG_NET_TULIP=y -CONFIG_DE2104X=y -CONFIG_TULIP=y -CONFIG_TULIP_MWI=y -CONFIG_TULIP_MMIO=y -CONFIG_TULIP_NAPI=y -CONFIG_TULIP_NAPI_HW_MITIGATION=y -CONFIG_DE4X5=y -CONFIG_WINBOND_840=y -CONFIG_DM9102=y -CONFIG_ULI526X=y -CONFIG_DL2K=y -CONFIG_SUNDANCE=y -CONFIG_SUNDANCE_MMIO=y -CONFIG_BE2NET=y -CONFIG_E100=y -CONFIG_E1000=y -CONFIG_E1000E=y -CONFIG_IGB=y -CONFIG_IGBVF=y -CONFIG_IXGB=y -CONFIG_IXGBE=y -CONFIG_IXGBE_DCB=y -CONFIG_I40E=y -CONFIG_I40E_DCB=y -CONFIG_IGC=y -CONFIG_JME=y -CONFIG_MVMDIO=y -CONFIG_SKGE=y -CONFIG_SKGE_DEBUG=y -CONFIG_SKGE_GENESIS=y -CONFIG_SKY2=y -CONFIG_SKY2_DEBUG=y -CONFIG_MLX4_EN=y -CONFIG_MLX5_CORE=y -CONFIG_MLX5_FPGA=y -CONFIG_MLX5_CORE_EN=y -CONFIG_MLX5_CORE_IPOIB=y -CONFIG_MLX5_FPGA_IPSEC=y -CONFIG_MLXSW_CORE=y -CONFIG_MLXSW_PCI=y -CONFIG_MLXSW_I2C=y -CONFIG_MLXSW_MINIMAL=y -CONFIG_KS8851=y -CONFIG_KS8851_MLL=y -CONFIG_KSZ884X_PCI=y -CONFIG_ENC28J60=y -CONFIG_ENC28J60_WRITEVERIFY=y -CONFIG_ENCX24J600=y -CONFIG_LAN743X=y -CONFIG_MYRI10GE=y -CONFIG_FEALNX=y -CONFIG_NATSEMI=y -CONFIG_NS83820=y -CONFIG_S2IO=y -CONFIG_VXGE=y -CONFIG_VXGE_DEBUG_TRACE_ALL=y -CONFIG_NI_XGE_MANAGEMENT_ENET=y -CONFIG_NE2K_PCI=y -CONFIG_FORCEDETH=y -CONFIG_ETHOC=y -CONFIG_HAMACHI=y -CONFIG_YELLOWFIN=y -CONFIG_IONIC=y -CONFIG_QLA3XXX=y -CONFIG_QLCNIC=y -CONFIG_NETXEN_NIC=y -CONFIG_QED=y -CONFIG_QEDE=y -CONFIG_QCOM_EMAC=y -CONFIG_RMNET=y -CONFIG_R6040=y -CONFIG_8139CP=y -CONFIG_8139TOO=y -CONFIG_8139TOO_TUNE_TWISTER=y -CONFIG_8139TOO_8129=y -CONFIG_8139_OLD_RX_RESET=y -CONFIG_R8169=y -CONFIG_SXGBE_ETH=y -CONFIG_SFC=y -CONFIG_SFC_FALCON=y -CONFIG_SC92031=y -CONFIG_SIS900=y -CONFIG_SIS190=y -CONFIG_EPIC100=y -CONFIG_SMSC911X=y -CONFIG_SMSC9420=y -CONFIG_STMMAC_ETH=y -CONFIG_STMMAC_SELFTESTS=y -CONFIG_STMMAC_PCI=y -CONFIG_HAPPYMEAL=y -CONFIG_SUNGEM=y -CONFIG_CASSINI=y -CONFIG_NIU=y -CONFIG_DWC_XLGMAC=y -CONFIG_DWC_XLGMAC_PCI=y -CONFIG_TEHUTI=y -CONFIG_TI_CPSW_PHY_SEL=y -CONFIG_TLAN=y -CONFIG_VIA_RHINE=y -CONFIG_VIA_RHINE_MMIO=y -CONFIG_VIA_VELOCITY=y -CONFIG_WIZNET_W5100=y -CONFIG_WIZNET_W5300=y -CONFIG_WIZNET_W5100_SPI=y -CONFIG_XILINX_AXI_EMAC=y -CONFIG_XILINX_LL_TEMAC=y -CONFIG_NVM=y -CONFIG_INPUT_LEDS=m -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_EVDEV=y -CONFIG_KEYBOARD_ADP5520=y -CONFIG_KEYBOARD_ADP5588=y -CONFIG_KEYBOARD_ADP5589=y -CONFIG_KEYBOARD_LKKBD=y -CONFIG_KEYBOARD_TCA6416=y -CONFIG_KEYBOARD_TCA8418=y -CONFIG_KEYBOARD_MATRIX=y -CONFIG_KEYBOARD_LM8323=m -CONFIG_KEYBOARD_LM8333=y -CONFIG_KEYBOARD_MAX7359=y -CONFIG_KEYBOARD_MCS=y -CONFIG_KEYBOARD_MPR121=y -CONFIG_KEYBOARD_NEWTON=y -CONFIG_KEYBOARD_OPENCORES=y -CONFIG_KEYBOARD_SAMSUNG=y -CONFIG_KEYBOARD_STOWAWAY=y -CONFIG_KEYBOARD_SUNKBD=y -CONFIG_KEYBOARD_TWL4030=y -CONFIG_KEYBOARD_XTKBD=y -CONFIG_MOUSE_SERIAL=y -CONFIG_MOUSE_APPLETOUCH=y -CONFIG_MOUSE_BCM5974=y -CONFIG_MOUSE_SYNAPTICS_I2C=y -CONFIG_MOUSE_SYNAPTICS_USB=y -CONFIG_INPUT_JOYSTICK=y -CONFIG_INPUT_TABLET=y -CONFIG_INPUT_TOUCHSCREEN=y -# CONFIG_TOUCHSCREEN_DA9034 is not set -CONFIG_INPUT_MISC=y -CONFIG_INPUT_UINPUT=y -# CONFIG_INPUT_XEN_KBDDEV_FRONTEND is not set -# CONFIG_SERIO_SERPORT is not set -CONFIG_SERIO_PCIPS2=y -CONFIG_SERIO_ALTERA_PS2=y -CONFIG_SERIO_PS2MULT=y -CONFIG_SERIO_ARC_PS2=y -CONFIG_LEGACY_PTY_COUNT=0 -CONFIG_SERIAL_NONSTANDARD=y -CONFIG_SERIAL_8250=y -# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set -CONFIG_SERIAL_8250_FINTEK=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_NR_UARTS=48 -CONFIG_SERIAL_8250_RUNTIME_UARTS=32 -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_MANY_PORTS=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SERIAL_8250_RSA=y -CONFIG_SERIAL_8250_RT288X=y -CONFIG_SERIAL_KGDB_NMI=y -CONFIG_SERIAL_MAX3100=y -CONFIG_SERIAL_MAX310X=y -CONFIG_SERIAL_UARTLITE=y -CONFIG_SERIAL_UARTLITE_CONSOLE=y -CONFIG_SERIAL_SCCNXP=y -CONFIG_SERIAL_SCCNXP_CONSOLE=y -CONFIG_TTY_PRINTK=y -CONFIG_VIRTIO_CONSOLE=y -CONFIG_HW_RANDOM=y -# CONFIG_HW_RANDOM_VIA is not set -CONFIG_HPET=y -# CONFIG_HW_RANDOM_TPM is not set -CONFIG_I2C_CHARDEV=y -CONFIG_SPI=y -# CONFIG_PTP_1588_CLOCK is not set -CONFIG_PINCTRL_AMD=y -CONFIG_PINCTRL_BAYTRAIL=y -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_PALMAS=y -CONFIG_GPIO_RC5T583=y -CONFIG_GPIO_TPS6586X=y -CONFIG_GPIO_TPS65910=y -CONFIG_POWER_AVS=y -CONFIG_POWER_RESET=y -CONFIG_POWER_RESET_RESTART=y -CONFIG_SENSORS_DRIVETEMP=y -CONFIG_THERMAL_GOV_FAIR_SHARE=y -CONFIG_THERMAL_EMULATION=y -CONFIG_WATCHDOG=y -CONFIG_MFD_AS3711=y -CONFIG_PMIC_ADP5520=y -CONFIG_MFD_AAT2870_CORE=y -CONFIG_PMIC_DA903X=y -CONFIG_MFD_DA9052_SPI=y -CONFIG_MFD_DA9052_I2C=y -CONFIG_MFD_DA9055=y -CONFIG_MFD_DA9063=y -CONFIG_HTC_I2CPLD=y -CONFIG_MFD_88PM860X=y -CONFIG_MFD_MAX14577=y -CONFIG_MFD_MAX77693=y -CONFIG_MFD_MAX77843=y -CONFIG_MFD_MAX8925=y -CONFIG_MFD_MAX8997=y -CONFIG_MFD_MAX8998=y -CONFIG_EZX_PCAP=y -CONFIG_MFD_RC5T583=y -CONFIG_MFD_SEC_CORE=y -CONFIG_MFD_SMSC=y -CONFIG_ABX500_CORE=y -CONFIG_AB3100_CORE=y -# CONFIG_AB3100_OTP is not set -CONFIG_MFD_LP8788=y -CONFIG_MFD_PALMAS=y -CONFIG_MFD_TPS65090=y -CONFIG_MFD_TPS6586X=y -CONFIG_MFD_TPS65910=y -CONFIG_MFD_TPS65912_I2C=y -CONFIG_MFD_TPS65912_SPI=y -CONFIG_MFD_TPS80031=y -CONFIG_TWL4030_CORE=y -CONFIG_TWL6040_CORE=y -CONFIG_MFD_WM8400=y -CONFIG_MFD_WM831X_I2C=y -CONFIG_MFD_WM831X_SPI=y -CONFIG_MFD_WM8350_I2C=y -CONFIG_MEDIA_SUPPORT=y -CONFIG_MEDIA_USB_SUPPORT=y -CONFIG_MEDIA_PCI_SUPPORT=y -CONFIG_VGA_SWITCHEROO=y -CONFIG_DRM=y -CONFIG_DRM_UDL=y -CONFIG_DRM_AST=y -CONFIG_FIRMWARE_EDID=y -CONFIG_FB_CIRRUS=y -CONFIG_FB_PM2=y -CONFIG_FB_PM2_FIFO_DISCONNECT=y -CONFIG_FB_CYBER2000=y -CONFIG_FB_ARC=y -CONFIG_FB_ASILIANT=y -CONFIG_FB_IMSTT=y -CONFIG_FB_VGA16=y -CONFIG_FB_UVESA=y -CONFIG_FB_VESA=y -CONFIG_FB_EFI=y -CONFIG_FB_N411=y -CONFIG_FB_HGA=y -CONFIG_FB_OPENCORES=y -CONFIG_FB_S1D13XXX=y -CONFIG_FB_NVIDIA=y -CONFIG_FB_NVIDIA_I2C=y -CONFIG_FB_RIVA=y -CONFIG_FB_RIVA_I2C=y -CONFIG_FB_I740=y -CONFIG_FB_LE80578=y -CONFIG_FB_MATROX=y -CONFIG_FB_MATROX_MILLENIUM=y -CONFIG_FB_MATROX_MYSTIQUE=y -CONFIG_FB_MATROX_G=y -CONFIG_FB_MATROX_I2C=y -CONFIG_FB_MATROX_MAVEN=y -CONFIG_FB_RADEON=y -CONFIG_FB_ATY128=y -CONFIG_FB_ATY=y -CONFIG_FB_ATY_CT=y -CONFIG_FB_ATY_GENERIC_LCD=y -CONFIG_FB_ATY_GX=y -CONFIG_FB_S3=y -CONFIG_FB_SAVAGE=y -CONFIG_FB_SAVAGE_I2C=y -CONFIG_FB_SAVAGE_ACCEL=y -CONFIG_FB_SIS=y -CONFIG_FB_SIS_300=y -CONFIG_FB_SIS_315=y -CONFIG_FB_VIA=y -CONFIG_FB_NEOMAGIC=y -CONFIG_FB_KYRO=y -CONFIG_FB_3DFX=y -CONFIG_FB_3DFX_ACCEL=y -CONFIG_FB_VOODOO1=y -CONFIG_FB_VT8623=y -CONFIG_FB_TRIDENT=y -CONFIG_FB_ARK=y -CONFIG_FB_PM3=y -CONFIG_FB_CARMINE=y -CONFIG_FB_SMSCUFX=y -CONFIG_FB_UDL=y -CONFIG_FB_IBM_GXT4500=y -CONFIG_FB_METRONOME=y -CONFIG_FB_MB862XX=y -CONFIG_FB_SIMPLE=y -CONFIG_FB_SM712=y -CONFIG_LCD_CLASS_DEVICE=y -CONFIG_LCD_L4F00242T03=y -CONFIG_LCD_LMS283GF05=y -CONFIG_LCD_LTV350QV=y -CONFIG_LCD_ILI922X=y -CONFIG_LCD_TDO24M=y -CONFIG_LCD_VGG2432A4=y -CONFIG_LCD_PLATFORM=y -CONFIG_LCD_AMS369FG06=y -CONFIG_LCD_LMS501KF03=y -CONFIG_LCD_HX8357=y -CONFIG_LCD_OTM3225A=y -CONFIG_BACKLIGHT_PWM=y -CONFIG_BACKLIGHT_DA903X=y -CONFIG_BACKLIGHT_DA9052=y -CONFIG_BACKLIGHT_MAX8925=y -CONFIG_BACKLIGHT_APPLE=y -CONFIG_BACKLIGHT_QCOM_WLED=y -CONFIG_BACKLIGHT_SAHARA=y -CONFIG_BACKLIGHT_WM831X=y -CONFIG_BACKLIGHT_ADP5520=y -CONFIG_BACKLIGHT_ADP8860=y -CONFIG_BACKLIGHT_ADP8870=y -CONFIG_BACKLIGHT_88PM860X=y -CONFIG_BACKLIGHT_AAT2870=y -CONFIG_BACKLIGHT_LM3630A=y -CONFIG_BACKLIGHT_LM3639=y -CONFIG_BACKLIGHT_LP855X=y -CONFIG_BACKLIGHT_LP8788=y -CONFIG_BACKLIGHT_PANDORA=y -CONFIG_BACKLIGHT_AS3711=y -CONFIG_BACKLIGHT_GPIO=y -CONFIG_BACKLIGHT_LV5207LP=y -CONFIG_BACKLIGHT_BD6107=y -CONFIG_BACKLIGHT_ARCXCNN=y -CONFIG_VGACON_SOFT_SCROLLBACK=y -CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -CONFIG_LOGO=y -CONFIG_UHID=y -CONFIG_HID_A4TECH=y -CONFIG_HID_ACCUTOUCH=y -CONFIG_HID_ACRUX=y -CONFIG_HID_ACRUX_FF=y -CONFIG_HID_APPLE=y -CONFIG_HID_APPLEIR=y -CONFIG_HID_AUREAL=y -CONFIG_HID_BELKIN=y -CONFIG_HID_BETOP_FF=y -CONFIG_HID_CHERRY=y -CONFIG_HID_CHICONY=y -CONFIG_HID_CORSAIR=y -CONFIG_HID_COUGAR=y -CONFIG_HID_MACALLY=y -CONFIG_HID_CMEDIA=y -CONFIG_HID_CREATIVE_SB0540=y -CONFIG_HID_ELECOM=y -CONFIG_HID_EZKEY=y -CONFIG_HID_KEYTOUCH=y -CONFIG_HID_KYE=y -CONFIG_HID_UCLOGIC=y -CONFIG_HID_WALTOP=y -CONFIG_HID_VIEWSONIC=y -CONFIG_HID_ITE=y -CONFIG_HID_JABRA=y -CONFIG_HID_LCPOWER=y -CONFIG_HID_LED=y -CONFIG_HID_LENOVO=y -CONFIG_HID_LOGITECH=y -CONFIG_HID_LOGITECH_HIDPP=y -CONFIG_LOGITECH_FF=y -CONFIG_LOGIRUMBLEPAD2_FF=y -CONFIG_LOGIG940_FF=y -CONFIG_HID_MAGICMOUSE=y -CONFIG_HID_MALTRON=y -CONFIG_HID_REDRAGON=y -CONFIG_HID_MICROSOFT=y -CONFIG_HID_MONTEREY=y -CONFIG_HID_MULTITOUCH=y -CONFIG_HID_NTI=y -CONFIG_HID_NTRIG=y -CONFIG_HID_ORTEK=y -CONFIG_HID_PANTHERLORD=y -CONFIG_PANTHERLORD_FF=y -CONFIG_HID_PENMOUNT=y -CONFIG_HID_PETALYNX=y -CONFIG_HID_PICOLCD=y -CONFIG_HID_PICOLCD_FB=y -CONFIG_HID_PICOLCD_LEDS=y -CONFIG_HID_PLANTRONICS=y -CONFIG_HID_PRIMAX=y -CONFIG_HID_ROCCAT=y -CONFIG_HID_SAITEK=y -CONFIG_HID_SAMSUNG=y -CONFIG_HID_SONY=y -CONFIG_SONY_FF=y -CONFIG_HID_SPEEDLINK=y -CONFIG_HID_STEAM=y -CONFIG_HID_SUNPLUS=y -CONFIG_HID_RMI=y -CONFIG_HID_GREENASIA=y -CONFIG_GREENASIA_FF=y -CONFIG_HID_SMARTJOYPLUS=y -CONFIG_SMARTJOYPLUS_FF=y -CONFIG_HID_WACOM=y -CONFIG_HID_SENSOR_HUB=y -CONFIG_HID_SENSOR_CUSTOM_SENSOR=y -CONFIG_HID_ALPS=y -CONFIG_HID_PID=y -CONFIG_USB_HIDDEV=y -CONFIG_I2C_HID=y -CONFIG_INTEL_ISH_HID=y -CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_DYNAMIC_MINORS=y -CONFIG_USB_MON=y -CONFIG_USB_C67X00_HCD=y -CONFIG_USB_XHCI_HCD=y -CONFIG_USB_XHCI_PLATFORM=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_FSL=y -CONFIG_USB_OXU210HP_HCD=y -CONFIG_USB_ISP116X_HCD=y -CONFIG_USB_FOTG210_HCD=y -CONFIG_USB_MAX3421_HCD=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_UHCI_HCD=y -CONFIG_USB_SL811_HCD=y -CONFIG_USB_R8A66597_HCD=y -CONFIG_USB_HCD_SSB=y -CONFIG_USB_STORAGE=y -CONFIG_USB_STORAGE_REALTEK=y -CONFIG_USB_STORAGE_DATAFAB=y -CONFIG_USB_STORAGE_FREECOM=y -CONFIG_USB_STORAGE_ISD200=y -CONFIG_USB_STORAGE_USBAT=y -CONFIG_USB_STORAGE_SDDR09=y -CONFIG_USB_STORAGE_SDDR55=y -CONFIG_USB_STORAGE_JUMPSHOT=y -CONFIG_USB_STORAGE_ALAUDA=y -CONFIG_USB_STORAGE_ONETOUCH=y -CONFIG_USB_STORAGE_KARMA=y -CONFIG_USB_STORAGE_CYPRESS_ATACB=y -CONFIG_USB_STORAGE_ENE_UB6250=y -CONFIG_USB_UAS=y -CONFIG_USB_DWC2=y -CONFIG_USB_DWC2_HOST=y -CONFIG_USB_ISP1760=y -CONFIG_USB_SERIAL=y -CONFIG_USB_SERIAL_CONSOLE=y -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_SIMPLE=y -CONFIG_USB_SERIAL_AIRCABLE=y -CONFIG_USB_SERIAL_ARK3116=y -CONFIG_USB_SERIAL_BELKIN=y -CONFIG_USB_SERIAL_CH341=y -CONFIG_USB_SERIAL_WHITEHEAT=y -CONFIG_USB_SERIAL_DIGI_ACCELEPORT=y -CONFIG_USB_SERIAL_CP210X=y -CONFIG_USB_SERIAL_CYPRESS_M8=y -CONFIG_USB_SERIAL_EMPEG=y -CONFIG_USB_SERIAL_FTDI_SIO=y -CONFIG_USB_SERIAL_VISOR=y -CONFIG_USB_SERIAL_F81232=y -CONFIG_USB_SERIAL_TI=y -CONFIG_USB_SERIAL_WISHBONE=y -CONFIG_USB_SERIAL_SSU100=y -CONFIG_USB_SERIAL_QT2=y -CONFIG_USB_SERIAL_UPD78F0730=y -CONFIG_USB_CYPRESS_CY7C63=y -CONFIG_USB_HUB_USB251XB=y -CONFIG_USB_HSIC_USB3503=y -CONFIG_USB_HSIC_USB4604=y -CONFIG_USB_GADGET=y -CONFIG_USB_FOTG210_UDC=y -CONFIG_USB_GR_UDC=y -CONFIG_USB_R8A66597=y -CONFIG_USB_PXA27X=y -CONFIG_USB_MV_UDC=y -CONFIG_USB_MV_U3D=y -CONFIG_USB_M66592=y -CONFIG_USB_BDC_UDC=y -CONFIG_USB_AMD5536UDC=y -CONFIG_USB_NET2272=y -CONFIG_USB_NET2272_DMA=y -CONFIG_USB_NET2280=y -CONFIG_USB_GOKU=y -CONFIG_USB_EG20T=y -CONFIG_TYPEC=y -CONFIG_TYPEC_TCPM=y -CONFIG_TYPEC_TCPCI=y -CONFIG_TYPEC_RT1711H=y -CONFIG_TYPEC_FUSB302=y -CONFIG_TYPEC_UCSI=y -CONFIG_UCSI_CCG=y -CONFIG_UCSI_ACPI=y -CONFIG_TYPEC_HD3SS3220=y -CONFIG_TYPEC_TPS6598X=y -CONFIG_TYPEC_MUX_PI3USB30532=y -CONFIG_TYPEC_DP_ALTMODE=y -CONFIG_TYPEC_NVIDIA_ALTMODE=y -CONFIG_USB_ROLES_INTEL_XHCI=y -CONFIG_MMC=y -CONFIG_MEMSTICK=y -CONFIG_EDAC=y -# CONFIG_EDAC_LEGACY_SYSFS is not set -CONFIG_RTC_CLASS=y -# CONFIG_RTC_DRV_AB3100 is not set -CONFIG_AUXDISPLAY=y -CONFIG_VIRT_DRIVERS=y -CONFIG_VIRTIO_BALLOON=y -CONFIG_VIRTIO_MMIO=y -CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y -CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y -# CONFIG_XEN_DEV_EVTCHN is not set -# CONFIG_XEN_BACKEND is not set -# CONFIG_XENFS is not set -CONFIG_STAGING=y -CONFIG_PRISM2_USB=y -CONFIG_COMEDI=y -CONFIG_COMEDI_MISC_DRIVERS=y -CONFIG_COMEDI_ISA_DRIVERS=y -CONFIG_COMEDI_PCL711=y -CONFIG_COMEDI_PCL724=y -CONFIG_COMEDI_PCL726=y -CONFIG_COMEDI_PCL730=y -CONFIG_COMEDI_PCL812=y -CONFIG_COMEDI_PCL816=y -CONFIG_COMEDI_PCL818=y -CONFIG_COMEDI_PCM3724=y -CONFIG_COMEDI_AMPLC_DIO200_ISA=y -CONFIG_COMEDI_AMPLC_PC236_ISA=y -CONFIG_COMEDI_AMPLC_PC263_ISA=y -CONFIG_COMEDI_RTI800=y -CONFIG_COMEDI_RTI802=y -CONFIG_COMEDI_DAC02=y -CONFIG_COMEDI_DAS16M1=y -CONFIG_COMEDI_DAS08_ISA=y -CONFIG_COMEDI_DAS16=y -CONFIG_COMEDI_DAS800=y -CONFIG_COMEDI_DAS1800=y -CONFIG_COMEDI_DAS6402=y -CONFIG_COMEDI_DT2801=y -CONFIG_COMEDI_DT2811=y -CONFIG_COMEDI_DT2814=y -CONFIG_COMEDI_DT2815=y -CONFIG_COMEDI_DT2817=y -CONFIG_COMEDI_DT282X=y -CONFIG_COMEDI_DMM32AT=y -CONFIG_COMEDI_FL512=y -CONFIG_COMEDI_AIO_AIO12_8=y -CONFIG_COMEDI_AIO_IIRO_16=y -CONFIG_COMEDI_II_PCI20KC=y -CONFIG_COMEDI_C6XDIGIO=y -CONFIG_COMEDI_MPC624=y -CONFIG_COMEDI_ADQ12B=y -CONFIG_COMEDI_NI_AT_A2150=y -CONFIG_COMEDI_NI_AT_AO=y -CONFIG_COMEDI_NI_ATMIO=y -CONFIG_COMEDI_NI_ATMIO16D=y -CONFIG_COMEDI_NI_LABPC_ISA=y -CONFIG_COMEDI_PCMAD=y -CONFIG_COMEDI_PCMDA12=y -CONFIG_COMEDI_PCMMIO=y -CONFIG_COMEDI_PCMUIO=y -CONFIG_COMEDI_MULTIQ3=y -CONFIG_COMEDI_S526=y -CONFIG_COMEDI_PCI_DRIVERS=y -CONFIG_COMEDI_8255_PCI=y -CONFIG_COMEDI_ADDI_APCI_1032=y -CONFIG_COMEDI_ADDI_APCI_1500=y -CONFIG_COMEDI_ADDI_APCI_1516=y -CONFIG_COMEDI_ADDI_APCI_1564=y -CONFIG_COMEDI_ADDI_APCI_16XX=y -CONFIG_COMEDI_ADDI_APCI_2032=y -CONFIG_COMEDI_ADDI_APCI_2200=y -CONFIG_COMEDI_ADDI_APCI_3120=y -CONFIG_COMEDI_ADDI_APCI_3501=y -CONFIG_COMEDI_ADDI_APCI_3XXX=y -CONFIG_COMEDI_ADL_PCI6208=y -CONFIG_COMEDI_ADL_PCI7X3X=y -CONFIG_COMEDI_ADL_PCI8164=y -CONFIG_COMEDI_ADL_PCI9111=y -CONFIG_COMEDI_ADL_PCI9118=y -CONFIG_COMEDI_ADV_PCI1710=y -CONFIG_COMEDI_ADV_PCI1720=y -CONFIG_COMEDI_ADV_PCI1723=y -CONFIG_COMEDI_ADV_PCI1724=y -CONFIG_COMEDI_ADV_PCI1760=y -CONFIG_COMEDI_ADV_PCI_DIO=y -CONFIG_COMEDI_AMPLC_DIO200_PCI=y -CONFIG_COMEDI_AMPLC_PC236_PCI=y -CONFIG_COMEDI_AMPLC_PC263_PCI=y -CONFIG_COMEDI_AMPLC_PCI224=y -CONFIG_COMEDI_AMPLC_PCI230=y -CONFIG_COMEDI_CONTEC_PCI_DIO=y -CONFIG_COMEDI_DAS08_PCI=y -CONFIG_COMEDI_DT3000=y -CONFIG_COMEDI_DYNA_PCI10XX=y -CONFIG_COMEDI_GSC_HPDI=y -CONFIG_COMEDI_MF6X4=y -CONFIG_COMEDI_ICP_MULTI=y -CONFIG_COMEDI_DAQBOARD2000=y -CONFIG_COMEDI_JR3_PCI=y -CONFIG_COMEDI_KE_COUNTER=y -CONFIG_COMEDI_CB_PCIDAS64=y -CONFIG_COMEDI_CB_PCIDAS=y -CONFIG_COMEDI_CB_PCIDDA=y -CONFIG_COMEDI_CB_PCIMDAS=y -CONFIG_COMEDI_CB_PCIMDDA=y -CONFIG_COMEDI_ME4000=y -CONFIG_COMEDI_ME_DAQ=y -CONFIG_COMEDI_NI_6527=y -CONFIG_COMEDI_NI_65XX=y -CONFIG_COMEDI_NI_660X=y -CONFIG_COMEDI_NI_670X=y -CONFIG_COMEDI_NI_LABPC_PCI=y -CONFIG_COMEDI_NI_PCIDIO=y -CONFIG_COMEDI_NI_PCIMIO=y -CONFIG_COMEDI_RTD520=y -CONFIG_COMEDI_S626=y -CONFIG_COMEDI_USB_DRIVERS=y -CONFIG_COMEDI_DT9812=y -CONFIG_COMEDI_NI_USB6501=y -CONFIG_COMEDI_USBDUX=y -CONFIG_COMEDI_USBDUXFAST=y -CONFIG_COMEDI_USBDUXSIGMA=y -CONFIG_COMEDI_VMK80XX=y -CONFIG_COMEDI_8255_SA=y -CONFIG_COMEDI_KCOMEDILIB=y -CONFIG_STAGING_MEDIA=y -CONFIG_UNISYSSPAR=y -CONFIG_ACPI_WMI=y -CONFIG_SOC_TI=y -CONFIG_MEMORY=y -CONFIG_PWM=y -CONFIG_POWERCAP=y -# CONFIG_BLK_DEV_PMEM is not set -# CONFIG_ND_BLK is not set -CONFIG_EXT2_FS=y -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_FS_DAX=y -CONFIG_FANOTIFY=y -CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y -CONFIG_FUSE_FS=y -CONFIG_VFAT_FS=y -CONFIG_PROC_KCORE=y -CONFIG_TMPFS=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_HUGETLBFS=y -CONFIG_EFIVAR_FS=y -CONFIG_ECRYPT_FS=y -CONFIG_ECRYPT_FS_MESSAGING=y -CONFIG_SQUASHFS=y -CONFIG_SQUASHFS_FILE_DIRECT=y -CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y -CONFIG_SQUASHFS_XATTR=y -CONFIG_SQUASHFS_LZ4=y -CONFIG_SQUASHFS_LZO=y -CONFIG_SQUASHFS_XZ=y -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ISO8859_1=y -CONFIG_PERSISTENT_KEYRINGS=y -CONFIG_BIG_KEYS=y -CONFIG_TRUSTED_KEYS=y -CONFIG_SECURITY=y -CONFIG_LSM_MMAP_MIN_ADDR=0 -CONFIG_SECURITY_SELINUX=y -CONFIG_SECURITY_SELINUX_BOOTPARAM=y -CONFIG_SECURITY_SELINUX_DISABLE=y -CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 -CONFIG_SECURITY_SMACK=y -CONFIG_SECURITY_SMACK_NETFILTER=y -CONFIG_SECURITY_TOMOYO=y -CONFIG_SECURITY_APPARMOR=y -CONFIG_SECURITY_YAMA=y -CONFIG_INTEGRITY_SIGNATURE=y -CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y -CONFIG_IMA=y -CONFIG_IMA_APPRAISE=y -CONFIG_EVM=y -CONFIG_EVM_EXTRA_SMACK_XATTRS=y -CONFIG_DEFAULT_SECURITY_APPARMOR=y -CONFIG_CRYPTO_CRC32C_INTEL=y -CONFIG_CRYPTO_DRBG_HASH=y -CONFIG_CRYPTO_DRBG_CTR=y -CONFIG_CRYPTO_DEV_PADLOCK=y -CONFIG_SIGNED_PE_FILE_VERIFICATION=y -CONFIG_CRC_T10DIF=y -CONFIG_PRINTK_TIME=y -CONFIG_BOOT_PRINTK_DELAY=y -CONFIG_DYNAMIC_DEBUG=y -# CONFIG_ENABLE_MUST_CHECK is not set -CONFIG_FRAME_WARN=1024 -CONFIG_KGDB=y -CONFIG_KGDB_LOW_LEVEL_TRAP=y -CONFIG_KGDB_KDB=y -CONFIG_KDB_KEYBOARD=y -CONFIG_SCHED_STACK_END_CHECK=y -CONFIG_SCHEDSTATS=y -CONFIG_RCU_CPU_STALL_TIMEOUT=60 -CONFIG_FUNCTION_PROFILER=y -CONFIG_STACK_TRACER=y -CONFIG_SCHED_TRACER=y -CONFIG_FTRACE_SYSCALLS=y -CONFIG_BLK_DEV_IO_TRACE=y -# CONFIG_X86_VERBOSE_BOOTUP is not set -CONFIG_IO_DELAY_0XED=y -CONFIG_MEMTEST=y diff --git a/board/shredos/kernel-6.3-defconfig.config b/board/shredos/kernel-6.4-defconfig.config similarity index 97% rename from board/shredos/kernel-6.3-defconfig.config rename to board/shredos/kernel-6.4-defconfig.config index c2cb157f8a..7121ef9eef 100644 --- a/board/shredos/kernel-6.3-defconfig.config +++ b/board/shredos/kernel-6.4-defconfig.config @@ -72,15 +72,12 @@ CONFIG_DNS_RESOLVER=y CONFIG_NET_L3_MASTER_DEV=y CONFIG_CGROUP_NET_PRIO=y CONFIG_PCI=y -CONFIG_PCIEPORTBUS=y -CONFIG_HOTPLUG_PCI_PCIE=y CONFIG_PCIEAER=y CONFIG_PCIEAER_INJECT=y CONFIG_PCIE_ECRC=y CONFIG_PCI_IOV=y CONFIG_PCI_PRI=y CONFIG_PCI_PASID=y -CONFIG_HOTPLUG_PCI=y CONFIG_HOTPLUG_PCI_ACPI=y CONFIG_HOTPLUG_PCI_ACPI_IBM=y CONFIG_HOTPLUG_PCI_CPCI=y @@ -156,7 +153,10 @@ CONFIG_SCSI_STEX=y CONFIG_SCSI_SYM53C8XX_2=y CONFIG_SCSI_IPR=y CONFIG_SCSI_QLOGIC_1280=y +CONFIG_SCSI_QLA_FC=y CONFIG_SCSI_QLA_ISCSI=y +CONFIG_QEDI=y +CONFIG_SCSI_LPFC=y CONFIG_SCSI_DC395x=y CONFIG_SCSI_AM53C974=y CONFIG_SCSI_WD719X=y @@ -234,6 +234,7 @@ CONFIG_PATA_RZ1000=y CONFIG_PATA_ACPI=y CONFIG_ATA_GENERIC=y CONFIG_PATA_LEGACY=y +CONFIG_MD=y CONFIG_FUSION=y CONFIG_FUSION_SPI=y CONFIG_FUSION_FC=y @@ -302,7 +303,6 @@ CONFIG_E1000=y CONFIG_E1000E=y CONFIG_IGB=y CONFIG_IGBVF=y -CONFIG_IXGB=y CONFIG_IXGBE=y CONFIG_IXGBE_DCB=y CONFIG_I40E=y @@ -625,7 +625,6 @@ CONFIG_DRM_RADEON_USERPTR=y CONFIG_DRM_AMDGPU=y CONFIG_DRM_AMDGPU_SI=y CONFIG_DRM_AMDGPU_CIK=y -CONFIG_DRM_AMD_DC_HDCP=y CONFIG_DRM_AMD_DC_SI=y CONFIG_HSA_AMD=y CONFIG_DRM_NOUVEAU=y @@ -730,6 +729,7 @@ CONFIG_LCD_OTM3225A=y CONFIG_BACKLIGHT_KTD253=y CONFIG_BACKLIGHT_KTZ8866=y CONFIG_BACKLIGHT_LM3533=y +CONFIG_BACKLIGHT_CARILLO_RANCH=y CONFIG_BACKLIGHT_DA903X=y CONFIG_BACKLIGHT_DA9052=y CONFIG_BACKLIGHT_MAX8925=y @@ -827,6 +827,8 @@ CONFIG_I2C_HID_ACPI=y CONFIG_INTEL_ISH_HID=y CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER=y CONFIG_AMD_SFH_HID=y +CONFIG_SURFACE_HID=y +CONFIG_SURFACE_KBD=y CONFIG_USB_LED_TRIG=y CONFIG_USB_CONN_GPIO=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y @@ -1035,7 +1037,6 @@ CONFIG_LEDS_LM36274=y CONFIG_LEDS_AS3645A=y CONFIG_LEDS_LM3601X=y CONFIG_LEDS_SGM3140=y -CONFIG_LEDS_TRIGGERS=y CONFIG_EDAC=y CONFIG_EDAC_AMD64=y CONFIG_EDAC_E752X=y @@ -1234,6 +1235,34 @@ CONFIG_COMEDI_VMK80XX=y CONFIG_COMEDI_8255_SA=y CONFIG_STAGING=y CONFIG_RTS5208=y +CONFIG_CHROME_PLATFORMS=y +CONFIG_CHROMEOS_ACPI=y +CONFIG_CHROMEOS_LAPTOP=y +CONFIG_CHROMEOS_PSTORE=y +CONFIG_CHROMEOS_TBMC=y +CONFIG_CROS_EC=y +CONFIG_CROS_EC_I2C=y +CONFIG_CROS_EC_ISHTP=y +CONFIG_CROS_EC_SPI=y +CONFIG_CROS_EC_UART=y +CONFIG_CROS_EC_LPC=y +CONFIG_CROS_KBD_LED_BACKLIGHT=y +CONFIG_CROS_HPS_I2C=y +CONFIG_WILCO_EC=y +CONFIG_SURFACE3_WMI=y +CONFIG_SURFACE_ACPI_NOTIFY=y +CONFIG_SURFACE_AGGREGATOR_CDEV=y +CONFIG_SURFACE_AGGREGATOR_HUB=y +CONFIG_SURFACE_AGGREGATOR_REGISTRY=y +CONFIG_SURFACE_AGGREGATOR_TABLET_SWITCH=y +CONFIG_SURFACE_DTX=y +CONFIG_SURFACE_GPE=y +CONFIG_SURFACE_HOTPLUG=y +CONFIG_SURFACE_PLATFORM_PROFILE=y +CONFIG_SURFACE_PRO3_BUTTON=y +CONFIG_SURFACE_AGGREGATOR=y +CONFIG_X86_PLATFORM_DRIVERS_DELL=y +CONFIG_USB4=y CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_SECURITY=y @@ -1269,5 +1298,4 @@ CONFIG_SECURITY=y CONFIG_SECURITY_NETWORK=y CONFIG_SECURITY_SELINUX=y CONFIG_LSM="selinux" -CONFIG_CRC_T10DIF=y # CONFIG_FTRACE is not set diff --git a/board/shredos/version.txt b/board/shredos/version.txt index 1e30240e74..bab34d369a 100644 --- a/board/shredos/version.txt +++ b/board/shredos/version.txt @@ -1 +1 @@ -2023.05_24.0_x86-64_0.34 +2023.08.2_25.0_x86-64_0.35 diff --git a/board/stmicroelectronics/common/stm32f4xx/busybox.fragment b/board/stmicroelectronics/common/stm32f4xx/busybox.fragment new file mode 100644 index 0000000000..d0bf2cb99d --- /dev/null +++ b/board/stmicroelectronics/common/stm32f4xx/busybox.fragment @@ -0,0 +1,21 @@ +# CONFIG_FEATURE_HWIB is not set +# CONFIG_HOSTNAME is not set +# CONFIG_DNSDOMAINNAME is not set +# CONFIG_FEATURE_HTTPD_PORT_DEFAULT is not set +# CONFIG_IFCONFIG is not set +# CONFIG_FEATURE_IFCONFIG_HW is not set +# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set +# CONFIG_IFUP is not set +# CONFIG_IFDOWN is not set +# CONFIG_IP is not set +# CONFIG_IPADDR is not set +# CONFIG_IPLINK is not set +# CONFIG_IPROUTE is not set +# CONFIG_NC is not set +# CONFIG_NETSTAT is not set +# CONFIG_PING is not set +# CONFIG_ROUTE is not set +# CONFIG_TC is not set +# CONFIG_TELNET is not set +# CONFIG_WGET is not set +# CONFIG_UDHCPC is not set diff --git a/board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh b/board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh index 2ac9c653c3..4fcce61500 100755 --- a/board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh +++ b/board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh @@ -1,4 +1,7 @@ #!/bin/sh +# Busybox is built without network support +sed -i '/hostname/d' ${TARGET_DIR}/etc/inittab + # Kernel is built without devpts support sed -i '/^devpts/d' ${TARGET_DIR}/etc/fstab diff --git a/board/versal/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch b/board/versal/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 120000 index 0000000000..695cc80b94 --- /dev/null +++ b/board/versal/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1 @@ +../../../../boot/arm-trusted-firmware/v2.6/0001-feat-build-add-support-for-new-binutils-versions.patch \ No newline at end of file diff --git a/board/versal/post-build.sh b/board/versal/post-build.sh index ff8f8a6071..ed08ea2d49 100755 --- a/board/versal/post-build.sh +++ b/board/versal/post-build.sh @@ -3,9 +3,8 @@ # genimage will need to find the extlinux.conf # in the binaries directory -BOARD_DIR="$(dirname $0)" -CONSOLE=$2 -ROOT=$3 +CONSOLE="$2" +ROOT="$3" mkdir -p "${BINARIES_DIR}" cat <<-__HEADER_EOF > "${BINARIES_DIR}/extlinux.conf" diff --git a/board/versal/post-image.sh b/board/versal/post-image.sh index 92e65ed3b7..1d9802c34d 100755 --- a/board/versal/post-image.sh +++ b/board/versal/post-image.sh @@ -6,12 +6,12 @@ FIRST_DT=$(sed -nr \ -e 's|^BR2_LINUX_KERNEL_INTREE_DTS_NAME="(xilinx/)?([-_/[:alnum:]\\.]*).*"$|\2|p' \ - ${BR2_CONFIG}) + "${BR2_CONFIG}") -[ -z "${FIRST_DT}" ] || ln -fs ${FIRST_DT}.dtb ${BINARIES_DIR}/system.dtb +[ -z "${FIRST_DT}" ] || ln -fs "${FIRST_DT}.dtb" "${BINARIES_DIR}/system.dtb" -BOARD_DIR="$(dirname $0)" -BOARD_NAME=$4 +BOARD_DIR="$(dirname "$0")" +BOARD_NAME="$4" mkdir -p "${BINARIES_DIR}" cat <<-__HEADER_EOF > "${BINARIES_DIR}/bootgen.bif" @@ -23,7 +23,7 @@ cat <<-__HEADER_EOF > "${BINARIES_DIR}/bootgen.bif" { core=psm, file=${BINARIES_DIR}/${BOARD_NAME}_psmfw.elf } } image { - id = 0x1c000000, name=apu_subsystem + id = 0x1c000000, name=apu_subsystem { type=raw, load=0x00001000, file=${BINARIES_DIR}/u-boot.dtb } { core=a72-0, exception_level=el-3, trustzone, file=${BINARIES_DIR}/bl31.elf } { core=a72-0, exception_level=el-2, file=${BINARIES_DIR}/u-boot.elf } @@ -31,5 +31,5 @@ cat <<-__HEADER_EOF > "${BINARIES_DIR}/bootgen.bif" } __HEADER_EOF -${HOST_DIR}/bin/bootgen -arch versal -image ${BINARIES_DIR}/bootgen.bif -o ${BINARIES_DIR}/boot.bin -w on -support/scripts/genimage.sh -c ${BOARD_DIR}/genimage.cfg +"${HOST_DIR}/bin/bootgen" -arch versal -image "${BINARIES_DIR}/bootgen.bif" -o "${BINARIES_DIR}/boot.bin" -w on +support/scripts/genimage.sh -c "${BOARD_DIR}/genimage.cfg" diff --git a/board/zynq/post-image.sh b/board/zynq/post-image.sh index 627c8ac41a..192354b5be 100755 --- a/board/zynq/post-image.sh +++ b/board/zynq/post-image.sh @@ -1,6 +1,6 @@ #!/bin/sh -# By default U-Boot loads DTB from a file named "devicetree.dtb", so +# By default U-Boot loads DTB from a file named "system.dtb", so # let's use a symlink with that name that points to the *first* # devicetree listed in the config. diff --git a/board/zynqmp/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch b/board/zynqmp/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 120000 index 0000000000..695cc80b94 --- /dev/null +++ b/board/zynqmp/patches/arm-trusted-firmware/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1 @@ +../../../../boot/arm-trusted-firmware/v2.6/0001-feat-build-add-support-for-new-binutils-versions.patch \ No newline at end of file diff --git a/boot/Config.in b/boot/Config.in index 58366e035e..9d7f5c4cb9 100644 --- a/boot/Config.in +++ b/boot/Config.in @@ -12,7 +12,6 @@ source "boot/binaries-marvell/Config.in" source "boot/boot-wrapper-aarch64/Config.in" source "boot/edk2/Config.in" source "boot/grub2/Config.in" -source "boot/lpc32xxcdl/Config.in" source "boot/mv-ddr-marvell/Config.in" source "boot/mxs-bootlets/Config.in" source "boot/optee-os/Config.in" diff --git a/boot/arm-trusted-firmware/v2.2/0001-PATCH-feat-build-add-support-for-new-binutils-versio.patch b/boot/arm-trusted-firmware/v2.2/0001-PATCH-feat-build-add-support-for-new-binutils-versio.patch new file mode 100644 index 0000000000..d4d2b068f3 --- /dev/null +++ b/boot/arm-trusted-firmware/v2.2/0001-PATCH-feat-build-add-support-for-new-binutils-versio.patch @@ -0,0 +1,59 @@ +From 5e1beb793c06352e87c46eca1144ff1fe8555103 Mon Sep 17 00:00:00 2001 +From: Heiko Thiery +Date: Mon, 10 Jul 2023 10:43:03 +0200 +Subject: [PATCH] [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 + +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 721246d51..5893cf422 100644 +--- a/Makefile ++++ b/Makefile +@@ -297,11 +297,16 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 + TF_LDFLAGS += --remove --info=unused,unusedsymbols + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + endif + TF_LDFLAGS += $(TF_LDFLAGS_$(ARCH)) +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.3/0001-feat-build-add-support-for-new-binutils-versions.patch b/boot/arm-trusted-firmware/v2.3/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 0000000000..335c18553a --- /dev/null +++ b/boot/arm-trusted-firmware/v2.3/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.4/0001-feat-build-add-support-for-new-binutils-versions.patch b/boot/arm-trusted-firmware/v2.4/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 0000000000..335c18553a --- /dev/null +++ b/boot/arm-trusted-firmware/v2.4/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.5/0001-feat-build-add-support-for-new-binutils-versions.patch b/boot/arm-trusted-firmware/v2.5/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 0000000000..335c18553a --- /dev/null +++ b/boot/arm-trusted-firmware/v2.5/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.6/0001-feat-build-add-support-for-new-binutils-versions.patch b/boot/arm-trusted-firmware/v2.6/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 0000000000..335c18553a --- /dev/null +++ b/boot/arm-trusted-firmware/v2.6/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.7/0001-feat-build-add-support-for-new-binutils-versions.patch b/boot/arm-trusted-firmware/v2.7/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 0000000000..335c18553a --- /dev/null +++ b/boot/arm-trusted-firmware/v2.7/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.8/0001-feat-build-add-support-for-new-binutils-versions.patch b/boot/arm-trusted-firmware/v2.8/0001-feat-build-add-support-for-new-binutils-versions.patch new file mode 100644 index 0000000000..335c18553a --- /dev/null +++ b/boot/arm-trusted-firmware/v2.8/0001-feat-build-add-support-for-new-binutils-versions.patch @@ -0,0 +1,61 @@ +From 0f75b03c008eacb9818af3a56dc088e72a623d17 Mon Sep 17 00:00:00 2001 +From: Marco Felsch +Date: Wed, 9 Nov 2022 12:59:09 +0100 +Subject: [PATCH] feat(build): add support for new binutils versions + +Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces +of a new warning when linking the bl*.elf in the form: + + ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack + ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions + ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions + +These new warnings are enbaled by default to secure elf binaries: + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 + - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774 + +Fix it in a similar way to what the Linux kernel does, see: +https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/ + +Following the reasoning there, we set "-z noexecstack" for all linkers +(although LLVM's LLD defaults to it) and optional add +--no-warn-rwx-segments since this a ld.bfd related. + +Signed-off-by: Marco Felsch +Signed-off-by: Robert Schwebel +Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617 +Signed-off-by: Heiko Thiery +Upstream: https://github.com/ARM-software/arm-trusted-firmware/commit/1f49db5f25cdd4e43825c9bcc0575070b80f628c +--- + Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1ddb7b844..470956b19 100644 +--- a/Makefile ++++ b/Makefile +@@ -416,6 +416,8 @@ endif + + GCC_V_OUTPUT := $(shell $(CC) -v 2>&1) + ++TF_LDFLAGS += -z noexecstack ++ + # LD = armlink + ifneq ($(findstring armlink,$(notdir $(LD))),) + TF_LDFLAGS += --diag_error=warning --lto_level=O1 +@@ -442,7 +444,10 @@ TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) + + # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other + else +-TF_LDFLAGS += --fatal-warnings -O1 ++# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we ++# are not loaded by a elf loader. ++TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ++TF_LDFLAGS += -O1 + TF_LDFLAGS += --gc-sections + # ld.lld doesn't recognize the errata flags, + # therefore don't add those in that case +-- +2.30.2 + diff --git a/boot/arm-trusted-firmware/v2.8/0002-build-tools-avoid-unnecessary-link.patch b/boot/arm-trusted-firmware/v2.8/0002-build-tools-avoid-unnecessary-link.patch new file mode 100644 index 0000000000..9e0ea74248 --- /dev/null +++ b/boot/arm-trusted-firmware/v2.8/0002-build-tools-avoid-unnecessary-link.patch @@ -0,0 +1,77 @@ +From aa57ce632c629fe72ff417e261e0f5bfd8db6bab Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= +Date: Tue, 4 Jul 2023 16:14:02 +0200 +Subject: [PATCH] build(tools): avoid unnecessary link +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In their respective makefiles, cert_create, encrypt_fw and fiptool +depend on the --openssl phony target as a prerequisite. This forces +those tools to be re-linked each time. + +Move the dependencies on the --openssl target from the tools to their +makefiles all targets, to avoid unnecessary linking while preserving the +OpenSSL version printing done in the --openssl targets when in debug. + +Fixes: cf2dd17ddda2 ("refactor(security): add OpenSSL 1.x compatibility") +Signed-off-by: Vincent Stehlé +Change-Id: I98a3ab30f36dffc253cecaaf3a57d2712522135d +Upstream: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/commit/?id=aa57ce632c629fe72ff417e261e0f5bfd8db6bab +--- + tools/cert_create/Makefile | 4 ++-- + tools/encrypt_fw/Makefile | 4 ++-- + tools/fiptool/Makefile | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/tools/cert_create/Makefile b/tools/cert_create/Makefile +index 042e844626..b911d19d2b 100644 +--- a/tools/cert_create/Makefile ++++ b/tools/cert_create/Makefile +@@ -85,9 +85,9 @@ HOSTCC ?= gcc + + .PHONY: all clean realclean --openssl + +-all: ${BINARY} ++all: --openssl ${BINARY} + +-${BINARY}: --openssl ${OBJECTS} Makefile ++${BINARY}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + @echo 'const char build_msg[] = "Built : "__TIME__", "__DATE__; \ + const char platform_msg[] = "${PLAT_MSG}";' | \ +diff --git a/tools/encrypt_fw/Makefile b/tools/encrypt_fw/Makefile +index 2939b142be..924e5febab 100644 +--- a/tools/encrypt_fw/Makefile ++++ b/tools/encrypt_fw/Makefile +@@ -65,9 +65,9 @@ HOSTCC ?= gcc + + .PHONY: all clean realclean --openssl + +-all: ${BINARY} ++all: --openssl ${BINARY} + +-${BINARY}: --openssl ${OBJECTS} Makefile ++${BINARY}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + @echo 'const char build_msg[] = "Built : "__TIME__", "__DATE__;' | \ + ${HOSTCC} -c ${HOSTCCFLAGS} -xc - -o src/build_msg.o +diff --git a/tools/fiptool/Makefile b/tools/fiptool/Makefile +index 2ebee33931..4bdebd9235 100644 +--- a/tools/fiptool/Makefile ++++ b/tools/fiptool/Makefile +@@ -68,9 +68,9 @@ DEPS := $(patsubst %.o,%.d,$(OBJECTS)) + + .PHONY: all clean distclean --openssl + +-all: ${PROJECT} ++all: --openssl ${PROJECT} + +-${PROJECT}: --openssl ${OBJECTS} Makefile ++${PROJECT}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + ${Q}${HOSTCC} ${OBJECTS} -o $@ ${LDLIBS} + @${ECHO_BLANK_LINE} +-- +2.25.1 + diff --git a/boot/arm-trusted-firmware/v2.9/0001-build-tools-avoid-unnecessary-link.patch b/boot/arm-trusted-firmware/v2.9/0001-build-tools-avoid-unnecessary-link.patch new file mode 100644 index 0000000000..9e0ea74248 --- /dev/null +++ b/boot/arm-trusted-firmware/v2.9/0001-build-tools-avoid-unnecessary-link.patch @@ -0,0 +1,77 @@ +From aa57ce632c629fe72ff417e261e0f5bfd8db6bab Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= +Date: Tue, 4 Jul 2023 16:14:02 +0200 +Subject: [PATCH] build(tools): avoid unnecessary link +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In their respective makefiles, cert_create, encrypt_fw and fiptool +depend on the --openssl phony target as a prerequisite. This forces +those tools to be re-linked each time. + +Move the dependencies on the --openssl target from the tools to their +makefiles all targets, to avoid unnecessary linking while preserving the +OpenSSL version printing done in the --openssl targets when in debug. + +Fixes: cf2dd17ddda2 ("refactor(security): add OpenSSL 1.x compatibility") +Signed-off-by: Vincent Stehlé +Change-Id: I98a3ab30f36dffc253cecaaf3a57d2712522135d +Upstream: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/commit/?id=aa57ce632c629fe72ff417e261e0f5bfd8db6bab +--- + tools/cert_create/Makefile | 4 ++-- + tools/encrypt_fw/Makefile | 4 ++-- + tools/fiptool/Makefile | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/tools/cert_create/Makefile b/tools/cert_create/Makefile +index 042e844626..b911d19d2b 100644 +--- a/tools/cert_create/Makefile ++++ b/tools/cert_create/Makefile +@@ -85,9 +85,9 @@ HOSTCC ?= gcc + + .PHONY: all clean realclean --openssl + +-all: ${BINARY} ++all: --openssl ${BINARY} + +-${BINARY}: --openssl ${OBJECTS} Makefile ++${BINARY}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + @echo 'const char build_msg[] = "Built : "__TIME__", "__DATE__; \ + const char platform_msg[] = "${PLAT_MSG}";' | \ +diff --git a/tools/encrypt_fw/Makefile b/tools/encrypt_fw/Makefile +index 2939b142be..924e5febab 100644 +--- a/tools/encrypt_fw/Makefile ++++ b/tools/encrypt_fw/Makefile +@@ -65,9 +65,9 @@ HOSTCC ?= gcc + + .PHONY: all clean realclean --openssl + +-all: ${BINARY} ++all: --openssl ${BINARY} + +-${BINARY}: --openssl ${OBJECTS} Makefile ++${BINARY}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + @echo 'const char build_msg[] = "Built : "__TIME__", "__DATE__;' | \ + ${HOSTCC} -c ${HOSTCCFLAGS} -xc - -o src/build_msg.o +diff --git a/tools/fiptool/Makefile b/tools/fiptool/Makefile +index 2ebee33931..4bdebd9235 100644 +--- a/tools/fiptool/Makefile ++++ b/tools/fiptool/Makefile +@@ -68,9 +68,9 @@ DEPS := $(patsubst %.o,%.d,$(OBJECTS)) + + .PHONY: all clean distclean --openssl + +-all: ${PROJECT} ++all: --openssl ${PROJECT} + +-${PROJECT}: --openssl ${OBJECTS} Makefile ++${PROJECT}: ${OBJECTS} Makefile + @echo " HOSTLD $@" + ${Q}${HOSTCC} ${OBJECTS} -o $@ ${LDLIBS} + @${ECHO_BLANK_LINE} +-- +2.25.1 + diff --git a/boot/at91bootstrap/at91bootstrap.mk b/boot/at91bootstrap/at91bootstrap.mk index 1a084756fd..385957b5d4 100644 --- a/boot/at91bootstrap/at91bootstrap.mk +++ b/boot/at91bootstrap/at91bootstrap.mk @@ -32,8 +32,14 @@ endef AT91BOOTSTRAP_POST_PATCH_HOOKS += AT91BOOTSTRAP_APPLY_CUSTOM_PATCHES endif +# The at91bootstrap Makefile doesn't support customizing +# CFLAGS/LDFLAGS, so we cheat and pass our custom flags through CC and +# LD. define AT91BOOTSTRAP_BUILD_CMDS - $(MAKE1) CROSS_COMPILE=$(TARGET_CROSS) -C $(@D)/$(AT91BOOTSTRAP_MAKE_SUBDIR) + $(MAKE1) CROSS_COMPILE=$(TARGET_CROSS) \ + CC="$(TARGET_CC) -fno-stack-protector" \ + LD="$(TARGET_CC) -fno-PIE" \ + -C $(@D)/$(AT91BOOTSTRAP_MAKE_SUBDIR) endef define AT91BOOTSTRAP_INSTALL_IMAGES_CMDS diff --git a/boot/at91dataflashboot/at91dataflashboot.mk b/boot/at91dataflashboot/at91dataflashboot.mk index c66f27e343..cb329a90df 100644 --- a/boot/at91dataflashboot/at91dataflashboot.mk +++ b/boot/at91dataflashboot/at91dataflashboot.mk @@ -11,9 +11,14 @@ AT91DATAFLASHBOOT_SITE = ftp://www.at91.com/pub/buildroot AT91DATAFLASHBOOT_INSTALL_TARGET = NO AT91DATAFLASHBOOT_INSTALL_IMAGES = YES +AT91DATAFLASHBOOT_CFLAGS = $(TARGET_CFLAGS) -fno-stack-protector +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +AT91DATAFLASHBOOT_CFLAGS += -marm +endif + define AT91DATAFLASHBOOT_BUILD_CMDS make -C $(@D) CROSS_COMPILE=$(TARGET_CROSS) \ - CFLAGS="$(TARGET_CFLAGS) -fno-stack-protector" + CFLAGS="$(AT91DATAFLASHBOOT_CFLAGS)" endef define AT91DATAFLASHBOOT_INSTALL_IMAGES_CMDS diff --git a/boot/barebox/Config.in b/boot/barebox/Config.in index 3961c69c56..dba4a1a8d6 100644 --- a/boot/barebox/Config.in +++ b/boot/barebox/Config.in @@ -54,6 +54,18 @@ config BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR Most users may leave this empty +config BR2_TARGET_BAREBOX_NEEDS_OPENSSL + bool "Barebox needs OpenSSL" + help + Select this option if your Barebox board configuration + requires OpenSSL to be available on the host. + +config BR2_TARGET_BAREBOX_NEEDS_LIBUSB + bool "Barebox needs LibUSB" + help + Select this option if your Barebox board configuration + requires libUSB to be available on the host. + if BR2_TARGET_BAREBOX_CUSTOM_GIT config BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL diff --git a/boot/barebox/barebox.mk b/boot/barebox/barebox.mk index d7bcafe436..4c9df8d618 100644 --- a/boot/barebox/barebox.mk +++ b/boot/barebox/barebox.mk @@ -43,6 +43,14 @@ ifeq ($(BR2_TARGET_BAREBOX_LATEST_VERSION),y) $(1)_LICENSE_FILES = COPYING endif +ifeq ($(BR2_TARGET_BAREBOX_NEEDS_OPENSSL),y) +BAREBOX_DEPENDENCIES += host-openssl host-pkgconf +endif + +ifeq ($(BR2_TARGET_BAREBOX_NEEDS_LIBUSB),y) +BAREBOX_DEPENDENCIES += host-libusb host-pkgconf +endif + $(1)_CUSTOM_EMBEDDED_ENV_PATH = $$(call qstrip,$$(BR2_TARGET_$(1)_CUSTOM_EMBEDDED_ENV_PATH)) ifneq ($$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR)),) @@ -73,6 +81,12 @@ endif $(1)_MAKE_FLAGS = ARCH=$$($(1)_ARCH) CROSS_COMPILE="$$(TARGET_CROSS)" $(1)_MAKE_ENV = $$(TARGET_MAKE_ENV) +$(1)_MAKE_ENV += \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + PKG_CONFIG_SYSROOT_DIR="/" \ + PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ + PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ + PKG_CONFIG_LIBDIR="$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig" ifeq ($$(BR2_REPRODUCIBLE),y) $(1)_MAKE_ENV += \ diff --git a/boot/edk2/Config.in b/boot/edk2/Config.in index 855a62f70b..bed503b168 100644 --- a/boot/edk2/Config.in +++ b/boot/edk2/Config.in @@ -108,6 +108,21 @@ comment "QEMU SBSA depends on ATF not using EDK2 as BL33" endchoice +config BR2_TARGET_EDK2_OVMF_DEBUG_ON_SERIAL + bool "OVMF Debug on Serial" + depends on BR2_ENABLE_DEBUG + depends on BR2_TARGET_EDK2_PLATFORM_OVMF_I386 || \ + BR2_TARGET_EDK2_PLATFORM_OVMF_X64 + help + When EDK2 OVMF is built with debug, messages are printed to + IO port 0x402. Those messages are not shown in the normal + Qemu emulated serial port. Enabling this option will print + debug messages on the emulated serial port, potentially + mixing messages with UEFI serial console output. + + See OVMF README: + https://github.com/tianocore/edk2/blob/master/OvmfPkg/README + config BR2_TARGET_EDK2_FD_NAME string default "OVMF" if BR2_TARGET_EDK2_PLATFORM_OVMF_I386 diff --git a/boot/edk2/edk2.hash b/boot/edk2/edk2.hash index 94ee22ddc4..34d4b10e29 100644 --- a/boot/edk2/edk2.hash +++ b/boot/edk2/edk2.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 c10520f269557d566e35fe8104141aa2865f9085ad2b3a30aae8a7e78a3ca5aa edk2-edk2-stable202208-br1.tar.gz +sha256 ca55351913e6258ebd8c08106f369ac71073d9cfaa80427fc5f131b06d808940 edk2-edk2-stable202305-br1.tar.gz sha256 50ce20c9cfdb0e19ee34fe0a51fc0afe961f743697b068359ab2f862b494df80 License.txt diff --git a/boot/edk2/edk2.mk b/boot/edk2/edk2.mk index fb6b9a3280..f49258ecb5 100644 --- a/boot/edk2/edk2.mk +++ b/boot/edk2/edk2.mk @@ -4,7 +4,7 @@ # ################################################################################ -EDK2_VERSION = edk2-stable202208 +EDK2_VERSION = edk2-stable202305 EDK2_SITE = https://github.com/tianocore/edk2 EDK2_SITE_METHOD = git EDK2_LICENSE = BSD-2-Clause-Patent @@ -16,8 +16,15 @@ EDK2_INSTALL_IMAGES = YES ifeq ($(BR2_ENABLE_DEBUG),y) EDK2_BUILD_TYPE = DEBUG +ifeq ($(BR2_TARGET_EDK2_OVMF_DEBUG_ON_SERIAL),y) +# DEBUG_ON_SERIAL_PORT is only tested to be set, so don't disable it, as +# it would still be set. +EDK2_BUILD_OPTS += -DDEBUG_ON_SERIAL_PORT +endif else EDK2_BUILD_TYPE = RELEASE +# DEBUG_ON_SERIAL_PORT is only valid in debug builds, so useless to set +# it (enabled or disabled) on a relase build. endif # Build system notes. diff --git a/boot/grub2/0002-grub-mkconfig-Restore-umask-for-the-grub.cfg.patch b/boot/grub2/0002-grub-mkconfig-Restore-umask-for-the-grub.cfg.patch index 0d6a1a6e01..ba9c8a9344 100644 --- a/boot/grub2/0002-grub-mkconfig-Restore-umask-for-the-grub.cfg.patch +++ b/boot/grub2/0002-grub-mkconfig-Restore-umask-for-the-grub.cfg.patch @@ -1,4 +1,4 @@ -From 8418defaf0902bdd8af188221ae54c5a3d6ad05d Mon Sep 17 00:00:00 2001 +From 4c1ad500e73d46c83dec369da85db39ae2fe62dd Mon Sep 17 00:00:00 2001 From: Michael Chang Date: Fri, 3 Dec 2021 16:13:28 +0800 Subject: [PATCH] grub-mkconfig: Restore umask for the grub.cfg @@ -17,7 +17,7 @@ Fixes: CVE-2021-3981 Signed-off-by: Michael Chang Reviewed-by: Daniel Kiper -[Upstream: https://git.savannah.gnu.org/gitweb/?p=grub.git;a=commit;h=0adec29674561034771c13e446069b41ef41e4d4] +Upstream: https://git.savannah.gnu.org/gitweb/?p=grub.git;a=commit;h=0adec29674561034771c13e446069b41ef41e4d4 Signed-off-by: Thomas Petazzoni --- util/grub-mkconfig.in | 3 +++ @@ -39,5 +39,5 @@ index f8cbb8d7a..84f356ea4 100644 fi fi -- -2.37.2 +2.41.0 diff --git a/boot/grub2/0003-loader-efi-chainloader-Simplify-the-loader-state.patch b/boot/grub2/0003-loader-efi-chainloader-Simplify-the-loader-state.patch new file mode 100644 index 0000000000..f6073add0b --- /dev/null +++ b/boot/grub2/0003-loader-efi-chainloader-Simplify-the-loader-state.patch @@ -0,0 +1,126 @@ +From dfdc742bdb22be468035f96cce0be5fee23b6df5 Mon Sep 17 00:00:00 2001 +From: Chris Coulson +Date: Tue, 5 Apr 2022 10:02:04 +0100 +Subject: [PATCH] loader/efi/chainloader: Simplify the loader state + +The chainloader command retains the source buffer and device path passed +to LoadImage(), requiring the unload hook passed to grub_loader_set() to +free them. It isn't required to retain this state though - they aren't +required by StartImage() or anything else in the boot hook, so clean them +up before grub_cmd_chainloader() finishes. + +Signed-off-by: Chris Coulson +Reviewed-by: Daniel Kiper +Upstream: 1469983ebb9674753ad333d37087fb8cb20e1dce +[Thomas: needed to cherry-pick +04c86e0bb7b58fc2f913f798cdb18934933e532d which fixes CVE-2022-28736] +Signed-off-by: Thomas Petazzoni +--- + grub-core/loader/efi/chainloader.c | 38 +++++++++++++++++------------- + 1 file changed, 21 insertions(+), 17 deletions(-) + +diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c +index 2bd80f4db..d1602c89b 100644 +--- a/grub-core/loader/efi/chainloader.c ++++ b/grub-core/loader/efi/chainloader.c +@@ -44,25 +44,20 @@ GRUB_MOD_LICENSE ("GPLv3+"); + + static grub_dl_t my_mod; + +-static grub_efi_physical_address_t address; +-static grub_efi_uintn_t pages; +-static grub_efi_device_path_t *file_path; + static grub_efi_handle_t image_handle; +-static grub_efi_char16_t *cmdline; + + static grub_err_t + grub_chainloader_unload (void) + { ++ grub_efi_loaded_image_t *loaded_image; + grub_efi_boot_services_t *b; + ++ loaded_image = grub_efi_get_loaded_image (image_handle); ++ if (loaded_image != NULL) ++ grub_free (loaded_image->load_options); ++ + b = grub_efi_system_table->boot_services; + efi_call_1 (b->unload_image, image_handle); +- efi_call_2 (b->free_pages, address, pages); +- +- grub_free (file_path); +- grub_free (cmdline); +- cmdline = 0; +- file_path = 0; + + grub_dl_unref (my_mod); + return GRUB_ERR_NONE; +@@ -140,7 +135,7 @@ make_file_path (grub_efi_device_path_t *dp, const char *filename) + char *dir_start; + char *dir_end; + grub_size_t size; +- grub_efi_device_path_t *d; ++ grub_efi_device_path_t *d, *file_path; + + dir_start = grub_strchr (filename, ')'); + if (! dir_start) +@@ -222,11 +217,14 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)), + grub_efi_status_t status; + grub_efi_boot_services_t *b; + grub_device_t dev = 0; +- grub_efi_device_path_t *dp = 0; ++ grub_efi_device_path_t *dp = NULL, *file_path = NULL; + grub_efi_loaded_image_t *loaded_image; + char *filename; + void *boot_image = 0; + grub_efi_handle_t dev_handle = 0; ++ grub_efi_physical_address_t address = 0; ++ grub_efi_uintn_t pages = 0; ++ grub_efi_char16_t *cmdline = NULL; + + if (argc == 0) + return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected")); +@@ -234,11 +232,6 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)), + + grub_dl_ref (my_mod); + +- /* Initialize some global variables. */ +- address = 0; +- image_handle = 0; +- file_path = 0; +- + b = grub_efi_system_table->boot_services; + + file = grub_file_open (filename, GRUB_FILE_TYPE_EFI_CHAINLOADED_IMAGE); +@@ -408,6 +401,10 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)), + grub_file_close (file); + grub_device_close (dev); + ++ /* We're finished with the source image buffer and file path now. */ ++ efi_call_2 (b->free_pages, address, pages); ++ grub_free (file_path); ++ + grub_loader_set (grub_chainloader_boot, grub_chainloader_unload, 0); + return 0; + +@@ -419,11 +416,18 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)), + if (file) + grub_file_close (file); + ++ grub_free (cmdline); + grub_free (file_path); + + if (address) + efi_call_2 (b->free_pages, address, pages); + ++ if (image_handle != NULL) ++ { ++ efi_call_1 (b->unload_image, image_handle); ++ image_handle = NULL; ++ } ++ + grub_dl_unref (my_mod); + + return grub_errno; +-- +2.41.0 + diff --git a/boot/grub2/0004-commands-boot-Add-API-to-pass-context-to-loader.patch b/boot/grub2/0004-commands-boot-Add-API-to-pass-context-to-loader.patch new file mode 100644 index 0000000000..30b410e38a --- /dev/null +++ b/boot/grub2/0004-commands-boot-Add-API-to-pass-context-to-loader.patch @@ -0,0 +1,165 @@ +From 8b6336696d93b51703c2015eff3e2d8a02145e43 Mon Sep 17 00:00:00 2001 +From: Chris Coulson +Date: Tue, 5 Apr 2022 10:58:28 +0100 +Subject: [PATCH] commands/boot: Add API to pass context to loader + +Loaders rely on global variables for saving context which is consumed +in the boot hook and freed in the unload hook. In the case where a loader +command is executed twice, calling grub_loader_set() a second time executes +the unload hook, but in some cases this runs when the loader's global +context has already been updated, resulting in the updated context being +freed and potential use-after-free bugs when the boot hook is subsequently +called. + +This adds a new API, grub_loader_set_ex(), which allows a loader to specify +context that is passed to its boot and unload hooks. This is an alternative +to requiring that loaders call grub_loader_unset() before mutating their +global context. + +Signed-off-by: Chris Coulson +Reviewed-by: Daniel Kiper +Upstream: 14ceb3b3ff6db664649138442b6562c114dcf56e +[Thomas: needed to backport 04c86e0bb7b58fc2f913f798cdb18934933e532d, +which fixes CVE-2022-28736] +Signed-off-by: Thomas Petazzoni +--- + grub-core/commands/boot.c | 66 ++++++++++++++++++++++++++++++++++----- + include/grub/loader.h | 5 +++ + 2 files changed, 63 insertions(+), 8 deletions(-) + +diff --git a/grub-core/commands/boot.c b/grub-core/commands/boot.c +index bbca81e94..61514788e 100644 +--- a/grub-core/commands/boot.c ++++ b/grub-core/commands/boot.c +@@ -27,10 +27,20 @@ + + GRUB_MOD_LICENSE ("GPLv3+"); + +-static grub_err_t (*grub_loader_boot_func) (void); +-static grub_err_t (*grub_loader_unload_func) (void); ++static grub_err_t (*grub_loader_boot_func) (void *context); ++static grub_err_t (*grub_loader_unload_func) (void *context); ++static void *grub_loader_context; + static int grub_loader_flags; + ++struct grub_simple_loader_hooks ++{ ++ grub_err_t (*boot) (void); ++ grub_err_t (*unload) (void); ++}; ++ ++/* Don't heap allocate this to avoid making grub_loader_set() fallible. */ ++static struct grub_simple_loader_hooks simple_loader_hooks; ++ + struct grub_preboot + { + grub_err_t (*preboot_func) (int); +@@ -44,6 +54,29 @@ static int grub_loader_loaded; + static struct grub_preboot *preboots_head = 0, + *preboots_tail = 0; + ++static grub_err_t ++grub_simple_boot_hook (void *context) ++{ ++ struct grub_simple_loader_hooks *hooks; ++ ++ hooks = (struct grub_simple_loader_hooks *) context; ++ return hooks->boot (); ++} ++ ++static grub_err_t ++grub_simple_unload_hook (void *context) ++{ ++ struct grub_simple_loader_hooks *hooks; ++ grub_err_t ret; ++ ++ hooks = (struct grub_simple_loader_hooks *) context; ++ ++ ret = hooks->unload (); ++ grub_memset (hooks, 0, sizeof (*hooks)); ++ ++ return ret; ++} ++ + int + grub_loader_is_loaded (void) + { +@@ -110,28 +143,45 @@ grub_loader_unregister_preboot_hook (struct grub_preboot *hnd) + } + + void +-grub_loader_set (grub_err_t (*boot) (void), +- grub_err_t (*unload) (void), +- int flags) ++grub_loader_set_ex (grub_err_t (*boot) (void *context), ++ grub_err_t (*unload) (void *context), ++ void *context, ++ int flags) + { + if (grub_loader_loaded && grub_loader_unload_func) +- grub_loader_unload_func (); ++ grub_loader_unload_func (grub_loader_context); + + grub_loader_boot_func = boot; + grub_loader_unload_func = unload; ++ grub_loader_context = context; + grub_loader_flags = flags; + + grub_loader_loaded = 1; + } + ++void ++grub_loader_set (grub_err_t (*boot) (void), ++ grub_err_t (*unload) (void), ++ int flags) ++{ ++ grub_loader_set_ex (grub_simple_boot_hook, ++ grub_simple_unload_hook, ++ &simple_loader_hooks, ++ flags); ++ ++ simple_loader_hooks.boot = boot; ++ simple_loader_hooks.unload = unload; ++} ++ + void + grub_loader_unset(void) + { + if (grub_loader_loaded && grub_loader_unload_func) +- grub_loader_unload_func (); ++ grub_loader_unload_func (grub_loader_context); + + grub_loader_boot_func = 0; + grub_loader_unload_func = 0; ++ grub_loader_context = 0; + + grub_loader_loaded = 0; + } +@@ -158,7 +208,7 @@ grub_loader_boot (void) + return err; + } + } +- err = (grub_loader_boot_func) (); ++ err = (grub_loader_boot_func) (grub_loader_context); + + for (cur = preboots_tail; cur; cur = cur->prev) + if (! err) +diff --git a/include/grub/loader.h b/include/grub/loader.h +index b20864282..97f231054 100644 +--- a/include/grub/loader.h ++++ b/include/grub/loader.h +@@ -40,6 +40,11 @@ void EXPORT_FUNC (grub_loader_set) (grub_err_t (*boot) (void), + grub_err_t (*unload) (void), + int flags); + ++void EXPORT_FUNC (grub_loader_set_ex) (grub_err_t (*boot) (void *context), ++ grub_err_t (*unload) (void *context), ++ void *context, ++ int flags); ++ + /* Unset current loader, if any. */ + void EXPORT_FUNC (grub_loader_unset) (void); + +-- +2.41.0 + diff --git a/boot/grub2/0005-loader-efi-chainloader-Use-grub_loader_set_ex.patch b/boot/grub2/0005-loader-efi-chainloader-Use-grub_loader_set_ex.patch new file mode 100644 index 0000000000..4308e3170f --- /dev/null +++ b/boot/grub2/0005-loader-efi-chainloader-Use-grub_loader_set_ex.patch @@ -0,0 +1,80 @@ +From 583fca49f413e00fe26f8ae7abe0837bbc574f79 Mon Sep 17 00:00:00 2001 +From: Chris Coulson +Date: Tue, 5 Apr 2022 11:48:58 +0100 +Subject: [PATCH] loader/efi/chainloader: Use grub_loader_set_ex() + +This ports the EFI chainloader to use grub_loader_set_ex() in order to fix +a use-after-free bug that occurs when grub_cmd_chainloader() is executed +more than once before a boot attempt is performed. + +Fixes: CVE-2022-28736 + +Signed-off-by: Chris Coulson +Reviewed-by: Daniel Kiper +Upstream: 04c86e0bb7b58fc2f913f798cdb18934933e532d +Signed-off-by: Thomas Petazzoni +--- + grub-core/loader/efi/chainloader.c | 16 +++++++--------- + 1 file changed, 7 insertions(+), 9 deletions(-) + +diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c +index d1602c89b..7557eb269 100644 +--- a/grub-core/loader/efi/chainloader.c ++++ b/grub-core/loader/efi/chainloader.c +@@ -44,11 +44,10 @@ GRUB_MOD_LICENSE ("GPLv3+"); + + static grub_dl_t my_mod; + +-static grub_efi_handle_t image_handle; +- + static grub_err_t +-grub_chainloader_unload (void) ++grub_chainloader_unload (void *context) + { ++ grub_efi_handle_t image_handle = (grub_efi_handle_t) context; + grub_efi_loaded_image_t *loaded_image; + grub_efi_boot_services_t *b; + +@@ -64,8 +63,9 @@ grub_chainloader_unload (void) + } + + static grub_err_t +-grub_chainloader_boot (void) ++grub_chainloader_boot (void *context) + { ++ grub_efi_handle_t image_handle = (grub_efi_handle_t) context; + grub_efi_boot_services_t *b; + grub_efi_status_t status; + grub_efi_uintn_t exit_data_size; +@@ -225,6 +225,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)), + grub_efi_physical_address_t address = 0; + grub_efi_uintn_t pages = 0; + grub_efi_char16_t *cmdline = NULL; ++ grub_efi_handle_t image_handle = NULL; + + if (argc == 0) + return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected")); +@@ -405,7 +406,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)), + efi_call_2 (b->free_pages, address, pages); + grub_free (file_path); + +- grub_loader_set (grub_chainloader_boot, grub_chainloader_unload, 0); ++ grub_loader_set_ex (grub_chainloader_boot, grub_chainloader_unload, image_handle, 0); + return 0; + + fail: +@@ -423,10 +424,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)), + efi_call_2 (b->free_pages, address, pages); + + if (image_handle != NULL) +- { +- efi_call_1 (b->unload_image, image_handle); +- image_handle = NULL; +- } ++ efi_call_1 (b->unload_image, image_handle); + + grub_dl_unref (my_mod); + +-- +2.41.0 + diff --git a/boot/grub2/0006-kern-efi-sb-Reject-non-kernel-files-in-the-shim_lock.patch b/boot/grub2/0006-kern-efi-sb-Reject-non-kernel-files-in-the-shim_lock.patch new file mode 100644 index 0000000000..b6fec1e6bb --- /dev/null +++ b/boot/grub2/0006-kern-efi-sb-Reject-non-kernel-files-in-the-shim_lock.patch @@ -0,0 +1,105 @@ +From 1e1b1271b7a7c6ac20a4c5f8e0dc29614b4975d1 Mon Sep 17 00:00:00 2001 +From: Julian Andres Klode +Date: Thu, 2 Dec 2021 15:03:53 +0100 +Subject: [PATCH] kern/efi/sb: Reject non-kernel files in the shim_lock + verifier + +We must not allow other verifiers to pass things like the GRUB modules. +Instead of maintaining a blocklist, maintain an allowlist of things +that we do not care about. + +This allowlist really should be made reusable, and shared by the +lockdown verifier, but this is the minimal patch addressing +security concerns where the TPM verifier was able to mark modules +as verified (or the OpenPGP verifier for that matter), when it +should not do so on shim-powered secure boot systems. + +Fixes: CVE-2022-28735 + +Signed-off-by: Julian Andres Klode +Reviewed-by: Daniel Kiper +Upstream: 6fe755c5c07bb386fda58306bfd19e4a1c974c53 +Signed-off-by: Thomas Petazzoni +--- + grub-core/kern/efi/sb.c | 39 ++++++++++++++++++++++++++++++++++++--- + include/grub/verify.h | 1 + + 2 files changed, 37 insertions(+), 3 deletions(-) + +diff --git a/grub-core/kern/efi/sb.c b/grub-core/kern/efi/sb.c +index c52ec6226..89c4bb3fd 100644 +--- a/grub-core/kern/efi/sb.c ++++ b/grub-core/kern/efi/sb.c +@@ -119,10 +119,11 @@ shim_lock_verifier_init (grub_file_t io __attribute__ ((unused)), + void **context __attribute__ ((unused)), + enum grub_verify_flags *flags) + { +- *flags = GRUB_VERIFY_FLAGS_SKIP_VERIFICATION; ++ *flags = GRUB_VERIFY_FLAGS_NONE; + + switch (type & GRUB_FILE_TYPE_MASK) + { ++ /* Files we check. */ + case GRUB_FILE_TYPE_LINUX_KERNEL: + case GRUB_FILE_TYPE_MULTIBOOT_KERNEL: + case GRUB_FILE_TYPE_BSD_KERNEL: +@@ -130,11 +131,43 @@ shim_lock_verifier_init (grub_file_t io __attribute__ ((unused)), + case GRUB_FILE_TYPE_PLAN9_KERNEL: + case GRUB_FILE_TYPE_EFI_CHAINLOADED_IMAGE: + *flags = GRUB_VERIFY_FLAGS_SINGLE_CHUNK; ++ return GRUB_ERR_NONE; + +- /* Fall through. */ ++ /* Files that do not affect secureboot state. */ ++ case GRUB_FILE_TYPE_NONE: ++ case GRUB_FILE_TYPE_LOOPBACK: ++ case GRUB_FILE_TYPE_LINUX_INITRD: ++ case GRUB_FILE_TYPE_OPENBSD_RAMDISK: ++ case GRUB_FILE_TYPE_XNU_RAMDISK: ++ case GRUB_FILE_TYPE_SIGNATURE: ++ case GRUB_FILE_TYPE_PUBLIC_KEY: ++ case GRUB_FILE_TYPE_PUBLIC_KEY_TRUST: ++ case GRUB_FILE_TYPE_PRINT_BLOCKLIST: ++ case GRUB_FILE_TYPE_TESTLOAD: ++ case GRUB_FILE_TYPE_GET_SIZE: ++ case GRUB_FILE_TYPE_FONT: ++ case GRUB_FILE_TYPE_ZFS_ENCRYPTION_KEY: ++ case GRUB_FILE_TYPE_CAT: ++ case GRUB_FILE_TYPE_HEXCAT: ++ case GRUB_FILE_TYPE_CMP: ++ case GRUB_FILE_TYPE_HASHLIST: ++ case GRUB_FILE_TYPE_TO_HASH: ++ case GRUB_FILE_TYPE_KEYBOARD_LAYOUT: ++ case GRUB_FILE_TYPE_PIXMAP: ++ case GRUB_FILE_TYPE_GRUB_MODULE_LIST: ++ case GRUB_FILE_TYPE_CONFIG: ++ case GRUB_FILE_TYPE_THEME: ++ case GRUB_FILE_TYPE_GETTEXT_CATALOG: ++ case GRUB_FILE_TYPE_FS_SEARCH: ++ case GRUB_FILE_TYPE_LOADENV: ++ case GRUB_FILE_TYPE_SAVEENV: ++ case GRUB_FILE_TYPE_VERIFY_SIGNATURE: ++ *flags = GRUB_VERIFY_FLAGS_SKIP_VERIFICATION; ++ return GRUB_ERR_NONE; + ++ /* Other files. */ + default: +- return GRUB_ERR_NONE; ++ return grub_error (GRUB_ERR_ACCESS_DENIED, N_("prohibited by secure boot policy")); + } + } + +diff --git a/include/grub/verify.h b/include/grub/verify.h +index cd129c398..672ae1692 100644 +--- a/include/grub/verify.h ++++ b/include/grub/verify.h +@@ -24,6 +24,7 @@ + + enum grub_verify_flags + { ++ GRUB_VERIFY_FLAGS_NONE = 0, + GRUB_VERIFY_FLAGS_SKIP_VERIFICATION = 1, + GRUB_VERIFY_FLAGS_SINGLE_CHUNK = 2, + /* Defer verification to another authority. */ +-- +2.41.0 + diff --git a/boot/grub2/0007-video-Remove-trailing-whitespaces.patch b/boot/grub2/0007-video-Remove-trailing-whitespaces.patch new file mode 100644 index 0000000000..94d6aeefe7 --- /dev/null +++ b/boot/grub2/0007-video-Remove-trailing-whitespaces.patch @@ -0,0 +1,689 @@ +From 1faa412c502c7c4ca1230fc152be30b88847fdd2 Mon Sep 17 00:00:00 2001 +From: Elyes Haouas +Date: Fri, 4 Mar 2022 07:42:13 +0100 +Subject: [PATCH] video: Remove trailing whitespaces + +Signed-off-by: Elyes Haouas +Reviewed-by: Daniel Kiper +Upstream: 1f48917d8ddb490dcdc70176e0f58136b7f7811a +[Thomas: needed to backport patches fixing CVEs in the video code] +Signed-off-by: Thomas Petazzoni +--- + grub-core/video/bochs.c | 2 +- + grub-core/video/capture.c | 2 +- + grub-core/video/cirrus.c | 4 ++-- + grub-core/video/coreboot/cbfb.c | 2 +- + grub-core/video/efi_gop.c | 22 +++++++++---------- + grub-core/video/fb/fbblit.c | 8 +++---- + grub-core/video/fb/video_fb.c | 10 ++++----- + grub-core/video/i386/pc/vbe.c | 34 ++++++++++++++--------------- + grub-core/video/i386/pc/vga.c | 6 ++--- + grub-core/video/ieee1275.c | 4 ++-- + grub-core/video/radeon_fuloong2e.c | 6 ++--- + grub-core/video/radeon_yeeloong3a.c | 6 ++--- + grub-core/video/readers/png.c | 2 +- + grub-core/video/readers/tga.c | 2 +- + grub-core/video/sis315_init.c | 2 +- + grub-core/video/sis315pro.c | 8 +++---- + grub-core/video/sm712.c | 10 ++++----- + grub-core/video/video.c | 8 +++---- + 18 files changed, 69 insertions(+), 69 deletions(-) + +diff --git a/grub-core/video/bochs.c b/grub-core/video/bochs.c +index 30ea1bd82..edc651697 100644 +--- a/grub-core/video/bochs.c ++++ b/grub-core/video/bochs.c +@@ -212,7 +212,7 @@ find_card (grub_pci_device_t dev, grub_pci_id_t pciid, void *data) + + if (((class >> 16) & 0xffff) != 0x0300 || pciid != 0x11111234) + return 0; +- ++ + addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG0); + framebuffer.base = grub_pci_read (addr) & GRUB_PCI_ADDR_MEM_MASK; + if (!framebuffer.base) +diff --git a/grub-core/video/capture.c b/grub-core/video/capture.c +index 4d3195e01..c653d89f9 100644 +--- a/grub-core/video/capture.c ++++ b/grub-core/video/capture.c +@@ -92,7 +92,7 @@ grub_video_capture_start (const struct grub_video_mode_info *mode_info, + framebuffer.ptr = grub_calloc (framebuffer.mode_info.height, framebuffer.mode_info.pitch); + if (!framebuffer.ptr) + return grub_errno; +- ++ + err = grub_video_fb_create_render_target_from_pointer (&framebuffer.render_target, + &framebuffer.mode_info, + framebuffer.ptr); +diff --git a/grub-core/video/cirrus.c b/grub-core/video/cirrus.c +index e2149e8ce..f5542ccdc 100644 +--- a/grub-core/video/cirrus.c ++++ b/grub-core/video/cirrus.c +@@ -354,11 +354,11 @@ grub_video_cirrus_setup (unsigned int width, unsigned int height, + grub_uint8_t sr_ext = 0, hidden_dac = 0; + + grub_vga_set_geometry (&config, grub_vga_cr_write); +- ++ + grub_vga_gr_write (GRUB_VGA_GR_MODE_256_COLOR | GRUB_VGA_GR_MODE_READ_MODE1, + GRUB_VGA_GR_MODE); + grub_vga_gr_write (GRUB_VGA_GR_GR6_GRAPHICS_MODE, GRUB_VGA_GR_GR6); +- ++ + grub_vga_sr_write (GRUB_VGA_SR_MEMORY_MODE_NORMAL, GRUB_VGA_SR_MEMORY_MODE); + + grub_vga_cr_write ((config.pitch >> CIRRUS_CR_EXTENDED_DISPLAY_PITCH_SHIFT) +diff --git a/grub-core/video/coreboot/cbfb.c b/grub-core/video/coreboot/cbfb.c +index 9af81fa5b..986003c51 100644 +--- a/grub-core/video/coreboot/cbfb.c ++++ b/grub-core/video/coreboot/cbfb.c +@@ -106,7 +106,7 @@ grub_video_cbfb_setup (unsigned int width, unsigned int height, + + grub_video_fb_set_palette (0, GRUB_VIDEO_FBSTD_NUMCOLORS, + grub_video_fbstd_colors); +- ++ + return err; + } + +diff --git a/grub-core/video/efi_gop.c b/grub-core/video/efi_gop.c +index b7590dc6c..7a5054631 100644 +--- a/grub-core/video/efi_gop.c ++++ b/grub-core/video/efi_gop.c +@@ -273,7 +273,7 @@ grub_video_gop_iterate (int (*hook) (const struct grub_video_mode_info *info, vo + grub_efi_status_t status; + struct grub_efi_gop_mode_info *info = NULL; + struct grub_video_mode_info mode_info; +- ++ + status = efi_call_4 (gop->query_mode, gop, mode, &size, &info); + + if (status) +@@ -390,7 +390,7 @@ grub_video_gop_setup (unsigned int width, unsigned int height, + found = 1; + } + } +- ++ + if (!found) + { + unsigned mode; +@@ -399,7 +399,7 @@ grub_video_gop_setup (unsigned int width, unsigned int height, + { + grub_efi_uintn_t size; + grub_efi_status_t status; +- ++ + status = efi_call_4 (gop->query_mode, gop, mode, &size, &info); + if (status) + { +@@ -472,11 +472,11 @@ grub_video_gop_setup (unsigned int width, unsigned int height, + framebuffer.ptr = (void *) (grub_addr_t) gop->mode->fb_base; + framebuffer.offscreen + = grub_malloc (framebuffer.mode_info.height +- * framebuffer.mode_info.width ++ * framebuffer.mode_info.width + * sizeof (struct grub_efi_gop_blt_pixel)); + + buffer = framebuffer.offscreen; +- ++ + if (!buffer) + { + grub_dprintf ("video", "GOP: couldn't allocate shadow\n"); +@@ -485,11 +485,11 @@ grub_video_gop_setup (unsigned int width, unsigned int height, + &framebuffer.mode_info); + buffer = framebuffer.ptr; + } +- ++ + grub_dprintf ("video", "GOP: initialising FB @ %p %dx%dx%d\n", + framebuffer.ptr, framebuffer.mode_info.width, + framebuffer.mode_info.height, framebuffer.mode_info.bpp); +- ++ + err = grub_video_fb_create_render_target_from_pointer + (&framebuffer.render_target, &framebuffer.mode_info, buffer); + +@@ -498,15 +498,15 @@ grub_video_gop_setup (unsigned int width, unsigned int height, + grub_dprintf ("video", "GOP: Couldn't create FB target\n"); + return err; + } +- ++ + err = grub_video_fb_set_active_render_target (framebuffer.render_target); +- ++ + if (err) + { + grub_dprintf ("video", "GOP: Couldn't set FB target\n"); + return err; + } +- ++ + err = grub_video_fb_set_palette (0, GRUB_VIDEO_FBSTD_NUMCOLORS, + grub_video_fbstd_colors); + +@@ -514,7 +514,7 @@ grub_video_gop_setup (unsigned int width, unsigned int height, + grub_dprintf ("video", "GOP: Couldn't set palette\n"); + else + grub_dprintf ("video", "GOP: Success\n"); +- ++ + return err; + } + +diff --git a/grub-core/video/fb/fbblit.c b/grub-core/video/fb/fbblit.c +index d55924837..1010ef393 100644 +--- a/grub-core/video/fb/fbblit.c ++++ b/grub-core/video/fb/fbblit.c +@@ -466,7 +466,7 @@ grub_video_fbblit_replace_24bit_indexa (struct grub_video_fbblit_info *dst, + for (i = 0; i < width; i++) + { + register grub_uint32_t col; +- if (*srcptr == 0xf0) ++ if (*srcptr == 0xf0) + col = palette[16]; + else + col = palette[*srcptr & 0xf]; +@@ -478,7 +478,7 @@ grub_video_fbblit_replace_24bit_indexa (struct grub_video_fbblit_info *dst, + *dstptr++ = col >> 0; + *dstptr++ = col >> 8; + *dstptr++ = col >> 16; +-#endif ++#endif + srcptr++; + } + +@@ -651,7 +651,7 @@ grub_video_fbblit_blend_24bit_indexa (struct grub_video_fbblit_info *dst, + for (i = 0; i < width; i++) + { + register grub_uint32_t col; +- if (*srcptr != 0xf0) ++ if (*srcptr != 0xf0) + { + col = palette[*srcptr & 0xf]; + #ifdef GRUB_CPU_WORDS_BIGENDIAN +@@ -662,7 +662,7 @@ grub_video_fbblit_blend_24bit_indexa (struct grub_video_fbblit_info *dst, + *dstptr++ = col >> 0; + *dstptr++ = col >> 8; + *dstptr++ = col >> 16; +-#endif ++#endif + } + else + dstptr += 3; +diff --git a/grub-core/video/fb/video_fb.c b/grub-core/video/fb/video_fb.c +index ae6b89f9a..fa4ebde26 100644 +--- a/grub-core/video/fb/video_fb.c ++++ b/grub-core/video/fb/video_fb.c +@@ -754,7 +754,7 @@ grub_video_fb_unmap_color_int (struct grub_video_fbblit_info * source, + *alpha = 0; + return; + } +- ++ + /* If we have an out-of-bounds color, return transparent black. */ + if (color > 255) + { +@@ -1141,7 +1141,7 @@ grub_video_fb_scroll (grub_video_color_t color, int dx, int dy) + /* If everything is aligned on 32-bit use 32-bit copy. */ + if ((grub_addr_t) grub_video_fb_get_video_ptr (&target, src_x, src_y) + % sizeof (grub_uint32_t) == 0 +- && (grub_addr_t) grub_video_fb_get_video_ptr (&target, dst_x, dst_y) ++ && (grub_addr_t) grub_video_fb_get_video_ptr (&target, dst_x, dst_y) + % sizeof (grub_uint32_t) == 0 + && linelen % sizeof (grub_uint32_t) == 0 + && linedelta % sizeof (grub_uint32_t) == 0) +@@ -1155,7 +1155,7 @@ grub_video_fb_scroll (grub_video_color_t color, int dx, int dy) + else if ((grub_addr_t) grub_video_fb_get_video_ptr (&target, src_x, src_y) + % sizeof (grub_uint16_t) == 0 + && (grub_addr_t) grub_video_fb_get_video_ptr (&target, +- dst_x, dst_y) ++ dst_x, dst_y) + % sizeof (grub_uint16_t) == 0 + && linelen % sizeof (grub_uint16_t) == 0 + && linedelta % sizeof (grub_uint16_t) == 0) +@@ -1170,7 +1170,7 @@ grub_video_fb_scroll (grub_video_color_t color, int dx, int dy) + { + grub_uint8_t *src, *dst; + DO_SCROLL +- } ++ } + } + + /* 4. Fill empty space with specified color. In this implementation +@@ -1615,7 +1615,7 @@ grub_video_fb_setup (unsigned int mode_type, unsigned int mode_mask, + framebuffer.render_target = framebuffer.back_target; + return GRUB_ERR_NONE; + } +- ++ + mode_info->mode_type &= ~(GRUB_VIDEO_MODE_TYPE_DOUBLE_BUFFERED + | GRUB_VIDEO_MODE_TYPE_UPDATING_SWAP); + +diff --git a/grub-core/video/i386/pc/vbe.c b/grub-core/video/i386/pc/vbe.c +index b7f911926..0e65b5206 100644 +--- a/grub-core/video/i386/pc/vbe.c ++++ b/grub-core/video/i386/pc/vbe.c +@@ -219,7 +219,7 @@ grub_vbe_disable_mtrr (int mtrr) + } + + /* Call VESA BIOS 0x4f09 to set palette data, return status. */ +-static grub_vbe_status_t ++static grub_vbe_status_t + grub_vbe_bios_set_palette_data (grub_uint32_t color_count, + grub_uint32_t start_index, + struct grub_vbe_palette_data *palette_data) +@@ -237,7 +237,7 @@ grub_vbe_bios_set_palette_data (grub_uint32_t color_count, + } + + /* Call VESA BIOS 0x4f00 to get VBE Controller Information, return status. */ +-grub_vbe_status_t ++grub_vbe_status_t + grub_vbe_bios_get_controller_info (struct grub_vbe_info_block *ci) + { + struct grub_bios_int_registers regs; +@@ -251,7 +251,7 @@ grub_vbe_bios_get_controller_info (struct grub_vbe_info_block *ci) + } + + /* Call VESA BIOS 0x4f01 to get VBE Mode Information, return status. */ +-grub_vbe_status_t ++grub_vbe_status_t + grub_vbe_bios_get_mode_info (grub_uint32_t mode, + struct grub_vbe_mode_info_block *mode_info) + { +@@ -285,7 +285,7 @@ grub_vbe_bios_set_mode (grub_uint32_t mode, + } + + /* Call VESA BIOS 0x4f03 to return current VBE Mode, return status. */ +-grub_vbe_status_t ++grub_vbe_status_t + grub_vbe_bios_get_mode (grub_uint32_t *mode) + { + struct grub_bios_int_registers regs; +@@ -298,7 +298,7 @@ grub_vbe_bios_get_mode (grub_uint32_t *mode) + return regs.eax & 0xffff; + } + +-grub_vbe_status_t ++grub_vbe_status_t + grub_vbe_bios_getset_dac_palette_width (int set, int *dac_mask_size) + { + struct grub_bios_int_registers regs; +@@ -346,7 +346,7 @@ grub_vbe_bios_get_memory_window (grub_uint32_t window, + } + + /* Call VESA BIOS 0x4f06 to set scanline length (in bytes), return status. */ +-grub_vbe_status_t ++grub_vbe_status_t + grub_vbe_bios_set_scanline_length (grub_uint32_t length) + { + struct grub_bios_int_registers regs; +@@ -354,14 +354,14 @@ grub_vbe_bios_set_scanline_length (grub_uint32_t length) + regs.ecx = length; + regs.eax = 0x4f06; + /* BL = 2, Set Scan Line in Bytes. */ +- regs.ebx = 0x0002; ++ regs.ebx = 0x0002; + regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT; + grub_bios_interrupt (0x10, ®s); + return regs.eax & 0xffff; + } + + /* Call VESA BIOS 0x4f06 to return scanline length (in bytes), return status. */ +-grub_vbe_status_t ++grub_vbe_status_t + grub_vbe_bios_get_scanline_length (grub_uint32_t *length) + { + struct grub_bios_int_registers regs; +@@ -377,7 +377,7 @@ grub_vbe_bios_get_scanline_length (grub_uint32_t *length) + } + + /* Call VESA BIOS 0x4f07 to set display start, return status. */ +-static grub_vbe_status_t ++static grub_vbe_status_t + grub_vbe_bios_set_display_start (grub_uint32_t x, grub_uint32_t y) + { + struct grub_bios_int_registers regs; +@@ -390,7 +390,7 @@ grub_vbe_bios_set_display_start (grub_uint32_t x, grub_uint32_t y) + regs.edx = y; + regs.eax = 0x4f07; + /* BL = 80h, Set Display Start during Vertical Retrace. */ +- regs.ebx = 0x0080; ++ regs.ebx = 0x0080; + regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT; + grub_bios_interrupt (0x10, ®s); + +@@ -401,7 +401,7 @@ grub_vbe_bios_set_display_start (grub_uint32_t x, grub_uint32_t y) + } + + /* Call VESA BIOS 0x4f07 to get display start, return status. */ +-grub_vbe_status_t ++grub_vbe_status_t + grub_vbe_bios_get_display_start (grub_uint32_t *x, + grub_uint32_t *y) + { +@@ -419,7 +419,7 @@ grub_vbe_bios_get_display_start (grub_uint32_t *x, + } + + /* Call VESA BIOS 0x4f0a. */ +-grub_vbe_status_t ++grub_vbe_status_t + grub_vbe_bios_get_pm_interface (grub_uint16_t *segment, grub_uint16_t *offset, + grub_uint16_t *length) + { +@@ -896,7 +896,7 @@ vbe2videoinfo (grub_uint32_t mode, + case GRUB_VBE_MEMORY_MODEL_YUV: + mode_info->mode_type |= GRUB_VIDEO_MODE_TYPE_YUV; + break; +- ++ + case GRUB_VBE_MEMORY_MODEL_DIRECT_COLOR: + mode_info->mode_type |= GRUB_VIDEO_MODE_TYPE_RGB; + break; +@@ -923,10 +923,10 @@ vbe2videoinfo (grub_uint32_t mode, + break; + case 8: + mode_info->bytes_per_pixel = 1; +- break; ++ break; + case 4: + mode_info->bytes_per_pixel = 0; +- break; ++ break; + } + + if (controller_info.version >= 0x300) +@@ -976,7 +976,7 @@ grub_video_vbe_iterate (int (*hook) (const struct grub_video_mode_info *info, vo + + static grub_err_t + grub_video_vbe_setup (unsigned int width, unsigned int height, +- grub_video_mode_type_t mode_type, ++ grub_video_mode_type_t mode_type, + grub_video_mode_type_t mode_mask) + { + grub_uint16_t *p; +@@ -1193,7 +1193,7 @@ grub_video_vbe_print_adapter_specific_info (void) + controller_info.version & 0xFF, + controller_info.oem_software_rev >> 8, + controller_info.oem_software_rev & 0xFF); +- ++ + /* The total_memory field is in 64 KiB units. */ + grub_printf_ (N_(" total memory: %d KiB\n"), + (controller_info.total_memory << 6)); +diff --git a/grub-core/video/i386/pc/vga.c b/grub-core/video/i386/pc/vga.c +index b2f776c99..50d0b5e02 100644 +--- a/grub-core/video/i386/pc/vga.c ++++ b/grub-core/video/i386/pc/vga.c +@@ -48,7 +48,7 @@ static struct + int back_page; + } framebuffer; + +-static unsigned char ++static unsigned char + grub_vga_set_mode (unsigned char mode) + { + struct grub_bios_int_registers regs; +@@ -182,10 +182,10 @@ grub_video_vga_setup (unsigned int width, unsigned int height, + + is_target = 1; + err = grub_video_fb_set_active_render_target (framebuffer.render_target); +- ++ + if (err) + return err; +- ++ + err = grub_video_fb_set_palette (0, GRUB_VIDEO_FBSTD_NUMCOLORS, + grub_video_fbstd_colors); + +diff --git a/grub-core/video/ieee1275.c b/grub-core/video/ieee1275.c +index 17a3dbbb5..f8cf94d96 100644 +--- a/grub-core/video/ieee1275.c ++++ b/grub-core/video/ieee1275.c +@@ -234,7 +234,7 @@ grub_video_ieee1275_setup (unsigned int width, unsigned int height, + /* TODO. */ + return grub_error (GRUB_ERR_IO, "can't set mode %dx%d", width, height); + } +- ++ + err = grub_video_ieee1275_fill_mode_info (dev, &framebuffer.mode_info); + if (err) + { +@@ -261,7 +261,7 @@ grub_video_ieee1275_setup (unsigned int width, unsigned int height, + + grub_video_ieee1275_set_palette (0, framebuffer.mode_info.number_of_colors, + grub_video_fbstd_colors); +- ++ + return err; + } + +diff --git a/grub-core/video/radeon_fuloong2e.c b/grub-core/video/radeon_fuloong2e.c +index b4da34b5e..40917acb7 100644 +--- a/grub-core/video/radeon_fuloong2e.c ++++ b/grub-core/video/radeon_fuloong2e.c +@@ -75,7 +75,7 @@ find_card (grub_pci_device_t dev, grub_pci_id_t pciid, void *data) + if (((class >> 16) & 0xffff) != GRUB_PCI_CLASS_SUBCLASS_VGA + || pciid != 0x515a1002) + return 0; +- ++ + *found = 1; + + addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG0); +@@ -139,7 +139,7 @@ grub_video_radeon_fuloong2e_setup (unsigned int width, unsigned int height, + framebuffer.mapped = 1; + + /* Prevent garbage from appearing on the screen. */ +- grub_memset (framebuffer.ptr, 0x55, ++ grub_memset (framebuffer.ptr, 0x55, + framebuffer.mode_info.height * framebuffer.mode_info.pitch); + + #ifndef TEST +@@ -152,7 +152,7 @@ grub_video_radeon_fuloong2e_setup (unsigned int width, unsigned int height, + return err; + + err = grub_video_fb_set_active_render_target (framebuffer.render_target); +- ++ + if (err) + return err; + +diff --git a/grub-core/video/radeon_yeeloong3a.c b/grub-core/video/radeon_yeeloong3a.c +index 52614feb6..48631c181 100644 +--- a/grub-core/video/radeon_yeeloong3a.c ++++ b/grub-core/video/radeon_yeeloong3a.c +@@ -74,7 +74,7 @@ find_card (grub_pci_device_t dev, grub_pci_id_t pciid, void *data) + if (((class >> 16) & 0xffff) != GRUB_PCI_CLASS_SUBCLASS_VGA + || pciid != 0x96151002) + return 0; +- ++ + *found = 1; + + addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG0); +@@ -137,7 +137,7 @@ grub_video_radeon_yeeloong3a_setup (unsigned int width, unsigned int height, + #endif + + /* Prevent garbage from appearing on the screen. */ +- grub_memset (framebuffer.ptr, 0, ++ grub_memset (framebuffer.ptr, 0, + framebuffer.mode_info.height * framebuffer.mode_info.pitch); + + #ifndef TEST +@@ -150,7 +150,7 @@ grub_video_radeon_yeeloong3a_setup (unsigned int width, unsigned int height, + return err; + + err = grub_video_fb_set_active_render_target (framebuffer.render_target); +- ++ + if (err) + return err; + +diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c +index 0157ff742..54dfedf43 100644 +--- a/grub-core/video/readers/png.c ++++ b/grub-core/video/readers/png.c +@@ -916,7 +916,7 @@ grub_png_convert_image (struct grub_png_data *data) + } + return; + } +- ++ + if (data->is_gray) + { + switch (data->bpp) +diff --git a/grub-core/video/readers/tga.c b/grub-core/video/readers/tga.c +index 7cb9d1d2a..a9ec3a1b6 100644 +--- a/grub-core/video/readers/tga.c ++++ b/grub-core/video/readers/tga.c +@@ -127,7 +127,7 @@ tga_load_palette (struct tga_data *data) + + if (len > sizeof (data->palette)) + len = sizeof (data->palette); +- ++ + if (grub_file_read (data->file, &data->palette, len) + != (grub_ssize_t) len) + return grub_errno; +diff --git a/grub-core/video/sis315_init.c b/grub-core/video/sis315_init.c +index ae5c1419c..09c3c7bbe 100644 +--- a/grub-core/video/sis315_init.c ++++ b/grub-core/video/sis315_init.c +@@ -1,4 +1,4 @@ +-static const struct { grub_uint8_t reg; grub_uint8_t val; } sr_dump [] = ++static const struct { grub_uint8_t reg; grub_uint8_t val; } sr_dump [] = + { + { 0x28, 0x81 }, + { 0x2a, 0x00 }, +diff --git a/grub-core/video/sis315pro.c b/grub-core/video/sis315pro.c +index 22a0c85a6..4d2f9999a 100644 +--- a/grub-core/video/sis315pro.c ++++ b/grub-core/video/sis315pro.c +@@ -103,7 +103,7 @@ find_card (grub_pci_device_t dev, grub_pci_id_t pciid, void *data) + if (((class >> 16) & 0xffff) != GRUB_PCI_CLASS_SUBCLASS_VGA + || pciid != GRUB_SIS315PRO_PCIID) + return 0; +- ++ + *found = 1; + + addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG0); +@@ -218,7 +218,7 @@ grub_video_sis315pro_setup (unsigned int width, unsigned int height, + + #ifndef TEST + /* Prevent garbage from appearing on the screen. */ +- grub_memset (framebuffer.ptr, 0, ++ grub_memset (framebuffer.ptr, 0, + framebuffer.mode_info.height * framebuffer.mode_info.pitch); + grub_arch_sync_dma_caches (framebuffer.ptr, + framebuffer.mode_info.height +@@ -231,7 +231,7 @@ grub_video_sis315pro_setup (unsigned int width, unsigned int height, + | GRUB_VGA_IO_MISC_EXTERNAL_CLOCK_0 + | GRUB_VGA_IO_MISC_28MHZ + | GRUB_VGA_IO_MISC_ENABLE_VRAM_ACCESS +- | GRUB_VGA_IO_MISC_COLOR, ++ | GRUB_VGA_IO_MISC_COLOR, + GRUB_VGA_IO_MISC_WRITE + GRUB_MACHINE_PCI_IO_BASE); + + grub_vga_sr_write (0x86, 5); +@@ -335,7 +335,7 @@ grub_video_sis315pro_setup (unsigned int width, unsigned int height, + { + if (read_sis_cmd (0x5) != 0xa1) + write_sis_cmd (0x86, 0x5); +- ++ + write_sis_cmd (read_sis_cmd (0x20) | 0xa1, 0x20); + write_sis_cmd (read_sis_cmd (0x1e) | 0xda, 0x1e); + +diff --git a/grub-core/video/sm712.c b/grub-core/video/sm712.c +index 10c46eb65..65f59f84b 100644 +--- a/grub-core/video/sm712.c ++++ b/grub-core/video/sm712.c +@@ -167,7 +167,7 @@ enum + GRUB_SM712_CR_SHADOW_VGA_VBLANK_START = 0x46, + GRUB_SM712_CR_SHADOW_VGA_VBLANK_END = 0x47, + GRUB_SM712_CR_SHADOW_VGA_VRETRACE_START = 0x48, +- GRUB_SM712_CR_SHADOW_VGA_VRETRACE_END = 0x49, ++ GRUB_SM712_CR_SHADOW_VGA_VRETRACE_END = 0x49, + GRUB_SM712_CR_SHADOW_VGA_OVERFLOW = 0x4a, + GRUB_SM712_CR_SHADOW_VGA_CELL_HEIGHT = 0x4b, + GRUB_SM712_CR_SHADOW_VGA_HDISPLAY_END = 0x4c, +@@ -375,7 +375,7 @@ find_card (grub_pci_device_t dev, grub_pci_id_t pciid, void *data) + if (((class >> 16) & 0xffff) != GRUB_PCI_CLASS_SUBCLASS_VGA + || pciid != GRUB_SM712_PCIID) + return 0; +- ++ + *found = 1; + + addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG0); +@@ -471,7 +471,7 @@ grub_video_sm712_setup (unsigned int width, unsigned int height, + + #if !defined (TEST) && !defined(GENINIT) + /* Prevent garbage from appearing on the screen. */ +- grub_memset ((void *) framebuffer.cached_ptr, 0, ++ grub_memset ((void *) framebuffer.cached_ptr, 0, + framebuffer.mode_info.height * framebuffer.mode_info.pitch); + #endif + +@@ -482,7 +482,7 @@ grub_video_sm712_setup (unsigned int width, unsigned int height, + grub_sm712_sr_write (0x2, 0x6b); + grub_sm712_write_reg (0, GRUB_VGA_IO_PIXEL_MASK); + grub_sm712_sr_write (GRUB_VGA_SR_RESET_ASYNC, GRUB_VGA_SR_RESET); +- grub_sm712_write_reg (GRUB_VGA_IO_MISC_NEGATIVE_VERT_POLARITY ++ grub_sm712_write_reg (GRUB_VGA_IO_MISC_NEGATIVE_VERT_POLARITY + | GRUB_VGA_IO_MISC_NEGATIVE_HORIZ_POLARITY + | GRUB_VGA_IO_MISC_UPPER_64K + | GRUB_VGA_IO_MISC_EXTERNAL_CLOCK_0 +@@ -694,7 +694,7 @@ grub_video_sm712_setup (unsigned int width, unsigned int height, + for (i = 0; i < ARRAY_SIZE (dda_lookups); i++) + grub_sm712_write_dda_lookup (i, dda_lookups[i].compare, dda_lookups[i].dda, + dda_lookups[i].vcentering); +- ++ + /* Undocumented */ + grub_sm712_cr_write (0, 0x9c); + grub_sm712_cr_write (0, 0x9d); +diff --git a/grub-core/video/video.c b/grub-core/video/video.c +index 983424107..8937da745 100644 +--- a/grub-core/video/video.c ++++ b/grub-core/video/video.c +@@ -491,13 +491,13 @@ parse_modespec (const char *current_mode, int *width, int *height, int *depth) + current_mode); + + param++; +- ++ + *width = grub_strtoul (value, 0, 0); + if (grub_errno != GRUB_ERR_NONE) + return grub_error (GRUB_ERR_BAD_ARGUMENT, + N_("invalid video mode specification `%s'"), + current_mode); +- ++ + /* Find height value. */ + value = param; + param = grub_strchr(param, 'x'); +@@ -513,13 +513,13 @@ parse_modespec (const char *current_mode, int *width, int *height, int *depth) + { + /* We have optional color depth value. */ + param++; +- ++ + *height = grub_strtoul (value, 0, 0); + if (grub_errno != GRUB_ERR_NONE) + return grub_error (GRUB_ERR_BAD_ARGUMENT, + N_("invalid video mode specification `%s'"), + current_mode); +- ++ + /* Convert color depth value. */ + value = param; + *depth = grub_strtoul (value, 0, 0); +-- +2.41.0 + diff --git a/boot/grub2/0008-video-readers-png-Abort-sooner-if-a-read-operation-f.patch b/boot/grub2/0008-video-readers-png-Abort-sooner-if-a-read-operation-f.patch new file mode 100644 index 0000000000..94431a4ef1 --- /dev/null +++ b/boot/grub2/0008-video-readers-png-Abort-sooner-if-a-read-operation-f.patch @@ -0,0 +1,204 @@ +From 91d16e415b79f5080fa2bcc21bff6471f6be9f08 Mon Sep 17 00:00:00 2001 +From: Daniel Axtens +Date: Tue, 6 Jul 2021 14:02:55 +1000 +Subject: [PATCH] video/readers/png: Abort sooner if a read operation fails + +Fuzzing revealed some inputs that were taking a long time, potentially +forever, because they did not bail quickly upon encountering an I/O error. + +Try to catch I/O errors sooner and bail out. + +Signed-off-by: Daniel Axtens +Reviewed-by: Daniel Kiper +Upstream: d5caac8ab79d068ad9a41030c772d03a4d4fbd7b +[Thomas: needed to cherry-pick +e623866d9286410156e8b9d2c82d6253a1b22d08, which fixes CVE-2021-3695] +Signed-off-by: Thomas Petazzoni +--- + grub-core/video/readers/png.c | 55 ++++++++++++++++++++++++++++++----- + 1 file changed, 47 insertions(+), 8 deletions(-) + +diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c +index 54dfedf43..d715c4629 100644 +--- a/grub-core/video/readers/png.c ++++ b/grub-core/video/readers/png.c +@@ -142,6 +142,7 @@ static grub_uint8_t + grub_png_get_byte (struct grub_png_data *data) + { + grub_uint8_t r; ++ grub_ssize_t bytes_read = 0; + + if ((data->inside_idat) && (data->idat_remain == 0)) + { +@@ -175,7 +176,14 @@ grub_png_get_byte (struct grub_png_data *data) + } + + r = 0; +- grub_file_read (data->file, &r, 1); ++ bytes_read = grub_file_read (data->file, &r, 1); ++ ++ if (bytes_read != 1) ++ { ++ grub_error (GRUB_ERR_BAD_FILE_TYPE, ++ "png: unexpected end of data"); ++ return 0; ++ } + + if (data->inside_idat) + data->idat_remain--; +@@ -231,15 +239,16 @@ grub_png_decode_image_palette (struct grub_png_data *data, + if (len == 0) + return GRUB_ERR_NONE; + +- for (i = 0; 3 * i < len && i < 256; i++) ++ grub_errno = GRUB_ERR_NONE; ++ for (i = 0; 3 * i < len && i < 256 && grub_errno == GRUB_ERR_NONE; i++) + for (j = 0; j < 3; j++) + data->palette[i][j] = grub_png_get_byte (data); +- for (i *= 3; i < len; i++) ++ for (i *= 3; i < len && grub_errno == GRUB_ERR_NONE; i++) + grub_png_get_byte (data); + + grub_png_get_dword (data); + +- return GRUB_ERR_NONE; ++ return grub_errno; + } + + static grub_err_t +@@ -256,9 +265,13 @@ grub_png_decode_image_header (struct grub_png_data *data) + return grub_error (GRUB_ERR_BAD_FILE_TYPE, "png: invalid image size"); + + color_bits = grub_png_get_byte (data); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + data->is_16bit = (color_bits == 16); + + color_type = grub_png_get_byte (data); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + + /* According to PNG spec, no other types are valid. */ + if ((color_type & ~(PNG_COLOR_MASK_ALPHA | PNG_COLOR_MASK_COLOR)) +@@ -340,14 +353,20 @@ grub_png_decode_image_header (struct grub_png_data *data) + if (grub_png_get_byte (data) != PNG_COMPRESSION_BASE) + return grub_error (GRUB_ERR_BAD_FILE_TYPE, + "png: compression method not supported"); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + + if (grub_png_get_byte (data) != PNG_FILTER_TYPE_BASE) + return grub_error (GRUB_ERR_BAD_FILE_TYPE, + "png: filter method not supported"); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + + if (grub_png_get_byte (data) != PNG_INTERLACE_NONE) + return grub_error (GRUB_ERR_BAD_FILE_TYPE, + "png: interlace method not supported"); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + + /* Skip crc checksum. */ + grub_png_get_dword (data); +@@ -449,7 +468,7 @@ grub_png_get_huff_code (struct grub_png_data *data, struct huff_table *ht) + int code, i; + + code = 0; +- for (i = 0; i < ht->max_length; i++) ++ for (i = 0; i < ht->max_length && grub_errno == GRUB_ERR_NONE; i++) + { + code = (code << 1) + grub_png_get_bits (data, 1); + if (code < ht->maxval[i]) +@@ -504,8 +523,14 @@ grub_png_init_dynamic_block (struct grub_png_data *data) + grub_uint8_t lens[DEFLATE_HCLEN_MAX]; + + nl = DEFLATE_HLIT_BASE + grub_png_get_bits (data, 5); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + nd = DEFLATE_HDIST_BASE + grub_png_get_bits (data, 5); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + nb = DEFLATE_HCLEN_BASE + grub_png_get_bits (data, 4); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + + if ((nl > DEFLATE_HLIT_MAX) || (nd > DEFLATE_HDIST_MAX) || + (nb > DEFLATE_HCLEN_MAX)) +@@ -533,7 +558,7 @@ grub_png_init_dynamic_block (struct grub_png_data *data) + data->dist_offset); + + prev = 0; +- for (i = 0; i < nl + nd; i++) ++ for (i = 0; i < nl + nd && grub_errno == GRUB_ERR_NONE; i++) + { + int n, code; + struct huff_table *ht; +@@ -721,17 +746,21 @@ grub_png_read_dynamic_block (struct grub_png_data *data) + len = cplens[n]; + if (cplext[n]) + len += grub_png_get_bits (data, cplext[n]); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + + n = grub_png_get_huff_code (data, &data->dist_table); + dist = cpdist[n]; + if (cpdext[n]) + dist += grub_png_get_bits (data, cpdext[n]); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + + pos = data->wp - dist; + if (pos < 0) + pos += WSIZE; + +- while (len > 0) ++ while (len > 0 && grub_errno == GRUB_ERR_NONE) + { + data->slide[data->wp] = data->slide[pos]; + grub_png_output_byte (data, data->slide[data->wp]); +@@ -759,7 +788,11 @@ grub_png_decode_image_data (struct grub_png_data *data) + int final; + + cmf = grub_png_get_byte (data); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + flg = grub_png_get_byte (data); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + + if ((cmf & 0xF) != Z_DEFLATED) + return grub_error (GRUB_ERR_BAD_FILE_TYPE, +@@ -774,7 +807,11 @@ grub_png_decode_image_data (struct grub_png_data *data) + int block_type; + + final = grub_png_get_bits (data, 1); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + block_type = grub_png_get_bits (data, 2); ++ if (grub_errno != GRUB_ERR_NONE) ++ return grub_errno; + + switch (block_type) + { +@@ -790,7 +827,7 @@ grub_png_decode_image_data (struct grub_png_data *data) + grub_png_get_byte (data); + grub_png_get_byte (data); + +- for (i = 0; i < len; i++) ++ for (i = 0; i < len && grub_errno == GRUB_ERR_NONE; i++) + grub_png_output_byte (data, grub_png_get_byte (data)); + + break; +@@ -1045,6 +1082,8 @@ grub_png_decode_png (struct grub_png_data *data) + + len = grub_png_get_dword (data); + type = grub_png_get_dword (data); ++ if (grub_errno != GRUB_ERR_NONE) ++ break; + data->next_offset = data->file->offset + len + 4; + + switch (type) +-- +2.41.0 + diff --git a/boot/grub2/0009-video-readers-png-Refuse-to-handle-multiple-image-he.patch b/boot/grub2/0009-video-readers-png-Refuse-to-handle-multiple-image-he.patch new file mode 100644 index 0000000000..903d33b7b5 --- /dev/null +++ b/boot/grub2/0009-video-readers-png-Refuse-to-handle-multiple-image-he.patch @@ -0,0 +1,34 @@ +From e170edd18fcfdd9e6f91ba750fd022cef8d43cd4 Mon Sep 17 00:00:00 2001 +From: Daniel Axtens +Date: Tue, 6 Jul 2021 14:13:40 +1000 +Subject: [PATCH] video/readers/png: Refuse to handle multiple image headers + +This causes the bitmap to be leaked. Do not permit multiple image headers. + +Signed-off-by: Daniel Axtens +Reviewed-by: Daniel Kiper +Upstream: 166a4d61448f74745afe1dac2f2cfb85d04909bf +[Thomas: needed to cherry-pick +e623866d9286410156e8b9d2c82d6253a1b22d08, which fixes CVE-2021-3695] +Signed-off-by: Thomas Petazzoni +--- + grub-core/video/readers/png.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c +index d715c4629..35ae553c8 100644 +--- a/grub-core/video/readers/png.c ++++ b/grub-core/video/readers/png.c +@@ -258,6 +258,9 @@ grub_png_decode_image_header (struct grub_png_data *data) + int color_bits; + enum grub_video_blit_format blt; + ++ if (data->image_width || data->image_height) ++ return grub_error (GRUB_ERR_BAD_FILE_TYPE, "png: two image headers found"); ++ + data->image_width = grub_png_get_dword (data); + data->image_height = grub_png_get_dword (data); + +-- +2.41.0 + diff --git a/boot/grub2/0010-video-readers-png-Drop-greyscale-support-to-fix-heap.patch b/boot/grub2/0010-video-readers-png-Drop-greyscale-support-to-fix-heap.patch new file mode 100644 index 0000000000..686a0beafd --- /dev/null +++ b/boot/grub2/0010-video-readers-png-Drop-greyscale-support-to-fix-heap.patch @@ -0,0 +1,173 @@ +From 5b42d132a029c1d245d94c813a45836522b46226 Mon Sep 17 00:00:00 2001 +From: Daniel Axtens +Date: Tue, 6 Jul 2021 18:51:35 +1000 +Subject: [PATCH] video/readers/png: Drop greyscale support to fix heap + out-of-bounds write + +A 16-bit greyscale PNG without alpha is processed in the following loop: + + for (i = 0; i < (data->image_width * data->image_height); + i++, d1 += 4, d2 += 2) + { + d1[R3] = d2[1]; + d1[G3] = d2[1]; + d1[B3] = d2[1]; + } + +The increment of d1 is wrong. d1 is incremented by 4 bytes per iteration, +but there are only 3 bytes allocated for storage. This means that image +data will overwrite somewhat-attacker-controlled parts of memory - 3 bytes +out of every 4 following the end of the image. + +This has existed since greyscale support was added in 2013 in commit +3ccf16dff98f (grub-core/video/readers/png.c: Support grayscale). + +Saving starfield.png as a 16-bit greyscale image without alpha in the gimp +and attempting to load it causes grub-emu to crash - I don't think this code +has ever worked. + +Delete all PNG greyscale support. + +Fixes: CVE-2021-3695 + +Signed-off-by: Daniel Axtens +Reviewed-by: Daniel Kiper +Upstream: e623866d9286410156e8b9d2c82d6253a1b22d08 +Signed-off-by: Thomas Petazzoni +--- + grub-core/video/readers/png.c | 87 +++-------------------------------- + 1 file changed, 7 insertions(+), 80 deletions(-) + +diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c +index 35ae553c8..a3161e25b 100644 +--- a/grub-core/video/readers/png.c ++++ b/grub-core/video/readers/png.c +@@ -100,7 +100,7 @@ struct grub_png_data + + unsigned image_width, image_height; + int bpp, is_16bit; +- int raw_bytes, is_gray, is_alpha, is_palette; ++ int raw_bytes, is_alpha, is_palette; + int row_bytes, color_bits; + grub_uint8_t *image_data; + +@@ -296,13 +296,13 @@ grub_png_decode_image_header (struct grub_png_data *data) + data->bpp = 3; + else + { +- data->is_gray = 1; +- data->bpp = 1; ++ return grub_error (GRUB_ERR_BAD_FILE_TYPE, ++ "png: color type not supported"); + } + + if ((color_bits != 8) && (color_bits != 16) + && (color_bits != 4 +- || !(data->is_gray || data->is_palette))) ++ || !data->is_palette)) + return grub_error (GRUB_ERR_BAD_FILE_TYPE, + "png: bit depth must be 8 or 16"); + +@@ -331,7 +331,7 @@ grub_png_decode_image_header (struct grub_png_data *data) + } + + #ifndef GRUB_CPU_WORDS_BIGENDIAN +- if (data->is_16bit || data->is_gray || data->is_palette) ++ if (data->is_16bit || data->is_palette) + #endif + { + data->image_data = grub_calloc (data->image_height, data->row_bytes); +@@ -899,27 +899,8 @@ grub_png_convert_image (struct grub_png_data *data) + int shift; + int mask = (1 << data->color_bits) - 1; + unsigned j; +- if (data->is_gray) +- { +- /* Generic formula is +- (0xff * i) / ((1U << data->color_bits) - 1) +- but for allowed bit depth of 1, 2 and for it's +- equivalent to +- (0xff / ((1U << data->color_bits) - 1)) * i +- Precompute the multipliers to avoid division. +- */ +- +- const grub_uint8_t multipliers[5] = { 0xff, 0xff, 0x55, 0x24, 0x11 }; +- for (i = 0; i < (1U << data->color_bits); i++) +- { +- grub_uint8_t col = multipliers[data->color_bits] * i; +- palette[i][0] = col; +- palette[i][1] = col; +- palette[i][2] = col; +- } +- } +- else +- grub_memcpy (palette, data->palette, 3 << data->color_bits); ++ ++ grub_memcpy (palette, data->palette, 3 << data->color_bits); + d1c = d1; + d2c = d2; + for (j = 0; j < data->image_height; j++, d1c += data->image_width * 3, +@@ -957,60 +938,6 @@ grub_png_convert_image (struct grub_png_data *data) + return; + } + +- if (data->is_gray) +- { +- switch (data->bpp) +- { +- case 4: +- /* 16-bit gray with alpha. */ +- for (i = 0; i < (data->image_width * data->image_height); +- i++, d1 += 4, d2 += 4) +- { +- d1[R4] = d2[3]; +- d1[G4] = d2[3]; +- d1[B4] = d2[3]; +- d1[A4] = d2[1]; +- } +- break; +- case 2: +- if (data->is_16bit) +- /* 16-bit gray without alpha. */ +- { +- for (i = 0; i < (data->image_width * data->image_height); +- i++, d1 += 4, d2 += 2) +- { +- d1[R3] = d2[1]; +- d1[G3] = d2[1]; +- d1[B3] = d2[1]; +- } +- } +- else +- /* 8-bit gray with alpha. */ +- { +- for (i = 0; i < (data->image_width * data->image_height); +- i++, d1 += 4, d2 += 2) +- { +- d1[R4] = d2[1]; +- d1[G4] = d2[1]; +- d1[B4] = d2[1]; +- d1[A4] = d2[0]; +- } +- } +- break; +- /* 8-bit gray without alpha. */ +- case 1: +- for (i = 0; i < (data->image_width * data->image_height); +- i++, d1 += 3, d2++) +- { +- d1[R3] = d2[0]; +- d1[G3] = d2[0]; +- d1[B3] = d2[0]; +- } +- break; +- } +- return; +- } +- + { + /* Only copy the upper 8 bit. */ + #ifndef GRUB_CPU_WORDS_BIGENDIAN +-- +2.41.0 + diff --git a/boot/grub2/0011-video-readers-png-Avoid-heap-OOB-R-W-inserting-huff-.patch b/boot/grub2/0011-video-readers-png-Avoid-heap-OOB-R-W-inserting-huff-.patch new file mode 100644 index 0000000000..19fde07060 --- /dev/null +++ b/boot/grub2/0011-video-readers-png-Avoid-heap-OOB-R-W-inserting-huff-.patch @@ -0,0 +1,44 @@ +From 43a7d9cb829467993ba683a26c980fcfdaa924c8 Mon Sep 17 00:00:00 2001 +From: Daniel Axtens +Date: Tue, 6 Jul 2021 23:25:07 +1000 +Subject: [PATCH] video/readers/png: Avoid heap OOB R/W inserting huff table + items + +In fuzzing we observed crashes where a code would attempt to be inserted +into a huffman table before the start, leading to a set of heap OOB reads +and writes as table entries with negative indices were shifted around and +the new code written in. + +Catch the case where we would underflow the array and bail. + +Fixes: CVE-2021-3696 + +Signed-off-by: Daniel Axtens +Reviewed-by: Daniel Kiper +Upstream: 210245129c932dc9e1c2748d9d35524fb95b5042 +Signed-off-by: Thomas Petazzoni +--- + grub-core/video/readers/png.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c +index a3161e25b..d7ed5aa6c 100644 +--- a/grub-core/video/readers/png.c ++++ b/grub-core/video/readers/png.c +@@ -438,6 +438,13 @@ grub_png_insert_huff_item (struct huff_table *ht, int code, int len) + for (i = len; i < ht->max_length; i++) + n += ht->maxval[i]; + ++ if (n > ht->num_values) ++ { ++ grub_error (GRUB_ERR_BAD_FILE_TYPE, ++ "png: out of range inserting huffman table item"); ++ return; ++ } ++ + for (i = 0; i < n; i++) + ht->values[ht->num_values - i] = ht->values[ht->num_values - i - 1]; + +-- +2.41.0 + diff --git a/boot/grub2/0012-video-readers-jpeg-Block-int-underflow-wild-pointer-.patch b/boot/grub2/0012-video-readers-jpeg-Block-int-underflow-wild-pointer-.patch new file mode 100644 index 0000000000..75c3f8e43b --- /dev/null +++ b/boot/grub2/0012-video-readers-jpeg-Block-int-underflow-wild-pointer-.patch @@ -0,0 +1,78 @@ +From 6be7ccfcc33da513de66f71de63fdc129fa019c2 Mon Sep 17 00:00:00 2001 +From: Daniel Axtens +Date: Wed, 7 Jul 2021 15:38:19 +1000 +Subject: [PATCH] video/readers/jpeg: Block int underflow -> wild pointer write + +Certain 1 px wide images caused a wild pointer write in +grub_jpeg_ycrcb_to_rgb(). This was caused because in grub_jpeg_decode_data(), +we have the following loop: + +for (; data->r1 < nr1 && (!data->dri || rst); + data->r1++, data->bitmap_ptr += (vb * data->image_width - hb * nc1) * 3) + +We did not check if vb * width >= hb * nc1. + +On a 64-bit platform, if that turns out to be negative, it will underflow, +be interpreted as unsigned 64-bit, then be added to the 64-bit pointer, so +we see data->bitmap_ptr jump, e.g.: + +0x6180_0000_0480 to +0x6181_0000_0498 + ^ + ~--- carry has occurred and this pointer is now far away from + any object. + +On a 32-bit platform, it will decrement the pointer, creating a pointer +that won't crash but will overwrite random data. + +Catch the underflow and error out. + +Fixes: CVE-2021-3697 + +Signed-off-by: Daniel Axtens +Reviewed-by: Daniel Kiper +Upstream: 22a3f97d39f6a10b08ad7fd1cc47c4dcd10413f6 +Signed-off-by: Thomas Petazzoni +--- + grub-core/video/readers/jpeg.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/grub-core/video/readers/jpeg.c b/grub-core/video/readers/jpeg.c +index e31602f76..1d256af01 100644 +--- a/grub-core/video/readers/jpeg.c ++++ b/grub-core/video/readers/jpeg.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + GRUB_MOD_LICENSE ("GPLv3+"); + +@@ -639,6 +640,7 @@ static grub_err_t + grub_jpeg_decode_data (struct grub_jpeg_data *data) + { + unsigned c1, vb, hb, nr1, nc1; ++ unsigned stride_a, stride_b, stride; + int rst = data->dri; + + vb = 8 << data->log_vs; +@@ -650,8 +652,14 @@ grub_jpeg_decode_data (struct grub_jpeg_data *data) + return grub_error(GRUB_ERR_BAD_FILE_TYPE, + "jpeg: attempted to decode data before start of stream"); + ++ if (grub_mul(vb, data->image_width, &stride_a) || ++ grub_mul(hb, nc1, &stride_b) || ++ grub_sub(stride_a, stride_b, &stride)) ++ return grub_error (GRUB_ERR_BAD_FILE_TYPE, ++ "jpeg: cannot decode image with these dimensions"); ++ + for (; data->r1 < nr1 && (!data->dri || rst); +- data->r1++, data->bitmap_ptr += (vb * data->image_width - hb * nc1) * 3) ++ data->r1++, data->bitmap_ptr += stride * 3) + for (c1 = 0; c1 < nc1 && (!data->dri || rst); + c1++, rst--, data->bitmap_ptr += hb * 3) + { +-- +2.41.0 + diff --git a/boot/grub2/0013-net-ip-Do-IP-fragment-maths-safely.patch b/boot/grub2/0013-net-ip-Do-IP-fragment-maths-safely.patch new file mode 100644 index 0000000000..3acec5cc20 --- /dev/null +++ b/boot/grub2/0013-net-ip-Do-IP-fragment-maths-safely.patch @@ -0,0 +1,56 @@ +From cadde7e36b8797060ac8cdf7cca7d8e1e09697e6 Mon Sep 17 00:00:00 2001 +From: Daniel Axtens +Date: Mon, 20 Dec 2021 19:41:21 +1100 +Subject: [PATCH] net/ip: Do IP fragment maths safely + +We can receive packets with invalid IP fragmentation information. This +can lead to rsm->total_len underflowing and becoming very large. + +Then, in grub_netbuff_alloc(), we add to this very large number, which can +cause it to overflow and wrap back around to a small positive number. +The allocation then succeeds, but the resulting buffer is too small and +subsequent operations can write past the end of the buffer. + +Catch the underflow here. + +Fixes: CVE-2022-28733 + +Signed-off-by: Daniel Axtens +Reviewed-by: Daniel Kiper +Upstream: 3e4817538de828319ba6d59ced2fbb9b5ca13287 +Signed-off-by: Thomas Petazzoni +--- + grub-core/net/ip.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/grub-core/net/ip.c b/grub-core/net/ip.c +index ea5edf8f1..74e4e8b06 100644 +--- a/grub-core/net/ip.c ++++ b/grub-core/net/ip.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include + + struct iphdr { +@@ -512,7 +513,14 @@ grub_net_recv_ip4_packets (struct grub_net_buff *nb, + { + rsm->total_len = (8 * (grub_be_to_cpu16 (iph->frags) & OFFSET_MASK) + + (nb->tail - nb->data)); +- rsm->total_len -= ((iph->verhdrlen & 0xf) * sizeof (grub_uint32_t)); ++ ++ if (grub_sub (rsm->total_len, (iph->verhdrlen & 0xf) * sizeof (grub_uint32_t), ++ &rsm->total_len)) ++ { ++ grub_dprintf ("net", "IP reassembly size underflow\n"); ++ return GRUB_ERR_NONE; ++ } ++ + rsm->asm_netbuff = grub_netbuff_alloc (rsm->total_len); + if (!rsm->asm_netbuff) + { +-- +2.41.0 + diff --git a/boot/grub2/0014-net-http-Fix-OOB-write-for-split-http-headers.patch b/boot/grub2/0014-net-http-Fix-OOB-write-for-split-http-headers.patch new file mode 100644 index 0000000000..cd249299be --- /dev/null +++ b/boot/grub2/0014-net-http-Fix-OOB-write-for-split-http-headers.patch @@ -0,0 +1,50 @@ +From 6bb49bda656e1121fd303cf3e69709172e267718 Mon Sep 17 00:00:00 2001 +From: Daniel Axtens +Date: Tue, 8 Mar 2022 18:17:03 +1100 +Subject: [PATCH] net/http: Fix OOB write for split http headers + +GRUB has special code for handling an http header that is split +across two packets. + +The code tracks the end of line by looking for a "\n" byte. The +code for split headers has always advanced the pointer just past the +end of the line, whereas the code that handles unsplit headers does +not advance the pointer. This extra advance causes the length to be +one greater, which breaks an assumption in parse_line(), leading to +it writing a NUL byte one byte past the end of the buffer where we +reconstruct the line from the two packets. + +It's conceivable that an attacker controlled set of packets could +cause this to zero out the first byte of the "next" pointer of the +grub_mm_region structure following the current_line buffer. + +Do not advance the pointer in the split header case. + +Fixes: CVE-2022-28734 + +Signed-off-by: Daniel Axtens +Reviewed-by: Daniel Kiper +Upstream: ec6bfd3237394c1c7dbf2fd73417173318d22f4b +Signed-off-by: Thomas Petazzoni +--- + grub-core/net/http.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/grub-core/net/http.c b/grub-core/net/http.c +index b616cf40b..a19b0a205 100644 +--- a/grub-core/net/http.c ++++ b/grub-core/net/http.c +@@ -190,9 +190,7 @@ http_receive (grub_net_tcp_socket_t sock __attribute__ ((unused)), + int have_line = 1; + char *t; + ptr = grub_memchr (nb->data, '\n', nb->tail - nb->data); +- if (ptr) +- ptr++; +- else ++ if (ptr == NULL) + { + have_line = 0; + ptr = (char *) nb->tail; +-- +2.41.0 + diff --git a/boot/grub2/0015-net-http-Error-out-on-headers-with-LF-without-CR.patch b/boot/grub2/0015-net-http-Error-out-on-headers-with-LF-without-CR.patch new file mode 100644 index 0000000000..684bb88a9c --- /dev/null +++ b/boot/grub2/0015-net-http-Error-out-on-headers-with-LF-without-CR.patch @@ -0,0 +1,52 @@ +From 2974684d2f7f85a5c57af8155cc3b70c04ec1d6b Mon Sep 17 00:00:00 2001 +From: Daniel Axtens +Date: Tue, 8 Mar 2022 19:04:40 +1100 +Subject: [PATCH] net/http: Error out on headers with LF without CR + +In a similar vein to the previous patch, parse_line() would write +a NUL byte past the end of the buffer if there was an HTTP header +with a LF rather than a CRLF. + +RFC-2616 says: + + Many HTTP/1.1 header field values consist of words separated by LWS + or special characters. These special characters MUST be in a quoted + string to be used within a parameter value (as defined in section 3.6). + +We don't support quoted sections or continuation lines, etc. + +If we see an LF that's not part of a CRLF, bail out. + +Fixes: CVE-2022-28734 + +Signed-off-by: Daniel Axtens +Reviewed-by: Daniel Kiper +Upstream: b26b4c08e7119281ff30d0fb4a6169bd2afa8fe4 +Signed-off-by: Thomas Petazzoni +--- + grub-core/net/http.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/grub-core/net/http.c b/grub-core/net/http.c +index a19b0a205..1fa62b5cb 100644 +--- a/grub-core/net/http.c ++++ b/grub-core/net/http.c +@@ -68,7 +68,15 @@ parse_line (grub_file_t file, http_data_t data, char *ptr, grub_size_t len) + char *end = ptr + len; + while (end > ptr && *(end - 1) == '\r') + end--; ++ ++ /* LF without CR. */ ++ if (end == ptr + len) ++ { ++ data->errmsg = grub_strdup (_("invalid HTTP header - LF without CR")); ++ return GRUB_ERR_NONE; ++ } + *end = 0; ++ + /* Trailing CRLF. */ + if (data->in_chunk_len == 1) + { +-- +2.41.0 + diff --git a/boot/grub2/0016-font-Fix-size-overflow-in-grub_font_get_glyph_intern.patch b/boot/grub2/0016-font-Fix-size-overflow-in-grub_font_get_glyph_intern.patch new file mode 100644 index 0000000000..680df1f5e9 --- /dev/null +++ b/boot/grub2/0016-font-Fix-size-overflow-in-grub_font_get_glyph_intern.patch @@ -0,0 +1,116 @@ +From 1aefeca0f6304a20c1a3711cb9e89c5fdb901b6b Mon Sep 17 00:00:00 2001 +From: Zhang Boyang +Date: Fri, 5 Aug 2022 00:51:20 +0800 +Subject: [PATCH] font: Fix size overflow in grub_font_get_glyph_internal() + +The length of memory allocation and file read may overflow. This patch +fixes the problem by using safemath macros. + +There is a lot of code repetition like "(x * y + 7) / 8". It is unsafe +if overflow happens. This patch introduces grub_video_bitmap_calc_1bpp_bufsz(). +It is safe replacement for such code. It has safemath-like prototype. + +This patch also introduces grub_cast(value, pointer), it casts value to +typeof(*pointer) then store the value to *pointer. It returns true when +overflow occurs or false if there is no overflow. The semantics of arguments +and return value are designed to be consistent with other safemath macros. + +Signed-off-by: Zhang Boyang +Reviewed-by: Daniel Kiper +Upstream: 9c76ec09ae08155df27cd237eaea150b4f02f532 +[Thomas: needed to backport 768e1ef2fc159f6e14e7246e4be09363708ac39e, +which fixes CVE-2022-2601] +Signed-off-by: Thomas Petazzoni +--- + grub-core/font/font.c | 17 +++++++++++++---- + include/grub/bitmap.h | 18 ++++++++++++++++++ + include/grub/safemath.h | 2 ++ + 3 files changed, 33 insertions(+), 4 deletions(-) + +diff --git a/grub-core/font/font.c b/grub-core/font/font.c +index d09bb38d8..876b5b695 100644 +--- a/grub-core/font/font.c ++++ b/grub-core/font/font.c +@@ -739,7 +739,8 @@ grub_font_get_glyph_internal (grub_font_t font, grub_uint32_t code) + grub_int16_t xoff; + grub_int16_t yoff; + grub_int16_t dwidth; +- int len; ++ grub_ssize_t len; ++ grub_size_t sz; + + if (index_entry->glyph) + /* Return cached glyph. */ +@@ -766,9 +767,17 @@ grub_font_get_glyph_internal (grub_font_t font, grub_uint32_t code) + return 0; + } + +- len = (width * height + 7) / 8; +- glyph = grub_malloc (sizeof (struct grub_font_glyph) + len); +- if (!glyph) ++ /* Calculate real struct size of current glyph. */ ++ if (grub_video_bitmap_calc_1bpp_bufsz (width, height, &len) || ++ grub_add (sizeof (struct grub_font_glyph), len, &sz)) ++ { ++ remove_font (font); ++ return 0; ++ } ++ ++ /* Allocate and initialize the glyph struct. */ ++ glyph = grub_malloc (sz); ++ if (glyph == NULL) + { + remove_font (font); + return 0; +diff --git a/include/grub/bitmap.h b/include/grub/bitmap.h +index 5728f8ca3..0d9603f61 100644 +--- a/include/grub/bitmap.h ++++ b/include/grub/bitmap.h +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + struct grub_video_bitmap + { +@@ -79,6 +80,23 @@ grub_video_bitmap_get_height (struct grub_video_bitmap *bitmap) + return bitmap->mode_info.height; + } + ++/* ++ * Calculate and store the size of data buffer of 1bit bitmap in result. ++ * Equivalent to "*result = (width * height + 7) / 8" if no overflow occurs. ++ * Return true when overflow occurs or false if there is no overflow. ++ * This function is intentionally implemented as a macro instead of ++ * an inline function. Although a bit awkward, it preserves data types for ++ * safemath macros and reduces macro side effects as much as possible. ++ * ++ * XXX: Will report false overflow if width * height > UINT64_MAX. ++ */ ++#define grub_video_bitmap_calc_1bpp_bufsz(width, height, result) \ ++({ \ ++ grub_uint64_t _bitmap_pixels; \ ++ grub_mul ((width), (height), &_bitmap_pixels) ? 1 : \ ++ grub_cast (_bitmap_pixels / GRUB_CHAR_BIT + !!(_bitmap_pixels % GRUB_CHAR_BIT), (result)); \ ++}) ++ + void EXPORT_FUNC (grub_video_bitmap_get_mode_info) (struct grub_video_bitmap *bitmap, + struct grub_video_mode_info *mode_info); + +diff --git a/include/grub/safemath.h b/include/grub/safemath.h +index c17b89bba..bb0f826de 100644 +--- a/include/grub/safemath.h ++++ b/include/grub/safemath.h +@@ -30,6 +30,8 @@ + #define grub_sub(a, b, res) __builtin_sub_overflow(a, b, res) + #define grub_mul(a, b, res) __builtin_mul_overflow(a, b, res) + ++#define grub_cast(a, res) grub_add ((a), 0, (res)) ++ + #else + #error gcc 5.1 or newer or clang 3.8 or newer is required + #endif +-- +2.41.0 + diff --git a/boot/grub2/0017-font-Fix-several-integer-overflows-in-grub_font_cons.patch b/boot/grub2/0017-font-Fix-several-integer-overflows-in-grub_font_cons.patch new file mode 100644 index 0000000000..d8e5835e18 --- /dev/null +++ b/boot/grub2/0017-font-Fix-several-integer-overflows-in-grub_font_cons.patch @@ -0,0 +1,83 @@ +From fefba72d17364d6212cfd3be2232f4ce0ba23b82 Mon Sep 17 00:00:00 2001 +From: Zhang Boyang +Date: Fri, 5 Aug 2022 01:58:27 +0800 +Subject: [PATCH] font: Fix several integer overflows in + grub_font_construct_glyph() + +This patch fixes several integer overflows in grub_font_construct_glyph(). +Glyphs of invalid size, zero or leading to an overflow, are rejected. +The inconsistency between "glyph" and "max_glyph_size" when grub_malloc() +returns NULL is fixed too. + +Fixes: CVE-2022-2601 + +Reported-by: Zhang Boyang +Signed-off-by: Zhang Boyang +Reviewed-by: Daniel Kiper +Upstream: 768e1ef2fc159f6e14e7246e4be09363708ac39e +Signed-off-by: Thomas Petazzoni +--- + grub-core/font/font.c | 29 +++++++++++++++++------------ + 1 file changed, 17 insertions(+), 12 deletions(-) + +diff --git a/grub-core/font/font.c b/grub-core/font/font.c +index 876b5b695..0ff552578 100644 +--- a/grub-core/font/font.c ++++ b/grub-core/font/font.c +@@ -1515,6 +1515,7 @@ grub_font_construct_glyph (grub_font_t hinted_font, + struct grub_video_signed_rect bounds; + static struct grub_font_glyph *glyph = 0; + static grub_size_t max_glyph_size = 0; ++ grub_size_t cur_glyph_size; + + ensure_comb_space (glyph_id); + +@@ -1531,29 +1532,33 @@ grub_font_construct_glyph (grub_font_t hinted_font, + if (!glyph_id->ncomb && !glyph_id->attributes) + return main_glyph; + +- if (max_glyph_size < sizeof (*glyph) + (bounds.width * bounds.height + GRUB_CHAR_BIT - 1) / GRUB_CHAR_BIT) ++ if (grub_video_bitmap_calc_1bpp_bufsz (bounds.width, bounds.height, &cur_glyph_size) || ++ grub_add (sizeof (*glyph), cur_glyph_size, &cur_glyph_size)) ++ return main_glyph; ++ ++ if (max_glyph_size < cur_glyph_size) + { + grub_free (glyph); +- max_glyph_size = (sizeof (*glyph) + (bounds.width * bounds.height + GRUB_CHAR_BIT - 1) / GRUB_CHAR_BIT) * 2; +- if (max_glyph_size < 8) +- max_glyph_size = 8; +- glyph = grub_malloc (max_glyph_size); ++ if (grub_mul (cur_glyph_size, 2, &max_glyph_size)) ++ max_glyph_size = 0; ++ glyph = max_glyph_size > 0 ? grub_malloc (max_glyph_size) : NULL; + } + if (!glyph) + { ++ max_glyph_size = 0; + grub_errno = GRUB_ERR_NONE; + return main_glyph; + } + +- grub_memset (glyph, 0, sizeof (*glyph) +- + (bounds.width * bounds.height +- + GRUB_CHAR_BIT - 1) / GRUB_CHAR_BIT); ++ grub_memset (glyph, 0, cur_glyph_size); + + glyph->font = main_glyph->font; +- glyph->width = bounds.width; +- glyph->height = bounds.height; +- glyph->offset_x = bounds.x; +- glyph->offset_y = bounds.y; ++ if (bounds.width == 0 || bounds.height == 0 || ++ grub_cast (bounds.width, &glyph->width) || ++ grub_cast (bounds.height, &glyph->height) || ++ grub_cast (bounds.x, &glyph->offset_x) || ++ grub_cast (bounds.y, &glyph->offset_y)) ++ return main_glyph; + + if (glyph_id->attributes & GRUB_UNICODE_GLYPH_ATTRIBUTE_MIRROR) + grub_font_blit_glyph_mirror (glyph, main_glyph, +-- +2.41.0 + diff --git a/boot/grub2/0018-font-Fix-an-integer-underflow-in-blit_comb.patch b/boot/grub2/0018-font-Fix-an-integer-underflow-in-blit_comb.patch new file mode 100644 index 0000000000..1d3d26fb7b --- /dev/null +++ b/boot/grub2/0018-font-Fix-an-integer-underflow-in-blit_comb.patch @@ -0,0 +1,93 @@ +From 79bd19e078c5053d800b1b4d3a901083da947e70 Mon Sep 17 00:00:00 2001 +From: Zhang Boyang +Date: Mon, 24 Oct 2022 08:05:35 +0800 +Subject: [PATCH] font: Fix an integer underflow in blit_comb() + +The expression (ctx.bounds.height - combining_glyphs[i]->height) / 2 may +evaluate to a very big invalid value even if both ctx.bounds.height and +combining_glyphs[i]->height are small integers. For example, if +ctx.bounds.height is 10 and combining_glyphs[i]->height is 12, this +expression evaluates to 2147483647 (expected -1). This is because +coordinates are allowed to be negative but ctx.bounds.height is an +unsigned int. So, the subtraction operates on unsigned ints and +underflows to a very big value. The division makes things even worse. +The quotient is still an invalid value even if converted back to int. + +This patch fixes the problem by casting ctx.bounds.height to int. As +a result the subtraction will operate on int and grub_uint16_t which +will be promoted to an int. So, the underflow will no longer happen. Other +uses of ctx.bounds.height (and ctx.bounds.width) are also casted to int, +to ensure coordinates are always calculated on signed integers. + +Fixes: CVE-2022-3775 + +Reported-by: Daniel Axtens +Signed-off-by: Zhang Boyang +Reviewed-by: Daniel Kiper +Upstream: 992c06191babc1e109caf40d6a07ec6fdef427af +Signed-off-by: Thomas Petazzoni +--- + grub-core/font/font.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/grub-core/font/font.c b/grub-core/font/font.c +index 0ff552578..7b1cbde07 100644 +--- a/grub-core/font/font.c ++++ b/grub-core/font/font.c +@@ -1206,12 +1206,12 @@ blit_comb (const struct grub_unicode_glyph *glyph_id, + ctx.bounds.height = main_glyph->height; + + above_rightx = main_glyph->offset_x + main_glyph->width; +- above_righty = ctx.bounds.y + ctx.bounds.height; ++ above_righty = ctx.bounds.y + (int) ctx.bounds.height; + + above_leftx = main_glyph->offset_x; +- above_lefty = ctx.bounds.y + ctx.bounds.height; ++ above_lefty = ctx.bounds.y + (int) ctx.bounds.height; + +- below_rightx = ctx.bounds.x + ctx.bounds.width; ++ below_rightx = ctx.bounds.x + (int) ctx.bounds.width; + below_righty = ctx.bounds.y; + + comb = grub_unicode_get_comb (glyph_id); +@@ -1224,7 +1224,7 @@ blit_comb (const struct grub_unicode_glyph *glyph_id, + + if (!combining_glyphs[i]) + continue; +- targetx = (ctx.bounds.width - combining_glyphs[i]->width) / 2 + ctx.bounds.x; ++ targetx = ((int) ctx.bounds.width - combining_glyphs[i]->width) / 2 + ctx.bounds.x; + /* CGJ is to avoid diacritics reordering. */ + if (comb[i].code + == GRUB_UNICODE_COMBINING_GRAPHEME_JOINER) +@@ -1234,8 +1234,8 @@ blit_comb (const struct grub_unicode_glyph *glyph_id, + case GRUB_UNICODE_COMB_OVERLAY: + do_blit (combining_glyphs[i], + targetx, +- (ctx.bounds.height - combining_glyphs[i]->height) / 2 +- - (ctx.bounds.height + ctx.bounds.y), &ctx); ++ ((int) ctx.bounds.height - combining_glyphs[i]->height) / 2 ++ - ((int) ctx.bounds.height + ctx.bounds.y), &ctx); + if (min_devwidth < combining_glyphs[i]->width) + min_devwidth = combining_glyphs[i]->width; + break; +@@ -1308,7 +1308,7 @@ blit_comb (const struct grub_unicode_glyph *glyph_id, + /* Fallthrough. */ + case GRUB_UNICODE_STACK_ATTACHED_ABOVE: + do_blit (combining_glyphs[i], targetx, +- -(ctx.bounds.height + ctx.bounds.y + space ++ -((int) ctx.bounds.height + ctx.bounds.y + space + + combining_glyphs[i]->height), &ctx); + if (min_devwidth < combining_glyphs[i]->width) + min_devwidth = combining_glyphs[i]->width; +@@ -1316,7 +1316,7 @@ blit_comb (const struct grub_unicode_glyph *glyph_id, + + case GRUB_UNICODE_COMB_HEBREW_DAGESH: + do_blit (combining_glyphs[i], targetx, +- -(ctx.bounds.height / 2 + ctx.bounds.y ++ -((int) ctx.bounds.height / 2 + ctx.bounds.y + + combining_glyphs[i]->height / 2), &ctx); + if (min_devwidth < combining_glyphs[i]->width) + min_devwidth = combining_glyphs[i]->width; +-- +2.41.0 + diff --git a/boot/grub2/0019-fs-ext2-Ignore-checksum-seed-incompat-feature.patch b/boot/grub2/0019-fs-ext2-Ignore-checksum-seed-incompat-feature.patch new file mode 100644 index 0000000000..9a913e2279 --- /dev/null +++ b/boot/grub2/0019-fs-ext2-Ignore-checksum-seed-incompat-feature.patch @@ -0,0 +1,61 @@ +From 7fd5feff97c4b1f446f8fcf6d37aca0c64e7c763 Mon Sep 17 00:00:00 2001 +From: Javier Martinez Canillas +Date: Fri, 11 Jun 2021 21:36:16 +0200 +Subject: [PATCH] fs/ext2: Ignore checksum seed incompat feature + +This incompat feature is used to denote that the filesystem stored its +metadata checksum seed in the superblock. This is used to allow tune2fs +changing the UUID on a mounted metdata_csum filesystem without having +to rewrite all the disk metadata. However, the GRUB doesn't use the +metadata checksum at all. So, it can just ignore this feature if it +is enabled. This is consistent with the GRUB filesystem code in general +which just does a best effort to access the filesystem's data. + +The checksum seed incompat feature has to be removed from the ignore +list if the support for metadata checksum verification is added to the +GRUB ext2 driver later. + +Suggested-by: Eric Sandeen +Suggested-by: Lukas Czerner +Signed-off-by: Javier Martinez Canillas +Reviewed-by: Lukas Czerner +Reviewed-by: Daniel Kiper +Upstream: 7fd5feff97c4b1f446f8fcf6d37aca0c64e7c763 +Signed-off-by: Jens Maus +--- + grub-core/fs/ext2.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c +index e7dd78e66..4953a1591 100644 +--- a/grub-core/fs/ext2.c ++++ b/grub-core/fs/ext2.c +@@ -103,6 +103,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); + #define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 + #define EXT4_FEATURE_INCOMPAT_MMP 0x0100 + #define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 ++#define EXT4_FEATURE_INCOMPAT_CSUM_SEED 0x2000 + #define EXT4_FEATURE_INCOMPAT_ENCRYPT 0x10000 + + /* The set of back-incompatible features this driver DOES support. Add (OR) +@@ -123,10 +124,15 @@ GRUB_MOD_LICENSE ("GPLv3+"); + * mmp: Not really back-incompatible - was added as such to + * avoid multiple read-write mounts. Safe to ignore for this + * RO driver. ++ * checksum seed: Not really back-incompatible - was added to allow tools ++ * such as tune2fs to change the UUID on a mounted metadata ++ * checksummed filesystem. Safe to ignore for now since the ++ * driver doesn't support checksum verification. However, it ++ * has to be removed from this list if the support is added later. + */ + #define EXT2_DRIVER_IGNORED_INCOMPAT ( EXT3_FEATURE_INCOMPAT_RECOVER \ +- | EXT4_FEATURE_INCOMPAT_MMP) +- ++ | EXT4_FEATURE_INCOMPAT_MMP \ ++ | EXT4_FEATURE_INCOMPAT_CSUM_SEED) + + #define EXT3_JOURNAL_MAGIC_NUMBER 0xc03b3998U + +-- +2.34.1 + diff --git a/boot/grub2/0020-fs-ext2-Ignore-the-large_dir-incompat-feature.patch b/boot/grub2/0020-fs-ext2-Ignore-the-large_dir-incompat-feature.patch new file mode 100644 index 0000000000..43b182f968 --- /dev/null +++ b/boot/grub2/0020-fs-ext2-Ignore-the-large_dir-incompat-feature.patch @@ -0,0 +1,60 @@ +From 2e9fa73a040462b81bfbfe56c0bc7ad2d30b446b Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o +Date: Tue, 30 Aug 2022 22:41:59 -0400 +Subject: [PATCH] fs/ext2: Ignore the large_dir incompat feature + +Recently, ext4 added the large_dir feature, which adds support for +a 3 level htree directory support. + +The GRUB supports existing file systems with htree directories by +ignoring their existence, and since the index nodes for the hash tree +look like deleted directory entries (by design), the GRUB can simply do +a brute force O(n) linear search of directories. The same is true for +3 level deep htrees indicated by large_dir feature flag. + +Hence, it is safe for the GRUB to ignore the large_dir incompat feature. + +Fixes: https://savannah.gnu.org/bugs/?61606 + +Signed-off-by: Theodore Ts'o +Reviewed-by: Daniel Kiper +Upstream: 2e9fa73a040462b81bfbfe56c0bc7ad2d30b446b +Signed-off-by: Jens Maus +--- + grub-core/fs/ext2.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c +index 0989e26e1..e1cc5e62a 100644 +--- a/grub-core/fs/ext2.c ++++ b/grub-core/fs/ext2.c +@@ -104,6 +104,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); + #define EXT4_FEATURE_INCOMPAT_MMP 0x0100 + #define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 + #define EXT4_FEATURE_INCOMPAT_CSUM_SEED 0x2000 ++#define EXT4_FEATURE_INCOMPAT_LARGEDIR 0x4000 /* >2GB or 3 level htree */ + #define EXT4_FEATURE_INCOMPAT_ENCRYPT 0x10000 + + /* The set of back-incompatible features this driver DOES support. Add (OR) +@@ -129,10 +130,17 @@ GRUB_MOD_LICENSE ("GPLv3+"); + * checksummed filesystem. Safe to ignore for now since the + * driver doesn't support checksum verification. However, it + * has to be removed from this list if the support is added later. ++ * large_dir: Not back-incompatible given that the GRUB ext2 driver does ++ * not implement EXT2_FEATURE_COMPAT_DIR_INDEX. If the GRUB ++ * eventually supports the htree feature (aka dir_index) ++ * it should support 3 level htrees and then move ++ * EXT4_FEATURE_INCOMPAT_LARGEDIR to ++ * EXT2_DRIVER_SUPPORTED_INCOMPAT. + */ + #define EXT2_DRIVER_IGNORED_INCOMPAT ( EXT3_FEATURE_INCOMPAT_RECOVER \ + | EXT4_FEATURE_INCOMPAT_MMP \ +- | EXT4_FEATURE_INCOMPAT_CSUM_SEED) ++ | EXT4_FEATURE_INCOMPAT_CSUM_SEED \ ++ | EXT4_FEATURE_INCOMPAT_LARGEDIR) + + #define EXT3_JOURNAL_MAGIC_NUMBER 0xc03b3998U + +-- +2.34.1 + diff --git a/boot/grub2/grub2.mk b/boot/grub2/grub2.mk index 875884cf5c..6c3a861fb6 100644 --- a/boot/grub2/grub2.mk +++ b/boot/grub2/grub2.mk @@ -34,6 +34,25 @@ GRUB2_IGNORE_CVES += CVE-2020-15705 GRUB2_IGNORE_CVES += CVE-2021-3981 # vulnerability is specific to the SUSE distribution GRUB2_IGNORE_CVES += CVE-2021-46705 +# 0005-loader-efi-chainloader-Use-grub_loader_set_ex.patch +GRUB2_IGNORE_CVES += CVE-2022-28736 +# 0006-kern-efi-sb-Reject-non-kernel-files-in-the-shim_lock.patch +GRUB2_IGNORE_CVES += CVE-2022-28735 +# 0010-video-readers-png-Drop-greyscale-support-to-fix-heap.patch +GRUB2_IGNORE_CVES += CVE-2021-3695 +# 0011-video-readers-png-Avoid-heap-OOB-R-W-inserting-huff-.patch +GRUB2_IGNORE_CVES += CVE-2021-3696 +# 0012-video-readers-jpeg-Block-int-underflow-wild-pointer-.patch +GRUB2_IGNORE_CVES += CVE-2021-3697 +# 0013-net-ip-Do-IP-fragment-maths-safely.patch +GRUB2_IGNORE_CVES += CVE-2022-28733 +# 0014-net-http-Fix-OOB-write-for-split-http-headers.patch +# 0015-net-http-Error-out-on-headers-with-LF-without-CR.patch +GRUB2_IGNORE_CVES += CVE-2022-28734 +# 0017-font-Fix-several-integer-overflows-in-grub_font_cons.patch +GRUB2_IGNORE_CVES += CVE-2022-2601 +# 0018-font-Fix-an-integer-underflow-in-blit_comb.patch +GRUB2_IGNORE_CVES += CVE-2022-3775 ifeq ($(BR2_TARGET_GRUB2_INSTALL_TOOLS),y) GRUB2_INSTALL_TARGET = YES diff --git a/boot/mv-ddr-marvell/0001-Allow-access-to-low-addresses-with-gcc-12.patch b/boot/mv-ddr-marvell/0001-Allow-access-to-low-addresses-with-gcc-12.patch new file mode 100644 index 0000000000..5a623f28f9 --- /dev/null +++ b/boot/mv-ddr-marvell/0001-Allow-access-to-low-addresses-with-gcc-12.patch @@ -0,0 +1,49 @@ +From 4796a1eacc6a5ccb623e7d2e46a5196f8335e496 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 11 Aug 2023 11:19:49 +0300 +Subject: [PATCH] Allow access to low addresses with gcc 12 + +gcc 12 added a warning that triggers on access to low addresses. Add a +compile option that allows access to lower addresses. + +Add the 'cc_option' macro to avoid the compile option when the compiler +does not support it. + +This fixes build with TF-A. TF-A added a similar fix in commit +dea23e245fb89. + +See some more details in +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105523 + +Upstream: https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/pull/42 +Signed-off-by: Baruch Siach +--- + Makefile | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/Makefile b/Makefile +index 3f0dd89a7381..045284c30cbc 100644 +--- a/Makefile ++++ b/Makefile +@@ -108,6 +108,10 @@ MV_DDR_VER_CSRC = mv_ddr_build_message.c + # create mv_ddr build message and version string source file + $(shell $(MV_DDR_ROOT)/scripts/localversion.sh $(MV_DDR_ROOT) $(MV_DDR_VER_CSRC) 2> /dev/null) + ++define cc_option ++ $(shell if $(CC) $(1) -c -x c /dev/null -o /dev/null >/dev/null 2>&1; then echo $(1); fi ) ++endef ++ + # ****************** + # U-BOOT SPL SUPPORT + # ****************** +@@ -331,6 +335,7 @@ OBJ_DIR ?= $(MV_DDR_ROOT) + CFLAGS = -DMV_DDR_ATF -DCONFIG_DDR4 + CFLAGS += -Wall -Werror -Os -ffreestanding -mlittle-endian -g -gdwarf-2 -nostdinc + CFLAGS += -march=armv8-a -fpie ++CFLAGS += $(call cc_option, --param=min-pagesize=0) + + # PLATFORM is set in ble/ble.mk + ifneq ($(findstring a80x0,$(PLATFORM)),) +-- +2.40.1 + diff --git a/boot/mv-ddr-marvell/0002-Makefile-disable-stack-protection.patch b/boot/mv-ddr-marvell/0002-Makefile-disable-stack-protection.patch new file mode 100644 index 0000000000..626279eb47 --- /dev/null +++ b/boot/mv-ddr-marvell/0002-Makefile-disable-stack-protection.patch @@ -0,0 +1,33 @@ +From 53e34e3bff26fcbb7cc14178fa9fc80e7a73d556 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 11 Oct 2022 16:34:44 +0300 +Subject: [PATCH] Makefile: disable stack protection + +The Buildroot toolchain might enable stack protection by default. That +breaks linking because ATF does not provide the required __stack_chk +routines. + +The mv-ddr-marvell Makefile provides no way to add custom CFLAGS. Patch +Makefile to disable stack protection. + +Upstream: not applicable; Buildroot specific +Signed-off-by: Baruch Siach +--- + Makefile | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Makefile b/Makefile +index 045284c30cbc..9641354bcf86 100644 +--- a/Makefile ++++ b/Makefile +@@ -336,6 +336,7 @@ CFLAGS = -DMV_DDR_ATF -DCONFIG_DDR4 + CFLAGS += -Wall -Werror -Os -ffreestanding -mlittle-endian -g -gdwarf-2 -nostdinc + CFLAGS += -march=armv8-a -fpie + CFLAGS += $(call cc_option, --param=min-pagesize=0) ++CFLAGS += -fno-stack-protector + + # PLATFORM is set in ble/ble.mk + ifneq ($(findstring a80x0,$(PLATFORM)),) +-- +2.40.1 + diff --git a/boot/opensbi/Config.in b/boot/opensbi/Config.in index 5e6b8d158e..de2f0aae20 100644 --- a/boot/opensbi/Config.in +++ b/boot/opensbi/Config.in @@ -19,7 +19,7 @@ choice Select the specific OpenSBI version you want to use config BR2_TARGET_OPENSBI_LATEST_VERSION - bool "1.2" + bool "1.3" config BR2_TARGET_OPENSBI_CUSTOM_VERSION bool "Custom version" @@ -57,10 +57,10 @@ endif config BR2_TARGET_OPENSBI_VERSION string - default "1.2" if BR2_TARGET_OPENSBI_LATEST_VERSION + default "1.3" if BR2_TARGET_OPENSBI_LATEST_VERSION default BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE \ if BR2_TARGET_OPENSBI_CUSTOM_VERSION - default "custom" if BR2_TARGET_OPENSBI_CUSTOM_TARBALL + default "custom" if BR2_TARGET_OPENSBI_CUSTOM_TARBALL default BR2_TARGET_OPENSBI_CUSTOM_REPO_VERSION \ if BR2_TARGET_OPENSBI_CUSTOM_GIT diff --git a/boot/opensbi/opensbi.hash b/boot/opensbi/opensbi.hash index dbc77e856f..980fb141dc 100644 --- a/boot/opensbi/opensbi.hash +++ b/boot/opensbi/opensbi.hash @@ -1,3 +1,3 @@ # locally computed -sha256 8fcbce598a73acc2c7f7d5607d46b9d5107d3ecbede8f68f42631dcfc25ef2b2 opensbi-1.2.tar.gz +sha256 2c0501eb3475f463b15f5b8531996f64604ea49e0e3ed040ecbd1fc27ecd8c5c opensbi-1.3.tar.gz sha256 82d13fb1bf6bb162629deeea9eb9c117e74548d3b707e478967691fe79a68e21 COPYING.BSD diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in index 085397d03d..8b726eaa57 100644 --- a/boot/uboot/Config.in +++ b/boot/uboot/Config.in @@ -262,6 +262,15 @@ config BR2_TARGET_UBOOT_NEEDS_IMX_FIRMWARE This option makes sure that the i.MX firmwares are copied into the U-Boot source directory. +config BR2_TARGET_UBOOT_NEEDS_ROCKCHIP_RKBIN + bool "U-Boot needs rockchip-rkbin" + depends on BR2_PACKAGE_ROCKCHIP_RKBIN + help + For some Rockchip SoCs U-Boot needs binary blobs from + Rockchip. + This option makes sure that the needed binary blobs are copied + into the U-Boot source directory. + menu "U-Boot binary format" config BR2_TARGET_UBOOT_FORMAT_AIS @@ -395,6 +404,16 @@ config BR2_TARGET_UBOOT_FORMAT_STM32 bool "u-boot.stm32" depends on BR2_arm +if BR2_TARGET_UBOOT_FORMAT_STM32 +config BR2_TARGET_UBOOT_BUILD_FORMAT_STM32_LEGACY + bool "Legacy build (u-boot.stm32 target)" + help + Select this option if you use U-Boot with version older than + 2022.01), so that we use the old build target. Otherwise, + binman application is called to create the stm32 binary + format. +endif + config BR2_TARGET_UBOOT_FORMAT_CUSTOM bool "Custom (specify below)" help diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk index 4eae8e95c3..9f81c0b842 100644 --- a/boot/uboot/uboot.mk +++ b/boot/uboot/uboot.mk @@ -133,8 +133,10 @@ endif ifeq ($(BR2_TARGET_UBOOT_FORMAT_STM32),y) UBOOT_BINS += u-boot.stm32 +ifeq ($(BR2_TARGET_UBOOT_BUILD_FORMAT_STM32_LEGACY),y) UBOOT_MAKE_TARGET += u-boot.stm32 endif +endif ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y) UBOOT_BINS += $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME)) @@ -207,8 +209,26 @@ endef UBOOT_PRE_BUILD_HOOKS += UBOOT_COPY_IMX_FW_FILES endif +ifeq ($(BR2_TARGET_UBOOT_NEEDS_ROCKCHIP_RKBIN),y) +UBOOT_DEPENDENCIES += rockchip-rkbin +define UBOOT_INSTALL_UBOOT_ROCKCHIP_BIN + $(INSTALL) -D -m 0644 $(@D)/u-boot-rockchip.bin $(BINARIES_DIR)/u-boot-rockchip.bin +endef +UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_INSTALL_UBOOT_ROCKCHIP_BIN +ifneq ($(ROCKCHIP_RKBIN_BL31_FILENAME),) +UBOOT_MAKE_OPTS += BL31=$(BINARIES_DIR)/$(notdir $(ROCKCHIP_RKBIN_BL31_FILENAME)) +endif +ifneq ($(ROCKCHIP_RKBIN_TPL_FILENAME),) +UBOOT_MAKE_OPTS += ROCKCHIP_TPL=$(BINARIES_DIR)/$(notdir $(ROCKCHIP_RKBIN_TPL_FILENAME)) +endif +ifneq ($(ROCKCHIP_RKBIN_TEE_FILENAME),) +UBOOT_MAKE_OPTS += TEE=$(BINARIES_DIR)/$(notdir $(ROCKCHIP_RKBIN_TEE_FILENAME)) +endif +endif + ifeq ($(BR2_TARGET_UBOOT_NEEDS_DTC),y) UBOOT_DEPENDENCIES += host-dtc +UBOOT_MAKE_OPTS += DTC=$(HOST_DIR)/bin/dtc endif ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYTHON3),y) @@ -216,7 +236,7 @@ UBOOT_DEPENDENCIES += host-python3 host-python-setuptools endif ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYLIBFDT),y) -UBOOT_DEPENDENCIES += host-swig +UBOOT_DEPENDENCIES += host-python-pylibfdt endif ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS),y) diff --git a/configs/andes_ae350_45_defconfig b/configs/andes_ae350_45_defconfig index 998276635b..ef29ab6454 100644 --- a/configs/andes_ae350_45_defconfig +++ b/configs/andes_ae350_45_defconfig @@ -38,7 +38,6 @@ BR2_TARGET_UBOOT_NEEDS_OPENSBI=y BR2_TARGET_UBOOT_FORMAT_CUSTOM=y BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" BR2_TARGET_UBOOT_SPL=y -BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="ARCH_FLAGS=-march=rv64imafdc" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y diff --git a/configs/avenger96_defconfig b/configs/avenger96_defconfig index d2c1b9013e..adfd7585c4 100644 --- a/configs/avenger96_defconfig +++ b/configs/avenger96_defconfig @@ -17,7 +17,7 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="120M" # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.2" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="stm32mp1" BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="STM32MP_SDMMC=1 AARCH32_SP=sp_min DTB_FILE_NAME=stm32mp157a-avenger96.dtb" BR2_TARGET_ARM_TRUSTED_FIRMWARE_DEBUG=y @@ -30,5 +30,6 @@ BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2020.07" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32mp15_trusted" # BR2_TARGET_UBOOT_FORMAT_BIN is not set BR2_TARGET_UBOOT_FORMAT_STM32=y +BR2_TARGET_UBOOT_BUILD_FORMAT_STM32_LEGACY=y BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp15xx-dhcor-avenger96" BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/beaglebone_defconfig b/configs/beaglebone_defconfig index 3e7ad8d402..7e006e7a85 100644 --- a/configs/beaglebone_defconfig +++ b/configs/beaglebone_defconfig @@ -37,6 +37,7 @@ BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am335x_evm" BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y # BR2_TARGET_UBOOT_FORMAT_BIN is not set BR2_TARGET_UBOOT_FORMAT_IMG=y BR2_TARGET_UBOOT_SPL=y diff --git a/configs/beaglebone_qt5_defconfig b/configs/beaglebone_qt5_defconfig index ff03a05a8e..0038acfcfd 100644 --- a/configs/beaglebone_qt5_defconfig +++ b/configs/beaglebone_qt5_defconfig @@ -15,7 +15,7 @@ BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,beagleboard,linux,4.19.7 BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/beaglebone/linux-sgx.fragment" BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-evm am335x-bone am335x-boneblack am335x-bonegreen am335x-evmsk am335x-boneblue am335x-boneblack-wireless" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-evm am335x-bone am335x-boneblack am335x-bonegreen am335x-evmsk am335x-boneblue am335x-boneblack-wireless am335x-bonegreen-wireless" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_FBV=y BR2_PACKAGE_QT5=y diff --git a/configs/beaglev_defconfig b/configs/beaglev_defconfig index 79af8c2ece..a76c1ffb5f 100644 --- a/configs/beaglev_defconfig +++ b/configs/beaglev_defconfig @@ -1,6 +1,7 @@ BR2_riscv=y BR2_riscv_custom=y BR2_RISCV_ISA_CUSTOM_RVM=y +BR2_RISCV_ISA_CUSTOM_RVA=y BR2_RISCV_ISA_CUSTOM_RVF=y BR2_RISCV_ISA_CUSTOM_RVD=y BR2_RISCV_ISA_CUSTOM_RVC=y @@ -39,3 +40,4 @@ BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,starfive-tech,u-boot,64e BR2_TARGET_UBOOT_BOARD_DEFCONFIG="starfive_vic7100_beagle_v_smode" BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_JH71XX_TOOLS=y +BR2_GLOBAL_PATCH_DIR="board/beaglev/patches" diff --git a/configs/ci20_defconfig b/configs/ci20_defconfig index 09eddc4e68..7e119376e1 100644 --- a/configs/ci20_defconfig +++ b/configs/ci20_defconfig @@ -15,7 +15,7 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/ci20/genimage.cfg" # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.58" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.254" BR2_LINUX_KERNEL_DEFCONFIG="ci20" BR2_LINUX_KERNEL_INSTALL_TARGET=y diff --git a/configs/freescale_imx6qsabresd_defconfig b/configs/freescale_imx6qsabresd_defconfig index 86513d8072..dddfaf5228 100644 --- a/configs/freescale_imx6qsabresd_defconfig +++ b/configs/freescale_imx6qsabresd_defconfig @@ -37,7 +37,6 @@ BR2_PACKAGE_HOST_MTOOLS=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="mx6qsabresd" BR2_TARGET_UBOOT_FORMAT_IMX=y -BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-5.10.y-1.0.0)/uboot-imx-lf-5.10.y-1.0.0.tar.gz" BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/configs/freescale_imx8mmevk_defconfig b/configs/freescale_imx8mmevk_defconfig index dcb4b42540..ca5c308da6 100644 --- a/configs/freescale_imx8mmevk_defconfig +++ b/configs/freescale_imx8mmevk_defconfig @@ -1,6 +1,7 @@ BR2_aarch64=y BR2_ARM_FPU_VFPV3=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_GLOBAL_PATCH_DIR="board/freescale/common/patches" BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mm-evk.dtb" diff --git a/configs/freescale_imx8mnevk_defconfig b/configs/freescale_imx8mnevk_defconfig index 0653978d91..ac73bea769 100644 --- a/configs/freescale_imx8mnevk_defconfig +++ b/configs/freescale_imx8mnevk_defconfig @@ -1,6 +1,7 @@ BR2_aarch64=y BR2_ARM_FPU_VFPV3=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_GLOBAL_PATCH_DIR="board/freescale/common/patches" BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mn-ddr4-evk.dtb" diff --git a/configs/freescale_imx8mpevk_defconfig b/configs/freescale_imx8mpevk_defconfig index 5a72406b67..913c190d87 100644 --- a/configs/freescale_imx8mpevk_defconfig +++ b/configs/freescale_imx8mpevk_defconfig @@ -1,6 +1,7 @@ BR2_aarch64=y BR2_ARM_FPU_VFPV3=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_GLOBAL_PATCH_DIR="board/freescale/common/patches" BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mp-evk.dtb" diff --git a/configs/freescale_imx8mqevk_defconfig b/configs/freescale_imx8mqevk_defconfig index e3f88dc44c..79375d7f88 100644 --- a/configs/freescale_imx8mqevk_defconfig +++ b/configs/freescale_imx8mqevk_defconfig @@ -1,6 +1,7 @@ BR2_aarch64=y BR2_ARM_FPU_VFPV3=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_GLOBAL_PATCH_DIR="board/freescale/common/patches" BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mq-evk.dtb" diff --git a/configs/freescale_imx8qmmek_defconfig b/configs/freescale_imx8qmmek_defconfig index 75777646df..0fc3fe7b07 100644 --- a/configs/freescale_imx8qmmek_defconfig +++ b/configs/freescale_imx8qmmek_defconfig @@ -1,6 +1,7 @@ BR2_aarch64=y BR2_ARM_FPU_VFPV4=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_GLOBAL_PATCH_DIR="board/freescale/common/patches" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/fsl-imx8qm-mek.dtb" BR2_LINUX_KERNEL=y diff --git a/configs/freescale_imx8qxpmek_defconfig b/configs/freescale_imx8qxpmek_defconfig index ce8f6b7c84..47a2104d5b 100644 --- a/configs/freescale_imx8qxpmek_defconfig +++ b/configs/freescale_imx8qxpmek_defconfig @@ -2,6 +2,7 @@ BR2_aarch64=y BR2_cortex_a35=y BR2_ARM_FPU_VFPV3=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_GLOBAL_PATCH_DIR="board/freescale/common/patches" BR2_TARGET_GENERIC_GETTY_PORT="ttyLP0" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/fsl-imx8qxp-mek.dtb" diff --git a/configs/grinn_chiliboard_defconfig b/configs/grinn_chiliboard_defconfig index e7862d1738..a5a8f7a65f 100644 --- a/configs/grinn_chiliboard_defconfig +++ b/configs/grinn_chiliboard_defconfig @@ -18,6 +18,7 @@ BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="chiliboard" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_TARGET_UBOOT_FORMAT_IMG=y BR2_TARGET_UBOOT_FORMAT_CUSTOM=y BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin" diff --git a/configs/hifive_unleashed_defconfig b/configs/hifive_unleashed_defconfig index 2b6ee6c08e..fbc273fffc 100644 --- a/configs/hifive_unleashed_defconfig +++ b/configs/hifive_unleashed_defconfig @@ -2,6 +2,7 @@ BR2_riscv=y BR2_riscv_custom=y BR2_RISCV_ISA_CUSTOM_RVM=y +BR2_RISCV_ISA_CUSTOM_RVA=y BR2_RISCV_ISA_CUSTOM_RVF=y BR2_RISCV_ISA_CUSTOM_RVD=y BR2_RISCV_ISA_CUSTOM_RVC=y @@ -27,7 +28,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.190" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/sifive/hifive-unleashed/linux.config.fragment" BR2_LINUX_KERNEL_IMAGE=y @@ -38,16 +39,19 @@ BR2_LINUX_KERNEL_INSTALL_TARGET=y # Bootloader BR2_TARGET_OPENSBI=y BR2_TARGET_OPENSBI_CUSTOM_VERSION=y -BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE="0.9" +BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE="1.2" BR2_TARGET_OPENSBI_PLAT="generic" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.04" BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y -BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sifive_fu540" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sifive_unleashed" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSBI=y -BR2_TARGET_UBOOT_FORMAT_ITB=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" BR2_TARGET_UBOOT_SPL=y # Host tools diff --git a/configs/imx7d-sdb_defconfig b/configs/imx7d-sdb_defconfig index 8ee5e1fc40..cf4da342c1 100644 --- a/configs/imx7d-sdb_defconfig +++ b/configs/imx7d-sdb_defconfig @@ -3,8 +3,8 @@ BR2_arm=y BR2_cortex_a7=y BR2_ARM_FPU_NEON_VFPV4=y -# Linux headers same as kernel, a 5.13 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_13=y +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # system BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" @@ -12,7 +12,7 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.13" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.34" BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-sdb" diff --git a/configs/ls1028ardb_defconfig b/configs/ls1028ardb_defconfig index a46b94511a..d92c543b44 100644 --- a/configs/ls1028ardb_defconfig +++ b/configs/ls1028ardb_defconfig @@ -2,6 +2,9 @@ BR2_aarch64=y BR2_cortex_a72=y +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/common/patches" + # Toolchain # Linux headers same as kernel, a 5.10 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y diff --git a/configs/mx53loco_defconfig b/configs/mx53loco_defconfig index 212a032d84..d03c7d0916 100644 --- a/configs/mx53loco_defconfig +++ b/configs/mx53loco_defconfig @@ -24,6 +24,7 @@ BR2_TARGET_UBOOT_BOARDNAME="mx53loco" BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01" BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y # Kernel BR2_LINUX_KERNEL=y diff --git a/configs/nitrogen6sx_defconfig b/configs/nitrogen6sx_defconfig index 967d064f1c..ba2c79d4a7 100644 --- a/configs/nitrogen6sx_defconfig +++ b/configs/nitrogen6sx_defconfig @@ -17,17 +17,18 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y -# Linux headers same as kernel, a 5.15 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # bootloader BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y # Latest revision of branch boundary-v2022.04 -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/c2042594.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen6sx" BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_PACKAGE_HOST_UBOOT_TOOLS=y BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd" @@ -35,8 +36,8 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/bo # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -# Latest revision of branch boundary-imx_5.15.y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/97cc67c4.tar.gz" +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary" BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_DTS_SUPPORT=y diff --git a/configs/nitrogen6x_defconfig b/configs/nitrogen6x_defconfig index 1cded53765..d490ec3c46 100644 --- a/configs/nitrogen6x_defconfig +++ b/configs/nitrogen6x_defconfig @@ -16,17 +16,18 @@ BR2_PACKAGE_HOST_GENIMAGE=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y -# Linux headers same as kernel, a 5.15 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # bootloader BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y # Latest revision of branch boundary-v2022.04 -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/c2042594.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen6q" BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_PACKAGE_HOST_UBOOT_TOOLS=y BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd" @@ -34,8 +35,8 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/bo # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -# Latest revision of branch boundary-imx_5.15.y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/97cc67c4.tar.gz" +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary" BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_DTS_SUPPORT=y diff --git a/configs/nitrogen7_defconfig b/configs/nitrogen7_defconfig index d1e81d90fd..429d84c1d4 100644 --- a/configs/nitrogen7_defconfig +++ b/configs/nitrogen7_defconfig @@ -16,17 +16,18 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y -# Linux headers same as kernel, a 5.15 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # bootloader BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y # Latest revision of branch boundary-v2022.04 -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/c2042594.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen7" BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_PACKAGE_HOST_UBOOT_TOOLS=y BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd" @@ -34,8 +35,8 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/bo # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -# Latest revision of branch boundary-imx_5.15.y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/97cc67c4.tar.gz" +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary" BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_DTS_SUPPORT=y diff --git a/configs/nitrogen8m_defconfig b/configs/nitrogen8m_defconfig index 6c490f195b..ea5f21cb3d 100644 --- a/configs/nitrogen8m_defconfig +++ b/configs/nitrogen8m_defconfig @@ -18,8 +18,8 @@ BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" -# Linux headers same as kernel, a 5.15 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # DDR training binaries BR2_PACKAGE_FREESCALE_IMX=y @@ -29,8 +29,8 @@ BR2_PACKAGE_FIRMWARE_IMX=y # ARM Trusted Firmware BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y -# Latest revision of branch boundary-lf-5.15.52-2.1.0 -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/697a8319.tar.gz" +# Latest revision of branch boundary-lf-6.1.22-2.0.0 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/7e3484cc.tar.gz" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mq" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y @@ -40,18 +40,19 @@ BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen8m" BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y # Latest revision of branch boundary-v2022.04 -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/c2042594.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" BR2_TARGET_UBOOT_FORMAT_CUSTOM=y BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_TARGET_UBOOT_SPL=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -# Latest revision of branch boundary-imx_5.15.y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/97cc67c4.tar.gz" +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INSTALL_TARGET=y diff --git a/configs/nitrogen8mm_defconfig b/configs/nitrogen8mm_defconfig index 27cdc9e19e..5b7fb4a3bc 100644 --- a/configs/nitrogen8mm_defconfig +++ b/configs/nitrogen8mm_defconfig @@ -18,8 +18,8 @@ BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" -# Linux headers same as kernel, a 5.15 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # DDR training binaries BR2_PACKAGE_FREESCALE_IMX=y @@ -29,8 +29,8 @@ BR2_PACKAGE_FIRMWARE_IMX=y # ARM Trusted Firmware BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y -# Latest revision of branch boundary-lf-5.15.52-2.1.0 -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/697a8319.tar.gz" +# Latest revision of branch boundary-lf-6.1.22-2.0.0 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/7e3484cc.tar.gz" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mm" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y @@ -40,18 +40,19 @@ BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen8mm_2g" BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y # Latest revision of branch boundary-v2022.04 -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/c2042594.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" BR2_TARGET_UBOOT_FORMAT_CUSTOM=y BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_TARGET_UBOOT_SPL=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -# Latest revision of branch boundary-imx_5.15.y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/97cc67c4.tar.gz" +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INSTALL_TARGET=y diff --git a/configs/nitrogen8mn_defconfig b/configs/nitrogen8mn_defconfig index 775bdecd90..2fc9442d9e 100644 --- a/configs/nitrogen8mn_defconfig +++ b/configs/nitrogen8mn_defconfig @@ -18,8 +18,8 @@ BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" -# Linux headers same as kernel, a 5.15 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # DDR training binaries BR2_PACKAGE_FREESCALE_IMX=y @@ -29,8 +29,8 @@ BR2_PACKAGE_FIRMWARE_IMX=y # ARM Trusted Firmware BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y -# Latest revision of branch boundary-lf-5.15.52-2.1.0 -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/697a8319.tar.gz" +# Latest revision of branch boundary-lf-6.1.22-2.0.0 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/7e3484cc.tar.gz" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mn" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y @@ -40,18 +40,19 @@ BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen8_nano_8mn1gr0" BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y # Latest revision of branch boundary-v2022.04 -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/c2042594.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" BR2_TARGET_UBOOT_FORMAT_CUSTOM=y BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_TARGET_UBOOT_SPL=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -# Latest revision of branch boundary-imx_5.15.y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/97cc67c4.tar.gz" +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INSTALL_TARGET=y diff --git a/configs/nitrogen8mp_defconfig b/configs/nitrogen8mp_defconfig index 0767ab1375..c5f79c3913 100644 --- a/configs/nitrogen8mp_defconfig +++ b/configs/nitrogen8mp_defconfig @@ -18,8 +18,8 @@ BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" -# Linux headers same as kernel, a 5.15 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # DDR training binaries BR2_PACKAGE_FREESCALE_IMX=y @@ -29,8 +29,8 @@ BR2_PACKAGE_FIRMWARE_IMX=y # ARM Trusted Firmware BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y -# Latest revision of branch boundary-lf-5.15.52-2.1.0 -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/697a8319.tar.gz" +# Latest revision of branch boundary-lf-6.1.22-2.0.0 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/7e3484cc.tar.gz" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mp" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y @@ -40,20 +40,21 @@ BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen8mp_2gr0" BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y # Latest revision of branch boundary-v2022.04 -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/c2042594.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot/archive/7e7eff74.tar.gz" BR2_TARGET_UBOOT_FORMAT_CUSTOM=y BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_TARGET_UBOOT_SPL=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -# Latest revision of branch boundary-imx_5.15.y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/97cc67c4.tar.gz" +# Latest revision of branch boundary-imx_6.1.y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux/archive/4470b050.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INSTALL_TARGET=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mp-nitrogen8mp freescale/imx8mp-nitrogen8mp-m4 freescale/imx8mp-nitrogen8mp-enc freescale/imx8mp-nitrogen8mp-enc-tc358743" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mp-nitrogen_smarc freescale/imx8mp-nitrogen8mp freescale/imx8mp-nitrogen8mp-m4 freescale/imx8mp-nitrogen8mp-enc freescale/imx8mp-nitrogen8mp-enc-tc358743" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/configs/olimex_a20_olinuxino_lime2_defconfig b/configs/olimex_a20_olinuxino_lime2_defconfig index a38f3a1c5e..d817e1dd1c 100644 --- a/configs/olimex_a20_olinuxino_lime2_defconfig +++ b/configs/olimex_a20_olinuxino_lime2_defconfig @@ -23,7 +23,7 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a20_olinuxino/genimage.cfg" # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.22" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.38" BR2_LINUX_KERNEL_USE_DEFCONFIG=y BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olimex/a20_olinuxino/linux-disable-lima.fragment" @@ -45,7 +45,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.04" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.07" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime2" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_PYTHON3=y diff --git a/configs/olimex_a20_olinuxino_lime_defconfig b/configs/olimex_a20_olinuxino_lime_defconfig index 74b6a764cd..88967e70cb 100644 --- a/configs/olimex_a20_olinuxino_lime_defconfig +++ b/configs/olimex_a20_olinuxino_lime_defconfig @@ -23,7 +23,7 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a20_olinuxino/genimage.cfg" # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.22" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.38" BR2_LINUX_KERNEL_USE_DEFCONFIG=y BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olimex/a20_olinuxino/linux-disable-lima.fragment" @@ -45,7 +45,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.04" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.07" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_PYTHON3=y diff --git a/configs/olimex_stmp157_olinuxino_lime_defconfig b/configs/olimex_stmp157_olinuxino_lime_defconfig index 3b56fefeca..8bd8e10ca9 100644 --- a/configs/olimex_stmp157_olinuxino_lime_defconfig +++ b/configs/olimex_stmp157_olinuxino_lime_defconfig @@ -17,8 +17,8 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/stmp1_olinuxino/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/OLIMEX/linux-olimex.git" -# branch release-20230217-v5.10.105 -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="c5a31724bdfaac894553b51c5a0fb92c1f10f3db" +# branch release-20230622-v5.10.180 +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="fc74113e14d76aea9482264ff42e07397b94553d" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/olimex/stmp1_olinuxino/linux.config" BR2_LINUX_KERNEL_DTS_SUPPORT=y @@ -35,12 +35,13 @@ BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/OLIMEX/u-boot-olinuxino.git" -# release-20230110, based on 2021.04 -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="9a49a20f71c698f538defbb69a6c6cb657d4315f" +# release-20230515, based on 2021.04 +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="efadf793a0a5924e2c96362dc1df3e56622ebb97" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="STM32-OLinuXino-LIME" # BR2_TARGET_UBOOT_FORMAT_BIN is not set BR2_TARGET_UBOOT_FORMAT_IMG=y BR2_TARGET_UBOOT_FORMAT_STM32=y +BR2_TARGET_UBOOT_BUILD_FORMAT_STM32_LEGACY=y BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl.stm32" diff --git a/configs/pc_x86_64_bios_defconfig b/configs/pc_x86_64_bios_defconfig index a057ddd259..6032544d2d 100644 --- a/configs/pc_x86_64_bios_defconfig +++ b/configs/pc_x86_64_bios_defconfig @@ -32,6 +32,7 @@ BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config" BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y # Firmware BR2_PACKAGE_LINUX_FIRMWARE=y diff --git a/configs/pc_x86_64_efi_defconfig b/configs/pc_x86_64_efi_defconfig index efa603f0c0..afb652f3fc 100644 --- a/configs/pc_x86_64_efi_defconfig +++ b/configs/pc_x86_64_efi_defconfig @@ -33,6 +33,7 @@ BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config" BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y # Firmware BR2_PACKAGE_LINUX_FIRMWARE=y diff --git a/configs/qemu_m68k_mcf5208_defconfig b/configs/qemu_m68k_mcf5208_defconfig index bf62136345..d6dd8bd1b7 100644 --- a/configs/qemu_m68k_mcf5208_defconfig +++ b/configs/qemu_m68k_mcf5208_defconfig @@ -22,6 +22,7 @@ BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.26" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-mcf5208/linux.config" +BR2_LINUX_KERNEL_PATCH="board/qemu/m68k-mcf5208/0001-m68k-Fix-invalid-.section-syntax.patch" BR2_LINUX_KERNEL_VMLINUX=y # Serial port config diff --git a/configs/qemu_m68k_q800_defconfig b/configs/qemu_m68k_q800_defconfig index 50b61a8007..a6444103c9 100644 --- a/configs/qemu_m68k_q800_defconfig +++ b/configs/qemu_m68k_q800_defconfig @@ -22,6 +22,7 @@ BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.26" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-q800/linux.config" +BR2_LINUX_KERNEL_PATCH="board/qemu/m68k-q800/0001-m68k-Fix-invalid-.section-syntax.patch" BR2_LINUX_KERNEL_VMLINUX=y # Serial port config diff --git a/configs/qemu_ppc64_e5500_defconfig b/configs/qemu_ppc64_e5500_defconfig index 0ab7e8e76f..6839f2f0ba 100644 --- a/configs/qemu_ppc64_e5500_defconfig +++ b/configs/qemu_ppc64_e5500_defconfig @@ -3,7 +3,6 @@ BR2_powerpc64=y BR2_powerpc_e5500=y # System -BR2_BINUTILS_VERSION_2_38_X=y BR2_SYSTEM_DHCP="eth0" BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/configs/qemu_ppc64_pseries_defconfig b/configs/qemu_ppc64_pseries_defconfig index 92fe3a11f6..896d209675 100644 --- a/configs/qemu_ppc64_pseries_defconfig +++ b/configs/qemu_ppc64_pseries_defconfig @@ -3,7 +3,6 @@ BR2_powerpc64=y BR2_powerpc_power7=y # System -BR2_BINUTILS_VERSION_2_38_X=y BR2_SYSTEM_DHCP="eth0" BR2_TARGET_GENERIC_GETTY_PORT="hvc0" diff --git a/configs/qemu_ppc64le_powernv8_defconfig b/configs/qemu_ppc64le_powernv8_defconfig index cb086ba248..e23fcd4695 100644 --- a/configs/qemu_ppc64le_powernv8_defconfig +++ b/configs/qemu_ppc64le_powernv8_defconfig @@ -3,7 +3,6 @@ BR2_powerpc64le=y BR2_powerpc_power8=y # System -BR2_BINUTILS_VERSION_2_38_X=y BR2_TARGET_GENERIC_GETTY_PORT="hvc0" BR2_SYSTEM_DHCP="eth0" diff --git a/configs/qemu_ppc64le_pseries_defconfig b/configs/qemu_ppc64le_pseries_defconfig index 001d614c3b..fa8e2a09d3 100644 --- a/configs/qemu_ppc64le_pseries_defconfig +++ b/configs/qemu_ppc64le_pseries_defconfig @@ -3,7 +3,6 @@ BR2_powerpc64le=y BR2_powerpc_power8=y # System -BR2_BINUTILS_VERSION_2_38_X=y BR2_TARGET_GENERIC_GETTY_PORT="hvc0" BR2_SYSTEM_DHCP="eth0" diff --git a/configs/rock5b_defconfig b/configs/rock5b_defconfig new file mode 100644 index 0000000000..eed656ef5f --- /dev/null +++ b/configs/rock5b_defconfig @@ -0,0 +1,41 @@ +BR2_aarch64=y +BR2_cortex_a76_a55=y +BR2_KERNEL_HEADERS_5_10=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/radxa/rock5b/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="" +BR2_TARGET_GENERIC_HOSTNAME="rock5b" +BR2_TARGET_GENERIC_ISSUE="Welcome to the rock5b board" +BR2_GLOBAL_PATCH_DIR="board/radxa/rock5b/patches" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/radxa/kernel.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="52f51a2b5ba178f331af62260d2da86d7472c14b" +BR2_LINUX_KERNEL_DEFCONFIG="rockchip_linux" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/rk3588-rock-5b" +BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/radxa/rock5b/linux.fragment" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="250M" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rock5b-rk3588" +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS=y +BR2_TARGET_UBOOT_NEEDS_ROCKCHIP_RKBIN=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/radxa/rock5b/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_DTC=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_ROCKCHIP_RKBIN=y +BR2_PACKAGE_ROCKCHIP_RKBIN_TPL_FILENAME="bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin" +BR2_PACKAGE_ROCKCHIP_RKBIN_BL31_FILENAME="bin/rk35/rk3588_bl31_v1.40.elf" diff --git a/configs/shredos_defconfig b/configs/shredos_defconfig index 6a5c98f01a..a16ca37a15 100644 --- a/configs/shredos_defconfig +++ b/configs/shredos_defconfig @@ -1,8 +1,6 @@ BR2_x86_64=y BR2_x86_nocona=y -BR2_KERNEL_HEADERS_6_3=y BR2_PACKAGE_GLIBC_UTILS=y -BR2_GCC_VERSION_10_X=y BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y BR2_CPAN_MIRROR="http://cpan.metacpan.org" @@ -107,7 +105,6 @@ BR2_PACKAGE_PYTHON_PYNDIFF=y BR2_PACKAGE_PYTHON_SCAPY=y BR2_PACKAGE_LZ4=y BR2_PACKAGE_LIBGCRYPT=y -BR2_PACKAGE_LIBCONFIG=y BR2_PACKAGE_LIBJPEG=y BR2_PACKAGE_ZXING_CPP=y BR2_PACKAGE_LIBHID=y @@ -157,13 +154,13 @@ BR2_PACKAGE_UTIL_LINUX_SU=y BR2_PACKAGE_UTIL_LINUX_SULOGIN=y BR2_TARGET_ROOTFS_CPIO_LZMA=y BR2_TARGET_ROOTFS_EXT2=y -BR2_TARGET_ROOTFS_EXT2_SIZE="512M" +BR2_TARGET_ROOTFS_EXT2_SIZE="768M" BR2_TARGET_ROOTFS_INITRAMFS=y BR2_TARGET_GRUB2=y BR2_TARGET_GRUB2_I386_PC=y BR2_TARGET_GRUB2_X86_64_EFI=y -BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal progress biosdisk" -BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio" +BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal progress biosdisk all_video video_cirrus video_bochs net tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard" +BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard" BR2_TARGET_GRUB2_INSTALL_TOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_PYTHON3=y diff --git a/configs/sipeed_maix_bit_sdcard_defconfig b/configs/sipeed_maix_bit_sdcard_defconfig index 34769eeca8..0cfff26337 100644 --- a/configs/sipeed_maix_bit_sdcard_defconfig +++ b/configs/sipeed_maix_bit_sdcard_defconfig @@ -17,6 +17,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y BR2_BINFMT_FLAT=y BR2_BINFMT_FLAT_ONE=y # BR2_TARGET_ENABLE_ROOT_LOGIN is not set +BR2_GLOBAL_PATCH_DIR="board/canaan/k210-soc/patches" # Kernel BR2_LINUX_KERNEL=y diff --git a/configs/sipeed_maix_dock_sdcard_defconfig b/configs/sipeed_maix_dock_sdcard_defconfig index 62f6a0e0b8..db075360cc 100644 --- a/configs/sipeed_maix_dock_sdcard_defconfig +++ b/configs/sipeed_maix_dock_sdcard_defconfig @@ -17,6 +17,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y BR2_BINFMT_FLAT=y BR2_BINFMT_FLAT_ONE=y # BR2_TARGET_ENABLE_ROOT_LOGIN is not set +BR2_GLOBAL_PATCH_DIR="board/canaan/k210-soc/patches" # Kernel BR2_LINUX_KERNEL=y diff --git a/configs/sipeed_maix_go_sdcard_defconfig b/configs/sipeed_maix_go_sdcard_defconfig index 6c61e3aaaf..2bea0b97be 100644 --- a/configs/sipeed_maix_go_sdcard_defconfig +++ b/configs/sipeed_maix_go_sdcard_defconfig @@ -17,6 +17,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y BR2_BINFMT_FLAT=y BR2_BINFMT_FLAT_ONE=y # BR2_TARGET_ENABLE_ROOT_LOGIN is not set +BR2_GLOBAL_PATCH_DIR="board/canaan/k210-soc/patches" # Kernel BR2_LINUX_KERNEL=y diff --git a/configs/sipeed_maixduino_sdcard_defconfig b/configs/sipeed_maixduino_sdcard_defconfig index da8cbe45f9..db7896fadf 100644 --- a/configs/sipeed_maixduino_sdcard_defconfig +++ b/configs/sipeed_maixduino_sdcard_defconfig @@ -17,6 +17,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y BR2_BINFMT_FLAT=y BR2_BINFMT_FLAT_ONE=y # BR2_TARGET_ENABLE_ROOT_LOGIN is not set +BR2_GLOBAL_PATCH_DIR="board/canaan/k210-soc/patches" # Kernel BR2_LINUX_KERNEL=y diff --git a/configs/stm32f429_disco_xip_defconfig b/configs/stm32f429_disco_xip_defconfig index 5640d9dc4d..d4e000487a 100644 --- a/configs/stm32f429_disco_xip_defconfig +++ b/configs/stm32f429_disco_xip_defconfig @@ -14,6 +14,7 @@ BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="xipImage" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f429-disco" BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config" +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/stmicroelectronics/common/stm32f4xx/busybox.fragment" # BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set BR2_TARGET_ROOTFS_INITRAMFS=y # BR2_TARGET_ROOTFS_TAR is not set diff --git a/configs/stm32f469_disco_sd_defconfig b/configs/stm32f469_disco_sd_defconfig index 662ce3b3d0..8b10bc6741 100644 --- a/configs/stm32f469_disco_sd_defconfig +++ b/configs/stm32f469_disco_sd_defconfig @@ -14,6 +14,7 @@ BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="zImage" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f469-disco" BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config" +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/stmicroelectronics/common/stm32f4xx/busybox.fragment" # BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_SIZE="32M" diff --git a/configs/stm32f469_disco_xip_defconfig b/configs/stm32f469_disco_xip_defconfig index ae2780556a..e362a99851 100644 --- a/configs/stm32f469_disco_xip_defconfig +++ b/configs/stm32f469_disco_xip_defconfig @@ -14,6 +14,7 @@ BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="xipImage" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f469-disco" BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config" +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/stmicroelectronics/common/stm32f4xx/busybox.fragment" # BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set BR2_TARGET_ROOTFS_INITRAMFS=y # BR2_TARGET_ROOTFS_TAR is not set diff --git a/configs/stm32mp157a_dk1_defconfig b/configs/stm32mp157a_dk1_defconfig index a487ce9891..ecaace54b8 100644 --- a/configs/stm32mp157a_dk1_defconfig +++ b/configs/stm32mp157a_dk1_defconfig @@ -36,10 +36,11 @@ BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32mp15_trusted" # BR2_TARGET_UBOOT_FORMAT_BIN is not set BR2_TARGET_UBOOT_FORMAT_STM32=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp157a-dk1" diff --git a/configs/stm32mp157c_dk2_defconfig b/configs/stm32mp157c_dk2_defconfig index f1f7baaa08..cf2433d67e 100644 --- a/configs/stm32mp157c_dk2_defconfig +++ b/configs/stm32mp157c_dk2_defconfig @@ -36,10 +36,11 @@ BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32mp15_trusted" # BR2_TARGET_UBOOT_FORMAT_BIN is not set BR2_TARGET_UBOOT_FORMAT_STM32=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp157c-dk2" diff --git a/configs/stm32mp157c_odyssey_defconfig b/configs/stm32mp157c_odyssey_defconfig index 6b699830b1..15b9a63b39 100644 --- a/configs/stm32mp157c_odyssey_defconfig +++ b/configs/stm32mp157c_odyssey_defconfig @@ -29,6 +29,7 @@ BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32mp15_trusted" BR2_TARGET_UBOOT_NEEDS_DTC=y # BR2_TARGET_UBOOT_FORMAT_BIN is not set BR2_TARGET_UBOOT_FORMAT_STM32=y +BR2_TARGET_UBOOT_BUILD_FORMAT_STM32_LEGACY=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp157c-odyssey" BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/configs/versal_vck190_defconfig b/configs/versal_vck190_defconfig index a393b681c8..fab41a2991 100644 --- a/configs/versal_vck190_defconfig +++ b/configs/versal_vck190_defconfig @@ -39,3 +39,4 @@ BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_BOOTGEN=y +BR2_GLOBAL_PATCH_DIR="board/versal/patches" diff --git a/configs/visionfive2_defconfig b/configs/visionfive2_defconfig index 5b07a8efbc..dc086953a0 100644 --- a/configs/visionfive2_defconfig +++ b/configs/visionfive2_defconfig @@ -6,7 +6,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/visionfive/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,starfive-tech,linux,7b7b4eddd8d5ae55f6e0ee09b93e16e23ab4f97b)/linux-7b7b4eddd8d5ae55f6e0ee09b93e16e23ab4f97b.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,starfive-tech,linux,05533e9c31d6f0da20efc2d436a3b0f6d516ed4b)/linux-05533e9c31d6f0da20efc2d436a3b0f6d516ed4b.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="starfive_visionfive2" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="starfive/jh7110-visionfive-v2" diff --git a/configs/zynq_microzed_defconfig b/configs/zynq_microzed_defconfig index 459a3a40bc..346738f665 100644 --- a/configs/zynq_microzed_defconfig +++ b/configs/zynq_microzed_defconfig @@ -2,12 +2,12 @@ BR2_arm=y BR2_cortex_a9=y BR2_ARM_ENABLE_NEON=y BR2_ARM_ENABLE_VFP=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynq/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v5.15_LTS_2022.2)/xlnx_rebase_v5.15_LTS_2022.2.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.1_LTS_2023.1)/xlnx_rebase_v6.1_LTS_2023.1.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" BR2_LINUX_KERNEL_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" @@ -19,11 +19,12 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2022.01_2022.2)/xlnx_rebase_v2022.01_2022.2.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2023.01_2023.1)/xlnx_rebase_v2023.01_2023.1.tar.gz" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynq_virt" BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynq-microzed" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y BR2_TARGET_UBOOT_FORMAT_IMG=y BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" diff --git a/configs/zynq_zc706_defconfig b/configs/zynq_zc706_defconfig index 3ad8cbafe3..55e4d8ea23 100644 --- a/configs/zynq_zc706_defconfig +++ b/configs/zynq_zc706_defconfig @@ -2,12 +2,12 @@ BR2_arm=y BR2_cortex_a9=y BR2_ARM_ENABLE_NEON=y BR2_ARM_ENABLE_VFP=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynq/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v5.15_LTS_2022.2)/xlnx_rebase_v5.15_LTS_2022.2.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.1_LTS_2023.1)/xlnx_rebase_v6.1_LTS_2023.1.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" BR2_LINUX_KERNEL_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" @@ -19,11 +19,12 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2022.01_2022.2)/xlnx_rebase_v2022.01_2022.2.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2023.01_2023.1)/xlnx_rebase_v2023.01_2023.1.tar.gz" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynq_virt" BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynq-zc706" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y BR2_TARGET_UBOOT_FORMAT_IMG=y BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" diff --git a/configs/zynq_zed_defconfig b/configs/zynq_zed_defconfig index a39911b757..dc167e3bc1 100644 --- a/configs/zynq_zed_defconfig +++ b/configs/zynq_zed_defconfig @@ -2,12 +2,12 @@ BR2_arm=y BR2_cortex_a9=y BR2_ARM_ENABLE_NEON=y BR2_ARM_ENABLE_VFP=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/zynq/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v5.15_LTS_2022.2)/xlnx_rebase_v5.15_LTS_2022.2.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xlnx_rebase_v6.1_LTS_2023.1)/xlnx_rebase_v6.1_LTS_2023.1.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" BR2_LINUX_KERNEL_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" @@ -19,11 +19,12 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2022.01_2022.2)/xlnx_rebase_v2022.01_2022.2.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,u-boot-xlnx,xlnx_rebase_v2023.01_2023.1)/xlnx_rebase_v2023.01_2023.1.tar.gz" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynq_virt" BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=zynq-zed" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y BR2_TARGET_UBOOT_FORMAT_IMG=y BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" diff --git a/configs/zynqmp_kria_kv260_defconfig b/configs/zynqmp_kria_kv260_defconfig index e180d5e7e7..8ceaa6983d 100644 --- a/configs/zynqmp_kria_kv260_defconfig +++ b/configs/zynqmp_kria_kv260_defconfig @@ -38,4 +38,4 @@ BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y -BR2_GLOBAL_PATCH_DIR="board/zynqmp/kria/patches" +BR2_GLOBAL_PATCH_DIR="board/zynqmp/kria/patches board/zynqmp/patches" diff --git a/configs/zynqmp_zcu102_defconfig b/configs/zynqmp_zcu102_defconfig index 00b33261b6..f4789b9d88 100644 --- a/configs/zynqmp_zcu102_defconfig +++ b/configs/zynqmp_zcu102_defconfig @@ -36,3 +36,4 @@ BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y +BR2_GLOBAL_PATCH_DIR="board/zynqmp/patches" diff --git a/configs/zynqmp_zcu106_defconfig b/configs/zynqmp_zcu106_defconfig index 88295571af..516f1143ce 100644 --- a/configs/zynqmp_zcu106_defconfig +++ b/configs/zynqmp_zcu106_defconfig @@ -36,3 +36,4 @@ BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y +BR2_GLOBAL_PATCH_DIR="board/zynqmp/patches" diff --git a/docs/manual/contribute.txt b/docs/manual/contribute.txt index 94f1c64496..15fe36aef0 100644 --- a/docs/manual/contribute.txt +++ b/docs/manual/contribute.txt @@ -247,6 +247,23 @@ which have the upstream license), and that you are allowed to do so. See http://developercertificate.org/[the Developer Certificate of Origin] for details. +To give credits to who sponsored the creation of a patch or the process of +upstreaming it, you may use +https://datatracker.ietf.org/doc/html/rfc5233[email subaddressing] for +your git identity (i.e. what is used as commit author and email +From:+ +field, as well as your Signed-off-by tag); add suffix to the local part, +separated from it by a plus `+` sign. E.g.: + +* for a company which sponsored the submitted work, use the company name + as the detail (suffix) part: ++ +`Your-Name Your-Surname ` + +* for an individual who sponsored who sponsored the submitted work, use + their name and surname: ++ +`Your-Name Your-Surname ` + When adding new packages, you should submit every package in a separate patch. This patch should have the update to +package/Config.in+, the package +Config.in+ file, the +.mk+ file, the diff --git a/docs/manual/docbook-xsl.css b/docs/manual/docbook-xsl.css new file mode 100644 index 0000000000..ee9ca46d6f --- /dev/null +++ b/docs/manual/docbook-xsl.css @@ -0,0 +1,329 @@ +/* + CSS stylesheet for XHTML produced by DocBook XSL stylesheets. +*/ + +body { + font-family: Georgia,serif; +} + +code, pre { + font-family: "Courier New", Courier, monospace; +} + +span.strong { + font-weight: bold; +} + +body blockquote { + margin-top: .75em; + line-height: 1.5; + margin-bottom: .75em; +} + +html body { + margin: 1em 5% 1em 5%; + line-height: 1.2; +} + +body div { + margin: 0; +} + +h1, h2, h3, h4, h5, h6 +{ + color: #527bbd; + font-family: Arial,Helvetica,sans-serif; +} + +div.toc p:first-child, +div.list-of-figures p:first-child, +div.list-of-tables p:first-child, +div.list-of-examples p:first-child, +div.example p.title, +div.sidebar p.title +{ + font-weight: bold; + color: #527bbd; + font-family: Arial,Helvetica,sans-serif; + margin-bottom: 0.2em; +} + +body h1 { + margin: .0em 0 0 -4%; + line-height: 1.3; + border-bottom: 2px solid silver; +} + +body h2 { + margin: 0.5em 0 0 -4%; + line-height: 1.3; + border-bottom: 2px solid silver; +} + +body h3 { + margin: .8em 0 0 -3%; + line-height: 1.3; +} + +body h4 { + margin: .8em 0 0 -3%; + line-height: 1.3; +} + +body h5 { + margin: .8em 0 0 -2%; + line-height: 1.3; +} + +body h6 { + margin: .8em 0 0 -1%; + line-height: 1.3; +} + +body hr { + border: none; /* Broken on IE6 */ +} +div.footnotes hr { + border: 1px solid silver; +} + +div.navheader th, div.navheader td, div.navfooter td { + font-family: Arial,Helvetica,sans-serif; + font-size: 0.9em; + font-weight: bold; + color: #527bbd; +} +div.navheader img, div.navfooter img { + border-style: none; +} +div.navheader a, div.navfooter a { + font-weight: normal; +} +div.navfooter hr { + border: 1px solid silver; +} + +body td { + line-height: 1.2 +} + +body th { + line-height: 1.2; +} + +ol { + line-height: 1.2; +} + +ul, body dir, body menu { + line-height: 1.2; +} + +html { + margin: 0; + padding: 0; +} + +body h1, body h2, body h3, body h4, body h5, body h6 { + margin-left: 0 +} + +body pre { + margin: 0.5em 10% 0.5em 1em; + line-height: 1.0; + color: navy; +} + +tt.literal, code.literal { + color: navy; +} + +.programlisting, .screen { + border: 1px solid silver; + background: #f4f4f4; + margin: 0.5em 10% 0.5em 0; + padding: 0.5em 1em; +} + +div.sidebar { + background: #ffffee; + margin: 1.0em 10% 0.5em 0; + padding: 0.5em 1em; + border: 1px solid silver; +} +div.sidebar * { padding: 0; } +div.sidebar div { margin: 0; } +div.sidebar p.title { + margin-top: 0.5em; + margin-bottom: 0.2em; +} + +div.bibliomixed { + margin: 0.5em 5% 0.5em 1em; +} + +div.glossary dt { + font-weight: bold; +} +div.glossary dd p { + margin-top: 0.2em; +} + +dl { + margin: .8em 0; + line-height: 1.2; +} + +dt { + margin-top: 0.5em; +} + +dt span.term { + font-style: normal; + color: navy; +} + +div.variablelist dd p { + margin-top: 0; +} + +div.itemizedlist li, div.orderedlist li { + margin-left: -0.8em; + margin-top: 0.5em; +} + +ul, ol { + list-style-position: outside; +} + +div.sidebar ul, div.sidebar ol { + margin-left: 2.8em; +} + +div.itemizedlist p.title, +div.orderedlist p.title, +div.variablelist p.title +{ + margin-bottom: -0.8em; +} + +div.revhistory table { + border-collapse: collapse; + border: none; +} +div.revhistory th { + border: none; + color: #527bbd; + font-family: Arial,Helvetica,sans-serif; +} +div.revhistory td { + border: 1px solid silver; +} + +/* Keep TOC and index lines close together. */ +div.toc dl, div.toc dt, +div.list-of-figures dl, div.list-of-figures dt, +div.list-of-tables dl, div.list-of-tables dt, +div.indexdiv dl, div.indexdiv dt +{ + line-height: normal; + margin-top: 0; + margin-bottom: 0; +} + +/* + Table styling does not work because of overriding attributes in + generated HTML. +*/ +div.table table, +div.informaltable table +{ + margin-left: 0; + margin-right: 5%; + margin-bottom: 0.8em; +} +div.informaltable table +{ + margin-top: 0.4em +} +div.table thead, +div.table tfoot, +div.table tbody, +div.informaltable thead, +div.informaltable tfoot, +div.informaltable tbody +{ + /* No effect in IE6. */ + border-top: 3px solid #527bbd; + border-bottom: 3px solid #527bbd; +} +div.table thead, div.table tfoot, +div.informaltable thead, div.informaltable tfoot +{ + font-weight: bold; +} + +div.mediaobject img { + margin-bottom: 0.8em; +} +div.figure p.title, +div.table p.title +{ + margin-top: 1em; + margin-bottom: 0.4em; +} + +div.calloutlist p +{ + margin-top: 0em; + margin-bottom: 0.4em; +} + +a img { + border-style: none; +} + +@media print { + div.navheader, div.navfooter { display: none; } +} + +span.aqua { color: aqua; } +span.black { color: black; } +span.blue { color: blue; } +span.fuchsia { color: fuchsia; } +span.gray { color: gray; } +span.green { color: green; } +span.lime { color: lime; } +span.maroon { color: maroon; } +span.navy { color: navy; } +span.olive { color: olive; } +span.purple { color: purple; } +span.red { color: red; } +span.silver { color: silver; } +span.teal { color: teal; } +span.white { color: white; } +span.yellow { color: yellow; } + +span.aqua-background { background: aqua; } +span.black-background { background: black; } +span.blue-background { background: blue; } +span.fuchsia-background { background: fuchsia; } +span.gray-background { background: gray; } +span.green-background { background: green; } +span.lime-background { background: lime; } +span.maroon-background { background: maroon; } +span.navy-background { background: navy; } +span.olive-background { background: olive; } +span.purple-background { background: purple; } +span.red-background { background: red; } +span.silver-background { background: silver; } +span.teal-background { background: teal; } +span.white-background { background: white; } +span.yellow-background { background: yellow; } + +span.big { font-size: 2em; } +span.small { font-size: 0.6em; } + +span.underline { text-decoration: underline; } +span.overline { text-decoration: overline; } +span.line-through { text-decoration: line-through; } diff --git a/docs/manual/github_hash_mongrel2.png b/docs/manual/github_hash_mongrel2.png new file mode 100644 index 0000000000000000000000000000000000000000..c695c3181abc3bdf4661692fdbcc4332a02cd856 GIT binary patch literal 19029 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 ADF6Tf literal 0 HcmV?d00001 diff --git a/docs/manual/logo.png b/docs/manual/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2db743b4fa93820a2ad38bdafb1dbaafe7805fee GIT binary patch literal 117499 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